Skip to content

Commit 5305b37

Browse files
author
Martin KaFai Lau
committed
Merge branch 'use network helpers, part 2'
Geliang Tang says: ==================== This patchset uses more network helpers in test_sock_addr.c, but first of all, patch 2 is needed to make network_helpers.c independent of test_progs.c. Then network_helpers.h can be included into test_sock_addr.c without compile errors. Patch 1 and patch 2 address Martin's comments for the previous series too. v2: - Only a few minor cleanups to patch 5. ==================== Signed-off-by: Martin KaFai Lau <[email protected]>
2 parents 55d30cc + e4c68bb commit 5305b37

File tree

9 files changed

+62
-127
lines changed

9 files changed

+62
-127
lines changed

tools/testing/selftests/bpf/Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,11 +290,12 @@ UNPRIV_HELPERS := $(OUTPUT)/unpriv_helpers.o
290290
TRACE_HELPERS := $(OUTPUT)/trace_helpers.o
291291
JSON_WRITER := $(OUTPUT)/json_writer.o
292292
CAP_HELPERS := $(OUTPUT)/cap_helpers.o
293+
NETWORK_HELPERS := $(OUTPUT)/network_helpers.o
293294

294295
$(OUTPUT)/test_dev_cgroup: $(CGROUP_HELPERS) $(TESTING_HELPERS)
295296
$(OUTPUT)/test_skb_cgroup_id_user: $(CGROUP_HELPERS) $(TESTING_HELPERS)
296297
$(OUTPUT)/test_sock: $(CGROUP_HELPERS) $(TESTING_HELPERS)
297-
$(OUTPUT)/test_sock_addr: $(CGROUP_HELPERS) $(TESTING_HELPERS)
298+
$(OUTPUT)/test_sock_addr: $(CGROUP_HELPERS) $(TESTING_HELPERS) $(NETWORK_HELPERS)
298299
$(OUTPUT)/test_sockmap: $(CGROUP_HELPERS) $(TESTING_HELPERS)
299300
$(OUTPUT)/test_tcpnotify_user: $(CGROUP_HELPERS) $(TESTING_HELPERS) $(TRACE_HELPERS)
300301
$(OUTPUT)/get_cgroup_id_user: $(CGROUP_HELPERS) $(TESTING_HELPERS)

tools/testing/selftests/bpf/network_helpers.c

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -459,25 +459,35 @@ struct nstoken *open_netns(const char *name)
459459
struct nstoken *token;
460460

461461
token = calloc(1, sizeof(struct nstoken));
462-
if (!ASSERT_OK_PTR(token, "malloc token"))
462+
if (!token) {
463+
log_err("Failed to malloc token");
463464
return NULL;
465+
}
464466

465467
token->orig_netns_fd = open("/proc/self/ns/net", O_RDONLY);
466-
if (!ASSERT_GE(token->orig_netns_fd, 0, "open /proc/self/ns/net"))
468+
if (token->orig_netns_fd == -1) {
469+
log_err("Failed to open(/proc/self/ns/net)");
467470
goto fail;
471+
}
468472

469473
snprintf(nspath, sizeof(nspath), "%s/%s", "/var/run/netns", name);
470474
nsfd = open(nspath, O_RDONLY | O_CLOEXEC);
471-
if (!ASSERT_GE(nsfd, 0, "open netns fd"))
475+
if (nsfd == -1) {
476+
log_err("Failed to open(%s)", nspath);
472477
goto fail;
478+
}
473479

474480
err = setns(nsfd, CLONE_NEWNET);
475481
close(nsfd);
476-
if (!ASSERT_OK(err, "setns"))
482+
if (err) {
483+
log_err("Failed to setns(nsfd)");
477484
goto fail;
485+
}
478486

479487
return token;
480488
fail:
489+
if (token->orig_netns_fd != -1)
490+
close(token->orig_netns_fd);
481491
free(token);
482492
return NULL;
483493
}
@@ -487,7 +497,8 @@ void close_netns(struct nstoken *token)
487497
if (!token)
488498
return;
489499

490-
ASSERT_OK(setns(token->orig_netns_fd, CLONE_NEWNET), "setns");
500+
if (setns(token->orig_netns_fd, CLONE_NEWNET))
501+
log_err("Failed to setns(orig_netns_fd)");
491502
close(token->orig_netns_fd);
492503
free(token);
493504
}

tools/testing/selftests/bpf/network_helpers.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ typedef __u16 __sum16;
1111
#include <linux/ipv6.h>
1212
#include <linux/ethtool.h>
1313
#include <linux/sockios.h>
14+
#include <linux/err.h>
1415
#include <netinet/tcp.h>
1516
#include <bpf/bpf_endian.h>
1617
#include <net/if.h>

tools/testing/selftests/bpf/prog_tests/empty_skb.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ void test_empty_skb(void)
9494

9595
SYS(out, "ip netns add empty_skb");
9696
tok = open_netns("empty_skb");
97+
if (!ASSERT_OK_PTR(tok, "setns"))
98+
goto out;
9799
SYS(out, "ip link add veth0 type veth peer veth1");
98100
SYS(out, "ip link set dev veth0 up");
99101
SYS(out, "ip link set dev veth1 up");

tools/testing/selftests/bpf/prog_tests/ip_check_defrag.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ static int attach(struct ip_check_defrag *skel, bool ipv6)
8888
int err = -1;
8989

