pf: fix double ruleset evaluation for fragments sent to dummynet
The function pf_setup_pdesc() handles ruleset evaluation for non-reassembled
packets. Having it called before pf_mtag is checked for flags
PF_MTAG_FLAG_ROUTE_TO and PF_MTAG_FLAG_DUMMYNET will cause loops for
fragmented packets if reassembly is disabled.
Move pd zeroing and pf_mtag extraction from pf_setup_pdesc() to a separate
function pf_init_pdesc() and change the order of function calls: first
call pf_init_pdesc(), then check if the currently processed packet has been
reinjected from dummynet, finally call pf_setup_pdesc().
Add functionality of sending UDP packets to pft_ping.py with fragmentation
support and fix broken IPv6 reassembly.
Reviewed by: kp
Differential Revision: https://reviews.freebsd.org/D46880