4 * Copyright (C) 1993-2001 by Darren Reed.
6 * See the IPFILTER.LICENCE file for details on licencing.
9 * $Id: portnum.c,v 1.6.4.1 2004/12/09 19:41:22 darrenr Exp $
18 * find the port number given by the name, either from getservbyname() or
19 * straight atoi(). Return 1 on success, 0 on failure
21 int portnum(name, proto, port, linenum)
26 struct servent *sp, *sp2;
31 if (ratoi(name, &i, 0, USHRT_MAX)) {
35 fprintf(stderr, "%d: unknown port \"%s\"\n", linenum, name);
38 if (proto != NULL && strcasecmp(proto, "tcp/udp") != 0) {
39 sp = getservbyname(name, proto);
41 *port = ntohs(sp->s_port);
44 fprintf(stderr, "%d: unknown service \"%s\".\n", linenum, name);
47 sp = getservbyname(name, "tcp");
50 sp2 = getservbyname(name, "udp");
52 fprintf(stderr, "%d: unknown tcp/udp service \"%s\".\n",
56 if (p1 != sp2->s_port) {
57 fprintf(stderr, "%d: %s %d/tcp is a different port to ",
59 fprintf(stderr, "%d: %s %d/udp\n", linenum, name, sp->s_port);