From 18c7ec36ac949aaaf28aa25d11c0289a88d35592 Mon Sep 17 00:00:00 2001 From: "/C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=kaber/emailAddress=kaber@netfilter.org" Date: Thu, 20 Jul 2006 17:01:54 +0000 Subject: [PATCH] reduce parse_*_port duplication (Phil Oester ) The below patch (dependent upon my 'reduce service_to_port duplication' patch) centralizes the parse_*_port functions into parse_port. --- extensions/libip6t_multiport.c | 13 ------------- extensions/libip6t_tcp.c | 19 +++---------------- extensions/libip6t_udp.c | 19 +++---------------- extensions/libipt_dccp.c | 20 +++----------------- extensions/libipt_mport.c | 13 ------------- extensions/libipt_multiport.c | 13 ------------- extensions/libipt_sctp.c | 20 +++----------------- extensions/libipt_tcp.c | 19 +++---------------- extensions/libipt_udp.c | 19 +++---------------- 9 files changed, 18 insertions(+), 137 deletions(-) (limited to 'extensions') diff --git a/extensions/libip6t_multiport.c b/extensions/libip6t_multiport.c index d33db9f..ed5fffe 100644 --- a/extensions/libip6t_multiport.c +++ b/extensions/libip6t_multiport.c @@ -50,19 +50,6 @@ proto_to_name(u_int8_t proto) } } -static u_int16_t -parse_port(const char *port, const char *proto) -{ - unsigned int portnum; - - if ((string_to_number(port, 0, 65535, &portnum)) != -1 || - (portnum = service_to_port(port, proto)) != -1) - return (u_int16_t)portnum; - - exit_error(PARAMETER_PROBLEM, - "invalid port/service `%s' specified", port); -} - static unsigned int parse_multi_ports(const char *portstring, u_int16_t *ports, const char *proto) { diff --git a/extensions/libip6t_tcp.c b/extensions/libip6t_tcp.c index d89a346..734387c 100644 --- a/extensions/libip6t_tcp.c +++ b/extensions/libip6t_tcp.c @@ -38,19 +38,6 @@ static struct option opts[] = { {0} }; -static u_int16_t -parse_tcp_port(const char *port) -{ - unsigned int portnum; - - if (string_to_number(port, 0, 65535, &portnum) != -1 || - (portnum = service_to_port(port, "tcp")) != -1) - return (u_int16_t)portnum; - - exit_error(PARAMETER_PROBLEM, - "invalid TCP port/service `%s' specified", port); -} - static void parse_tcp_ports(const char *portstring, u_int16_t *ports) { @@ -59,13 +46,13 @@ parse_tcp_ports(const char *portstring, u_int16_t *ports) buffer = strdup(portstring); if ((cp = strchr(buffer, ':')) == NULL) - ports[0] = ports[1] = parse_tcp_port(buffer); + ports[0] = ports[1] = parse_port(buffer, "tcp"); else { *cp = '\0'; cp++; - ports[0] = buffer[0] ? parse_tcp_port(buffer) : 0; - ports[1] = cp[0] ? parse_tcp_port(cp) : 0xFFFF; + ports[0] = buffer[0] ? parse_port(buffer, "tcp") : 0; + ports[1] = cp[0] ? parse_port(cp, "tcp") : 0xFFFF; if (ports[0] > ports[1]) exit_error(PARAMETER_PROBLEM, diff --git a/extensions/libip6t_udp.c b/extensions/libip6t_udp.c index 656a79e..cd3c3d4 100644 --- a/extensions/libip6t_udp.c +++ b/extensions/libip6t_udp.c @@ -30,19 +30,6 @@ static struct option opts[] = { {0} }; -static u_int16_t -parse_udp_port(const char *port) -{ - unsigned int portnum; - - if (string_to_number(port, 0, 65535, &portnum) != -1 || - (portnum = service_to_port(port, "udp")) != -1) - return (u_int16_t)portnum; - - exit_error(PARAMETER_PROBLEM, - "invalid UDP port/service `%s' specified", port); - } - static void parse_udp_ports(const char *portstring, u_int16_t *ports) { @@ -51,13 +38,13 @@ parse_udp_ports(const char *portstring, u_int16_t *ports) buffer = strdup(portstring); if ((cp = strchr(buffer, ':')) == NULL) - ports[0] = ports[1] = parse_udp_port(buffer); + ports[0] = ports[1] = parse_port(buffer, "udp"); else { *cp = '\0'; cp++; - ports[0] = buffer[0] ? parse_udp_port(buffer) : 0; - ports[1] = cp[0] ? parse_udp_port(cp) : 0xFFFF; + ports[0] = buffer[0] ? parse_port(buffer, "udp") : 0; + ports[1] = cp[0] ? parse_port(cp, "udp") : 0xFFFF; if (ports[0] > ports[1]) exit_error(PARAMETER_PROBLEM, diff --git a/extensions/libipt_dccp.c b/extensions/libipt_dccp.c index 603be1d..e5782a8 100644 --- a/extensions/libipt_dccp.c +++ b/extensions/libipt_dccp.c @@ -56,20 +56,6 @@ static struct option opts[] = { { .name = 0 } }; -static u_int16_t -parse_dccp_port(const char *port) -{ - unsigned int portnum; - - DEBUGP("%s\n", port); - if (string_to_number(port, 0, 65535, &portnum) != -1 || - (portnum = service_to_port(port, "dccp")) != -1) - return (u_int16_t)portnum; - - exit_error(PARAMETER_PROBLEM, - "invalid DCCP port/service `%s' specified", port); -} - static void parse_dccp_ports(const char *portstring, u_int16_t *ports) @@ -80,14 +66,14 @@ parse_dccp_ports(const char *portstring, buffer = strdup(portstring); DEBUGP("%s\n", portstring); if ((cp = strchr(buffer, ':')) == NULL) { - ports[0] = ports[1] = parse_dccp_port(buffer); + ports[0] = ports[1] = parse_port(buffer, "dccp"); } else { *cp = '\0'; cp++; - ports[0] = buffer[0] ? parse_dccp_port(buffer) : 0; - ports[1] = cp[0] ? parse_dccp_port(cp) : 0xFFFF; + ports[0] = buffer[0] ? parse_port(buffer, "dccp") : 0; + ports[1] = cp[0] ? parse_port(cp, "dccp") : 0xFFFF; if (ports[0] > ports[1]) exit_error(PARAMETER_PROBLEM, diff --git a/extensions/libipt_mport.c b/extensions/libipt_mport.c index e6975d0..624de13 100644 --- a/extensions/libipt_mport.c +++ b/extensions/libipt_mport.c @@ -33,19 +33,6 @@ static struct option opts[] = { {0} }; -static u_int16_t -parse_port(const char *port, const char *proto) -{ - unsigned int portnum; - - if (string_to_number(port, 0, 65535, &portnum) != -1 || - (portnum = service_to_port(port, proto)) != -1) - return (u_int16_t)portnum; - - exit_error(PARAMETER_PROBLEM, - "invalid port/service `%s' specified", port); -} - static void parse_multi_ports(const char *portstring, struct ipt_mport *minfo, const char *proto) diff --git a/extensions/libipt_multiport.c b/extensions/libipt_multiport.c index f25632f..2a10abd 100644 --- a/extensions/libipt_multiport.c +++ b/extensions/libipt_multiport.c @@ -68,19 +68,6 @@ proto_to_name(u_int8_t proto) } } -static u_int16_t -parse_port(const char *port, const char *proto) -{ - unsigned int portnum; - - if (string_to_number(port, 0, 65535, &portnum) != -1 || - (portnum = service_to_port(port, proto)) != -1) - return (u_int16_t)portnum; - - exit_error(PARAMETER_PROBLEM, - "invalid port/service `%s' specified", port); -} - static unsigned int parse_multi_ports(const char *portstring, u_int16_t *ports, const char *proto) { diff --git a/extensions/libipt_sctp.c b/extensions/libipt_sctp.c index 06c48b4..0354d19 100644 --- a/extensions/libipt_sctp.c +++ b/extensions/libipt_sctp.c @@ -79,20 +79,6 @@ static struct option opts[] = { { .name = 0 } }; -static u_int16_t -parse_sctp_port(const char *port) -{ - unsigned int portnum; - - DEBUGP("%s\n", port); - if (string_to_number(port, 0, 65535, &portnum) != -1 || - (portnum = service_to_port(port, "sctp")) != -1) - return (u_int16_t)portnum; - - exit_error(PARAMETER_PROBLEM, - "invalid SCTP port/service `%s' specified", port); -} - static void parse_sctp_ports(const char *portstring, u_int16_t *ports) @@ -103,14 +89,14 @@ parse_sctp_ports(const char *portstring, buffer = strdup(portstring); DEBUGP("%s\n", portstring); if ((cp = strchr(buffer, ':')) == NULL) { - ports[0] = ports[1] = parse_sctp_port(buffer); + ports[0] = ports[1] = parse_port(buffer, "sctp"); } else { *cp = '\0'; cp++; - ports[0] = buffer[0] ? parse_sctp_port(buffer) : 0; - ports[1] = cp[0] ? parse_sctp_port(cp) : 0xFFFF; + ports[0] = buffer[0] ? parse_port(buffer, "sctp") : 0; + ports[1] = cp[0] ? parse_port(cp, "sctp") : 0xFFFF; if (ports[0] > ports[1]) exit_error(PARAMETER_PROBLEM, diff --git a/extensions/libipt_tcp.c b/extensions/libipt_tcp.c index 7551a0a..c712b92 100644 --- a/extensions/libipt_tcp.c +++ b/extensions/libipt_tcp.c @@ -38,19 +38,6 @@ static struct option opts[] = { {0} }; -static u_int16_t -parse_tcp_port(const char *port) -{ - unsigned int portnum; - - if (string_to_number(port, 0, 65535, &portnum) != -1 || - (portnum = service_to_port(port, "tcp")) != -1) - return (u_int16_t)portnum; - - exit_error(PARAMETER_PROBLEM, - "invalid TCP port/service `%s' specified", port); -} - static void parse_tcp_ports(const char *portstring, u_int16_t *ports) { @@ -59,13 +46,13 @@ parse_tcp_ports(const char *portstring, u_int16_t *ports) buffer = strdup(portstring); if ((cp = strchr(buffer, ':')) == NULL) - ports[0] = ports[1] = parse_tcp_port(buffer); + ports[0] = ports[1] = parse_port(buffer, "tcp"); else { *cp = '\0'; cp++; - ports[0] = buffer[0] ? parse_tcp_port(buffer) : 0; - ports[1] = cp[0] ? parse_tcp_port(cp) : 0xFFFF; + ports[0] = buffer[0] ? parse_port(buffer, "tcp") : 0; + ports[1] = cp[0] ? parse_port(cp, "tcp") : 0xFFFF; if (ports[0] > ports[1]) exit_error(PARAMETER_PROBLEM, diff --git a/extensions/libipt_udp.c b/extensions/libipt_udp.c index a49e8f7..7f461d8 100644 --- a/extensions/libipt_udp.c +++ b/extensions/libipt_udp.c @@ -30,19 +30,6 @@ static struct option opts[] = { {0} }; -static u_int16_t -parse_udp_port(const char *port) -{ - unsigned int portnum; - - if (string_to_number(port, 0, 65535, &portnum) != -1 || - (portnum = service_to_port(port, "udp")) != -1) - return (u_int16_t)portnum; - - exit_error(PARAMETER_PROBLEM, - "invalid UDP port/service `%s' specified", port); - } - static void parse_udp_ports(const char *portstring, u_int16_t *ports) { @@ -51,13 +38,13 @@ parse_udp_ports(const char *portstring, u_int16_t *ports) buffer = strdup(portstring); if ((cp = strchr(buffer, ':')) == NULL) - ports[0] = ports[1] = parse_udp_port(buffer); + ports[0] = ports[1] = parse_port(buffer, "udp"); else { *cp = '\0'; cp++; - ports[0] = buffer[0] ? parse_udp_port(buffer) : 0; - ports[1] = cp[0] ? parse_udp_port(cp) : 0xFFFF; + ports[0] = buffer[0] ? parse_port(buffer, "udp") : 0; + ports[1] = cp[0] ? parse_port(cp, "udp") : 0xFFFF; if (ports[0] > ports[1]) exit_error(PARAMETER_PROBLEM, -- cgit v1.2.3