summaryrefslogtreecommitdiffstats
path: root/contrib/ipfilter/lib/getportproto.c
diff options
context:
space:
mode:
authordarrenr <darrenr@FreeBSD.org>2005-04-25 17:31:50 +0000
committerdarrenr <darrenr@FreeBSD.org>2005-04-25 17:31:50 +0000
commitd438802dcb3e270d6fcc65f075c808c64853a7c2 (patch)
treee2e1c7115044e6dfc86ff65598566fa32e5f7421 /contrib/ipfilter/lib/getportproto.c
parent590450fec65a8e72a8965117398bc8f14938b4a8 (diff)
downloadFreeBSD-src-d438802dcb3e270d6fcc65f075c808c64853a7c2.zip
FreeBSD-src-d438802dcb3e270d6fcc65f075c808c64853a7c2.tar.gz
import ipfilter 4.1.8 into the vendor branch
Diffstat (limited to 'contrib/ipfilter/lib/getportproto.c')
-rw-r--r--contrib/ipfilter/lib/getportproto.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/contrib/ipfilter/lib/getportproto.c b/contrib/ipfilter/lib/getportproto.c
new file mode 100644
index 0000000..17efa43
--- /dev/null
+++ b/contrib/ipfilter/lib/getportproto.c
@@ -0,0 +1,32 @@
+/* $NetBSD$ */
+
+#include <ctype.h>
+#include "ipf.h"
+
+int getportproto(name, proto)
+char *name;
+int proto;
+{
+ struct servent *s;
+ struct protoent *p;
+
+ if (ISDIGIT(*name)) {
+ int number;
+ char *s;
+
+ for (s = name; *s != '\0'; s++)
+ if (!ISDIGIT(*s))
+ return -1;
+
+ number = atoi(name);
+ if (number < 0 || number > 65535)
+ return -1;
+ return htons(number);
+ }
+
+ p = getprotobynumber(proto);
+ s = getservbyname(name, p ? p->p_name : NULL);
+ if (s != NULL)
+ return s->s_port;
+ return -1;
+}
OpenPOWER on IntegriCloud