bpf: expose bpf_parse_common() and bpf_load_common()
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.kicinski@netronome.com> Reviewed-by: Quentin Monnet <quentin.monnet@netronome.com> Acked-by: Daniel Borkmann <daniel@iogearbox.net>
This commit is contained in:
parent
399db8392b
commit
4a847fcb51
|
|
@ -259,6 +259,9 @@ struct bpf_cfg_in {
|
||||||
.off = 0, \
|
.off = 0, \
|
||||||
.imm = 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,
|
int bpf_parse_and_load_common(struct bpf_cfg_in *cfg,
|
||||||
const struct bpf_cfg_ops *ops, void *nl);
|
const struct bpf_cfg_ops *ops, void *nl);
|
||||||
|
|
||||||
|
|
|
||||||
26
lib/bpf.c
26
lib/bpf.c
|
|
@ -926,17 +926,12 @@ static int bpf_do_load(struct bpf_cfg_in *cfg)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int bpf_parse_opt_tbl(struct bpf_cfg_in *cfg,
|
int bpf_load_common(struct bpf_cfg_in *cfg, const struct bpf_cfg_ops *ops,
|
||||||
const struct bpf_cfg_ops *ops, void *nl,
|
void *nl)
|
||||||
const bool *opt_tbl)
|
|
||||||
{
|
{
|
||||||
char annotation[256];
|
char annotation[256];
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = bpf_do_parse(cfg, opt_tbl);
|
|
||||||
if (ret < 0)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
ret = bpf_do_load(cfg);
|
ret = bpf_do_load(cfg);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
@ -953,8 +948,7 @@ static int bpf_parse_opt_tbl(struct bpf_cfg_in *cfg,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int bpf_parse_and_load_common(struct bpf_cfg_in *cfg,
|
int bpf_parse_common(struct bpf_cfg_in *cfg, const struct bpf_cfg_ops *ops)
|
||||||
const struct bpf_cfg_ops *ops, void *nl)
|
|
||||||
{
|
{
|
||||||
bool opt_tbl[BPF_MODE_MAX] = {};
|
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;
|
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)
|
int bpf_graft_map(const char *map_path, uint32_t *key, int argc, char **argv)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue