13#ifndef BACKENDS_EBPF_RUNTIME_EBPF_USER_H_
14#define BACKENDS_EBPF_RUNTIME_EBPF_USER_H_
16#include "ebpf_registry.h"
17#include "ebpf_common.h"
23#define htonll(x) htobe64(x)
24#define ntohll(x) be64toh(x)
26#define bpf_htons(x) htobe16(x)
27#define bpf_ntohs(x) be16toh(x)
28#define bpf_htonl(x) htobe32(x)
29#define bpf_ntohl(x) be32toh(x)
30#define bpf_cpu_to_be64(x) htobe64(x)
31#define bpf_be64_to_cpu(x) be64toh(x)
33#define load_byte(data, b) (*(((u8*)(data)) + (b)))
34#define load_half(data, b) bpf_ntohs(*(u16 *)((u8*)(data) + (b)))
35#define load_word(data, b) bpf_ntohl(*(u32 *)((u8*)(data) + (b)))
36#define load_dword(data, b) bpf_be64_to_cpu(*(u64 *)((u8*)(data) + (b)))
40#define bpf_printk(fmt, ...) \
42 char ____fmt[] = fmt; \
43 printf(____fmt, sizeof(____fmt), \
74#define SK_BUFF struct sk_buff
75#define REGISTER_START() \
76struct bpf_table tables[] = {
77#define REGISTER_TABLE(NAME, TYPE, KEY_SIZE, VALUE_SIZE, MAX_ENTRIES) \
78 { MAP_PATH"/"#NAME, TYPE, KEY_SIZE, VALUE_SIZE, MAX_ENTRIES, NULL },
79#define REGISTER_END() \
83#define BPF_MAP_LOOKUP_ELEM(table, key) \
84 registry_lookup_table_elem(MAP_PATH"/"#table, key)
85#define BPF_MAP_UPDATE_ELEM(table, key, value, flags) \
86 registry_update_table(MAP_PATH"/"#table, key, value, flags)
87#define BPF_MAP_DELETE_ELEM(table, key) \
88 registry_delete_table_elem(MAP_PATH"/"#table, key)
89#define BPF_USER_MAP_UPDATE_ELEM(index, key, value, flags)\
90 registry_update_table_id(index, key, value, flags)
91#define BPF_OBJ_PIN(table, name) registry_add(table)
92#define BPF_OBJ_GET(name) registry_get_id(name)
97extern int ebpf_filter(
struct sk_buff *skb);
101static inline void print_n_bytes(
void *receiveBuffer,
int num) {
102 for (
int i = 0; i < num; i++)
103 printf(
"%02x", ((
unsigned char *)receiveBuffer)[i]);
A helper structure used to describe attributes.
Definition ebpf_registry.h:27
simple descriptor which replaces the kernel sk_buff structure.
Definition ebpf_test.h:54