lib bpf: Add support for BPF_PROG_ATTACH and BPF_PROG_DETACH

Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
This commit is contained in:
David Ahern 2016-12-11 16:53:08 -08:00 committed by Stephen Hemminger
parent 7d59d6354f
commit fc4ccce038
2 changed files with 24 additions and 0 deletions

View File

@ -75,6 +75,9 @@ int bpf_trace_pipe(void);
void bpf_print_ops(FILE *f, struct rtattr *bpf_ops, __u16 len);
int bpf_prog_attach_fd(int prog_fd, int target_fd, enum bpf_attach_type type);
int bpf_prog_detach_fd(int target_fd, enum bpf_attach_type type);
#ifdef HAVE_ELF
int bpf_send_map_fds(const char *path, const char *obj);
int bpf_recv_map_fds(const char *path, int *fds, struct bpf_map_aux *aux,

View File

@ -868,6 +868,27 @@ out_prog:
return ret;
}
int bpf_prog_attach_fd(int prog_fd, int target_fd, enum bpf_attach_type type)
{
union bpf_attr attr = {};
attr.target_fd = target_fd;
attr.attach_bpf_fd = prog_fd;
attr.attach_type = type;
return bpf(BPF_PROG_ATTACH, &attr, sizeof(attr));
}
int bpf_prog_detach_fd(int target_fd, enum bpf_attach_type type)
{
union bpf_attr attr = {};
attr.target_fd = target_fd;
attr.attach_type = type;
return bpf(BPF_PROG_DETACH, &attr, sizeof(attr));
}
#ifdef HAVE_ELF
struct bpf_elf_prog {
enum bpf_prog_type type;