]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/ipfilter/lib/getportproto.c
This commit was generated by cvs2svn to compensate for changes in r163976,
[FreeBSD/FreeBSD.git] / contrib / ipfilter / lib / getportproto.c
1 /*      $FreeBSD$       */
2
3 #include <ctype.h>
4 #include "ipf.h"
5
6 int getportproto(name, proto)
7 char *name;
8 int proto;
9 {
10         struct servent *s;
11         struct protoent *p;
12
13         if (ISDIGIT(*name)) {
14                 int number;
15                 char *s;
16
17                 for (s = name; *s != '\0'; s++)
18                         if (!ISDIGIT(*s))
19                                 return -1;
20
21                 number = atoi(name);
22                 if (number < 0 || number > 65535)
23                         return -1;
24                 return htons(number);
25         }
26
27         p = getprotobynumber(proto);
28         s = getservbyname(name, p ? p->p_name : NULL);
29         if (s != NULL)
30                 return s->s_port;
31         return -1;
32 }