diff options
Diffstat (limited to 'tools/testing/selftests/bpf/prog_tests/empty_skb.c')
| -rw-r--r-- | tools/testing/selftests/bpf/prog_tests/empty_skb.c | 12 | 
1 files changed, 10 insertions, 2 deletions
diff --git a/tools/testing/selftests/bpf/prog_tests/empty_skb.c b/tools/testing/selftests/bpf/prog_tests/empty_skb.c index 3b77d8a422db..261228eb68e8 100644 --- a/tools/testing/selftests/bpf/prog_tests/empty_skb.c +++ b/tools/testing/selftests/bpf/prog_tests/empty_skb.c @@ -24,6 +24,7 @@ void test_empty_skb(void)  		int *ifindex;  		int err;  		int ret; +		int lwt_egress_ret; /* expected retval at lwt/egress */  		bool success_on_tc;  	} tests[] = {  		/* Empty packets are always rejected. */ @@ -57,6 +58,7 @@ void test_empty_skb(void)  			.data_size_in = sizeof(eth_hlen),  			.ifindex = &veth_ifindex,  			.ret = -ERANGE, +			.lwt_egress_ret = -ERANGE,  			.success_on_tc = true,  		},  		{ @@ -70,6 +72,7 @@ void test_empty_skb(void)  			.data_size_in = sizeof(eth_hlen),  			.ifindex = &ipip_ifindex,  			.ret = -ERANGE, +			.lwt_egress_ret = -ERANGE,  		},  		/* ETH_HLEN+1-sized packet should be redirected. */ @@ -79,6 +82,7 @@ void test_empty_skb(void)  			.data_in = eth_hlen_pp,  			.data_size_in = sizeof(eth_hlen_pp),  			.ifindex = &veth_ifindex, +			.lwt_egress_ret = 1, /* veth_xmit NET_XMIT_DROP */  		},  		{  			.msg = "ipip ETH_HLEN+1 packet ingress", @@ -108,8 +112,12 @@ void test_empty_skb(void)  	for (i = 0; i < ARRAY_SIZE(tests); i++) {  		bpf_object__for_each_program(prog, bpf_obj->obj) { -			char buf[128]; +			bool at_egress = strstr(bpf_program__name(prog), "egress") != NULL;  			bool at_tc = !strncmp(bpf_program__section_name(prog), "tc", 2); +			int expected_ret; +			char buf[128]; + +			expected_ret = at_egress && !at_tc ? tests[i].lwt_egress_ret : tests[i].ret;  			tattr.data_in = tests[i].data_in;  			tattr.data_size_in = tests[i].data_size_in; @@ -128,7 +136,7 @@ void test_empty_skb(void)  			if (at_tc && tests[i].success_on_tc)  				ASSERT_GE(bpf_obj->bss->ret, 0, buf);  			else -				ASSERT_EQ(bpf_obj->bss->ret, tests[i].ret, buf); +				ASSERT_EQ(bpf_obj->bss->ret, expected_ret, buf);  		}  	}  | 
