]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
src: deduplicate find_proto function
authorJan Engelhardt <jengelh@medozas.de>
Mon, 7 Feb 2011 02:05:49 +0000 (03:05 +0100)
committerJan Engelhardt <jengelh@medozas.de>
Mon, 7 Feb 2011 02:05:49 +0000 (03:05 +0100)
Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
ip6tables.c
iptables.c
xshared.c
xshared.h

index dac0c524f99abbe2912b841ea99c7e79c6d9b449..ac376e239a2f208d00ab468c0371215e74cf38e8 100644 (file)
@@ -205,24 +205,6 @@ struct pprot {
        uint8_t num;
 };
 
-static const char *
-proto_to_name(uint8_t proto, int nolookup)
-{
-       unsigned int i;
-
-       if (proto && !nolookup) {
-               const struct protoent *pent = getprotobynumber(proto);
-               if (pent)
-                       return pent->p_name;
-       }
-
-       for (i = 0; xtables_chain_protos[i].name != NULL; ++i)
-               if (xtables_chain_protos[i].num == proto)
-                       return xtables_chain_protos[i].name;
-
-       return NULL;
-}
-
 static void __attribute__((noreturn))
 exit_tryhelp(int status)
 {
@@ -406,24 +388,6 @@ add_command(unsigned int *cmd, const int newcmd, const int othercmds,
  *     return global static data.
 */
 
-/* Christophe Burki wants `-p 6' to imply `-m tcp'.  */
-static struct xtables_match *
-find_proto(const char *pname, enum xtables_tryload tryload,
-          int nolookup, struct xtables_rule_match **matches)
-{
-       unsigned int proto;
-
-       if (xtables_strtoui(pname, NULL, &proto, 0, UINT8_MAX)) {
-               const char *protoname = proto_to_name(proto, nolookup);
-
-               if (protoname)
-                       return xtables_find_match(protoname, tryload, matches);
-       } else
-               return xtables_find_match(pname, tryload, matches);
-
-       return NULL;
-}
-
 /* These are invalid numbers as upper layer protocol */
 static int is_exthdr(uint16_t proto)
 {
index 68819819551efc5026973906ee559e575e86a849..9d4f10c472cba2a5c5565436e933dd33a5f360f0 100644 (file)
@@ -213,24 +213,6 @@ int kernel_version;
 #endif
 #endif
 
-static const char *
-proto_to_name(uint8_t proto, int nolookup)
-{
-       unsigned int i;
-
-       if (proto && !nolookup) {
-               struct protoent *pent = getprotobynumber(proto);
-               if (pent)
-                       return pent->p_name;
-       }
-
-       for (i = 0; xtables_chain_protos[i].name != NULL; ++i)
-               if (xtables_chain_protos[i].num == proto)
-                       return xtables_chain_protos[i].name;
-
-       return NULL;
-}
-
 enum {
        IPT_DOTTED_ADDR = 0,
        IPT_DOTTED_MASK
@@ -420,23 +402,6 @@ add_command(unsigned int *cmd, const int newcmd, const int othercmds,
 */
 
 /* Christophe Burki wants `-p 6' to imply `-m tcp'.  */
-static struct xtables_match *
-find_proto(const char *pname, enum xtables_tryload tryload,
-          int nolookup, struct xtables_rule_match **matches)
-{
-       unsigned int proto;
-
-       if (xtables_strtoui(pname, NULL, &proto, 0, UINT8_MAX)) {
-               const char *protoname = proto_to_name(proto, nolookup);
-
-               if (protoname)
-                       return xtables_find_match(protoname, tryload, matches);
-       } else
-               return xtables_find_match(pname, tryload, matches);
-
-       return NULL;
-}
-
 /* Can't be zero. */
 static int
 parse_rulenumber(const char *rule)
index 21b5b2cb022a58c80991cbd014fe0e0c17c316a7..40b6b560e687f564f368e1155f2cc838242ba458 100644 (file)
--- a/xshared.c
+++ b/xshared.c
@@ -1,3 +1,5 @@
+#include <netdb.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <xtables.h>
 #include "xshared.h"
@@ -29,3 +31,38 @@ void print_extension_helps(const struct xtables_target *t,
                        m->match->help();
        }
 }
+
+const char *
+proto_to_name(uint8_t proto, int nolookup)
+{
+       unsigned int i;
+
+       if (proto && !nolookup) {
+               struct protoent *pent = getprotobynumber(proto);
+               if (pent)
+                       return pent->p_name;
+       }
+
+       for (i = 0; xtables_chain_protos[i].name != NULL; ++i)
+               if (xtables_chain_protos[i].num == proto)
+                       return xtables_chain_protos[i].name;
+
+       return NULL;
+}
+
+struct xtables_match *
+find_proto(const char *pname, enum xtables_tryload tryload,
+          int nolookup, struct xtables_rule_match **matches)
+{
+       unsigned int proto;
+
+       if (xtables_strtoui(pname, NULL, &proto, 0, UINT8_MAX)) {
+               const char *protoname = proto_to_name(proto, nolookup);
+
+               if (protoname)
+                       return xtables_find_match(protoname, tryload, matches);
+       } else
+               return xtables_find_match(pname, tryload, matches);
+
+       return NULL;
+}
index 4a7f96fc3f151bcf188e58d086070576627120fe..11d95fe57e8c3d93e1dbe74ab64ed5a57a0d14ac 100644 (file)
--- a/xshared.h
+++ b/xshared.h
@@ -1,6 +1,7 @@
 #ifndef IPTABLES_XSHARED_H
 #define IPTABLES_XSHARED_H 1
 
+#include <stdint.h>
 #include <linux/netfilter_ipv4/ip_tables.h>
 #include <linux/netfilter_ipv6/ip6_tables.h>
 
@@ -28,5 +29,8 @@ enum {
 
 extern void print_extension_helps(const struct xtables_target *,
        const struct xtables_rule_match *);
+extern const char *proto_to_name(uint8_t, int);
+extern struct xtables_match *find_proto(const char *, enum xtables_tryload,
+       int, struct xtables_rule_match **);
 
 #endif /* IPTABLES_XSHARED_H */