From: Tomasz Bursztyka Date: Mon, 31 Oct 2011 09:33:47 +0000 (+0200) Subject: tools: Fix xtables API version issues with iptables-test X-Git-Tag: 2.0_alpha~977 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7559d1e90f9a607cb83525af1c95b581adae0c0f;hp=adf8327243aba249cd3b50690c2ca369fafaee8d;p=framework%2Fconnectivity%2Fconnman.git tools: Fix xtables API version issues with iptables-test --- diff --git a/tools/iptables-test.c b/tools/iptables-test.c index fe90e0e..3bbe43b 100644 --- a/tools/iptables-test.c +++ b/tools/iptables-test.c @@ -1323,16 +1323,17 @@ static struct xtables_target *prepare_target(struct connman_iptables *table, xt_t->init(xt_t->t); } +#if XTABLES_VERSION_CODE > 5 if (xt_t->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_t->x6_options, &xt_t->option_offset); else +#endif connman_iptables_globals.opts = xtables_merge_options( #if XTABLES_VERSION_CODE > 5 @@ -1376,16 +1377,16 @@ static struct xtables_match *prepare_matches(struct connman_iptables *table, if (xt_m == xt_m->next) goto done; +#if XTABLES_VERSION_CODE > 5 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 +#endif connman_iptables_globals.opts = xtables_merge_options( #if XTABLES_VERSION_CODE > 5 @@ -1577,6 +1578,7 @@ int main(int argc, char *argv[]) return -1; default: +#if XTABLES_VERSION_CODE > 5 if (xt_t != NULL && (xt_t->x6_parse != NULL || xt_t->parse != NULL) && (c >= (int) xt_t->option_offset && @@ -1607,19 +1609,49 @@ int main(int argc, char *argv[]) break; } +#else + if (xt_t == NULL || xt_t->parse == NULL || + !xt_t->parse(c - xt_t->option_offset, + argv, invert, &xt_t->tflags, NULL, &xt_t->t)) { + for (tmp_xt_rm = xt_rm; tmp_xt_rm != NULL; + tmp_xt_rm = tmp_xt_rm->next) { + xt_m_t = tmp_xt_rm->match; + + if (tmp_xt_rm->completed || + xt_m_t->parse == NULL) + continue; + + if (xt_m->parse(c - xt_m->option_offset, + argv, invert, &xt_m->mflags, + NULL, &xt_m->m)) + break; + } + } +#endif break; } invert = FALSE; } +#if XTABLES_VERSION_CODE > 5 for (tmp_xt_rm = xt_rm; tmp_xt_rm != NULL; tmp_xt_rm = tmp_xt_rm->next) xtables_option_mfcall(tmp_xt_rm->match); if (xt_t != NULL) xtables_option_tfcall(xt_t); +#else + for (tmp_xt_rm = xt_rm; tmp_xt_rm != NULL; + tmp_xt_rm = tmp_xt_rm->next) + if (tmp_xt_rm->match->final_check != NULL) + tmp_xt_rm->match->final_check( + tmp_xt_rm->match->mflags); + + if (xt_t != NULL && xt_t->final_check != NULL) + xt_t->final_check(xt_t->tflags); +#endif if (table_name == NULL) table_name = "filter";