]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
nft: Review static extension loading
authorPhil Sutter <phil@nwl.cc>
Tue, 15 Mar 2022 11:45:04 +0000 (12:45 +0100)
committerPhil Sutter <phil@nwl.cc>
Tue, 15 Mar 2022 13:53:52 +0000 (14:53 +0100)
Combine the init_extensions() call common to all families, do not load
IPv6 extensions for iptables and vice versa, drop the outdated comment
about "same table".

Signed-off-by: Phil Sutter <phil@nwl.cc>
iptables/xtables-restore.c
iptables/xtables-save.c
iptables/xtables-standalone.c
iptables/xtables-translate.c

index 0250ed7dd8d66854df87b8cb921010e717e8e014..b3cf4017941987b6fb6f76c75a61eaf8da9a493a 100644 (file)
@@ -360,19 +360,18 @@ xtables_restore_main(int family, const char *progname, int argc, char *argv[])
                p.in = stdin;
        }
 
+       init_extensions();
        switch (family) {
        case NFPROTO_IPV4:
-       case NFPROTO_IPV6: /* fallthough, same table */
-               init_extensions();
                init_extensions4();
+               break;
+       case NFPROTO_IPV6:
                init_extensions6();
                break;
        case NFPROTO_ARP:
-               init_extensions();
                init_extensionsa();
                break;
        case NFPROTO_BRIDGE:
-               init_extensions();
                init_extensionsb();
                break;
        default:
index 3b6b7e25063fead8bb4eceb2a35bb71e886d9352..5a82cac5dd7c0158fa9dd2a690c046d422d5d4a3 100644 (file)
@@ -199,16 +199,17 @@ xtables_save_main(int family, int argc, char *argv[],
                exit(1);
        }
 
+       init_extensions();
        switch (family) {
        case NFPROTO_IPV4:
-       case NFPROTO_IPV6: /* fallthough, same table */
-               init_extensions();
                init_extensions4();
+               d.commit = true;
+               break;
+       case NFPROTO_IPV6:
                init_extensions6();
                d.commit = true;
                break;
        case NFPROTO_ARP:
-               init_extensions();
                init_extensionsa();
                break;
        case NFPROTO_BRIDGE: {
@@ -220,7 +221,6 @@ xtables_save_main(int family, int argc, char *argv[],
                        d.format &= ~FMT_NOCOUNTS;
                        d.format |= FMT_C_COUNTS | FMT_EBT_SAVE;
                }
-               init_extensions();
                init_extensionsb();
                break;
        }
index 3faae02d408ccc6fe1f4d7a54a3e0aa8ca43e395..117b0c69dd14f8091928b764d0e47384a138ba9a 100644 (file)
@@ -67,19 +67,18 @@ xtables_main(int family, const char *progname, int argc, char *argv[])
                exit(1);
        }
        xt_params->program_name = progname;
+       init_extensions();
        switch (family) {
        case NFPROTO_IPV4:
-       case NFPROTO_IPV6:
-               init_extensions();
                init_extensions4();
+               break;
+       case NFPROTO_IPV6:
                init_extensions6();
                break;
        case NFPROTO_ARP:
-               init_extensions();
                init_extensionsa();
                break;
        case NFPROTO_BRIDGE:
-               init_extensions();
                init_extensionsb();
                break;
        }
index 07a9c1bec0bc52097b64d55e655d6f8a9185984d..d1e87f167df74f67223d496f72c27d1bbc2fc4f9 100644 (file)
@@ -485,19 +485,18 @@ static int xtables_xlate_main_common(struct nft_handle *h,
                        xtables_globals.program_version);
                return 1;
        }
+       init_extensions();
        switch (family) {
        case NFPROTO_IPV4:
-       case NFPROTO_IPV6: /* fallthrough: same table */
-               init_extensions();
                init_extensions4();
+               break;
+       case NFPROTO_IPV6:
                init_extensions6();
                break;
        case NFPROTO_ARP:
-               init_extensions();
                init_extensionsa();
                break;
        case NFPROTO_BRIDGE:
-               init_extensions();
                init_extensionsb();
                break;
        default: