• Joanne Koong's avatar
    bpf: Add xdp dynptrs · 05421aec
    Joanne Koong authored
    Add xdp dynptrs, which are dynptrs whose underlying pointer points
    to a xdp_buff. The dynptr acts on xdp data. xdp dynptrs have two main
    benefits. One is that they allow operations on sizes that are not
    statically known at compile-time (eg variable-sized accesses).
    Another is that parsing the packet data through dynptrs (instead of
    through direct access of xdp->data and xdp->data_end) can be more
    ergonomic and less brittle (eg does not need manual if checking for
    being within bounds of data_end).
    
    For reads and writes on the dynptr, this includes reading/writing
    from/to and across fragments. Data slices through the bpf_dynptr_data
    API are not supported; instead bpf_dynptr_slice() and
    bpf_dynptr_slice_rdwr() should be used.
    
    For examples of how xdp dynptrs can be used, please see the attached
    selftests.
    Signed-off-by: default avatarJoanne Koong <joannelkoong@gmail.com>
    Link: https://lore.kernel.org/r/20230301154953.641654-9-joannelkoong@gmail.comSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    05421aec
helpers.c 59.6 KB