aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeliang Tang <tanggeliang@kylinos.cn>2024-04-16 15:38:13 +0800
committerGeliang Tang <tanggeliang@kylinos.cn>2024-04-22 10:56:52 +0800
commitbe6f6db48871482101d4797897b7bd70cface146 (patch)
tree2cc366d4ae82237dc7afa174aaff1bc9a9ea73fe
parent83b402a31416326e788c84e21c40259cbeb15972 (diff)
downloadmptcp_net-next-be6f6db48871482101d4797897b7bd70cface146.tar.gz
selftests/bpf: Use make_sockaddr in test_sock
This patch uses public helper make_sockaddr() exported in network_helpers.h instead of open-coding in bind_sock() in test_sock.c. This can avoid duplicate code. Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
-rw-r--r--tools/testing/selftests/bpf/Makefile1
-rw-r--r--tools/testing/selftests/bpf/test_sock.c28
2 files changed, 5 insertions, 24 deletions
diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile
index b5496ebec5943..e3c98c3b12b6b 100644
--- a/tools/testing/selftests/bpf/Makefile
+++ b/tools/testing/selftests/bpf/Makefile
@@ -298,6 +298,7 @@ $(OUTPUT)/test_maps: $(TESTING_HELPERS)
$(OUTPUT)/test_verifier: $(TESTING_HELPERS) $(CAP_HELPERS) $(UNPRIV_HELPERS)
$(OUTPUT)/xsk.o: $(BPFOBJ)
$(OUTPUT)/test_tcp_check_syncookie_user: $(NETWORK_HELPERS)
+$(OUTPUT)/test_sock: $(NETWORK_HELPERS)
BPFTOOL ?= $(DEFAULT_BPFTOOL)
$(DEFAULT_BPFTOOL): $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile) \
diff --git a/tools/testing/selftests/bpf/test_sock.c b/tools/testing/selftests/bpf/test_sock.c
index 810c3740b2ccb..ac00f598ff8e5 100644
--- a/tools/testing/selftests/bpf/test_sock.c
+++ b/tools/testing/selftests/bpf/test_sock.c
@@ -13,6 +13,7 @@
#include <bpf/bpf.h>
#include "cgroup_helpers.h"
+#include "network_helpers.h"
#include <bpf/bpf_endian.h>
#include "bpf_util.h"
@@ -414,8 +415,6 @@ static int bind_sock(int domain, int type, const char *ip,
unsigned short port, unsigned short port_retry)
{
struct sockaddr_storage addr;
- struct sockaddr_in6 *addr6;
- struct sockaddr_in *addr4;
int sockfd = -1;
socklen_t len;
int res = SUCCESS;
@@ -424,25 +423,8 @@ static int bind_sock(int domain, int type, const char *ip,
if (sockfd < 0)
goto err;
- memset(&addr, 0, sizeof(addr));
-
- if (domain == AF_INET) {
- len = sizeof(struct sockaddr_in);
- addr4 = (struct sockaddr_in *)&addr;
- addr4->sin_family = domain;
- addr4->sin_port = htons(port);
- if (inet_pton(domain, ip, (void *)&addr4->sin_addr) != 1)
- goto err;
- } else if (domain == AF_INET6) {
- len = sizeof(struct sockaddr_in6);
- addr6 = (struct sockaddr_in6 *)&addr;
- addr6->sin6_family = domain;
- addr6->sin6_port = htons(port);
- if (inet_pton(domain, ip, (void *)&addr6->sin6_addr) != 1)
- goto err;
- } else {
+ if (make_sockaddr(domain, ip, port, &addr, &len))
goto err;
- }
if (bind(sockfd, (const struct sockaddr *)&addr, len) == -1) {
/* sys_bind() may fail for different reasons, errno has to be
@@ -458,10 +440,8 @@ static int bind_sock(int domain, int type, const char *ip,
goto out;
retry:
- if (domain == AF_INET)
- addr4->sin_port = htons(port_retry);
- else
- addr6->sin6_port = htons(port_retry);
+ if (make_sockaddr(domain, ip, port_retry, &addr, &len))
+ goto err;
if (bind(sockfd, (const struct sockaddr *)&addr, len) == -1) {
if (errno != EPERM)
goto err;