16256f8c9e45f01187b297a576e148534a393c990Daniel Borkmann#ifndef __BPF_SYS__ 26256f8c9e45f01187b297a576e148534a393c990Daniel Borkmann#define __BPF_SYS__ 36256f8c9e45f01187b297a576e148534a393c990Daniel Borkmann 46256f8c9e45f01187b297a576e148534a393c990Daniel Borkmann#include <sys/syscall.h> 56256f8c9e45f01187b297a576e148534a393c990Daniel Borkmann#include <linux/bpf.h> 66256f8c9e45f01187b297a576e148534a393c990Daniel Borkmann 76256f8c9e45f01187b297a576e148534a393c990Daniel Borkmannstatic inline __u64 bpf_ptr_to_u64(const void *ptr) 86256f8c9e45f01187b297a576e148534a393c990Daniel Borkmann{ 96256f8c9e45f01187b297a576e148534a393c990Daniel Borkmann return (__u64) (unsigned long) ptr; 106256f8c9e45f01187b297a576e148534a393c990Daniel Borkmann} 116256f8c9e45f01187b297a576e148534a393c990Daniel Borkmann 126256f8c9e45f01187b297a576e148534a393c990Daniel Borkmannstatic inline int bpf_lookup_elem(int fd, void *key, void *value) 136256f8c9e45f01187b297a576e148534a393c990Daniel Borkmann{ 146256f8c9e45f01187b297a576e148534a393c990Daniel Borkmann union bpf_attr attr = { 156256f8c9e45f01187b297a576e148534a393c990Daniel Borkmann .map_fd = fd, 166256f8c9e45f01187b297a576e148534a393c990Daniel Borkmann .key = bpf_ptr_to_u64(key), 176256f8c9e45f01187b297a576e148534a393c990Daniel Borkmann .value = bpf_ptr_to_u64(value), 186256f8c9e45f01187b297a576e148534a393c990Daniel Borkmann }; 196256f8c9e45f01187b297a576e148534a393c990Daniel Borkmann 206256f8c9e45f01187b297a576e148534a393c990Daniel Borkmann return syscall(__NR_bpf, BPF_MAP_LOOKUP_ELEM, &attr, sizeof(attr)); 216256f8c9e45f01187b297a576e148534a393c990Daniel Borkmann} 226256f8c9e45f01187b297a576e148534a393c990Daniel Borkmann 236256f8c9e45f01187b297a576e148534a393c990Daniel Borkmann#endif /* __BPF_SYS__ */ 24