getproto.c revision 170268
1145519Sdarrenr/*	$FreeBSD: head/contrib/ipfilter/lib/getproto.c 170268 2007-06-04 02:54:36Z darrenr $	*/
2145510Sdarrenr
3170268Sdarrenr/*
4170268Sdarrenr * Copyright (C) 2002-2005 by Darren Reed.
5170268Sdarrenr *
6170268Sdarrenr * See the IPFILTER.LICENCE file for details on licencing.
7170268Sdarrenr *
8170268Sdarrenr * $Id: getproto.c,v 1.2.2.3 2006/06/16 17:21:00 darrenr Exp $
9170268Sdarrenr */
10170268Sdarrenr
11145510Sdarrenr#include "ipf.h"
12145510Sdarrenr
13145510Sdarrenrint getproto(name)
14145510Sdarrenrchar *name;
15145510Sdarrenr{
16145510Sdarrenr	struct protoent *p;
17145510Sdarrenr	char *s;
18145510Sdarrenr
19145510Sdarrenr	for (s = name; *s != '\0'; s++)
20145510Sdarrenr		if (!ISDIGIT(*s))
21145510Sdarrenr			break;
22145510Sdarrenr	if (*s == '\0')
23145510Sdarrenr		return atoi(name);
24145510Sdarrenr
25153881Sguido#ifdef _AIX51
26153881Sguido	/*
27153881Sguido	 * For some bogus reason, "ip" is 252 in /etc/protocols on AIX 5
28153881Sguido	 */
29153881Sguido	if (!strcasecmp(name, "ip"))
30153881Sguido		return 0;
31153881Sguido#endif
32153881Sguido
33145510Sdarrenr	p = getprotobyname(name);
34145510Sdarrenr	if (p != NULL)
35145510Sdarrenr		return p->p_proto;
36145510Sdarrenr	return -1;
37145510Sdarrenr}
38