On 5/28/20 4:25 AM, Jesper Dangaard Brouer wrote:
That said, you should use the new SEC(".maps") definitions, but you
need to use some tricks to avoid a BTF-ID getting generated. Let me
help you with something that should work:
/* DEVMAP values */
struct devmap_val {
__u32 ifindex; /* device index */
};
struct {
__uint(type, BPF_MAP_TYPE_DEVMAP);
__uint(key_size, sizeof(u32));
__uint(value_size, sizeof(struct devmap_val));
__uint(max_entries, 4);
} dm_ports SEC(".maps");
Notice by setting key_size and value_size, instead of the "__type",
then a BTF-ID will be generated for this map.
Normally with proper BTF it should look like:
struct {
__uint(type, BPF_MAP_TYPE_DEVMAP);
__type(key, u32);
__type(value, struct devmap_val);
__uint(max_entries, 4);
} dm_ports_with_BTF SEC(".maps");
Thanks for the tip.