Skip to content

Commit a379efa

Browse files
Geliang Tangintel-lab-lkp
authored andcommitted
selftests: mptcp: sockopt: add IPV6_V6ONLY test
Add IPv6-specific testing for IPV6_V6ONLY: - Enables the option and verifies its state - Restricted to IPv6 sockets - Reports results in the test script Signed-off-by: Geliang Tang <[email protected]>
1 parent 88f1f6a commit a379efa

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

tools/testing/selftests/net/mptcp/mptcp_sockopt.c

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,18 @@ static void do_setsockopt_local_port_range(int fd)
271271
perror("setsockopt(IP_LOCAL_PORT_RANGE)");
272272
}
273273

274+
static void do_setsockopt_v6only(int fd)
275+
{
276+
int v6only = 1;
277+
278+
if (pf != AF_INET6)
279+
return;
280+
281+
if (setsockopt(fd, SOL_IPV6, IPV6_V6ONLY, &v6only,
282+
sizeof(v6only)))
283+
perror("setsockopt(IPV6_V6ONLY)");
284+
}
285+
274286
static void do_setsockopts(int fd)
275287
{
276288
do_setsockopt_reuseaddr(fd);
@@ -281,6 +293,7 @@ static void do_setsockopts(int fd)
281293
do_setsockopt_transparent(fd);
282294
do_setsockopt_bind_address_no_port(fd);
283295
do_setsockopt_local_port_range(fd);
296+
do_setsockopt_v6only(fd);
284297
}
285298

286299
static int sock_listen_mptcp(const char * const listenaddr,
@@ -757,6 +770,21 @@ static void do_getsockopt_local_port_range(int fd)
757770
assert(port_range == (31000 << 16 | 30000));
758771
}
759772

773+
static void do_getsockopt_v6only(int fd)
774+
{
775+
socklen_t len;
776+
int v6only;
777+
778+
if (pf != AF_INET6)
779+
return;
780+
781+
len = sizeof(v6only);
782+
if (getsockopt(fd, SOL_IPV6, IPV6_V6ONLY, &v6only, &len))
783+
die_perror("getsockopt(IPV6_V6ONLY)");
784+
785+
assert(v6only == 1);
786+
}
787+
760788
static void do_getsockopts(struct so_state *s, int fd, size_t r, size_t w)
761789
{
762790
do_getsockopt_mptcp_info(s, fd, w);
@@ -783,6 +811,8 @@ static void do_getsockopts(struct so_state *s, int fd, size_t r, size_t w)
783811
do_getsockopt_bind_address_no_port(fd);
784812

785813
do_getsockopt_local_port_range(fd);
814+
815+
do_getsockopt_v6only(fd);
786816
}
787817

788818
static void connect_one_server(int fd, int pipefd)

tools/testing/selftests/net/mptcp/mptcp_sockopt.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,8 @@ do_mptcp_sockopt_tests()
296296
"SO_BINDTODEVICE" "SO_BINDTOIFINDEX" \
297297
"IPV6_FREEBIND" "IPV6_TRANSPARENT" \
298298
"IP_BIND_ADDRESS_NO_PORT" \
299-
"IP_LOCAL_PORT_RANGE"; do
299+
"IP_LOCAL_PORT_RANGE" \
300+
"IPV6_V6ONLY"; do
300301
print_title "$opt sockopt v6"
301302
mptcp_lib_pr_ok
302303
mptcp_lib_result_pass "$opt sockopt v6"

0 commit comments

Comments
 (0)