Skip to content

Commit 223bdf0

Browse files
Geliang Tangintel-lab-lkp
authored andcommitted
selftests: mptcp: sockopt: add IP_BIND_ADDRESS_NO_PORT test
Add tests for the IP_BIND_ADDRESS_NO_PORT socket option: - Enables the option via setsockopt - Verifies the enabled state via getsockopt - Includes tests for both IPv4 and IPv6 - Updates test script output Signed-off-by: Geliang Tang <[email protected]>
1 parent 61eeeb3 commit 223bdf0

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

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

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,15 @@ static void do_setsockopt_transparent(int fd)
253253
perror("setsockopt(IP(V6)_TRANSPARENT)");
254254
}
255255

256+
static void do_setsockopt_bind_address_no_port(int fd)
257+
{
258+
int enable = 1;
259+
260+
if (setsockopt(fd, SOL_IP, IP_BIND_ADDRESS_NO_PORT, &enable,
261+
sizeof(enable)))
262+
perror("setsockopt(IP_BIND_ADDRESS_NO_PORT)");
263+
}
264+
256265
static void do_setsockopts(int fd)
257266
{
258267
do_setsockopt_reuseaddr(fd);
@@ -261,6 +270,7 @@ static void do_setsockopts(int fd)
261270
do_setsockopt_bindtoifindex(fd);
262271
do_setsockopt_freebind(fd);
263272
do_setsockopt_transparent(fd);
273+
do_setsockopt_bind_address_no_port(fd);
264274
}
265275

266276
static int sock_listen_mptcp(const char * const listenaddr,
@@ -711,6 +721,19 @@ static void do_getsockopt_transparent(int fd)
711721
assert(enable == 1);
712722
}
713723

724+
static void do_getsockopt_bind_address_no_port(int fd)
725+
{
726+
socklen_t len;
727+
int enable;
728+
729+
len = sizeof(enable);
730+
if (getsockopt(fd, SOL_IP, IP_BIND_ADDRESS_NO_PORT,
731+
&enable, &len))
732+
die_perror("getsockopt(IP_TRANSPARENT)");
733+
734+
assert(enable == 1);
735+
}
736+
714737
static void do_getsockopts(struct so_state *s, int fd, size_t r, size_t w)
715738
{
716739
do_getsockopt_mptcp_info(s, fd, w);
@@ -733,6 +756,8 @@ static void do_getsockopts(struct so_state *s, int fd, size_t r, size_t w)
733756
do_getsockopt_freebind(fd);
734757

735758
do_getsockopt_transparent(fd);
759+
760+
do_getsockopt_bind_address_no_port(fd);
736761
}
737762

738763
static void connect_one_server(int fd, int pipefd)

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,8 @@ do_mptcp_sockopt_tests()
272272
for opt in "SOL_MPTCP" \
273273
"SO_REUSEADDR" "SO_REUSEPORT" \
274274
"SO_BINDTODEVICE" "SO_BINDTOIFINDEX" \
275-
"IP_FREEBIND" "IP_TRANSPARENT"; do
275+
"IP_FREEBIND" "IP_TRANSPARENT" \
276+
"IP_BIND_ADDRESS_NO_PORT"; do
276277
print_title "$opt sockopt v4"
277278
mptcp_lib_pr_ok
278279
mptcp_lib_result_pass "$opt sockopt v4"
@@ -292,7 +293,8 @@ do_mptcp_sockopt_tests()
292293
for opt in "SOL_MPTCP" \
293294
"SO_REUSEADDR" "SO_REUSEPORT" \
294295
"SO_BINDTODEVICE" "SO_BINDTOIFINDEX" \
295-
"IPV6_FREEBIND" "IPV6_TRANSPARENT"; do
296+
"IPV6_FREEBIND" "IPV6_TRANSPARENT" \
297+
"IP_BIND_ADDRESS_NO_PORT"; do
296298
print_title "$opt sockopt v6"
297299
mptcp_lib_pr_ok
298300
mptcp_lib_result_pass "$opt sockopt v6"

0 commit comments

Comments
 (0)