From: Daniel Wagner <[email protected]>

The flags are only valid per rule. If we don't clear them
__connman_iptables_command() can't be called with such a rule set:

iptables -t mangle -A INPUT -j CONNMARK --restore-mark
iptables -t mangle -A POSTROUTING -j CONNMARK --save-mark

(--restore-mark and --save-mark are exclusive options)
---
 src/iptables.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/iptables.c b/src/iptables.c
index 16b665a..0d217b3 100644
--- a/src/iptables.c
+++ b/src/iptables.c
@@ -1550,6 +1550,18 @@ static int iptables_command(int argc, char *argv[])
        /* Default code for options parsing */
        ret = -EINVAL;
 
+       /*
+        * Clear all flags because the flags are only valid
+        * for one rule.
+        */
+       for (xt_m = xtables_matches; xt_m != NULL; xt_m = xt_m->next)
+               xt_m->mflags = 0;
+
+       for (xt_t = xtables_targets; xt_t != NULL; xt_t = xt_t->next) {
+               xt_t->tflags = 0;
+               xt_t->used = 0;
+       }
+
        /* extension's options will generate false-positives errors */
        opterr = 0;
 
-- 
1.8.0.rc0

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to