From 0c3efeb3b07083e36068e354b20208316d02c79a Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Sat, 31 May 2014 03:31:56 +0200 Subject: tests: extend the ipv6 bind test Signed-off-by: Michael Adam Reviewed-by: Andreas Schneider --- tests/test_echo_tcp_bind.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'tests/test_echo_tcp_bind.c') diff --git a/tests/test_echo_tcp_bind.c b/tests/test_echo_tcp_bind.c index 2348a2f..51528c2 100644 --- a/tests/test_echo_tcp_bind.c +++ b/tests/test_echo_tcp_bind.c @@ -219,6 +219,10 @@ static void test_bind_on_ipv6_sock(void **state) { struct sockaddr_in sin; socklen_t slen = sizeof(struct sockaddr_in); + struct sockaddr_in6 sin6; + socklen_t slen6 = sizeof(struct sockaddr_in6); + struct sockaddr_un sun; + socklen_t sulen = sizeof(struct sockaddr_un); int rc; int s; @@ -227,6 +231,19 @@ static void test_bind_on_ipv6_sock(void **state) s = socket(AF_INET6, SOCK_STREAM, IPPROTO_TCP); assert_return_code(s, errno); + ZERO_STRUCT(sun); + sun.sun_family = AF_UNIX; + rc = bind(s, (struct sockaddr *)&sun, sulen); + assert_int_equal(rc, -1); + /* FreeBSD uses EINVAL here... */ + assert_true(errno == EAFNOSUPPORT || errno == EINVAL); + + ZERO_STRUCT(sin); + sin.sin_family = AF_INET; + rc = bind(s, (struct sockaddr *)&sin, slen); + assert_int_equal(rc, -1); + assert_int_equal(errno, EINVAL); + ZERO_STRUCT(sin); sin.sin_family = AF_INET; @@ -235,6 +252,12 @@ static void test_bind_on_ipv6_sock(void **state) rc = bind(s, (struct sockaddr *)&sin, slen); assert_int_equal(rc, -1); + assert_int_equal(errno, EINVAL); + + ZERO_STRUCT(sin6); + sin6.sin6_family = AF_INET; + rc = bind(s, (struct sockaddr *)&sin6, slen6); + assert_int_equal(rc, -1); assert_int_equal(errno, EAFNOSUPPORT); close(s); -- cgit