aboutsummaryrefslogtreecommitdiffstats
path: root/resolv.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2000-08-19 08:26:04 +0000
committerGuy Harris <guy@alum.mit.edu>2000-08-19 08:26:04 +0000
commitb0e0ec1763cf67557ea9377faa566f694722eb6b (patch)
tree6d0d8f6fe4c7c4ff19f5cb9d80533a77d2fe9378 /resolv.c
parente2eb846d0fdc9e2646190a86f04aa67f7d3942b1 (diff)
Michael Tuexen's changes to define a port type for SCTP ports, handle
SCTP ports in "col_set_port()", and add a "get_sctp_port()" routine to resolve SCTP port numbers to services. Also, make the "get_XXX_port()" routines format the port number as an unsigned integer, rather than a signed integer, if the service name for the port isn't found (the port number passed in is unsigned). svn path=/trunk/; revision=2295
Diffstat (limited to 'resolv.c')
-rw-r--r--resolv.c42
1 files changed, 34 insertions, 8 deletions
diff --git a/resolv.c b/resolv.c
index 7be67a1c16..cff13b9fae 100644
--- a/resolv.c
+++ b/resolv.c
@@ -1,7 +1,7 @@
/* resolv.c
* Routines for network object lookup
*
- * $Id: resolv.c,v 1.27 2000/08/10 22:35:30 deniel Exp $
+ * $Id: resolv.c,v 1.28 2000/08/19 08:26:03 guy Exp $
*
* Laurent Deniel <deniel@worldnet.fr>
*
@@ -138,6 +138,7 @@ typedef struct _ipxnet
static hashname_t *host_table[HASHHOSTSIZE];
static hashname_t *udp_port_table[HASHPORTSIZE];
static hashname_t *tcp_port_table[HASHPORTSIZE];
+static hashname_t *sctp_port_table[HASHPORTSIZE];
static hashether_t *eth_table[HASHETHSIZE];
static hashmanuf_t *manuf_table[HASHMANUFSIZE];
static hashipxnet_t *ipxnet_table[HASHIPXNETSIZE];
@@ -162,7 +163,7 @@ gchar *g_manuf_path = EPATH_MANUF; /* may only be changed before the */
* Local function definitions
*/
-static u_char *serv_name_lookup(u_int port, u_int proto)
+static u_char *serv_name_lookup(u_int port, port_type proto)
{
hashname_t *tp;
@@ -172,14 +173,18 @@ static u_char *serv_name_lookup(u_int port, u_int proto)
int i;
switch(proto) {
- case IPPROTO_UDP:
+ case PT_UDP:
table = udp_port_table;
serv_proto = "udp";
break;
- case IPPROTO_TCP:
+ case PT_TCP:
table = tcp_port_table;
serv_proto = "tcp";
break;
+ case PT_SCTP:
+ table = sctp_port_table;
+ serv_proto = "sctp";
+ break;
default:
/* not yet implemented */
return NULL;
@@ -1099,11 +1104,11 @@ extern u_char *get_udp_port(u_int port)
} else {
cur = &str[0][0];
}
- sprintf(cur, "%d", port);
+ sprintf(cur, "%u", port);
return cur;
}
- return serv_name_lookup(port, IPPROTO_UDP);
+ return serv_name_lookup(port, PT_UDP);
} /* get_udp_port */
@@ -1120,14 +1125,35 @@ extern u_char *get_tcp_port(u_int port)
} else {
cur = &str[0][0];
}
- sprintf(cur, "%d", port);
+ sprintf(cur, "%u", port);
return cur;
}
- return serv_name_lookup(port, IPPROTO_TCP);
+ return serv_name_lookup(port, PT_TCP);
} /* get_tcp_port */
+extern u_char *get_sctp_port(u_int port)
+{
+ static gchar str[3][MAXNAMELEN];
+ static gchar *cur;
+
+ if (!g_resolving_actif) {
+ if (cur == &str[0][0]) {
+ cur = &str[1][0];
+ } else if (cur == &str[1][0]) {
+ cur = &str[2][0];
+ } else {
+ cur = &str[0][0];
+ }
+ sprintf(cur, "%u", port);
+ return cur;
+ }
+
+ return serv_name_lookup(port, PT_SCTP);
+
+} /* get_sctp_port */
+
extern u_char *get_ether_name(const u_char *addr)
{
if (!g_resolving_actif)