]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
Revert "libipt_[SD]NAT: avoid false error about multiple destinations specified"
authorPhil Sutter <phil@nwl.cc>
Thu, 17 Mar 2022 10:17:13 +0000 (11:17 +0100)
committerPhil Sutter <phil@nwl.cc>
Fri, 8 Apr 2022 16:00:42 +0000 (18:00 +0200)
This reverts commit f25b2355e889290879c8cecad3dd24ec0c384fb8.

The workaround is not needed anymore since commit 30b178b9bf11e
("extensions: *NAT: Kill multiple IPv4 range support").

While being at it, drop the same hidden flag logic from
libip6t_[SD]NAT extensions as well and just don't set XTOPT_MULTI so
guided option parser will reject multiple parameters automatically.

Signed-off-by: Phil Sutter <phil@nwl.cc>
extensions/libip6t_DNAT.c
extensions/libip6t_SNAT.c
extensions/libipt_DNAT.c
extensions/libipt_SNAT.c

index f1ad81436316b748af2f9fd4e67a2b8081d426ed..d51994c09e7f2f0eb94caa68e72ce4becbd32745 100644 (file)
@@ -19,10 +19,8 @@ enum {
        O_TO_DEST = 0,
        O_RANDOM,
        O_PERSISTENT,
-       O_X_TO_DEST,
        F_TO_DEST   = 1 << O_TO_DEST,
        F_RANDOM   = 1 << O_RANDOM,
-       F_X_TO_DEST = 1 << O_X_TO_DEST,
 };
 
 static void DNAT_help(void)
@@ -45,7 +43,7 @@ static void DNAT_help_v2(void)
 
 static const struct xt_option_entry DNAT_opts[] = {
        {.name = "to-destination", .id = O_TO_DEST, .type = XTTYPE_STRING,
-        .flags = XTOPT_MAND | XTOPT_MULTI},
+        .flags = XTOPT_MAND},
        {.name = "random", .id = O_RANDOM, .type = XTTYPE_NONE},
        {.name = "persistent", .id = O_PERSISTENT, .type = XTTYPE_NONE},
        XTOPT_TABLEEND,
@@ -183,12 +181,7 @@ static void _DNAT_parse(struct xt_option_call *cb,
        xtables_option_parse(cb);
        switch (cb->entry->id) {
        case O_TO_DEST:
-               if (cb->xflags & F_X_TO_DEST) {
-                       xtables_error(PARAMETER_PROBLEM,
-                                     "DNAT: Multiple --to-destination not supported");
-               }
                parse_to(cb->arg, portok, range, rev);
-               cb->xflags |= F_X_TO_DEST;
                break;
        case O_PERSISTENT:
                range->flags |= NF_NAT_RANGE_PERSISTENT;
index 6d19614c7c7084178d26a0701b4d1aba75136dc0..4fe272b262a3d2431ed7ba317350f3e729d210f5 100644 (file)
@@ -20,11 +20,9 @@ enum {
        O_RANDOM,
        O_RANDOM_FULLY,
        O_PERSISTENT,
-       O_X_TO_SRC,
        F_TO_SRC       = 1 << O_TO_SRC,
        F_RANDOM       = 1 << O_RANDOM,
        F_RANDOM_FULLY = 1 << O_RANDOM_FULLY,
-       F_X_TO_SRC     = 1 << O_X_TO_SRC,
 };
 
 static void SNAT_help(void)
@@ -38,7 +36,7 @@ static void SNAT_help(void)
 
 static const struct xt_option_entry SNAT_opts[] = {
        {.name = "to-source", .id = O_TO_SRC, .type = XTTYPE_STRING,
-        .flags = XTOPT_MAND | XTOPT_MULTI},
+        .flags = XTOPT_MAND},
        {.name = "random", .id = O_RANDOM, .type = XTTYPE_NONE},
        {.name = "random-fully", .id = O_RANDOM_FULLY, .type = XTTYPE_NONE},
        {.name = "persistent", .id = O_PERSISTENT, .type = XTTYPE_NONE},
@@ -163,12 +161,7 @@ static void SNAT_parse(struct xt_option_call *cb)
        xtables_option_parse(cb);
        switch (cb->entry->id) {
        case O_TO_SRC:
-               if (cb->xflags & F_X_TO_SRC) {
-                       xtables_error(PARAMETER_PROBLEM,
-                                     "SNAT: Multiple --to-source not supported");
-               }
                parse_to(cb->arg, portok, range);
-               cb->xflags |= F_X_TO_SRC;
                break;
        case O_PERSISTENT:
                range->flags |= NF_NAT_RANGE_PERSISTENT;
index eefa95eb7363078bf54e1e03b7686bdffc689087..e93ab6958969b6b1afffe7c7be8a80c20335acff 100644 (file)
@@ -12,10 +12,8 @@ enum {
        O_TO_DEST = 0,
        O_RANDOM,
        O_PERSISTENT,
-       O_X_TO_DEST, /* hidden flag */
-       F_TO_DEST   = 1 << O_TO_DEST,
-       F_RANDOM    = 1 << O_RANDOM,
-       F_X_TO_DEST = 1 << O_X_TO_DEST,
+       F_TO_DEST = 1 << O_TO_DEST,
+       F_RANDOM  = 1 << O_RANDOM,
 };
 
 static void DNAT_help(void)
@@ -145,7 +143,6 @@ static void DNAT_parse(struct xt_option_call *cb)
        switch (cb->entry->id) {
        case O_TO_DEST:
                parse_to(cb->arg, portok, mr->range);
-               cb->xflags |= F_X_TO_DEST;
                break;
        case O_PERSISTENT:
                mr->range->flags |= NF_NAT_RANGE_PERSISTENT;
@@ -367,7 +364,6 @@ static void DNAT_parse_v2(struct xt_option_call *cb)
        switch (cb->entry->id) {
        case O_TO_DEST:
                parse_to_v2(cb->arg, portok, range);
-               cb->xflags |= F_X_TO_DEST;
                break;
        case O_PERSISTENT:
                range->flags |= NF_NAT_RANGE_PERSISTENT;
index bd36830ae91ce6139d077180f3610f3db7cb81ed..211a20bc45bfe4a8c8885c3e1d54802f2ed6e37c 100644 (file)
@@ -13,11 +13,9 @@ enum {
        O_RANDOM,
        O_RANDOM_FULLY,
        O_PERSISTENT,
-       O_X_TO_SRC,
        F_TO_SRC       = 1 << O_TO_SRC,
        F_RANDOM       = 1 << O_RANDOM,
        F_RANDOM_FULLY = 1 << O_RANDOM_FULLY,
-       F_X_TO_SRC     = 1 << O_X_TO_SRC,
 };
 
 static void SNAT_help(void)
@@ -139,7 +137,6 @@ static void SNAT_parse(struct xt_option_call *cb)
        switch (cb->entry->id) {
        case O_TO_SRC:
                parse_to(cb->arg, portok, mr->range);
-               cb->xflags |= F_X_TO_SRC;
                break;
        case O_PERSISTENT:
                mr->range->flags |= NF_NAT_RANGE_PERSISTENT;