From 7567f36f83bab47206c2ea85724c1e74c26ec0d6 Mon Sep 17 00:00:00 2001 From: Greg Hudson Date: Sat, 7 Jun 2014 16:25:35 -0400 Subject: Use sa_setport and sa_getport where appropriate Use sa_setport and sa_getport in place of existing static helpers or open-coded switch statements in net-server.c, fake-addrinfo.c, and svc_tcp.c. --- src/lib/apputils/net-server.c | 26 +++++--------------------- src/lib/rpc/svc_tcp.c | 14 ++------------ src/util/support/fake-addrinfo.c | 11 ++--------- 3 files changed, 9 insertions(+), 42 deletions(-) diff --git a/src/lib/apputils/net-server.c b/src/lib/apputils/net-server.c index d19d45a33..02b105865 100644 --- a/src/lib/apputils/net-server.c +++ b/src/lib/apputils/net-server.c @@ -66,22 +66,6 @@ static int tcp_or_rpc_data_counter; static int max_tcp_or_rpc_data_connections = 45; -/* Misc utility routines. */ -static void -set_sa_port(struct sockaddr *addr, int port) -{ - switch (addr->sa_family) { - case AF_INET: - sa2sin(addr)->sin_port = port; - break; - case AF_INET6: - sa2sin6(addr)->sin6_port = port; - break; - default: - break; - } -} - static int ipv6_enabled() { @@ -740,7 +724,7 @@ setup_tcp_listener_ports(struct socksetup *data) FOREACH_ELT (tcp_port_data, i, port) { int s4, s6; - set_sa_port((struct sockaddr *)&sin4, htons(port)); + sa_setport((struct sockaddr *)&sin4, port); if (!ipv6_enabled()) { s4 = setup_a_tcp_listener(data, (struct sockaddr *)&sin4); if (s4 < 0) @@ -749,7 +733,7 @@ setup_tcp_listener_ports(struct socksetup *data) } else { s4 = s6 = -1; - set_sa_port((struct sockaddr *)&sin6, htons(port)); + sa_setport((struct sockaddr *)&sin6, port); s6 = setup_a_tcp_listener(data, (struct sockaddr *)&sin6); if (s6 < 0) @@ -809,7 +793,7 @@ setup_rpc_listener_ports(struct socksetup *data) int s4; int s6; - set_sa_port((struct sockaddr *)&sin4, htons(svc.port)); + sa_setport((struct sockaddr *)&sin4, svc.port); s4 = create_server_socket(data, (struct sockaddr *)&sin4, SOCK_STREAM); if (s4 < 0) return -1; @@ -821,7 +805,7 @@ setup_rpc_listener_ports(struct socksetup *data) s4, paddr((struct sockaddr *)&sin4)); if (ipv6_enabled()) { - set_sa_port((struct sockaddr *)&sin6, htons(svc.port)); + sa_setport((struct sockaddr *)&sin6, svc.port); s6 = create_server_socket(data, (struct sockaddr *)&sin6, SOCK_STREAM); if (s6 < 0) @@ -903,7 +887,7 @@ setup_udp_port_1(struct socksetup *data, struct sockaddr *addr, u_short port; FOREACH_ELT (udp_port_data, i, port) { - set_sa_port(addr, htons(port)); + sa_setport(addr, port); sock = create_server_socket(data, addr, SOCK_DGRAM); if (sock == -1) return 1; diff --git a/src/lib/rpc/svc_tcp.c b/src/lib/rpc/svc_tcp.c index 581ab3c1a..bbafc1d63 100644 --- a/src/lib/rpc/svc_tcp.c +++ b/src/lib/rpc/svc_tcp.c @@ -53,6 +53,7 @@ static char sccsid[] = "@(#)svc_tcp.c 1.21 87/08/11 Copyr 1984 Sun Micro"; #include "autoconf.h" #include "k5-platform.h" /* set_cloexec_fd */ #include +#include /*extern bool_t abort(); extern errno; */ @@ -118,17 +119,6 @@ struct tcp_conn { /* kept in xprt->xp_p1 */ char verf_body[MAX_AUTH_BYTES]; }; -static u_short -getport(struct sockaddr *addr) -{ - if (addr->sa_family == AF_INET) - return ntohs(((struct sockaddr_in *) addr)->sin_port); - else if (addr->sa_family == AF_INET6) - return ntohs(((struct sockaddr_in6 *) addr)->sin6_port); - else - return 0; -} - /* * Usage: * xprt = svctcp_create(sock, send_buf_size, recv_buf_size); @@ -208,7 +198,7 @@ svctcp_create( xprt->xp_auth = NULL; xprt->xp_verf = gssrpc__null_auth; xprt->xp_ops = &svctcp_rendezvous_op; - xprt->xp_port = getport((struct sockaddr *) &addr); + xprt->xp_port = sa_getport((struct sockaddr *) &addr); xprt->xp_sock = sock; xprt->xp_laddrlen = 0; xprt_register(xprt); diff --git a/src/util/support/fake-addrinfo.c b/src/util/support/fake-addrinfo.c index 2129758c0..6ddf8593f 100644 --- a/src/util/support/fake-addrinfo.c +++ b/src/util/support/fake-addrinfo.c @@ -1145,7 +1145,7 @@ getaddrinfo (const char *name, const char *serv, const struct addrinfo *hint, if (lport > 65535) return EAI_SOCKTYPE; service_is_numeric = 1; - service_port = htons(lport); + service_port = lport; #ifdef AI_NUMERICSERV if (hint && hint->ai_flags & AI_NUMERICSERV) serv = "9"; @@ -1281,14 +1281,7 @@ getaddrinfo (const char *name, const char *serv, const struct addrinfo *hint, if (socket_type != 0 && ai->ai_socktype == 0) /* Is this check actually needed? */ ai->ai_socktype = socket_type; - switch (ai->ai_family) { - case AF_INET: - ((struct sockaddr_in *)ai->ai_addr)->sin_port = service_port; - break; - case AF_INET6: - ((struct sockaddr_in6 *)ai->ai_addr)->sin6_port = service_port; - break; - } + sa_setport(ai->ai_addr, service_port); } } #endif -- cgit