@@ -133,8 +133,12 @@ static void set_subtest_addresses(struct subtest_cfg *cfg)
133133
134134static int run_server (struct subtest_cfg * cfg )
135135{
136- struct nstoken * nstoken = open_netns (SERVER_NS );
137136 int family = cfg -> ipproto == 6 ? AF_INET6 : AF_INET ;
137+ struct nstoken * nstoken ;
138+
139+ nstoken = open_netns (SERVER_NS );
140+ if (!ASSERT_OK_PTR (nstoken , "open server ns" ))
141+ return -1 ;
138142
139143 cfg -> server_fd = start_reuseport_server (family , SOCK_STREAM ,
140144 cfg -> server_addr , TEST_PORT ,
@@ -319,6 +323,10 @@ static int configure_encapsulation(struct subtest_cfg *cfg)
319323static int configure_kernel_decapsulation (struct subtest_cfg * cfg )
320324{
321325 struct nstoken * nstoken = open_netns (SERVER_NS );
326+ int ret = -1 ;
327+
328+ if (!ASSERT_OK_PTR (nstoken , "open server ns" ))
329+ return ret ;
322330
323331 if (cfg -> configure_fou_rx_port &&
324332 !ASSERT_OK (add_fou_rx_port (cfg ), "configure FOU RX port" ))
@@ -337,11 +345,11 @@ static int configure_kernel_decapsulation(struct subtest_cfg *cfg)
337345 SYS (fail , "sysctl -qw net.ipv4.conf.all.rp_filter=0" );
338346 SYS (fail , "sysctl -qw net.ipv4.conf.testtun0.rp_filter=0" );
339347 SYS (fail , "ip link set dev testtun0 up" );
340- close_netns ( nstoken );
341- return 0 ;
348+
349+ ret = 0 ;
342350fail :
343351 close_netns (nstoken );
344- return -1 ;
352+ return ret ;
345353}
346354
347355static void remove_kernel_decapsulation (struct subtest_cfg * cfg )
@@ -356,24 +364,31 @@ static void remove_kernel_decapsulation(struct subtest_cfg *cfg)
356364static int configure_ebpf_decapsulation (struct subtest_cfg * cfg )
357365{
358366 struct nstoken * nstoken = open_netns (SERVER_NS );
367+ int ret = -1 ;
368+
369+ if (!ASSERT_OK_PTR (nstoken , "open server ns" ))
370+ return ret ;
359371
360372 if (!cfg -> expect_kern_decap_failure )
361373 SYS (fail , "ip link del testtun0" );
362374
363375 if (!ASSERT_OK (tc_prog_attach ("veth2" , cfg -> server_ingress_prog_fd , -1 ),
364376 "attach_program" ))
365377 goto fail ;
366- close_netns ( nstoken );
367- return 0 ;
378+
379+ ret = 0 ;
368380fail :
369381 close_netns (nstoken );
370- return -1 ;
382+ return ret ;
371383}
372384
373385static void run_test (struct subtest_cfg * cfg )
374386{
375387 struct nstoken * nstoken = open_netns (CLIENT_NS );
376388
389+ if (!ASSERT_OK_PTR (nstoken , "open client ns" ))
390+ return ;
391+
377392 if (!ASSERT_OK (run_server (cfg ), "run server" ))
378393 goto fail ;
379394
@@ -407,7 +422,7 @@ static void run_test(struct subtest_cfg *cfg)
407422
408423static int setup (void )
409424{
410- struct nstoken * nstoken = NULL ;
425+ struct nstoken * nstoken_client , * nstoken_server ;
411426 int fd , err ;
412427
413428 fd = open ("/dev/urandom" , O_RDONLY );
@@ -424,52 +439,75 @@ static int setup(void)
424439 !ASSERT_OK (make_netns (SERVER_NS ), "create server ns" ))
425440 goto fail ;
426441
427- nstoken = open_netns (CLIENT_NS );
428- SYS (fail , "ip link add %s type veth peer name %s" ,
442+ nstoken_client = open_netns (CLIENT_NS );
443+ if (!ASSERT_OK_PTR (nstoken_client , "open client ns" ))
444+ goto fail_delete_ns ;
445+ SYS (fail_close_ns_client , "ip link add %s type veth peer name %s" ,
429446 "veth1 mtu 1500 netns " CLIENT_NS " address " MAC_ADDR_VETH1 ,
430447 "veth2 mtu 1500 netns " SERVER_NS " address " MAC_ADDR_VETH2 );
431- SYS (fail , "ethtool -K veth1 tso off" );
432- SYS (fail , "ip link set veth1 up" );
433- close_netns (nstoken );
434- nstoken = open_netns (SERVER_NS );
435- SYS (fail , "ip link set veth2 up" );
436- close_netns (nstoken );
437-
448+ SYS (fail_close_ns_client , "ethtool -K veth1 tso off" );
449+ SYS (fail_close_ns_client , "ip link set veth1 up" );
450+ nstoken_server = open_netns (SERVER_NS );
451+ if (!ASSERT_OK_PTR (nstoken_server , "open server ns" ))
452+ goto fail_close_ns_client ;
453+ SYS (fail_close_ns_server , "ip link set veth2 up" );
454+
455+ close_netns (nstoken_server );
456+ close_netns (nstoken_client );
438457 return 0 ;
458+
459+ fail_close_ns_server :
460+ close_netns (nstoken_server );
461+ fail_close_ns_client :
462+ close_netns (nstoken_client );
463+ fail_delete_ns :
464+ SYS_NOFAIL ("ip netns del " CLIENT_NS );
465+ SYS_NOFAIL ("ip netns del " SERVER_NS );
439466fail :
440- close_netns (nstoken );
441- return 1 ;
467+ return -1 ;
442468}
443469
444470static int subtest_setup (struct test_tc_tunnel * skel , struct subtest_cfg * cfg )
445471{
446- struct nstoken * nstoken ;
472+ struct nstoken * nstoken_client , * nstoken_server ;
473+ int ret = -1 ;
447474
448475 set_subtest_addresses (cfg );
449476 if (!ASSERT_OK (set_subtest_progs (cfg , skel ),
450477 "find subtest progs" ))
451- return -1 ;
478+ goto fail ;
452479 if (cfg -> extra_decap_mod_args_cb )
453480 cfg -> extra_decap_mod_args_cb (cfg , cfg -> extra_decap_mod_args );
454481
455- nstoken = open_netns (CLIENT_NS );
456- SYS (fail , "ip -4 addr add " IP4_ADDR_VETH1 "/24 dev veth1" );
457- SYS (fail , "ip -4 route flush table main" );
458- SYS (fail , "ip -4 route add " IP4_ADDR_VETH2 " mtu 1450 dev veth1" );
459- SYS (fail , "ip -6 addr add " IP6_ADDR_VETH1 "/64 dev veth1 nodad" );
460- SYS (fail , "ip -6 route flush table main" );
461- SYS (fail , "ip -6 route add " IP6_ADDR_VETH2 " mtu 1430 dev veth1" );
462- close_netns (nstoken );
463-
464- nstoken = open_netns (SERVER_NS );
465- SYS (fail , "ip -4 addr add " IP4_ADDR_VETH2 "/24 dev veth2" );
466- SYS (fail , "ip -6 addr add " IP6_ADDR_VETH2 "/64 dev veth2 nodad" );
467- close_netns (nstoken );
468-
469- return 0 ;
482+ nstoken_client = open_netns (CLIENT_NS );
483+ if (!ASSERT_OK_PTR (nstoken_client , "open client ns" ))
484+ goto fail ;
485+ SYS (fail_close_client_ns ,
486+ "ip -4 addr add " IP4_ADDR_VETH1 "/24 dev veth1" );
487+ SYS (fail_close_client_ns , "ip -4 route flush table main" );
488+ SYS (fail_close_client_ns ,
489+ "ip -4 route add " IP4_ADDR_VETH2 " mtu 1450 dev veth1" );
490+ SYS (fail_close_client_ns ,
491+ "ip -6 addr add " IP6_ADDR_VETH1 "/64 dev veth1 nodad" );
492+ SYS (fail_close_client_ns , "ip -6 route flush table main" );
493+ SYS (fail_close_client_ns ,
494+ "ip -6 route add " IP6_ADDR_VETH2 " mtu 1430 dev veth1" );
495+ nstoken_server = open_netns (SERVER_NS );
496+ if (!ASSERT_OK_PTR (nstoken_server , "open server ns" ))
497+ goto fail_close_client_ns ;
498+ SYS (fail_close_server_ns ,
499+ "ip -4 addr add " IP4_ADDR_VETH2 "/24 dev veth2" );
500+ SYS (fail_close_server_ns ,
501+ "ip -6 addr add " IP6_ADDR_VETH2 "/64 dev veth2 nodad" );
502+
503+ ret = 0 ;
504+
505+ fail_close_server_ns :
506+ close_netns (nstoken_server );
507+ fail_close_client_ns :
508+ close_netns (nstoken_client );
470509fail :
471- close_netns (nstoken );
472- return -1 ;
510+ return ret ;
473511}
474512
475513
@@ -478,15 +516,19 @@ static void subtest_cleanup(struct subtest_cfg *cfg)
478516 struct nstoken * nstoken ;
479517
480518 nstoken = open_netns (CLIENT_NS );
481- SYS_NOFAIL ("tc qdisc delete dev veth1 parent ffff:fff1" );
482- SYS_NOFAIL ("ip a flush veth1" );
483- close_netns (nstoken );
519+ if (ASSERT_OK_PTR (nstoken , "open clien ns" )) {
520+ SYS_NOFAIL ("tc qdisc delete dev veth1 parent ffff:fff1" );
521+ SYS_NOFAIL ("ip a flush veth1" );
522+ close_netns (nstoken );
523+ }
484524 nstoken = open_netns (SERVER_NS );
485- SYS_NOFAIL ("tc qdisc delete dev veth2 parent ffff:fff1" );
486- SYS_NOFAIL ("ip a flush veth2" );
487- if (!cfg -> expect_kern_decap_failure )
488- remove_kernel_decapsulation (cfg );
489- close_netns (nstoken );
525+ if (ASSERT_OK_PTR (nstoken , "open clien ns" )) {
526+ SYS_NOFAIL ("tc qdisc delete dev veth2 parent ffff:fff1" );
527+ SYS_NOFAIL ("ip a flush veth2" );
528+ if (!cfg -> expect_kern_decap_failure )
529+ remove_kernel_decapsulation (cfg );
530+ close_netns (nstoken );
531+ }
490532}
491533
492534static void cleanup (void )
0 commit comments