Add keepidle tcp option

This commit is contained in:
jiangjianfeng
2024-12-16 09:23:41 +00:00
committed by Tate, Hongliang Tian
parent 547c92d2ff
commit 72cb160539
9 changed files with 138 additions and 66 deletions

View File

@ -38,6 +38,26 @@ FN_SETUP(general)
}
END_SETUP()
FN_TEST(invalid_socket_option)
{
int res;
socklen_t res_len = sizeof(res);
#define INVALID_LEVEL 99999
TEST_ERRNO(getsockopt(sk_connected, INVALID_LEVEL, SO_SNDBUF, &res,
&res_len),
EOPNOTSUPP);
#define INVALID_SOCKET_OPTION 99999
TEST_ERRNO(getsockopt(sk_connected, SOL_SOCKET, INVALID_SOCKET_OPTION,
&res, &res_len),
ENOPROTOOPT);
#define INVALID_TCP_OPTION 99999
TEST_ERRNO(getsockopt(sk_connected, IPPROTO_TCP, INVALID_TCP_OPTION,
&res, &res_len),
ENOPROTOOPT);
}
END_TEST()
int refresh_connection()
{
close(sk_connected);
@ -230,3 +250,27 @@ FN_TEST(keepalive)
keepalive == 0);
}
END_TEST()
FN_TEST(keepidle)
{
int keepidle;
socklen_t keepidle_len = sizeof(keepidle);
// 1. Check default values
refresh_connection();
TEST_RES(getsockopt(sk_connected, IPPROTO_TCP, TCP_KEEPIDLE, &keepidle,
&keepidle_len),
keepidle == 7200);
TEST_RES(getsockopt(sk_accepted, IPPROTO_TCP, TCP_KEEPIDLE, &keepidle,
&keepidle_len),
keepidle == 7200);
// 2. Set and Get value
int seconds = 200;
CHECK(setsockopt(sk_connected, IPPROTO_TCP, TCP_KEEPIDLE, &seconds,
sizeof(seconds)));
TEST_RES(getsockopt(sk_connected, IPPROTO_TCP, TCP_KEEPIDLE, &keepidle,
&keepidle_len),
keepidle == 200);
}
END_TEST()