]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
libxtables: add xtables_set_revision
authorJamal Hadi Salim <hadi@cyberus.ca>
Thu, 12 Feb 2009 14:33:59 +0000 (09:33 -0500)
committerJan Engelhardt <jengelh@medozas.de>
Thu, 12 Feb 2009 17:56:45 +0000 (18:56 +0100)
Introduce xtables_set_revision() and make iptables and ip6tables use it.

Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
include/xtables.h.in
ip6tables.c
iptables.c
xtables.c

index ae1594a65a68c3ad148838fac0dd6d5186697821..5af52071ceeba45f49e2a7c4d7b66c4643bbea45 100644 (file)
@@ -204,6 +204,7 @@ extern void *xtables_malloc(size_t);
 extern int xtables_insmod(const char *, const char *, bool);
 extern int xtables_load_ko(const char *, bool);
 extern int xtables_set_params(struct xtables_globals *xtp);
+extern void xtables_set_revision(char *name, u_int8_t revision);
 void xtables_free_opts(int reset_offset, struct option *original_opts);
 
 extern struct xtables_match *xtables_find_match(const char *name,
index fad7ef2d58c3b5a074555699553876d947a1c0c3..19c3258c0f0974b1c64b7c321bb904e5c8df9d1c 100644 (file)
@@ -1325,14 +1325,6 @@ static void clear_rule_matches(struct xtables_rule_match **matches)
        *matches = NULL;
 }
 
-static void set_revision(char *name, u_int8_t revision)
-{
-       /* Old kernel sources don't have ".revision" field,
-          but we stole a byte from name. */
-       name[IP6T_FUNCTION_MAXNAMELEN - 2] = '\0';
-       name[IP6T_FUNCTION_MAXNAMELEN - 1] = revision;
-}
-
 int do_command6(int argc, char *argv[], char **table, struct ip6tc_handle **handle)
 {
        struct ip6t_entry fw, *e = NULL;
@@ -1597,7 +1589,7 @@ int do_command6(int argc, char *argv[], char **table, struct ip6tc_handle **hand
                                target->t = xtables_calloc(1, size);
                                target->t->u.target_size = size;
                                strcpy(target->t->u.user.name, jumpto);
-                               set_revision(target->t->u.user.name,
+                               xtables_set_revision(target->t->u.user.name,
                                             target->revision);
                                if (target->init != NULL)
                                        target->init(target->t);
@@ -1650,7 +1642,7 @@ int do_command6(int argc, char *argv[], char **table, struct ip6tc_handle **hand
                        m->m = xtables_calloc(1, size);
                        m->m->u.match_size = size;
                        strcpy(m->m->u.user.name, m->name);
-                       set_revision(m->m->u.user.name, m->revision);
+                       xtables_set_revision(m->m->u.user.name, m->revision);
                        if (m->init != NULL)
                                m->init(m->m);
                        if (m != m->next)
@@ -1797,7 +1789,7 @@ int do_command6(int argc, char *argv[], char **table, struct ip6tc_handle **hand
                                        m->m = xtables_calloc(1, size);
                                        m->m->u.match_size = size;
                                        strcpy(m->m->u.user.name, m->name);
-                                       set_revision(m->m->u.user.name,
+                                       xtables_set_revision(m->m->u.user.name,
                                                     m->revision);
                                        if (m->init != NULL)
                                                m->init(m->m);
index 670d8aa717b1a439c3b191ab4bc9442c76ce5363..7974f9aaa6df814bf6696049de5d88eb1557e9fe 100644 (file)
@@ -1335,14 +1335,6 @@ static void clear_rule_matches(struct xtables_rule_match **matches)
        *matches = NULL;
 }
 
-static void set_revision(char *name, u_int8_t revision)
-{
-       /* Old kernel sources don't have ".revision" field,
-          but we stole a byte from name. */
-       name[IPT_FUNCTION_MAXNAMELEN - 2] = '\0';
-       name[IPT_FUNCTION_MAXNAMELEN - 1] = revision;
-}
-
 void
 get_kernel_version(void) {
        static struct utsname uts;
@@ -1613,7 +1605,7 @@ int do_command(int argc, char *argv[], char **table, struct iptc_handle **handle
                                target->t = xtables_calloc(1, size);
                                target->t->u.target_size = size;
                                strcpy(target->t->u.user.name, jumpto);
-                               set_revision(target->t->u.user.name,
+                               xtables_set_revision(target->t->u.user.name,
                                             target->revision);
                                if (target->init != NULL)
                                        target->init(target->t);
@@ -1672,7 +1664,7 @@ int do_command(int argc, char *argv[], char **table, struct iptc_handle **handle
                        m->m = xtables_calloc(1, size);
                        m->m->u.match_size = size;
                        strcpy(m->m->u.user.name, m->name);
-                       set_revision(m->m->u.user.name, m->revision);
+                       xtables_set_revision(m->m->u.user.name, m->revision);
                        if (m->init != NULL)
                                m->init(m->m);
                        if (m != m->next) {
@@ -1826,7 +1818,7 @@ int do_command(int argc, char *argv[], char **table, struct iptc_handle **handle
                                        m->m = xtables_calloc(1, size);
                                        m->m->u.match_size = size;
                                        strcpy(m->m->u.user.name, m->name);
-                                       set_revision(m->m->u.user.name,
+                                       xtables_set_revision(m->m->u.user.name,
                                                     m->revision);
                                        if (m->init != NULL)
                                                m->init(m->m);
@@ -1987,7 +1979,7 @@ int do_command(int argc, char *argv[], char **table, struct iptc_handle **handle
                        target->t->u.target_size = size;
                        strcpy(target->t->u.user.name, jumpto);
                        if (!iptc_is_chain(jumpto, *handle))
-                               set_revision(target->t->u.user.name,
+                               xtables_set_revision(target->t->u.user.name,
                                             target->revision);
                        if (target->init != NULL)
                                target->init(target->t);
index d85e63909195c1184d420d4c793d3a9f77b026af..bc6a65e5bc6110f557cd97dbca65131ff3a72710 100644 (file)
--- a/xtables.c
+++ b/xtables.c
@@ -108,6 +108,14 @@ void xtables_free_opts(int reset_offset, struct option *original_opts)
        }
 }
 
+void xtables_set_revision(char *name, u_int8_t revision)
+{
+       /* Old kernel sources don't have ".revision" field,
+       *            but we stole a byte from name. */
+       name[XT_FUNCTION_MAXNAMELEN - 2] = '\0';
+       name[XT_FUNCTION_MAXNAMELEN - 1] = revision;
+}
+
 /**
  * xtables_afinfo - protocol family dependent information
  * @kmod:              kernel module basename (e.g. "ip_tables")