freebsd-dev/sys/netpfil/ipfw
Gleb Smirnoff b252313f0b New pfil(9) KPI together with newborn pfil API and control utility.
The KPI have been reviewed and cleansed of features that were planned
back 20 years ago and never implemented.  The pfil(9) internals have
been made opaque to protocols with only returned types and function
declarations exposed. The KPI is made more strict, but at the same time
more extensible, as kernel uses same command structures that userland
ioctl uses.

In nutshell [KA]PI is about declaring filtering points, declaring
filters and linking and unlinking them together.

New [KA]PI makes it possible to reconfigure pfil(9) configuration:
change order of hooks, rehook filter from one filtering point to a
different one, disconnect a hook on output leaving it on input only,
prepend/append a filter to existing list of filters.

Now it possible for a single packet filter to provide multiple rulesets
that may be linked to different points. Think of per-interface ACLs in
Cisco or Juniper. None of existing packet filters yet support that,
however limited usage is already possible, e.g. default ruleset can
be moved to single interface, as soon as interface would pride their
filtering points.

Another future feature is possiblity to create pfil heads, that provide
not an mbuf pointer but just a memory pointer with length. That would
allow filtering at very early stages of a packet lifecycle, e.g. when
packet has just been received by a NIC and no mbuf was yet allocated.

Differential Revision:	https://reviews.freebsd.org/D18951
2019-01-31 23:01:03 +00:00
..
nat64 Reimplement how net.inet.ip.fw.dyn_keep_states works. 2018-12-04 16:01:25 +00:00
nptv6 Reimplement how net.inet.ip.fw.dyn_keep_states works. 2018-12-04 16:01:25 +00:00
pmod Use host byte order when comparing mss values. 2018-08-08 17:32:02 +00:00
test sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
dn_aqm_codel.c dummynet: Use strlcpy to appease static checkers 2017-04-13 17:47:44 +00:00
dn_aqm_codel.h Import Dummynet AQM version 0.2.1 (CoDel, FQ-CoDel, PIE and FQ-PIE). 2016-05-26 21:40:13 +00:00
dn_aqm_pie.c Fix the queue delay estimation in PIE/FQ-PIE when the timestamp 2017-05-19 08:38:03 +00:00
dn_aqm_pie.h Change several constants used by the PIE algorithm from unsigned to signed. 2017-03-18 23:00:13 +00:00
dn_aqm.h Correct a typo in a comment. 2016-05-26 22:03:28 +00:00
dn_heap.c netpfil/ipfw: Make some use of mallocarray(9). 2018-01-11 15:29:29 +00:00
dn_heap.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
dn_sched_fifo.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
dn_sched_fq_codel_helper.h Import Dummynet AQM version 0.2.1 (CoDel, FQ-CoDel, PIE and FQ-PIE). 2016-05-26 21:40:13 +00:00
dn_sched_fq_codel.c Implement 'domainset', a cpuset based NUMA policy mechanism. This allows 2018-01-12 22:48:23 +00:00
dn_sched_fq_codel.h Import Dummynet AQM version 0.2.1 (CoDel, FQ-CoDel, PIE and FQ-PIE). 2016-05-26 21:40:13 +00:00
dn_sched_fq_pie.c netpfil/ipfw: Make some use of mallocarray(9). 2018-01-11 15:29:29 +00:00
dn_sched_prio.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
dn_sched_qfq.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
dn_sched_rr.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
dn_sched_wf2q.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
dn_sched.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
dummynet.txt sys/net*: minor spelling fixes. 2016-05-03 18:05:43 +00:00
ip_dn_glue.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ip_dn_io.c Fix a typo in comment. 2018-08-15 16:36:29 +00:00
ip_dn_private.h sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ip_dummynet.c sys: general adoption of SPDX licensing ID tags. 2017-11-27 15:23:17 +00:00
ip_fw2.c Revert r316461: Remove "IPFW static rules" rmlock, and use pfil's global lock. 2019-01-31 21:04:50 +00:00
ip_fw_bpf.c Use the new VNET_DEFINE_STATIC macro when we are defining static VNET 2018-07-24 16:35:52 +00:00
ip_fw_dynamic.c Revert r316461: Remove "IPFW static rules" rmlock, and use pfil's global lock. 2019-01-31 21:04:50 +00:00
ip_fw_eaction.c New pfil(9) KPI together with newborn pfil API and control utility. 2019-01-31 23:01:03 +00:00
ip_fw_iface.c Revert r316461: Remove "IPFW static rules" rmlock, and use pfil's global lock. 2019-01-31 21:04:50 +00:00
ip_fw_log.c Reduce the size of struct ip_fw_args from 240 to 128 bytes on amd64. 2019-01-10 01:47:57 +00:00
ip_fw_nat.c Revert r316461: Remove "IPFW static rules" rmlock, and use pfil's global lock. 2019-01-31 21:04:50 +00:00
ip_fw_pfil.c New pfil(9) KPI together with newborn pfil API and control utility. 2019-01-31 23:01:03 +00:00
ip_fw_private.h Revert r316461: Remove "IPFW static rules" rmlock, and use pfil's global lock. 2019-01-31 21:04:50 +00:00
ip_fw_sockopt.c Revert r316461: Remove "IPFW static rules" rmlock, and use pfil's global lock. 2019-01-31 21:04:50 +00:00
ip_fw_table_algo.c Switch RIB and RADIX_NODE_HEAD lock from rwlock(9) to rmlock(9). 2018-06-16 08:26:23 +00:00
ip_fw_table_value.c Revert r316461: Remove "IPFW static rules" rmlock, and use pfil's global lock. 2019-01-31 21:04:50 +00:00
ip_fw_table.c Revert r316461: Remove "IPFW static rules" rmlock, and use pfil's global lock. 2019-01-31 21:04:50 +00:00
ip_fw_table.h