• Daniel Borkmann's avatar
    bpf: allow bpf_csum_diff to feed bpf_l3_csum_replace as well · 8050c0f0
    Daniel Borkmann authored
    Commit 7d672345 ("bpf: add generic bpf_csum_diff helper") added a
    generic checksum diff helper that can feed bpf_l4_csum_replace() with
    a target __wsum diff that is to be applied to the L4 checksum. This
    facility is very flexible, can be cascaded, allows for adding, removing,
    or diffing data, or for calculating the pseudo header checksum from
    scratch, but it can also be reused for working with the IPv4 header
    checksum.
    
    Thus, analogous to bpf_l4_csum_replace(), add a case for header field
    value of 0 to change the checksum at a given offset through a new helper
    csum_replace_by_diff(). Also, in addition to that, this provides an
    easy to use interface for feeding precalculated diffs f.e. coming from
    a map. It nicely complements bpf_l3_csum_replace() that currently allows
    only for csum updates of 2 and 4 byte diffs.
    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>
    8050c0f0
checksum.h 4.69 KB