ipfw3_nat: highspeed lockless in-kernel NAT
commit4408d5485757eef6e44859025e931d1c1b6746c4
authorBill Yuan <bycn82@dragonflybsd.org>
Sat, 12 May 2018 15:26:07 +0000 (12 15:26 +0000)
committerBill Yuan <bycn82@dragonflybsd.org>
Sat, 12 May 2018 15:29:53 +0000 (12 15:29 +0000)
tree22af1bfb0405f228116c10de8c0e1be69e5474d2
parentf2898ada8dd8793c9ea603aed2da7e257d3d42d1
ipfw3_nat: highspeed lockless in-kernel NAT

RB-Tree to stored the state for the outgoing packets, and multidimentional
array of pointers to keep the state for the incoming packets.
56 files changed:
lib/libipfw3/basic/ipfw3_basic.c
lib/libipfw3/basic/ipfw3_basic.h
lib/libipfw3/dummynet/ipfw3_dummynet.c
lib/libipfw3/dummynet/ipfw3_dummynet.h
lib/libipfw3/layer2/ipfw3_layer2.c
lib/libipfw3/layer2/ipfw3_layer2.h
lib/libipfw3/layer4/ipfw3_layer4.c
lib/libipfw3/layer4/ipfw3_layer4.h
lib/libipfw3/nat/ipfw3_nat.c
lib/libipfw3/nat/ipfw3_nat.h
sbin/ipfw3/Makefile
sbin/ipfw3/ipfw3.c
sbin/ipfw3/ipfw3.h
sbin/ipfw3/ipfw3basic.c [new file with mode: 0644]
sbin/ipfw3/ipfw3basic.h [copied from lib/libipfw3/nat/ipfw3_nat.h with 82% similarity]
sbin/ipfw3/ipfw3dummynet.c [new file with mode: 0644]
sbin/ipfw3/ipfw3dummynet.h [copied from lib/libipfw3/nat/ipfw3_nat.h with 75% similarity]
sbin/ipfw3/ipfw3log.c [new file with mode: 0644]
sbin/ipfw3/ipfw3log.h [copied from lib/libipfw3/nat/ipfw3_nat.h with 90% similarity]
sbin/ipfw3/ipfw3nat.c
sbin/ipfw3/ipfw3set.c [new file with mode: 0644]
sbin/ipfw3/ipfw3set.h [copied from lib/libipfw3/layer2/ipfw3_layer2.h with 80% similarity]
sbin/ipfw3/ipfw3state.c [copied from sbin/ipfw3/ipfw3nat.c with 54% similarity]
sbin/ipfw3/ipfw3state.h [copied from lib/libipfw3/nat/ipfw3_nat.h with 82% similarity]
sbin/ipfw3/ipfw3sync.c
sbin/ipfw3/ipfw3sync.h
sbin/ipfw3/ipfw3table.c [new file with mode: 0644]
sbin/ipfw3/ipfw3table.h [copied from lib/libipfw3/nat/ipfw3_nat.h with 75% similarity]
sys/net/dummynet3/Makefile [copied from sys/net/ipfw3/Makefile with 63% similarity]
sys/net/dummynet3/ip_dummynet3.c
sys/net/ipfw3/Makefile
sys/net/ipfw3/ip_fw3.c
sys/net/ipfw3/ip_fw3.h
sys/net/ipfw3/ip_fw3_glue.c
sys/net/ipfw3/ip_fw3_set.c [new file with mode: 0644]
sys/net/ipfw3/ip_fw3_set.h [copied from sys/net/ipfw3_layer4/ip_fw3_layer4.h with 70% similarity]
sys/net/ipfw3_basic/Makefile [copied from sys/net/ipfw3/Makefile with 73% similarity]
sys/net/ipfw3_basic/ip_fw3_basic.c
sys/net/ipfw3_basic/ip_fw3_basic.h
sys/net/ipfw3_basic/ip_fw3_log.c [moved from sys/net/ipfw3/ip_fw3_log.c with 80% similarity]
sys/net/ipfw3_basic/ip_fw3_log.h [moved from sys/net/ipfw3/ip_fw3_log.h with 90% similarity]
sys/net/ipfw3_basic/ip_fw3_state.c [new file with mode: 0644]
sys/net/ipfw3_basic/ip_fw3_state.h [new file with mode: 0644]
sys/net/ipfw3_basic/ip_fw3_sync.c [moved from sys/net/ipfw3/ip_fw3_sync.c with 63% similarity]
sys/net/ipfw3_basic/ip_fw3_sync.h [moved from sys/net/ipfw3/ip_fw3_sync.h with 61% similarity]
sys/net/ipfw3_basic/ip_fw3_table.c [moved from sys/net/ipfw3/ip_fw3_table.c with 88% similarity]
sys/net/ipfw3_basic/ip_fw3_table.h [moved from sys/net/ipfw3/ip_fw3_table.h with 83% similarity]
sys/net/ipfw3_layer2/Makefile [copied from sys/net/ipfw3/Makefile with 63% similarity]
sys/net/ipfw3_layer2/ip_fw3_layer2.c
sys/net/ipfw3_layer2/ip_fw3_layer2.h
sys/net/ipfw3_layer4/Makefile [copied from sys/net/ipfw3/Makefile with 63% similarity]
sys/net/ipfw3_layer4/ip_fw3_layer4.c
sys/net/ipfw3_layer4/ip_fw3_layer4.h
sys/net/ipfw3_nat/Makefile [copied from sys/net/ipfw3/Makefile with 63% similarity]
sys/net/ipfw3_nat/ip_fw3_nat.c
sys/net/ipfw3_nat/ip_fw3_nat.h