Skip to content

Commit 88f1f6a

Browse files
Geliang Tangintel-lab-lkp
authored andcommitted
selftests: mptcp: sockopt: add IP_LOCAL_PORT_RANGE test
Add tests for IP_LOCAL_PORT_RANGE: - Sets port range to 30000-31000 - Verifies the range via getsockopt - Covers both IPv4 and IPv6 - Reports results in test script Signed-off-by: Geliang Tang <[email protected]>
1 parent 223bdf0 commit 88f1f6a

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
@@ -262,6 +262,15 @@ static void do_setsockopt_bind_address_no_port(int fd)
262262
perror("setsockopt(IP_BIND_ADDRESS_NO_PORT)");
263263
}
264264

265+
static void do_setsockopt_local_port_range(int fd)
266+
{
267+
uint32_t port_range = (31000 << 16 | 30000); // [30000 - 31000]
268+
269+
if (setsockopt(fd, SOL_IP, IP_LOCAL_PORT_RANGE, &port_range,
270+
sizeof(port_range)))
271+
perror("setsockopt(IP_LOCAL_PORT_RANGE)");
272+
}
273+
265274
static void do_setsockopts(int fd)
266275
{
267276
do_setsockopt_reuseaddr(fd);
@@ -271,6 +280,7 @@ static void do_setsockopts(int fd)
271280
do_setsockopt_freebind(fd);
272281
do_setsockopt_transparent(fd);
273282
do_setsockopt_bind_address_no_port(fd);
283+
do_setsockopt_local_port_range(fd);
274284
}
275285

276286
static int sock_listen_mptcp(const char * const listenaddr,
@@ -734,6 +744,19 @@ static void do_getsockopt_bind_address_no_port(int fd)
734744
assert(enable == 1);
735745
}
736746

747+
static void do_getsockopt_local_port_range(int fd)
748+
{
749+
uint32_t port_range;
750+
socklen_t len;
751+
752+
len = sizeof(port_range);
753+
if (getsockopt(fd, SOL_IP, IP_LOCAL_PORT_RANGE,
754+
&port_range, &len))
755+
die_perror("getsockopt(IP_LOCAL_PORT_RANGE)");
756+
757+
assert(port_range == (31000 << 16 | 30000));
758+
}
759+
737760
static void do_getsockopts(struct so_state *s, int fd, size_t r, size_t w)
738761
{
739762
do_getsockopt_mptcp_info(s, fd, w);
@@ -758,6 +781,8 @@ static void do_getsockopts(struct so_state *s, int fd, size_t r, size_t w)
758781
do_getsockopt_transparent(fd);
759782

760783
do_getsockopt_bind_address_no_port(fd);
784+
785+
do_getsockopt_local_port_range(fd);
761786
}
762787

763788
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
@@ -273,7 +273,8 @@ do_mptcp_sockopt_tests()
273273
"SO_REUSEADDR" "SO_REUSEPORT" \
274274
"SO_BINDTODEVICE" "SO_BINDTOIFINDEX" \
275275
"IP_FREEBIND" "IP_TRANSPARENT" \
276-
"IP_BIND_ADDRESS_NO_PORT"; do
276+
"IP_BIND_ADDRESS_NO_PORT" \
277+
"IP_LOCAL_PORT_RANGE"; do
277278
print_title "$opt sockopt v4"
278279
mptcp_lib_pr_ok
279280
mptcp_lib_result_pass "$opt sockopt v4"
@@ -294,7 +295,8 @@ do_mptcp_sockopt_tests()
294295
"SO_REUSEADDR" "SO_REUSEPORT" \
295296
"SO_BINDTODEVICE" "SO_BINDTOIFINDEX" \
296297
"IPV6_FREEBIND" "IPV6_TRANSPARENT" \
297-
"IP_BIND_ADDRESS_NO_PORT"; do
298+
"IP_BIND_ADDRESS_NO_PORT" \
299+
"IP_LOCAL_PORT_RANGE"; do
298300
print_title "$opt sockopt v6"
299301
mptcp_lib_pr_ok
300302
mptcp_lib_result_pass "$opt sockopt v6"

0 commit comments

Comments
 (0)