freebsd-skq/sys/netpfil/ipfw
melifaro a1eca3cc0c Add support for multi-field values inside ipfw tables.
This is the last major change in given branch.

Kernel changes:
* Use 64-bytes structures to hold multi-value variables.
* Use shared array to hold values from all tables (assume
  each table algo is capable of holding 32-byte variables).
* Add some placeholders to support per-table value arrays in future.
* Use simple eventhandler-style API to ease the process of adding new
  table items. Currently table addition may required multiple UH drops/
  acquires which is quite tricky due to atomic table modificatio/swap
  support, shared array resize, etc. Deal with it by calling special
  notifier capable of rolling back state before actually performing
  swap/resize operations. Original operation then restarts itself after
  acquiring UH lock.
* Bump all objhash users default values to at least 64
* Fix custom hashing inside objhash.

Userland changes:
* Add support for dumping shared value array via "vlist" internal cmd.
* Some small print/fill_flags dixes to support u32 values.
* valtype is now bitmask of
  <skipto|pipe|fib|nat|dscp|tag|divert|netgraph|limit|ipv4|ipv6>.
  New values can hold distinct values for each of this types.
* Provide special "legacy" type which assumes all values are the same.
* More helpers/docs following..

Some examples:

3:41 [1] zfscurr0# ipfw table mimimi create valtype skipto,limit,ipv4,ipv6
3:41 [1] zfscurr0# ipfw table mimimi info
+++ table(mimimi), set(0) +++
 kindex: 2, type: addr
 references: 0, valtype: skipto,limit,ipv4,ipv6
 algorithm: addr:radix
 items: 0, size: 296
3:42 [1] zfscurr0# ipfw table mimimi add 10.0.0.5 3000,10,10.0.0.1,2a02:978:2::1
added: 10.0.0.5/32 3000,10,10.0.0.1,2a02:978:2::1
3:42 [1] zfscurr0# ipfw table mimimi list
+++ table(mimimi), set(0) +++
10.0.0.5/32 3000,0,10.0.0.1,2a02:978:2::1
2014-08-31 23:51:09 +00:00
..
test
dn_heap.c
dn_heap.h
dn_sched_fifo.c
dn_sched_prio.c
dn_sched_qfq.c
dn_sched_rr.c
dn_sched_wf2q.c
dn_sched.h add a counter on the struct mq (a queue of mbufs), 2013-11-22 05:02:37 +00:00
dummynet.txt Summary: Two quick edits to the implementation notes as they're no 2014-02-15 18:36:31 +00:00
ip_dn_glue.c DNOLD_IS_ECN introduced by r266941 is not required. 2014-06-01 20:19:17 +00:00
ip_dn_io.c ECN marking implenetation for dummynet. 2014-06-01 07:28:24 +00:00
ip_dn_private.h add a counter on the struct mq (a queue of mbufs), 2013-11-22 05:02:37 +00:00
ip_dummynet.c ECN marking implenetation for dummynet. 2014-06-01 07:28:24 +00:00
ip_fw2.c Add support for multi-field values inside ipfw tables. 2014-08-31 23:51:09 +00:00
ip_fw_dynamic.c Add support for multi-field values inside ipfw tables. 2014-08-31 23:51:09 +00:00
ip_fw_iface.c Clean up kernel interaction in ip_fw_iface.c 2014-08-14 13:24:59 +00:00
ip_fw_log.c Add support for multi-field values inside ipfw tables. 2014-08-31 23:51:09 +00:00
ip_fw_nat.c Since ipfw nat configures all options in one step, we should set all bits 2014-05-18 14:25:19 +00:00
ip_fw_pfil.c Set oif only for outgoing packets. 2014-04-16 14:37:11 +00:00
ip_fw_private.h Add support for multi-field values inside ipfw tables. 2014-08-31 23:51:09 +00:00
ip_fw_sockopt.c Add support for multi-field values inside ipfw tables. 2014-08-31 23:51:09 +00:00
ip_fw_table_algo.c Add support for multi-field values inside ipfw tables. 2014-08-31 23:51:09 +00:00
ip_fw_table_value.c Add support for multi-field values inside ipfw tables. 2014-08-31 23:51:09 +00:00
ip_fw_table.c Add support for multi-field values inside ipfw tables. 2014-08-31 23:51:09 +00:00
ip_fw_table.h Add support for multi-field values inside ipfw tables. 2014-08-31 23:51:09 +00:00