]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
Print error when '!' is used with multiport. Based on patch by Phil Oester.
authorPatrick McHardy <kaber@trash.net>
Sat, 18 Sep 2004 17:43:36 +0000 (17:43 +0000)
committerPatrick McHardy <kaber@trash.net>
Sat, 18 Sep 2004 17:43:36 +0000 (17:43 +0000)
extensions/libip6t_multiport.c
extensions/libipt_mport.c
extensions/libipt_multiport.c

index dc5bbf48b707c4f0b1df271640b46d309bbea4be..2dc406d10489491f0897849f395bf71a1ff54d84 100644 (file)
@@ -112,6 +112,7 @@ parse(int c, char **argv, int invert, unsigned int *flags,
 
        switch (c) {
        case '1':
+               check_inverse(argv[optind-1], &invert, &optind, 0);
                proto = check_proto(entry);
                multiinfo->count = parse_multi_ports(argv[optind-1],
                                                     multiinfo->ports, proto);
@@ -120,6 +121,7 @@ parse(int c, char **argv, int invert, unsigned int *flags,
                break;
 
        case '2':
+               check_inverse(argv[optind-1], &invert, &optind, 0);
                proto = check_proto(entry);
                multiinfo->count = parse_multi_ports(argv[optind-1],
                                                     multiinfo->ports, proto);
@@ -128,6 +130,7 @@ parse(int c, char **argv, int invert, unsigned int *flags,
                break;
 
        case '3':
+               check_inverse(argv[optind-1], &invert, &optind, 0);
                proto = check_proto(entry);
                multiinfo->count = parse_multi_ports(argv[optind-1],
                                                     multiinfo->ports, proto);
@@ -139,6 +142,10 @@ parse(int c, char **argv, int invert, unsigned int *flags,
                return 0;
        }
 
+       if (invert)
+               exit_error(PARAMETER_PROBLEM,
+                          "multiport does not support invert");
+
        if (*flags)
                exit_error(PARAMETER_PROBLEM,
                           "multiport can only have one option");
index 2ae61ff42c18afa4e232cf78a0ba76f85664f195..28568db0e9cb3717c9162a3b6c9b4c9447f16127 100644 (file)
@@ -136,6 +136,7 @@ parse(int c, char **argv, int invert, unsigned int *flags,
 
        switch (c) {
        case '1':
+               check_inverse(argv[optind-1], &invert, &optind, 0);
                proto = check_proto(entry);
                parse_multi_ports(argv[optind-1], minfo, proto);
                minfo->flags = IPT_MPORT_SOURCE;
@@ -143,6 +144,7 @@ parse(int c, char **argv, int invert, unsigned int *flags,
                break;
 
        case '2':
+               check_inverse(argv[optind-1], &invert, &optind, 0);
                proto = check_proto(entry);
                parse_multi_ports(argv[optind-1], minfo, proto);
                minfo->flags = IPT_MPORT_DESTINATION;
@@ -150,6 +152,7 @@ parse(int c, char **argv, int invert, unsigned int *flags,
                break;
 
        case '3':
+               check_inverse(argv[optind-1], &invert, &optind, 0);
                proto = check_proto(entry);
                parse_multi_ports(argv[optind-1], minfo, proto);
                minfo->flags = IPT_MPORT_EITHER;
@@ -160,6 +163,10 @@ parse(int c, char **argv, int invert, unsigned int *flags,
                return 0;
        }
 
+       if (invert)
+               exit_error(PARAMETER_PROBLEM,
+                          "multiport does not support invert");
+
        if (*flags)
                exit_error(PARAMETER_PROBLEM,
                           "multiport can only have one option");
index c9a98b3bcb3a7c5cdd1f2fb7340eee38e938d7cb..efcb58eac43e996bdb7c4a062020d2145bbde14d 100644 (file)
@@ -112,6 +112,7 @@ parse(int c, char **argv, int invert, unsigned int *flags,
 
        switch (c) {
        case '1':
+               check_inverse(argv[optind-1], &invert, &optind, 0);
                proto = check_proto(entry);
                multiinfo->count = parse_multi_ports(argv[optind-1],
                                                     multiinfo->ports, proto);
@@ -120,6 +121,7 @@ parse(int c, char **argv, int invert, unsigned int *flags,
                break;
 
        case '2':
+               check_inverse(argv[optind-1], &invert, &optind, 0);
                proto = check_proto(entry);
                multiinfo->count = parse_multi_ports(argv[optind-1],
                                                     multiinfo->ports, proto);
@@ -128,6 +130,7 @@ parse(int c, char **argv, int invert, unsigned int *flags,
                break;
 
        case '3':
+               check_inverse(argv[optind-1], &invert, &optind, 0);
                proto = check_proto(entry);
                multiinfo->count = parse_multi_ports(argv[optind-1],
                                                     multiinfo->ports, proto);
@@ -139,6 +142,10 @@ parse(int c, char **argv, int invert, unsigned int *flags,
                return 0;
        }
 
+       if (invert)
+               exit_error(PARAMETER_PROBLEM,
+                          "multiport does not support invert");
+
        if (*flags)
                exit_error(PARAMETER_PROBLEM,
                           "multiport can only have one option");