Loading...
Note: File does not exist in v3.1.
1#ifndef __SOCKMAP_HELPERS__
2#define __SOCKMAP_HELPERS__
3
4#include "socket_helpers.h"
5
6#define MAX_TEST_NAME 80
7
8#define __always_unused __attribute__((__unused__))
9
10#define xbpf_map_delete_elem(fd, key) \
11 ({ \
12 int __ret = bpf_map_delete_elem((fd), (key)); \
13 if (__ret < 0) \
14 FAIL_ERRNO("map_delete"); \
15 __ret; \
16 })
17
18#define xbpf_map_lookup_elem(fd, key, val) \
19 ({ \
20 int __ret = bpf_map_lookup_elem((fd), (key), (val)); \
21 if (__ret < 0) \
22 FAIL_ERRNO("map_lookup"); \
23 __ret; \
24 })
25
26#define xbpf_map_update_elem(fd, key, val, flags) \
27 ({ \
28 int __ret = bpf_map_update_elem((fd), (key), (val), (flags)); \
29 if (__ret < 0) \
30 FAIL_ERRNO("map_update"); \
31 __ret; \
32 })
33
34#define xbpf_prog_attach(prog, target, type, flags) \
35 ({ \
36 int __ret = \
37 bpf_prog_attach((prog), (target), (type), (flags)); \
38 if (__ret < 0) \
39 FAIL_ERRNO("prog_attach(" #type ")"); \
40 __ret; \
41 })
42
43#define xbpf_prog_detach2(prog, target, type) \
44 ({ \
45 int __ret = bpf_prog_detach2((prog), (target), (type)); \
46 if (__ret < 0) \
47 FAIL_ERRNO("prog_detach2(" #type ")"); \
48 __ret; \
49 })
50
51#define xpthread_create(thread, attr, func, arg) \
52 ({ \
53 int __ret = pthread_create((thread), (attr), (func), (arg)); \
54 errno = __ret; \
55 if (__ret) \
56 FAIL_ERRNO("pthread_create"); \
57 __ret; \
58 })
59
60#define xpthread_join(thread, retval) \
61 ({ \
62 int __ret = pthread_join((thread), (retval)); \
63 errno = __ret; \
64 if (__ret) \
65 FAIL_ERRNO("pthread_join"); \
66 __ret; \
67 })
68
69static inline int add_to_sockmap(int sock_mapfd, int fd1, int fd2)
70{
71 u64 value;
72 u32 key;
73 int err;
74
75 key = 0;
76 value = fd1;
77 err = xbpf_map_update_elem(sock_mapfd, &key, &value, BPF_NOEXIST);
78 if (err)
79 return err;
80
81 key = 1;
82 value = fd2;
83 return xbpf_map_update_elem(sock_mapfd, &key, &value, BPF_NOEXIST);
84}
85
86#endif // __SOCKMAP_HELPERS__