git: ipfw3_nat: highspeed lockless in-kernel NAT

Bill Yuan bycn82 at crater.dragonflybsd.org
Sat May 12 08:30:17 PDT 2018


commit 4408d5485757eef6e44859025e931d1c1b6746c4
Author: Bill Yuan <bycn82 at dragonflybsd.org>
Date:   Sat May 12 15:26:07 2018 +0000

    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.

Summary of changes:
 lib/libipfw3/basic/ipfw3_basic.c                   |    2 +-
 lib/libipfw3/basic/ipfw3_basic.h                   |    6 +-
 lib/libipfw3/dummynet/ipfw3_dummynet.c             |    2 +-
 lib/libipfw3/dummynet/ipfw3_dummynet.h             |    6 +-
 lib/libipfw3/layer2/ipfw3_layer2.c                 |    2 +-
 lib/libipfw3/layer2/ipfw3_layer2.h                 |    6 +-
 lib/libipfw3/layer4/ipfw3_layer4.c                 |    2 +-
 lib/libipfw3/layer4/ipfw3_layer4.h                 |    6 +-
 lib/libipfw3/nat/ipfw3_nat.c                       |    2 +-
 lib/libipfw3/nat/ipfw3_nat.h                       |    6 +-
 sbin/ipfw3/Makefile                                |    6 +
 sbin/ipfw3/ipfw3.c                                 | 2203 +++-----------------
 sbin/ipfw3/ipfw3.h                                 |   44 +-
 sbin/ipfw3/ipfw3basic.c                            |  148 ++
 .../nat/ipfw3_nat.h => sbin/ipfw3/ipfw3basic.h     |   12 +-
 sbin/ipfw3/ipfw3dummynet.c                         |  727 +++++++
 .../nat/ipfw3_nat.h => sbin/ipfw3/ipfw3dummynet.h  |   20 +-
 sbin/ipfw3/ipfw3log.c                              |  138 ++
 .../nat/ipfw3_nat.h => sbin/ipfw3/ipfw3log.h       |    9 +-
 sbin/ipfw3/ipfw3nat.c                              |    6 +-
 sbin/ipfw3/ipfw3set.c                              |  264 +++
 .../ipfw3_dummynet.h => sbin/ipfw3/ipfw3set.h      |   15 +-
 sbin/ipfw3/{ipfw3nat.c => ipfw3state.c}            |  227 +-
 .../nat/ipfw3_nat.h => sbin/ipfw3/ipfw3state.h     |   15 +-
 sbin/ipfw3/ipfw3sync.c                             |   80 +-
 sbin/ipfw3/ipfw3sync.h                             |   27 +-
 sbin/ipfw3/ipfw3table.c                            |  493 +++++
 .../nat/ipfw3_nat.h => sbin/ipfw3/ipfw3table.h     |   19 +-
 sys/net/dummynet3/Makefile                         |   20 +-
 sys/net/dummynet3/ip_dummynet3.c                   |   20 +-
 sys/net/ipfw3/Makefile                             |   10 +-
 sys/net/ipfw3/ip_fw3.c                             | 1225 +++--------
 sys/net/ipfw3/ip_fw3.h                             |  408 ++--
 sys/net/ipfw3/ip_fw3_glue.c                        |    2 -
 sys/net/ipfw3/ip_fw3_set.c                         |  286 +++
 .../ip_fw3_layer4.h => ipfw3/ip_fw3_set.h}         |   35 +-
 sys/net/ipfw3_basic/Makefile                       |   25 +-
 sys/net/ipfw3_basic/ip_fw3_basic.c                 |  683 +-----
 sys/net/ipfw3_basic/ip_fw3_basic.h                 |  110 +-
 sys/net/{ipfw3 => ipfw3_basic}/ip_fw3_log.c        |   63 +-
 sys/net/{ipfw3 => ipfw3_basic}/ip_fw3_log.h        |    7 +-
 sys/net/ipfw3_basic/ip_fw3_state.c                 |  728 +++++++
 sys/net/ipfw3_basic/ip_fw3_state.h                 |  113 +
 sys/net/{ipfw3 => ipfw3_basic}/ip_fw3_sync.c       |  210 +-
 sys/net/{ipfw3 => ipfw3_basic}/ip_fw3_sync.h       |   68 +-
 sys/net/{ipfw3 => ipfw3_basic}/ip_fw3_table.c      |   88 +-
 sys/net/{ipfw3 => ipfw3_basic}/ip_fw3_table.h      |   61 +-
 sys/net/ipfw3_layer2/Makefile                      |   17 +
 sys/net/ipfw3_layer2/ip_fw3_layer2.c               |   44 +-
 sys/net/ipfw3_layer2/ip_fw3_layer2.h               |    4 +-
 sys/net/ipfw3_layer4/Makefile                      |   17 +
 sys/net/ipfw3_layer4/ip_fw3_layer4.c               |   38 +-
 sys/net/ipfw3_layer4/ip_fw3_layer4.h               |    8 +-
 sys/net/ipfw3_nat/Makefile                         |   17 +
 sys/net/ipfw3_nat/ip_fw3_nat.c                     |  385 ++--
 sys/net/ipfw3_nat/ip_fw3_nat.h                     |   33 +-
 56 files changed, 4842 insertions(+), 4376 deletions(-)
 create mode 100644 sbin/ipfw3/ipfw3basic.c
 copy lib/libipfw3/nat/ipfw3_nat.h => sbin/ipfw3/ipfw3basic.h (82%)
 create mode 100644 sbin/ipfw3/ipfw3dummynet.c
 copy lib/libipfw3/nat/ipfw3_nat.h => sbin/ipfw3/ipfw3dummynet.h (75%)
 create mode 100644 sbin/ipfw3/ipfw3log.c
 copy lib/libipfw3/nat/ipfw3_nat.h => sbin/ipfw3/ipfw3log.h (90%)
 create mode 100644 sbin/ipfw3/ipfw3set.c
 copy lib/libipfw3/dummynet/ipfw3_dummynet.h => sbin/ipfw3/ipfw3set.h (80%)
 copy sbin/ipfw3/{ipfw3nat.c => ipfw3state.c} (54%)
 copy lib/libipfw3/nat/ipfw3_nat.h => sbin/ipfw3/ipfw3state.h (82%)
 create mode 100644 sbin/ipfw3/ipfw3table.c
 copy lib/libipfw3/nat/ipfw3_nat.h => sbin/ipfw3/ipfw3table.h (75%)
 create mode 100644 sys/net/ipfw3/ip_fw3_set.c
 copy sys/net/{ipfw3_layer4/ip_fw3_layer4.h => ipfw3/ip_fw3_set.h} (70%)
 rename sys/net/{ipfw3 => ipfw3_basic}/ip_fw3_log.c (80%)
 rename sys/net/{ipfw3 => ipfw3_basic}/ip_fw3_log.h (90%)
 create mode 100644 sys/net/ipfw3_basic/ip_fw3_state.c
 create mode 100644 sys/net/ipfw3_basic/ip_fw3_state.h
 rename sys/net/{ipfw3 => ipfw3_basic}/ip_fw3_sync.c (63%)
 rename sys/net/{ipfw3 => ipfw3_basic}/ip_fw3_sync.h (61%)
 rename sys/net/{ipfw3 => ipfw3_basic}/ip_fw3_table.c (88%)
 rename sys/net/{ipfw3 => ipfw3_basic}/ip_fw3_table.h (83%)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/4408d5485757eef6e44859025e931d1c1b6746c4


-- 
DragonFly BSD source repository



More information about the Commits mailing list