From 551d76eadd619d5c880d1a5c2dee219a0770f805 Mon Sep 17 00:00:00 2001 From: Joel Cunningham Date: Fri, 17 Mar 2017 11:14:22 -0500 Subject: [PATCH] test_sockets: move loopback addr logic to utility function This moves the loopback address creation logic to a utility function so it can be shared with forth coming message API TCP test --- test/unit/api/test_sockets.c | 62 +++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/test/unit/api/test_sockets.c b/test/unit/api/test_sockets.c index 8f9b0067..aa018535 100644 --- a/test/unit/api/test_sockets.c +++ b/test/unit/api/test_sockets.c @@ -138,6 +138,38 @@ START_TEST(test_sockets_allfunctions_basic) } END_TEST +static void test_sockets_init_loopback_addr(int domain, struct sockaddr_storage *addr_st, socklen_t *sz) +{ + memset(addr_st, 0, sizeof(*addr_st)); + switch(domain) { +#if LWIP_IPV6 + case AF_INET6: { + struct sockaddr_in6 *addr = (struct sockaddr_in6*)addr_st; + struct in6_addr lo6 = IN6ADDR_LOOPBACK_INIT; + addr->sin6_family = AF_INET6; + addr->sin6_port = 0; /* use ephemeral port */ + addr->sin6_addr = lo6; + *sz = sizeof(*addr); + } + break; +#endif /* LWIP_IPV6 */ +#if LWIP_IPV4 + case AF_INET: { + struct sockaddr_in *addr = (struct sockaddr_in*)addr_st; + addr->sin_family = AF_INET; + addr->sin_port = 0; /* use ephemeral port */ + addr->sin_addr.s_addr = PP_HTONL(INADDR_LOOPBACK); + *sz = sizeof(*addr); + } + break; +#endif /* LWIP_IPV4 */ + default: + *sz = 0; + fail(); + break; + } +} + static void test_sockets_msgapi_udp_send_recv_loop(int s, struct msghdr *smsg, struct msghdr *rmsg) { int i, ret; @@ -181,35 +213,7 @@ static void test_sockets_msgapi_udp(int domain) riovs[i].iov_len = sizeof(u8_t); } - /* set up address to send to */ - memset(&addr_storage, 0, sizeof(addr_storage)); - switch(domain) { -#if LWIP_IPV6 - case AF_INET6: { - struct sockaddr_in6 *addr = (struct sockaddr_in6*)&addr_storage; - struct in6_addr lo6 = IN6ADDR_LOOPBACK_INIT; - addr->sin6_family = AF_INET6; - addr->sin6_port = 0; /* use ephemeral port */ - addr->sin6_addr = lo6; - addr_size = sizeof(*addr); - } - break; -#endif /* LWIP_IPV6 */ -#if LWIP_IPV4 - case AF_INET: { - struct sockaddr_in *addr = (struct sockaddr_in*)&addr_storage; - addr->sin_family = AF_INET; - addr->sin_port = 0; /* use ephemeral port */ - addr->sin_addr.s_addr = PP_HTONL(INADDR_LOOPBACK); - addr_size = sizeof(*addr); - } - break; -#endif /* LWIP_IPV4 */ - default: - addr_size = 0; - fail(); - break; - } + test_sockets_init_loopback_addr(domain, &addr_storage, &addr_size); s = test_sockets_alloc_socket_nonblocking(domain, SOCK_DGRAM); fail_unless(s >= 0);