Skip to content

Commit

Permalink
selftests/bpf: No need to drop the packet when there is no geneve opt
Browse files Browse the repository at this point in the history
In bpf geneve tunnel test we set geneve option on tx side. On rx side we
only call bpf_skb_get_tunnel_opt(). Since commit 9c2e14b ("ip_tunnels:
Set tunnel option flag when tunnel metadata is present") geneve_rx() will
not add TUNNEL_GENEVE_OPT flag if there is no geneve option, which cause
bpf_skb_get_tunnel_opt() return ENOENT and _geneve_get_tunnel() in
test_tunnel_kern.c drop the packet.

As it should be valid that bpf_skb_get_tunnel_opt() return error when
there is not tunnel option, there is no need to drop the packet and
break all geneve rx traffic. Just set opt_class to 0 in this test and
keep returning TC_ACT_OK.

Fixes: 933a741 ("selftests/bpf: bpf tunnel test.")
Signed-off-by: Hangbin Liu <[email protected]>
Signed-off-by: Daniel Borkmann <[email protected]>
Acked-by: William Tu <[email protected]>
Link: https://lore.kernel.org/bpf/[email protected]
  • Loading branch information
liuhangbin authored and borkmann committed Feb 24, 2021
1 parent a7c9c25 commit 557c223
Showing 1 changed file with 2 additions and 4 deletions.
6 changes: 2 additions & 4 deletions tools/testing/selftests/bpf/progs/test_tunnel_kern.c
Original file line number Diff line number Diff line change
Expand Up @@ -446,10 +446,8 @@ int _geneve_get_tunnel(struct __sk_buff *skb)
}

ret = bpf_skb_get_tunnel_opt(skb, &gopt, sizeof(gopt));
if (ret < 0) {
ERROR(ret);
return TC_ACT_SHOT;
}
if (ret < 0)
gopt.opt_class = 0;

bpf_trace_printk(fmt, sizeof(fmt),
key.tunnel_id, key.remote_ipv4, gopt.opt_class);
Expand Down

0 comments on commit 557c223

Please sign in to comment.