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