lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sat, 27 Jan 2018 02:23:36 +0100 From: Daniel Borkmann <daniel@...earbox.net> To: Eric Leblond <eric@...it.org> Cc: alexei.starovoitov@...il.com, netdev@...r.kernel.org, linux-kernel@...r.kernel.org Subject: Re: [PATCH bpf-next v7 2/5] libbpf: add function to setup XDP On 01/25/2018 01:05 AM, Eric Leblond wrote: > Most of the code is taken from set_link_xdp_fd() in bpf_load.c and > slightly modified to be library compliant. > > Signed-off-by: Eric Leblond <eric@...it.org> > Acked-by: Alexei Starovoitov <ast@...nel.org> > --- > tools/lib/bpf/bpf.c | 127 +++++++++++++++++++++++++++++++++++++++++++++++++ > tools/lib/bpf/libbpf.c | 2 + > tools/lib/bpf/libbpf.h | 4 ++ > 3 files changed, 133 insertions(+) > > diff --git a/tools/lib/bpf/bpf.c b/tools/lib/bpf/bpf.c > index 5128677e4117..749a447ec9ed 100644 > --- a/tools/lib/bpf/bpf.c > +++ b/tools/lib/bpf/bpf.c > @@ -25,6 +25,17 @@ > #include <asm/unistd.h> > #include <linux/bpf.h> > #include "bpf.h" > +#include "libbpf.h" > +#include "nlattr.h" > +#include <uapi/linux/rtnetlink.h> Doesn't libbpf pull in already -I$(srctree)/tools/include/uapi? Seems the other headers don't need 'uapi/' path prefix. > +#include <sys/socket.h> > +#include <errno.h> > + > +#ifndef IFLA_XDP_MAX > +#define IFLA_XDP 43 > +#define IFLA_XDP_FD 1 > +#define IFLA_XDP_FLAGS 3 > +#endif Hm, given we pull in tools/include/uapi/linux/netlink.h, shouldn't we also get include/uapi/linux/if_link.h dependency in here, so above ifdef workaround can be avoided? > /* > * When building perf, unistd.h is overridden. __NR_bpf is > @@ -46,7 +57,9 @@ > # endif > #endif > > +#ifndef min > #define min(x, y) ((x) < (y) ? (x) : (y)) > +#endif > > static inline __u64 ptr_to_u64(const void *ptr) > { > @@ -413,3 +426,117 @@ int bpf_obj_get_info_by_fd(int prog_fd, void *info, __u32 *info_len) > > return err; > } > + > +int bpf_set_link_xdp_fd(int ifindex, int fd, __u32 flags) > +{ > + struct sockaddr_nl sa; > + int sock, seq = 0, len, ret = -1; > + char buf[4096]; > + struct nlattr *nla, *nla_xdp; > + struct { [...]
Powered by blists - more mailing lists