summaryrefslogtreecommitdiff
path: root/usr/src/cmd/ipf/lib/common/getport.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/cmd/ipf/lib/common/getport.c')
-rw-r--r--usr/src/cmd/ipf/lib/common/getport.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/usr/src/cmd/ipf/lib/common/getport.c b/usr/src/cmd/ipf/lib/common/getport.c
index 9e77c665d3..415522ffc0 100644
--- a/usr/src/cmd/ipf/lib/common/getport.c
+++ b/usr/src/cmd/ipf/lib/common/getport.c
@@ -1,8 +1,14 @@
+/*
+ * Copyright (C) 1993-2005 by Darren Reed.
+ * See the IPFILTER.LICENCE file for details on licencing.
+ */
+
#include "ipf.h"
-int getport(fr, name)
+int getport(fr, name, port)
frentry_t *fr;
char *name;
+u_short *port;
{
struct protoent *p;
struct servent *s;
@@ -10,8 +16,10 @@ char *name;
if (fr == NULL || fr->fr_type != FR_T_IPF) {
s = getservbyname(name, NULL);
- if (s != NULL)
- return s->s_port;
+ if (s != NULL) {
+ *port = s->s_port;
+ return 0;
+ }
return -1;
}
@@ -27,13 +35,15 @@ char *name;
s = getservbyname(name, "udp");
if (s == NULL || s->s_port != p1)
return -1;
- return p1;
+ *port = p1;
+ return 0;
}
p = getprotobynumber(fr->fr_proto);
s = getservbyname(name, p ? p->p_name : NULL);
- if (s != NULL)
- return s->s_port;
-
+ if (s != NULL) {
+ *port = s->s_port;
+ return 0;
+ }
return -1;
}