]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
iptables: consolidate target/match init call
authorJan Engelhardt <jengelh@medozas.de>
Sat, 18 Jun 2011 19:18:29 +0000 (21:18 +0200)
committerJan Engelhardt <jengelh@medozas.de>
Tue, 21 Jun 2011 15:05:11 +0000 (17:05 +0200)
This is useful for the upcoming patch about per-instance auxiliary
data.

Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
iptables/ip6tables.c
iptables/iptables.c
iptables/xshared.c
iptables/xshared.h

index 4037acfb1499a9d300035f5b6d4cadf537fae355..d13744ca20fba8cdf3f2290e70381bd8dc6633f0 100644 (file)
@@ -1288,8 +1288,7 @@ static void command_jump(struct iptables_command_state *cs)
        cs->target->t->u.target_size = size;
        strcpy(cs->target->t->u.user.name, cs->jumpto);
        cs->target->t->u.user.revision = cs->target->revision;
-       if (cs->target->init != NULL)
-               cs->target->init(cs->target->t);
+       xs_init_target(cs->target);
        if (cs->target->x6_options != NULL)
                opts = xtables_options_xfrm(ip6tables_globals.orig_opts, opts,
                                            cs->target->x6_options,
@@ -1317,8 +1316,7 @@ static void command_match(struct iptables_command_state *cs)
        m->m->u.match_size = size;
        strcpy(m->m->u.user.name, m->name);
        m->m->u.user.revision = m->revision;
-       if (m->init != NULL)
-               m->init(m->m);
+       xs_init_match(m);
        if (m == m->next)
                return;
        /* Merge options for non-cloned matches */
@@ -1839,8 +1837,7 @@ int do_command6(int argc, char *argv[], char **table, struct ip6tc_handle **hand
                        cs.target->t = xtables_calloc(1, size);
                        cs.target->t->u.target_size = size;
                        strcpy(cs.target->t->u.user.name, cs.jumpto);
-                       if (cs.target->init != NULL)
-                               cs.target->init(cs.target->t);
+                       xs_init_target(cs.target);
                }
 
                if (!cs.target) {
index 4ae7541922dce7e24a7722f7bf8679511f88d6d7..477e8f1ddb2ec436866afd0cab1da4f4b6c480ec 100644 (file)
@@ -1315,8 +1315,8 @@ static void command_jump(struct iptables_command_state *cs)
        cs->target->t->u.target_size = size;
        strcpy(cs->target->t->u.user.name, cs->jumpto);
        cs->target->t->u.user.revision = cs->target->revision;
-       if (cs->target->init != NULL)
-               cs->target->init(cs->target->t);
+       xs_init_target(cs->target);
+
        if (cs->target->x6_options != NULL)
                opts = xtables_options_xfrm(iptables_globals.orig_opts, opts,
                                            cs->target->x6_options,
@@ -1344,8 +1344,7 @@ static void command_match(struct iptables_command_state *cs)
        m->m->u.match_size = size;
        strcpy(m->m->u.user.name, m->name);
        m->m->u.user.revision = m->revision;
-       if (m->init != NULL)
-               m->init(m->m);
+       xs_init_match(m);
        if (m == m->next)
                return;
        /* Merge options for non-cloned matches */
@@ -1871,8 +1870,7 @@ int do_command4(int argc, char *argv[], char **table, struct iptc_handle **handl
                        strcpy(cs.target->t->u.user.name, cs.jumpto);
                        if (!iptc_is_chain(cs.jumpto, *handle))
                                cs.target->t->u.user.revision = cs.target->revision;
-                       if (cs.target->init != NULL)
-                               cs.target->init(cs.target->t);
+                       xs_init_target(cs.target);
                }
 
                if (!cs.target) {
index 0e3857bb86491d3a2fee6d0e5af9b89beb674ef7..55ce5504126bb984dc6f20c383e1a8cfb446633a 100644 (file)
@@ -145,8 +145,7 @@ int command_default(struct iptables_command_state *cs,
                m->m->u.match_size = size;
                strcpy(m->m->u.user.name, m->name);
                m->m->u.user.revision = m->revision;
-               if (m->init != NULL)
-                       m->init(m->m);
+               xs_init_match(m);
 
                if (m->x6_options != NULL)
                        gl->opts = xtables_options_xfrm(gl->orig_opts,
@@ -207,3 +206,15 @@ int subcmd_main(int argc, char **argv, const struct subcommand *cb)
                fprintf(stderr, " * %s\n", cb->name);
        exit(EXIT_FAILURE);
 }
+
+void xs_init_target(struct xtables_target *target)
+{
+       if (target->init != NULL)
+               target->init(target->t);
+}
+
+void xs_init_match(struct xtables_match *match)
+{
+       if (match->init != NULL)
+               match->init(match->m);
+}
index b44a3a35ce4eb8ed6f496ed8fea3508842bce7f5..b804aafe8c29f406743d953cfe0389555e3482ee 100644 (file)
@@ -81,6 +81,8 @@ extern int command_default(struct iptables_command_state *,
        struct xtables_globals *);
 extern struct xtables_match *load_proto(struct iptables_command_state *);
 extern int subcmd_main(int, char **, const struct subcommand *);
+extern void xs_init_target(struct xtables_target *);
+extern void xs_init_match(struct xtables_match *);
 
 extern const struct xtables_afinfo *afinfo;