From: Nikos Mavrogiannopoulos Date: Tue, 6 Jan 2015 20:27:14 +0000 (+0100) Subject: tests: moved udp_socketpair to utils X-Git-Tag: gnutls_3_4_0~379 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fc7bf0059415757ff67f26c16e5a9f9d55f658a0;p=thirdparty%2Fgnutls.git tests: moved udp_socketpair to utils --- diff --git a/tests/mini-dtls-mtu.c b/tests/mini-dtls-mtu.c index f6b2586c80..189dff17a4 100644 --- a/tests/mini-dtls-mtu.c +++ b/tests/mini-dtls-mtu.c @@ -279,56 +279,7 @@ static void server(int fd) success("server: finished\n"); } -static int udp_socket(void) -{ - int on = 1; - struct sockaddr_in addr = { - .sin_family = AF_INET, - .sin_addr = {htonl(INADDR_LOOPBACK)}, - .sin_port = 0 - }; - int fd; - - fd = socket(AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0); - setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char*)&on, sizeof(on)); -#if defined(SO_REUSEPORT) - setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, (char*)&on, sizeof(on)); -#endif - if (bind(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) { - perror("bind"); - exit(EXIT_FAILURE); - } - - return fd; -} - -static void udp_connect(int fd1, int fd2) -{ - struct sockaddr_in addr; - socklen_t addrlen = sizeof(addr); - - if (getsockname(fd1, &addr, &addrlen) < 0) { - perror("getsockname"); - exit(EXIT_FAILURE); - } - - if (connect(fd2, &addr, addrlen) < 0) { - perror("connect"); - exit(EXIT_FAILURE); - } -} - -static int udp_socketpair(int *fd) -{ - fd[0] = udp_socket(); - fd[1] = udp_socket(); - - udp_connect(fd[0], fd[1]); - udp_connect(fd[1], fd[0]); - - return 0; -} void doit(void) { diff --git a/tests/utils.c b/tests/utils.c index b61321d39a..516cc9d60a 100644 --- a/tests/utils.c +++ b/tests/utils.c @@ -27,6 +27,9 @@ #include #include #include +#include +#include +#include #include "utils.h" @@ -151,3 +154,54 @@ int main(int argc, char *argv[]) return error_count ? 1 : 0; } + +static int udp_socket(void) +{ + int on = 1; + struct sockaddr_in addr = { + .sin_family = AF_INET, + .sin_addr = {htonl(INADDR_LOOPBACK)}, + .sin_port = 0 + }; + int fd; + + fd = socket(AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0); + setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char*)&on, sizeof(on)); +#if defined(SO_REUSEPORT) + setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, (char*)&on, sizeof(on)); +#endif + + if (bind(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) { + perror("bind"); + exit(EXIT_FAILURE); + } + + return fd; +} + +static void udp_connect(int fd1, int fd2) +{ + struct sockaddr_in addr; + socklen_t addrlen = sizeof(addr); + + if (getsockname(fd1, &addr, &addrlen) < 0) { + perror("getsockname"); + exit(EXIT_FAILURE); + } + + if (connect(fd2, &addr, addrlen) < 0) { + perror("connect"); + exit(EXIT_FAILURE); + } +} + +int udp_socketpair(int *fd) +{ + fd[0] = udp_socket(); + fd[1] = udp_socket(); + + udp_connect(fd[0], fd[1]); + udp_connect(fd[1], fd[0]); + + return 0; +} diff --git a/tests/utils.h b/tests/utils.h index 7d89e8ce97..feabe3e63f 100644 --- a/tests/utils.h +++ b/tests/utils.h @@ -57,6 +57,8 @@ extern void escapeprint(const char *str, size_t len); extern void hexprint(const void *str, size_t len); extern void binprint(const void *str, size_t len); +int udp_socketpair(int *fd); + /* This must be implemented elsewhere. */ extern void doit(void);