On 1 November 2016 at 19:52, Daniel Borkmann <dan...@iogearbox.net> wrote: > On 10/31/2016 07:39 PM, Joe Stringer wrote: >> >> Extend the tools/ version of libbpf to include all of the functionality >> provided in the samples/bpf version. >> >> Signed-off-by: Joe Stringer <j...@ovn.org> >> --- >> tools/lib/bpf/bpf.c | 139 +++++++++++++++++++++++++++------ >> tools/lib/bpf/bpf.h | 208 >> +++++++++++++++++++++++++++++++++++++++++++++++-- >> tools/lib/bpf/libbpf.c | 3 +- >> 3 files changed, 317 insertions(+), 33 deletions(-) >> > [...] > >> +int open_raw_sock(const char *name) >> +{ >> + struct sockaddr_ll sll; >> + int sock; >> + >> + sock = socket(PF_PACKET, SOCK_RAW | SOCK_NONBLOCK | SOCK_CLOEXEC, >> + htons(ETH_P_ALL)); >> + if (sock < 0) { >> + printf("cannot create raw socket\n"); >> + return -1; >> + } >> + >> + memset(&sll, 0, sizeof(sll)); >> + sll.sll_family = AF_PACKET; >> + sll.sll_ifindex = if_nametoindex(name); >> + sll.sll_protocol = htons(ETH_P_ALL); >> + if (bind(sock, (struct sockaddr *)&sll, sizeof(sll)) < 0) { >> + printf("bind to %s: %s\n", name, strerror(errno)); >> + close(sock); >> + return -1; >> + } >> + >> + return sock; >> +} >> + >> +int perf_event_open(struct perf_event_attr *attr, int pid, int cpu, >> + int group_fd, unsigned long flags) >> +{ >> + return syscall(__NR_perf_event_open, attr, pid, cpu, >> + group_fd, flags); >> } > > > I'm actually wondering, above bits are not really libbpf related. Maybe > these should go elsewhere into some other misc header file just for the > samples to use?
True, I started this patch by just copying the whole file over to tools/lib/bpf so this came with it. I can bring it back to the samples directory in v2. >> diff --git a/tools/lib/bpf/bpf.h b/tools/lib/bpf/bpf.h >> index e8ba54087497..227edb23c022 100644 >> --- a/tools/lib/bpf/bpf.h >> +++ b/tools/lib/bpf/bpf.h >> @@ -23,16 +23,208 @@ >> >> #include <linux/bpf.h> >> >> +struct bpf_insn; >> + > > > Isn't that already defined in the above uapi bpf.h anyway? Yup, I'll drop this bit.