Allow passing prog_ifindex to BPF_PROG_LOAD. This patch is not XDP metadata specific but it's here because we (ab)use prog_ifindex as "target metadata" device during loading. We can figure out proper UAPI story if we decide to go forward with the kfunc approach. Cc: Martin KaFai Lau <martin.lau@xxxxxxxxx> Cc: Jakub Kicinski <kuba@xxxxxxxxxx> Cc: Willem de Bruijn <willemb@xxxxxxxxxx> Cc: Jesper Dangaard Brouer <brouer@xxxxxxxxxx> Cc: Anatoly Burakov <anatoly.burakov@xxxxxxxxx> Cc: Alexander Lobakin <alexandr.lobakin@xxxxxxxxx> Cc: Magnus Karlsson <magnus.karlsson@xxxxxxxxx> Cc: Maryam Tahhan <mtahhan@xxxxxxxxxx> Cc: xdp-hints@xxxxxxxxxxxxxxx Cc: netdev@xxxxxxxxxxxxxxx Signed-off-by: Stanislav Fomichev <sdf@xxxxxxxxxx> --- tools/lib/bpf/libbpf.c | 1 + tools/lib/bpf/libbpf.h | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index 5d7819edf074..61bc37006fe4 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -7190,6 +7190,7 @@ static int bpf_object_init_progs(struct bpf_object *obj, const struct bpf_object prog->type = prog->sec_def->prog_type; prog->expected_attach_type = prog->sec_def->expected_attach_type; + prog->prog_ifindex = opts->prog_ifindex; /* sec_def can have custom callback which should be called * after bpf_program is initialized to adjust its properties diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h index eee883f007f9..4a40b7623099 100644 --- a/tools/lib/bpf/libbpf.h +++ b/tools/lib/bpf/libbpf.h @@ -170,9 +170,13 @@ struct bpf_object_open_opts { */ __u32 kernel_log_level; + /* Optional ifindex of netdev for offload purposes. + */ + int prog_ifindex; + size_t :0; }; -#define bpf_object_open_opts__last_field kernel_log_level +#define bpf_object_open_opts__last_field prog_ifindex LIBBPF_API struct bpf_object *bpf_object__open(const char *path); -- 2.38.1.273.g43a17bfeac-goog