summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--iptables/nft.c2
-rw-r--r--iptables/xtables-restore.c10
-rw-r--r--iptables/xtables.c5
3 files changed, 14 insertions, 3 deletions
diff --git a/iptables/nft.c b/iptables/nft.c
index 273d0838..88fd84be 100644
--- a/iptables/nft.c
+++ b/iptables/nft.c
@@ -2630,7 +2630,7 @@ static int nft_action(struct nft_handle *h, int type)
nlh->nlmsg_seq = seq = time(NULL);
struct nfgenmsg *nfg = mnl_nlmsg_put_extra_header(nlh, sizeof(*nfg));
- nfg->nfgen_family = AF_INET;
+ nfg->nfgen_family = h->family;
nfg->version = NFNETLINK_V0;
nfg->res_id = 0;
diff --git a/iptables/xtables-restore.c b/iptables/xtables-restore.c
index c62b0a9a..3b14a9f7 100644
--- a/iptables/xtables-restore.c
+++ b/iptables/xtables-restore.c
@@ -36,6 +36,8 @@ static const struct option options[] = {
{.name = "noflush", .has_arg = false, .val = 'n'},
{.name = "modprobe", .has_arg = true, .val = 'M'},
{.name = "table", .has_arg = true, .val = 'T'},
+ {.name = "ipv4", .has_arg = false, .val = '4'},
+ {.name = "ipv6", .has_arg = false, .val = '6'},
{NULL},
};
@@ -193,7 +195,7 @@ xtables_restore_main(int argc, char *argv[])
nft_init(&h);
- while ((c = getopt_long(argc, argv, "bcvthnM:T:", options, NULL)) != -1) {
+ while ((c = getopt_long(argc, argv, "bcvthnM:T:46", options, NULL)) != -1) {
switch (c) {
case 'b':
binary = 1;
@@ -220,6 +222,12 @@ xtables_restore_main(int argc, char *argv[])
case 'T':
tablename = optarg;
break;
+ case '4':
+ h.family = AF_INET;
+ break;
+ case '6':
+ h.family = AF_INET6;
+ break;
}
}
diff --git a/iptables/xtables.c b/iptables/xtables.c
index c3110558..c0a6347a 100644
--- a/iptables/xtables.c
+++ b/iptables/xtables.c
@@ -1247,7 +1247,10 @@ int do_commandx(struct nft_handle *h, int argc, char *argv[], char **table)
break;
}
- h->family = family;
+ /* Set only if required, needed by xtables-restore */
+ if (h->family == AF_UNSPEC)
+ h->family = family;
+
h->ops = nft_family_ops_lookup(family);
if (h->ops == NULL)
xtables_error(PARAMETER_PROBLEM, "Unknown family");