From 3d11b21da2540b972e6197219fecc10b1773a685 Mon Sep 17 00:00:00 2001 From: "/C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=laforge/emailAddress=laforge@netfilter.org" Date: Wed, 22 Jun 2005 12:24:21 +0000 Subject: reduce code replication of parse_interface() (Yasuyuki Kozakai) --- extensions/libip6t_physdev.c | 39 --------------------------------------- extensions/libipt_physdev.c | 39 --------------------------------------- include/ip6tables.h | 2 ++ include/iptables.h | 1 + ip6tables.c | 3 +-- iptables.c | 3 +-- 6 files changed, 5 insertions(+), 82 deletions(-) diff --git a/extensions/libip6t_physdev.c b/extensions/libip6t_physdev.c index ab2087c..fb47347 100644 --- a/extensions/libip6t_physdev.c +++ b/extensions/libip6t_physdev.c @@ -34,45 +34,6 @@ static struct option opts[] = { {0} }; -/* copied from iptables.c */ -static void -parse_interface(const char *arg, char *vianame, unsigned char *mask) -{ - int vialen = strlen(arg); - unsigned int i; - - memset(mask, 0, IFNAMSIZ); - memset(vianame, 0, IFNAMSIZ); - - if (vialen + 1 > IFNAMSIZ) - exit_error(PARAMETER_PROBLEM, - "interface name `%s' must be shorter than IFNAMSIZ" - " (%i)", arg, IFNAMSIZ-1); - - strcpy(vianame, arg); - if (vialen == 0) - memset(mask, 0, IFNAMSIZ); - else if (vianame[vialen - 1] == '+') { - memset(mask, 0xFF, vialen - 1); - memset(mask + vialen - 1, 0, IFNAMSIZ - vialen + 1); - /* Don't remove `+' here! -HW */ - } else { - /* Include nul-terminator in match */ - memset(mask, 0xFF, vialen + 1); - memset(mask + vialen + 1, 0, IFNAMSIZ - vialen - 1); - for (i = 0; vianame[i]; i++) { - if (!isalnum(vianame[i]) - && vianame[i] != '_' - && vianame[i] != '.') { - printf("Warning: wierd character in interface" - " `%s' (No aliases, :, ! or *).\n", - vianame); - break; - } - } - } -} - static void init(struct ip6t_entry_match *m, unsigned int *nfcache) { diff --git a/extensions/libipt_physdev.c b/extensions/libipt_physdev.c index 0c4c357..b6dae2a 100644 --- a/extensions/libipt_physdev.c +++ b/extensions/libipt_physdev.c @@ -34,45 +34,6 @@ static struct option opts[] = { {0} }; -/* copied from iptables.c */ -static void -parse_interface(const char *arg, char *vianame, unsigned char *mask) -{ - int vialen = strlen(arg); - unsigned int i; - - memset(mask, 0, IFNAMSIZ); - memset(vianame, 0, IFNAMSIZ); - - if (vialen + 1 > IFNAMSIZ) - exit_error(PARAMETER_PROBLEM, - "interface name `%s' must be shorter than IFNAMSIZ" - " (%i)", arg, IFNAMSIZ-1); - - strcpy(vianame, arg); - if (vialen == 0) - memset(mask, 0, IFNAMSIZ); - else if (vianame[vialen - 1] == '+') { - memset(mask, 0xFF, vialen - 1); - memset(mask + vialen - 1, 0, IFNAMSIZ - vialen + 1); - /* Don't remove `+' here! -HW */ - } else { - /* Include nul-terminator in match */ - memset(mask, 0xFF, vialen + 1); - memset(mask + vialen + 1, 0, IFNAMSIZ - vialen - 1); - for (i = 0; vianame[i]; i++) { - if (!isalnum(vianame[i]) - && vianame[i] != '_' - && vianame[i] != '.') { - printf("Warning: wierd character in interface" - " `%s' (No aliases, :, ! or *).\n", - vianame); - break; - } - } - } -} - static void init(struct ipt_entry_match *m, unsigned int *nfcache) { diff --git a/include/ip6tables.h b/include/ip6tables.h index d4dadd8..81d99d8 100644 --- a/include/ip6tables.h +++ b/include/ip6tables.h @@ -137,6 +137,8 @@ enum ip6t_tryload { extern struct ip6tables_target *find_target(const char *name, enum ip6t_tryload); extern struct ip6tables_match *find_match(const char *name, enum ip6t_tryload, struct ip6tables_rule_match **match); +extern void parse_interface(const char *arg, char *vianame, unsigned char *mask); + extern int for_each_chain(int (*fn)(const ip6t_chainlabel, int, ip6tc_handle_t *), int verbose, int builtinstoo, ip6tc_handle_t *handle); extern int flush_entries(const ip6t_chainlabel chain, int verbose, ip6tc_handle_t *handle); extern int delete_chain(const ip6t_chainlabel chain, int verbose, ip6tc_handle_t *handle); diff --git a/include/iptables.h b/include/iptables.h index 25f36ae..f0cad8d 100644 --- a/include/iptables.h +++ b/include/iptables.h @@ -152,6 +152,7 @@ extern char *mask_to_dotted(const struct in_addr *mask); extern void parse_hostnetworkmask(const char *name, struct in_addr **addrpp, struct in_addr *maskp, unsigned int *naddrs); extern u_int16_t parse_protocol(const char *s); +extern void parse_interface(const char *arg, char *vianame, unsigned char *mask); extern int do_command(int argc, char *argv[], char **table, iptc_handle_t *handle); diff --git a/ip6tables.c b/ip6tables.c index fd38a2d..9bfe1d3 100644 --- a/ip6tables.c +++ b/ip6tables.c @@ -829,8 +829,7 @@ parse_protocol(const char *s) return (u_int16_t)proto; } -static void -parse_interface(const char *arg, char *vianame, unsigned char *mask) +void parse_interface(const char *arg, char *vianame, unsigned char *mask) { int vialen = strlen(arg); unsigned int i; diff --git a/iptables.c b/iptables.c index f8250ce..92c6c49 100644 --- a/iptables.c +++ b/iptables.c @@ -769,8 +769,7 @@ parse_protocol(const char *s) return (u_int16_t)proto; } -static void -parse_interface(const char *arg, char *vianame, unsigned char *mask) +void parse_interface(const char *arg, char *vianame, unsigned char *mask) { int vialen = strlen(arg); unsigned int i; -- cgit v1.2.3