Re: [PATCH net-next 2/3] tools lib bpf: Sync with samples/bpf/libbpf
From: Joe Stringer <hidden>
Date: 2016-11-02 03:50:35
On 1 November 2016 at 19:52, Daniel Borkmann [off-list ref] wrote:
On 10/31/2016 07:39 PM, Joe Stringer wrote:quoted
Extend the tools/ version of libbpf to include all of the functionality provided in the samples/bpf version. Signed-off-by: Joe Stringer <redacted> --- 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(-)[...]quoted
+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.
quoted
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.