summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/iptables-test.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/tools/iptables-test.c b/tools/iptables-test.c
index 40ae0135..56598aad 100644
--- a/tools/iptables-test.c
+++ b/tools/iptables-test.c
@@ -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;
}