]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
Fix CONNMARK mask initialisation
authorPeter Warasin <peter@endian.com>
Tue, 15 Jan 2008 15:46:35 +0000 (15:46 +0000)
committerPatrick McHardy <kaber@trash.net>
Tue, 15 Jan 2008 15:46:35 +0000 (15:46 +0000)
This patch fixes the problem that the CONNMARK mask value
has been set to 0 whenever the CONNMARK target options were
not the last options to be processed.
It initalizes the mask value rather than setting it for
each parse.

Signed-off-by: Peter Warasin <peter@endian.com>
extensions/libxt_CONNMARK.c

index 52359a090e265d826ed58a6edabb752d25c240d1..f8c3cabaa58ff0b142c0db0d79505be39a511b2c 100644 (file)
@@ -64,8 +64,6 @@ CONNMARK_parse(int c, char **argv, int invert, unsigned int *flags,
        struct xt_connmark_target_info *markinfo
                = (struct xt_connmark_target_info *)(*target)->data;
 
-       markinfo->mask = 0xffffffffUL;
-
        switch (c) {
                char *end;
        case '1':
@@ -188,6 +186,14 @@ static void CONNMARK_save(const void *ip, const struct xt_entry_target *target)
        }
 }
 
+static void CONNMARK_init(struct xt_entry_target *t)
+{
+       struct xt_connmark_target_info *markinfo
+               = (struct xt_connmark_target_info *)t->data;
+
+       markinfo->mask = 0xffffffffUL;
+}
+
 static struct xtables_target connmark_target = {
        .family         = AF_INET,
        .name           = "CONNMARK",
@@ -195,6 +201,7 @@ static struct xtables_target connmark_target = {
        .size           = XT_ALIGN(sizeof(struct xt_connmark_target_info)),
        .userspacesize  = XT_ALIGN(sizeof(struct xt_connmark_target_info)),
        .help           = CONNMARK_help,
+       .init           = CONNMARK_init,
        .parse          = CONNMARK_parse,
        .final_check    = CONNMARK_check,
        .print          = CONNMARK_print,
@@ -209,6 +216,7 @@ static struct xtables_target connmark_target6 = {
        .size           = XT_ALIGN(sizeof(struct xt_connmark_target_info)),
        .userspacesize  = XT_ALIGN(sizeof(struct xt_connmark_target_info)),
        .help           = CONNMARK_help,
+       .init           = CONNMARK_init,
        .parse          = CONNMARK_parse,
        .final_check    = CONNMARK_check,
        .print          = CONNMARK_print,