summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author/C=EU/ST=EU/CN=Patrick McHardy/emailAddress=kaber@trash.net </C=EU/ST=EU/CN=Patrick McHardy/emailAddress=kaber@trash.net>2008-01-15 15:46:35 +0000
committer/C=EU/ST=EU/CN=Patrick McHardy/emailAddress=kaber@trash.net </C=EU/ST=EU/CN=Patrick McHardy/emailAddress=kaber@trash.net>2008-01-15 15:46:35 +0000
commit5c6b6c346982c98d2e9797b871556bdcb5ee36ee (patch)
tree1b378084766ef7051185dda14ac3020a24644c3f
parent86195c08ba32b992c788e2a332020246bd360f88 (diff)
Fix CONNMARK mask initialisation
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>
-rw-r--r--extensions/libxt_CONNMARK.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/extensions/libxt_CONNMARK.c b/extensions/libxt_CONNMARK.c
index 52359a0..f8c3cab 100644
--- a/extensions/libxt_CONNMARK.c
+++ b/extensions/libxt_CONNMARK.c
@@ -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,