summaryrefslogtreecommitdiffstats
path: root/lib/getproto.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/getproto.c')
-rw-r--r--lib/getproto.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/getproto.c b/lib/getproto.c
new file mode 100644
index 0000000..9714da2
--- /dev/null
+++ b/lib/getproto.c
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2002-2005 by Darren Reed.
+ *
+ * See the IPFILTER.LICENCE file for details on licencing.
+ *
+ * $Id: getproto.c,v 1.2.2.3 2006/06/16 17:21:00 darrenr Exp $
+ */
+
+#include "ipf.h"
+
+int getproto(name)
+char *name;
+{
+ struct protoent *p;
+ char *s;
+
+ for (s = name; *s != '\0'; s++)
+ if (!ISDIGIT(*s))
+ break;
+ if (*s == '\0')
+ return atoi(name);
+
+#ifdef _AIX51
+ /*
+ * For some bogus reason, "ip" is 252 in /etc/protocols on AIX 5
+ */
+ if (!strcasecmp(name, "ip"))
+ return 0;
+#endif
+
+ p = getprotobyname(name);
+ if (p != NULL)
+ return p->p_proto;
+ return -1;
+}
OpenPOWER on IntegriCloud