• Jakub Kicinski's avatar
    tools: libbpf: allow map reuse · 26736eb9
    Jakub Kicinski authored
    More advanced applications may want to only replace programs without
    destroying associated maps.  Allow libbpf users to achieve that.
    Instead of always creating all of the maps at load time, expose to
    users an API to reconstruct the map object from already existing
    map.
    
    The map parameters are read from the kernel and replace the parameters
    of the ELF map.  libbpf does not restrict the map replacement, i.e.
    the reused map does not have to be compatible with the ELF map
    definition.  We relay on the verifier for checking the compatibility
    between maps and programs.  The ELF map definition is completely
    overwritten by the information read from the kernel, to make sure
    libbpf's view of map object corresponds to the actual map.
    Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
    Reviewed-by: default avatarQuentin Monnet <quentin.monnet@netronome.com>
    Acked-by: default avatarAndrey Ignatov <rdna@fb.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    26736eb9
libbpf.c 54.5 KB