Expose bpf_parse_common() and bpf_load_common() functions for those users who may want to modify the parameters to load after parsing is done.
Signed-off-by: Jakub Kicinski <jakub.kicin...@netronome.com> Reviewed-by: Quentin Monnet <quentin.mon...@netronome.com> Acked-by: Daniel Borkmann <dan...@iogearbox.net> --- include/bpf_util.h | 3 +++ lib/bpf.c | 26 ++++++++++++++++---------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/include/bpf_util.h b/include/bpf_util.h index da2dee8bb3aa..f6371994252e 100644 --- a/include/bpf_util.h +++ b/include/bpf_util.h @@ -259,6 +259,9 @@ struct bpf_cfg_in { .off = 0, \ .imm = 0 }) +int bpf_parse_common(struct bpf_cfg_in *cfg, const struct bpf_cfg_ops *ops); +int bpf_load_common(struct bpf_cfg_in *cfg, const struct bpf_cfg_ops *ops, + void *nl); int bpf_parse_and_load_common(struct bpf_cfg_in *cfg, const struct bpf_cfg_ops *ops, void *nl); diff --git a/lib/bpf.c b/lib/bpf.c index 9a0867124fc4..f25f7016d10f 100644 --- a/lib/bpf.c +++ b/lib/bpf.c @@ -926,17 +926,12 @@ static int bpf_do_load(struct bpf_cfg_in *cfg) return 0; } -static int bpf_parse_opt_tbl(struct bpf_cfg_in *cfg, - const struct bpf_cfg_ops *ops, void *nl, - const bool *opt_tbl) +int bpf_load_common(struct bpf_cfg_in *cfg, const struct bpf_cfg_ops *ops, + void *nl) { char annotation[256]; int ret; - ret = bpf_do_parse(cfg, opt_tbl); - if (ret < 0) - return ret; - ret = bpf_do_load(cfg); if (ret < 0) return ret; @@ -953,8 +948,7 @@ static int bpf_parse_opt_tbl(struct bpf_cfg_in *cfg, return 0; } -int bpf_parse_and_load_common(struct bpf_cfg_in *cfg, - const struct bpf_cfg_ops *ops, void *nl) +int bpf_parse_common(struct bpf_cfg_in *cfg, const struct bpf_cfg_ops *ops) { bool opt_tbl[BPF_MODE_MAX] = {}; @@ -968,7 +962,19 @@ int bpf_parse_and_load_common(struct bpf_cfg_in *cfg, opt_tbl[EBPF_PINNED] = true; } - return bpf_parse_opt_tbl(cfg, ops, nl, opt_tbl); + return bpf_do_parse(cfg, opt_tbl); +} + +int bpf_parse_and_load_common(struct bpf_cfg_in *cfg, + const struct bpf_cfg_ops *ops, void *nl) +{ + int ret; + + ret = bpf_parse_common(cfg, ops); + if (ret < 0) + return ret; + + return bpf_load_common(cfg, ops, nl); } int bpf_graft_map(const char *map_path, uint32_t *key, int argc, char **argv) -- 2.14.1