]> git.baikalelectronics.ru Git - kernel.git/commit
bpf: fix csum setting for bpf_set_tunnel_key
authorDaniel Borkmann <daniel@iogearbox.net>
Tue, 23 Feb 2016 01:05:26 +0000 (02:05 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 24 Feb 2016 21:23:47 +0000 (16:23 -0500)
commit32e1def94a4a5b77407464bcb01961d5282a2593
treefde1288756864287c3f0a48e1ce9ef9414f785d2
parentc2b8909c5c624f89d06a73939c2c5c9c91f556d1
bpf: fix csum setting for bpf_set_tunnel_key

The fix in f082b89f714f ("tunnels: Allow IPv6 UDP checksums to be correctly
controlled.") changed behavior for bpf_set_tunnel_key() when in use with
IPv6 and thus uncovered a bug that TUNNEL_CSUM needed to be set but wasn't.
As a result, the stack dropped ingress vxlan IPv6 packets, that have been
sent via eBPF through collect meta data mode due to checksum now being zero.

Since after LCO, we enable IPv4 checksum by default, so make that analogous
and only provide a flag BPF_F_ZERO_CSUM_TX for the user to turn it off in
IPv4 case.

Fixes: f082b89f714f ("tunnels: Allow IPv6 UDP checksums to be correctly controlled.")
Fixes: f23ad4ea7d2f ("bpf: support ipv6 for bpf_skb_{set,get}_tunnel_key")
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/uapi/linux/bpf.h
net/core/filter.c