a1eca3cc0c
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 |
||
---|---|---|
.. | ||
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 | ||
dummynet.txt | ||
ip_dn_glue.c | ||
ip_dn_io.c | ||
ip_dn_private.h | ||
ip_dummynet.c | ||
ip_fw2.c | ||
ip_fw_dynamic.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 |