Add calls to arp- and ebtables-specific extension loaders where missing.
Also consistently call init_extensions() for them, as some extensions
(ebtables 'limit' and arptables 'CLASSIFY' and 'MARK') live in libxt_*
files.
Signed-off-by: Etienne Champetier <champetier.etienne@gmail.com>
Signed-off-by: Phil Sutter <phil@nwl.cc>
arptables_globals.program_version);
exit(1);
}
+ init_extensions();
init_extensionsa();
if (nft_init(h, NFPROTO_ARP) < 0)
ebtables_globals.program_version);
exit(1);
}
+ init_extensions();
init_extensionsb();
if (nft_init(h, NFPROTO_BRIDGE) < 0)
init_extensions();
init_extensions4();
init_extensions6();
+ init_extensionsa();
+ init_extensionsb();
if (nft_init(&h, AF_INET)) {
fprintf(stderr, "%s/%s Failed to initialize nft: %s\n",
init_extensions6();
break;
case NFPROTO_ARP:
+ init_extensions();
+ init_extensionsa();
+ break;
case NFPROTO_BRIDGE:
+ init_extensions();
+ init_extensionsb();
break;
default:
fprintf(stderr, "Unknown family %d\n", family);
d.commit = true;
break;
case NFPROTO_ARP:
+ init_extensions();
+ init_extensionsa();
break;
case NFPROTO_BRIDGE: {
const char *ctr = getenv("EBTABLES_SAVE_COUNTER");
d.format &= ~FMT_NOCOUNTS;
d.format |= FMT_C_COUNTS | FMT_EBT_SAVE;
}
+ init_extensions();
+ init_extensionsb();
break;
}
default:
init_extensions6();
break;
case NFPROTO_ARP:
+ init_extensions();
init_extensionsa();
break;
+ case NFPROTO_BRIDGE:
+ init_extensions();
+ init_extensionsb();
+ break;
}
if (nft_init(&h, family) < 0) {
switch (family) {
case NFPROTO_IPV4:
case NFPROTO_IPV6: /* fallthrough: same table */
- init_extensions();
- init_extensions4();
- init_extensions6();
+ init_extensions();
+ init_extensions4();
+ init_extensions6();
break;
case NFPROTO_ARP:
+ init_extensions();
+ init_extensionsa();
+ break;
case NFPROTO_BRIDGE:
+ init_extensions();
+ init_extensionsb();
break;
default:
fprintf(stderr, "Unknown family %d\n", family);