---
src/iptables.c | 22 +++++++++++++++++-----
1 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/src/iptables.c b/src/iptables.c
index 79f52b1..a3d880c 100644
--- a/src/iptables.c
+++ b/src/iptables.c
@@ -1352,8 +1352,20 @@ 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)
iptables_globals.opts =
+ xtables_options_xfrm(
+#if XTABLES_VERSION_CODE > 5
+ iptables_globals.orig_opts,
+#endif
+ iptables_globals.opts,
+ xt_m->x6_options,
+ &xt_m->option_offset);
+ else
+ iptables_globals.opts =
xtables_merge_options(
#if XTABLES_VERSION_CODE > 5
iptables_globals.orig_opts,
@@ -1362,12 +1374,12 @@ static struct xtables_match *prepare_matches(struct
connman_iptables *table,
xt_m->extra_opts,
&xt_m->option_offset);
- if (iptables_globals.opts == NULL) {
- g_free(xt_m->m);
- xt_m = NULL;
- }
+ if (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