4ac89986fb
With new pfil(9) KPI it is possible to pass a void pointer with length instead of mbuf pointer to a packet filter. Until this commit no filters supported that, so pfil run through a shim function pfil_fake_mbuf(). Now the ipfw(4) hook named "default-link", that is instantiated when net.link.ether.ipfw sysctl is on, supports processing pointer/length packets natively. - ip_fw_args now has union for either mbuf or void *, and if flags have non-zero length, then we use the void *. - through ipfw_chk() we handle mem/mbuf cases differently. - ether_header goes away from args. It is ipfw_chk() responsibility to do parsing of Ethernet header. - ipfw_log() now uses different bpf APIs to log packets. Although ipfw_chk() is now capable to process pointer/length packets, this commit adds support for the link level hook only, see ipfw_check_frame(). Potentially the IP processing hook ipfw_check_packet() can be improved too, but that requires more changes since the hook supports more complex actions: NAT, divert, etc. Reviewed by: ae Differential Revision: https://reviews.freebsd.org/D19357 |
||
---|---|---|
.. | ||
nat64 | ||
nptv6 | ||
pmod | ||
test | ||
dn_aqm_codel.c | ||
dn_aqm_codel.h | ||
dn_aqm_pie.c | ||
dn_aqm_pie.h | ||
dn_aqm.h | ||
dn_heap.c | ||
dn_heap.h | ||
dn_sched_fifo.c | ||
dn_sched_fq_codel_helper.h | ||
dn_sched_fq_codel.c | ||
dn_sched_fq_codel.h | ||
dn_sched_fq_pie.c | ||
dn_sched_prio.c | ||
dn_sched_qfq.c | ||
dn_sched_rr.c | ||
dn_sched_wf2q.c | ||
dn_sched.h | ||
dummynet.txt | ||
ip_dn_glue.c | ||
ip_dn_io.c | ||
ip_dn_private.h | ||
ip_dummynet.c | ||
ip_fw2.c | ||
ip_fw_bpf.c | ||
ip_fw_dynamic.c | ||
ip_fw_eaction.c | ||
ip_fw_iface.c | ||
ip_fw_log.c | ||
ip_fw_nat.c | ||
ip_fw_pfil.c | ||
ip_fw_private.h | ||
ip_fw_sockopt.c | ||
ip_fw_table_algo.c | ||
ip_fw_table_value.c | ||
ip_fw_table.c | ||
ip_fw_table.h |