---
 tools/iptables-test.c |   22 +++++++++++++++++-----
 1 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/tools/iptables-test.c b/tools/iptables-test.c
index 1fb5b14..4c3c7fd 100644
--- a/tools/iptables-test.c
+++ b/tools/iptables-test.c
@@ -1342,7 +1342,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
@@ -1352,12 +1364,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;
 }
 
-- 
1.7.7

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

Reply via email to