iptables: add {arp,eb}tables-nft
[openwrt/staging/mkresin.git] / package / network / utils / iptables / patches / 002-xtables-Call-init_extensions_a_b.patch
diff --git a/package/network/utils/iptables/patches/002-xtables-Call-init_extensions_a_b.patch b/package/network/utils/iptables/patches/002-xtables-Call-init_extensions_a_b.patch
new file mode 100644 (file)
index 0000000..0d7226c
--- /dev/null
@@ -0,0 +1,107 @@
+A modified version of this patch was commited upstream
+as part of a fixup series
+https://bugzilla.netfilter.org/show_bug.cgi?id=1593
+https://git.netfilter.org/iptables/commit/?id=0836524f093c0fd9c39604a46a949e43d9b47ef2
+
+--- a/iptables/xtables-monitor.c
++++ b/iptables/xtables-monitor.c
+@@ -629,6 +629,8 @@ int xtables_monitor_main(int argc, char
+       init_extensions();
+       init_extensions4();
+       init_extensions6();
++      init_extensionsa();
++      init_extensionsb();
+ #endif
+       if (nft_init(&h, AF_INET, xtables_ipv4)) {
+--- a/iptables/xtables-restore.c
++++ b/iptables/xtables-restore.c
+@@ -368,9 +368,17 @@ xtables_restore_main(int family, const c
+ #endif
+               break;
+       case NFPROTO_ARP:
++#if defined(ALL_INCLUSIVE) || defined(NO_SHARED_LIBS)
++              init_extensions();
++              init_extensionsa();
++#endif
+               tables = xtables_arp;
+               break;
+       case NFPROTO_BRIDGE:
++#if defined(ALL_INCLUSIVE) || defined(NO_SHARED_LIBS)
++              init_extensions();
++              init_extensionsb();
++#endif
+               tables = xtables_bridge;
+               break;
+       default:
+--- a/iptables/xtables-save.c
++++ b/iptables/xtables-save.c
+@@ -208,9 +208,17 @@ xtables_save_main(int family, int argc,
+               d.commit = true;
+               break;
+       case NFPROTO_ARP:
++#if defined(ALL_INCLUSIVE) || defined(NO_SHARED_LIBS)
++              init_extensions();
++              init_extensionsa();
++#endif
+               tables = xtables_arp;
+               break;
+       case NFPROTO_BRIDGE: {
++#if defined(ALL_INCLUSIVE) || defined(NO_SHARED_LIBS)
++              init_extensions();
++              init_extensionsb();
++#endif
+               const char *ctr = getenv("EBTABLES_SAVE_COUNTER");
+               if (!(d.format & FMT_NOCOUNTS)) {
+--- a/iptables/xtables-standalone.c
++++ b/iptables/xtables-standalone.c
+@@ -58,6 +58,8 @@ xtables_main(int family, const char *pro
+       init_extensions();
+       init_extensions4();
+       init_extensions6();
++      init_extensionsa();
++      init_extensionsb();
+ #endif
+       if (nft_init(&h, family, xtables_ipv4) < 0) {
+--- a/iptables/xtables-translate.c
++++ b/iptables/xtables-translate.c
+@@ -474,9 +474,17 @@ static int xtables_xlate_main_common(str
+               tables = xtables_ipv4;
+               break;
+       case NFPROTO_ARP:
++#if defined(ALL_INCLUSIVE) || defined(NO_SHARED_LIBS)
++              init_extensions();
++              init_extensionsa();
++#endif
+               tables = xtables_arp;
+               break;
+       case NFPROTO_BRIDGE:
++#if defined(ALL_INCLUSIVE) || defined(NO_SHARED_LIBS)
++              init_extensions();
++              init_extensionsb();
++#endif
+               tables = xtables_bridge;
+               break;
+       default:
+--- a/iptables/xtables-arp.c
++++ b/iptables/xtables-arp.c
+@@ -438,6 +438,7 @@ int nft_init_arp(struct nft_handle *h, c
+       }
+ #if defined(ALL_INCLUSIVE) || defined(NO_SHARED_LIBS)
++      init_extensions();
+       init_extensionsa();
+ #endif
+--- a/iptables/xtables-eb.c
++++ b/iptables/xtables-eb.c
+@@ -685,6 +685,7 @@ int nft_init_eb(struct nft_handle *h, co
+       }
+ #if defined(ALL_INCLUSIVE) || defined(NO_SHARED_LIBS)
++      init_extensions();
+       init_extensionsb();
+ #endif