1*ab25eeb5Syz155240 /* 2*ab25eeb5Syz155240 * Copyright (C) 1993-2005 by Darren Reed. 3*ab25eeb5Syz155240 * See the IPFILTER.LICENCE file for details on licencing. 4*ab25eeb5Syz155240 */ 5*ab25eeb5Syz155240 67c478bd9Sstevel@tonic-gate #include <ctype.h> 77c478bd9Sstevel@tonic-gate #include "ipf.h" 87c478bd9Sstevel@tonic-gate getportproto(name,proto)97c478bd9Sstevel@tonic-gateint getportproto(name, proto) 107c478bd9Sstevel@tonic-gate char *name; 117c478bd9Sstevel@tonic-gate int proto; 127c478bd9Sstevel@tonic-gate { 137c478bd9Sstevel@tonic-gate struct servent *s; 147c478bd9Sstevel@tonic-gate struct protoent *p; 157c478bd9Sstevel@tonic-gate 16*ab25eeb5Syz155240 if (ISDIGIT(*name)) { 17*ab25eeb5Syz155240 int number; 18*ab25eeb5Syz155240 char *s; 19*ab25eeb5Syz155240 20*ab25eeb5Syz155240 for (s = name; *s != '\0'; s++) 21*ab25eeb5Syz155240 if (!ISDIGIT(*s)) 22*ab25eeb5Syz155240 return -1; 23*ab25eeb5Syz155240 24*ab25eeb5Syz155240 number = atoi(name); 25*ab25eeb5Syz155240 if (number < 0 || number > 65535) 26*ab25eeb5Syz155240 return -1; 27*ab25eeb5Syz155240 return htons(number); 28*ab25eeb5Syz155240 } 297c478bd9Sstevel@tonic-gate 307c478bd9Sstevel@tonic-gate p = getprotobynumber(proto); 31*ab25eeb5Syz155240 s = getservbyname(name, p ? p->p_name : NULL); 327c478bd9Sstevel@tonic-gate if (s != NULL) 337c478bd9Sstevel@tonic-gate return s->s_port; 34*ab25eeb5Syz155240 return -1; 357c478bd9Sstevel@tonic-gate } 36