tools: Add x6_options matches handling to iptables-test
authorTomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
Thu, 27 Oct 2011 07:24:51 +0000 (10:24 +0300)
committerSamuel Ortiz <sameo@linux.intel.com>
Fri, 28 Oct 2011 19:26:12 +0000 (21:26 +0200)
tools/iptables-test.c

index 40ae013..56598aa 100644 (file)
@@ -1339,7 +1339,19 @@ static struct xtables_match *prepare_matches(struct connman_iptables *table,
        if (xt_m->init != NULL)
                xt_m->init(xt_m->m);
 
-       if (xt_m != xt_m->next) {
+       if (xt_m == xt_m->next)
+               goto done;
+
+       if (xt_m->x6_options != NULL)
+               connman_iptables_globals.opts =
+                       xtables_options_xfrm(
+#if XTABLES_VERSION_CODE > 5
+                               connman_iptables_globals.orig_opts,
+#endif
+                               connman_iptables_globals.opts,
+                               xt_m->x6_options,
+                               &xt_m->option_offset);
+       else
                connman_iptables_globals.opts =
                        xtables_merge_options(
 #if XTABLES_VERSION_CODE > 5
@@ -1349,12 +1361,12 @@ static struct xtables_match *prepare_matches(struct connman_iptables *table,
                                xt_m->extra_opts,
                                &xt_m->option_offset);
 
-               if (connman_iptables_globals.opts == NULL) {
-                       g_free(xt_m->m);
-                       xt_m = NULL;
-               }
+       if (connman_iptables_globals.opts == NULL) {
+               g_free(xt_m->m);
+               xt_m = NULL;
        }
 
+done:
        return xt_m;
 }