• Daniel Borkmann's avatar
    bpf: fix csum setting for bpf_set_tunnel_key · 2da897e5
    Daniel Borkmann authored
    The fix in 35e2d115 ("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: 35e2d115 ("tunnels: Allow IPv6 UDP checksums to be correctly controlled.")
    Fixes: c6c33454 ("bpf: support ipv6 for bpf_skb_{set,get}_tunnel_key")
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    2da897e5
bpf.h 8.99 KB