selftests/bpf: Systematically add SO_REUSEADDR in start_server_addr
Some tests have to stop/start a server multiple time with the same listening address. Doing so without SO_REUSADDR leads to failures due to the socket still being in TIME_WAIT right after the first instance stop/before the second instance start. Instead of letting each test manually set SO_REUSEADDR on their servers, it can be done automatically by start_server_addr for all tests (and without any major downside). Enforce SO_REUSEADDR in start_server_addr for all tests. Signed-off-by: Alexis Lothoré (eBPF Foundation) <alexis.lothore@bootlin.com> Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org> Link: https://patch.msgid.link/20251105-start-server-soreuseaddr-v1-1-1bbd9c1f8d65@bootlin.compull/1354/merge
parent
b54a8e130c
commit
38e36514fc
|
|
@ -97,7 +97,7 @@ int settimeo(int fd, int timeout_ms)
|
|||
int start_server_addr(int type, const struct sockaddr_storage *addr, socklen_t addrlen,
|
||||
const struct network_helper_opts *opts)
|
||||
{
|
||||
int fd;
|
||||
int on = 1, fd;
|
||||
|
||||
if (!opts)
|
||||
opts = &default_opts;
|
||||
|
|
@ -111,6 +111,12 @@ int start_server_addr(int type, const struct sockaddr_storage *addr, socklen_t a
|
|||
if (settimeo(fd, opts->timeout_ms))
|
||||
goto error_close;
|
||||
|
||||
if (type == SOCK_STREAM &&
|
||||
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on))) {
|
||||
log_err("Failed to enable SO_REUSEADDR");
|
||||
goto error_close;
|
||||
}
|
||||
|
||||
if (opts->post_socket_cb &&
|
||||
opts->post_socket_cb(fd, opts->cb_opts)) {
|
||||
log_err("Failed to call post_socket_cb");
|
||||
|
|
|
|||
Loading…
Reference in New Issue