Besides the three different data structures in use to store different revisions' extensions data, the actual code is pretty similar in all the different NAT "flavors". Patch 1 fixes a minor bug introduced by a previous commit. Patch 2 eliminates some needless checks and some that seem not necessary. Patches 3 to 5 prepare DNAT extension code for the actual merge happening in patch 6. Phil Sutter (6): extensions: DNAT: Fix bad IP address error reporting extensions: *NAT: Drop NF_NAT_RANGE_PROTO_RANDOM* flag checks extensions: DNAT: Use __DNAT_xlate for REDIRECT, too extensions: DNAT: Generate print, save and xlate callbacks extensions: DNAT: Rename some symbols extensions: Merge SNAT, DNAT, REDIRECT and MASQUERADE extensions/GNUmakefile.in | 10 +- extensions/libip6t_MASQUERADE.c | 188 ---------- extensions/libip6t_MASQUERADE.txlate | 9 + extensions/libip6t_SNAT.c | 308 ---------------- extensions/libip6t_SNAT.t | 6 + extensions/libipt_MASQUERADE.c | 190 ---------- extensions/libipt_MASQUERADE.txlate | 9 + extensions/libipt_SNAT.c | 280 --------------- extensions/libipt_SNAT.t | 6 + extensions/{libxt_DNAT.c => libxt_NAT.c} | 440 +++++++++++------------ extensions/libxt_REDIRECT.t | 1 + extensions/libxt_REDIRECT.txlate | 3 + 12 files changed, 262 insertions(+), 1188 deletions(-) delete mode 100644 extensions/libip6t_MASQUERADE.c delete mode 100644 extensions/libip6t_SNAT.c delete mode 100644 extensions/libipt_MASQUERADE.c delete mode 100644 extensions/libipt_SNAT.c rename extensions/{libxt_DNAT.c => libxt_NAT.c} (59%) -- 2.38.0