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