From 853322131026d62df3f8d77d67e5c63be496303c Mon Sep 17 00:00:00 2001 From: Jamal Hadi Salim Date: Thu, 12 Feb 2009 09:33:59 -0500 Subject: libxtables: add xtables_set_revision Introduce xtables_set_revision() and make iptables and ip6tables use it. Signed-off-by: Jamal Hadi Salim --- include/xtables.h.in | 1 + ip6tables.c | 14 +++----------- iptables.c | 16 ++++------------ xtables.c | 8 ++++++++ 4 files changed, 16 insertions(+), 23 deletions(-) diff --git a/include/xtables.h.in b/include/xtables.h.in index ae1594a6..5af52071 100644 --- a/include/xtables.h.in +++ b/include/xtables.h.in @@ -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, diff --git a/ip6tables.c b/ip6tables.c index fad7ef2d..19c3258c 100644 --- a/ip6tables.c +++ b/ip6tables.c @@ -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); diff --git a/iptables.c b/iptables.c index 670d8aa7..7974f9aa 100644 --- a/iptables.c +++ b/iptables.c @@ -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); diff --git a/xtables.c b/xtables.c index d85e6390..bc6a65e5 100644 --- 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") -- cgit v1.2.3