9090
nstoken = open_netns(NS1);
91+
if (!ASSERT_OK_PTR(nstoken, "setns"))
92+
goto out;
9193

9294
skel->links.defrag = bpf_program__attach_netfilter(skel->progs.defrag, &opts);
9395
if (!ASSERT_OK_PTR(skel->links.defrag, "program attach"))

tools/testing/selftests/bpf/prog_tests/tc_redirect.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ static int wait_netstamp_needed_key(void)
530530
__u64 tstamp = 0;
531531

532532
nstoken = open_netns(NS_DST);
533-
if (!nstoken)
533+
if (!ASSERT_OK_PTR(nstoken, "setns dst"))
534534
return -1;
535535

536536
srv_fd = start_server(AF_INET6, SOCK_DGRAM, "::1", 0, 0);

tools/testing/selftests/bpf/prog_tests/test_tunnel.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -612,6 +612,8 @@ static void test_ipip_tunnel(enum ipip_encap encap)
612612

613613
/* ping from at_ns0 namespace test */
614614
nstoken = open_netns("at_ns0");
615+
if (!ASSERT_OK_PTR(nstoken, "setns"))
616+
goto done;
615617
err = test_ping(AF_INET, IP4_ADDR_TUNL_DEV1);
616618
if (!ASSERT_OK(err, "test_ping"))
617619
goto done;
@@ -666,6 +668,8 @@ static void test_xfrm_tunnel(void)
666668

667669
/* ping from at_ns0 namespace test */
668670
nstoken = open_netns("at_ns0");
671+
if (!ASSERT_OK_PTR(nstoken, "setns"))
672+
goto done;
669673
err = test_ping(AF_INET, IP4_ADDR_TUNL_DEV1);
670674
close_netns(nstoken);
671675
if (!ASSERT_OK(err, "test_ping"))

tools/testing/selftests/bpf/prog_tests/xdp_metadata.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,8 @@ void test_xdp_metadata(void)
384384
SYS(out, "ip netns add " RX_NETNS_NAME);
385385

386386
tok = open_netns(TX_NETNS_NAME);
387+
if (!ASSERT_OK_PTR(tok, "setns"))
388+
goto out;
387389
SYS(out, "ip link add numtxqueues 1 numrxqueues 1 " TX_NAME
388390
" type veth peer " RX_NAME " numtxqueues 1 numrxqueues 1");
389391
SYS(out, "ip link set " RX_NAME " netns " RX_NETNS_NAME);
@@ -400,6 +402,8 @@ void test_xdp_metadata(void)
400402
SYS(out, "ip -4 neigh add " RX_ADDR " lladdr " RX_MAC " dev " TX_NAME_VLAN);
401403

402404
switch_ns_to_rx(&tok);
405+
if (!ASSERT_OK_PTR(tok, "setns rx"))
406+
goto out;
403407

404408
SYS(out, "ip link set dev " RX_NAME " address " RX_MAC);
405409
SYS(out, "ip link set dev " RX_NAME " up");
@@ -449,6 +453,8 @@ void test_xdp_metadata(void)
449453
goto out;
450454

451455
switch_ns_to_tx(&tok);
456+
if (!ASSERT_OK_PTR(tok, "setns tx"))
457+
goto out;
452458

453459
/* Setup separate AF_XDP for TX interface nad send packet to the RX socket. */
454460
tx_ifindex = if_nametoindex(TX_NAME);
@@ -461,20 +467,26 @@ void test_xdp_metadata(void)
461467
goto out;
462468

463469
switch_ns_to_rx(&tok);
470+
if (!ASSERT_OK_PTR(tok, "setns rx"))
471+
goto out;
464472

465473
/* Verify packet sent from AF_XDP has proper metadata. */
466474
if (!ASSERT_GE(verify_xsk_metadata(&rx_xsk, true), 0,
467475
"verify_xsk_metadata"))
468476
goto out;
469477

470478
switch_ns_to_tx(&tok);
479+
if (!ASSERT_OK_PTR(tok, "setns tx"))
480+
goto out;
471481
complete_tx(&tx_xsk);
472482

473483
/* Now check metadata of packet, generated with network stack */
474484
if (!ASSERT_GE(generate_packet_inet(), 0, "generate UDP packet"))
475485
goto out;
476486

477487
switch_ns_to_rx(&tok);
488+
if (!ASSERT_OK_PTR(tok, "setns rx"))
489+
goto out;
478490

479491
if (!ASSERT_GE(verify_xsk_metadata(&rx_xsk, false), 0,
480492
"verify_xsk_metadata"))
@@ -498,13 +510,17 @@ void test_xdp_metadata(void)
498510
goto out;
499511

500512
switch_ns_to_tx(&tok);
513+
if (!ASSERT_OK_PTR(tok, "setns tx"))
514+
goto out;
501515

502516
/* Send packet to trigger . */
503517
if (!ASSERT_GE(generate_packet(&tx_xsk, AF_XDP_CONSUMER_PORT), 0,
504518
"generate freplace packet"))
505519
goto out;
506520

507521
switch_ns_to_rx(&tok);
522+
if (!ASSERT_OK_PTR(tok, "setns rx"))
523+
goto out;
508524

509525
while (!retries--) {
510526
if (bpf_obj2->bss->called)

0 commit comments

Comments
 (0)