]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
reduce code replication of parse_interface() (Yasuyuki Kozakai)
authorYasuyuki KOZAKAI <yasuyuki.kozakai@toshiba.co.jp>
Wed, 22 Jun 2005 12:24:21 +0000 (12:24 +0000)
committerHarald Welte <laforge@gnumonks.org>
Wed, 22 Jun 2005 12:24:21 +0000 (12:24 +0000)
extensions/libip6t_physdev.c
extensions/libipt_physdev.c
include/ip6tables.h
include/iptables.h
ip6tables.c
iptables.c

index ab2087cbf5c5eebc417c8663683ccafcde2b64b3..fb473470430264eb1832547250781781320de252 100644 (file)
@@ -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)
 {
index 0c4c35761fe5cf8f2a445ff05f4aebba7fa8c4a1..b6dae2ac86e8ba2709a0d6c6f1a3e3ebe5d13fdc 100644 (file)
@@ -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)
 {
index d4dadd881f85452093351eb6969c6545f3bf25e9..81d99d861fb785047640042f3476b0ea86025a0e 100644 (file)
@@ -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);
index 25f36aeb14925e69ef0e3d8cc2a9533daf26b302..f0cad8daa672fa0039078fe7ed7df546044f2f8f 100644 (file)
@@ -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);
index fd38a2db89e32c97aa06b6e6a984e3a9dc8b81fa..9bfe1d3831923ab98f48c2dc3202cc9a3ea0eac0 100644 (file)
@@ -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;
index f8250cef917798c804eed9eb77cc98244994039b..92c6c49cb777111e1d47826dbb9294f7c0063469 100644 (file)
@@ -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;