25typedef __u32 PortId_t;
26typedef __u64 Timestamp_t;
27typedef __u8 ClassOfService_t;
28typedef __u16 CloneSessionId_t;
29typedef __u32 MulticastGroup_t;
30typedef __u16 EgressInstance_t;
31typedef __u8 MirrorSlotId_t;
32typedef __u16 MirrorSessionId_t;
35typedef __u8 ParserError_t;
36static const ParserError_t NoError = 0;
37static const ParserError_t PacketTooShort = 1;
38static const ParserError_t NoMatch = 2;
39static const ParserError_t StackOutOfBounds = 3;
40static const ParserError_t HeaderTooShort = 4;
41static const ParserError_t ParserTimeout = 5;
42static const ParserError_t ParserInvalidArgument = 6;
45enum PNA_Source_t { FROM_HOST, FROM_NET };
47enum PNA_MeterColor_t { RED, GREEN, YELLOW };
49enum MirrorType { NO_MIRROR, PRE_MODIFY, POST_MODIFY };
54} __attribute__((aligned(4)));
60 Timestamp_t timestamp;
61 ParserError_t parser_error;
62 ClassOfService_t class_of_service;
64} __attribute__((aligned(4)));;
69 ClassOfService_t class_of_service;
70} __attribute__((aligned(4)));
80 enum MirrorType mirror_type;
81 MirrorSlotId_t mirror_slot_id;
82 ParserError_t parser_error;
83 MirrorSessionId_t mirror_session_id;
86} __attribute__((aligned(4)));
91 __u8 class_of_service;
93 __u16 packet_length_bytes;
94} __attribute__((aligned(4)));
96#define send_to_port(x) (compiler_meta__->egress_port = x)
97#define drop_packet() (compiler_meta__->drop = true)
104} __attribute__((preserve_access_index));
106struct __attribute__((__packed__)) p4tc_table_entry_act_bpf {
109 is_default_miss_act:1,
110 is_default_hit_act:1;
115 struct p4tc_table_entry_act_bpf act_bpf;
125extern struct p4tc_table_entry_act_bpf *
126bpf_p4tc_tbl_read(
struct __sk_buff *skb_ctx,
128 const u32 params__sz,
129 void *key,
const __u32 key__sz) __ksym;
131extern struct p4tc_table_entry_act_bpf *
132xdp_p4tc_tbl_read(
struct xdp_md *skb_ctx,
134 const u32 params__sz,
135 void *key,
const __u32 key__sz) __ksym;
139bpf_p4tc_entry_create(
struct __sk_buff *skb_ctx,
141 const u32 params__sz,
142 void *key,
const u32 key__sz) __ksym;
145xdp_p4tc_entry_create(
struct xdp_md *xdp_ctx,
147 const u32 params__sz,
148 void *bpf_key_mask, u32 bpf_key_mask__sz) __ksym;
152bpf_p4tc_entry_create_on_miss(
struct __sk_buff *skb_ctx,
154 const u32 params__sz,
155 void *key,
const u32 key__sz) __ksym;
158xdp_p4tc_entry_create_on_miss(
struct xdp_md *xdp_ctx,
160 const u32 params__sz,
161 void *key,
const u32 key__sz) __ksym;
165bpf_p4tc_entry_delete(
struct __sk_buff *skb_ctx,
167 const u32 params__sz,
168 void *key,
const u32 key__sz) __ksym;
171xdp_p4tc_entry_delete(
struct xdp_md *xdp_ctx,
173 const u32 params__sz,
174 void *key,
const u32 key__sz) __ksym;
178#define P4TC_EXT_CNT_DIRECT 0x1
179#define P4TC_EXT_CNT_INDIRECT 0x2
200bpf_p4tc_extern_count_pktsnbytes(
struct __sk_buff *skb_ctx,
202 const u32 params__sz,
void *key,
const u32 key__sz) __ksym;
205bpf_p4tc_extern_count_pkts(
struct __sk_buff *skb_ctx,
207 const u32 params__sz,
void *key,
const u32 key__sz) __ksym;
210bpf_p4tc_extern_count_bytes(
struct __sk_buff *skb_ctx,
212 const u32 params__sz,
void *key,
const u32 key__sz) __ksym;
215xdp_p4tc_extern_indirect_count_pktsnbytes(
struct xdp_md *xdp_ctx,
217 const u32 params__sz) __ksym;
220xdp_p4tc_extern_indirect_count_pktsonly(
struct xdp_md *xdp_ctx,
222 const u32 params__sz) __ksym;
225xdp_p4tc_extern_indirect_count_bytesonly(
struct xdp_md *xdp_ctx,
227 const u32 params__sz) __ksym;
229extern int bpf_p4tc_extern_meter_bytes_color(
struct __sk_buff *skb_ctx,
231 const u32 params__sz) __ksym;
233extern int bpf_p4tc_extern_meter_bytes(
struct __sk_buff *skb_ctx,
235 const u32 params__sz) __ksym;
237extern int bpf_p4tc_extern_meter_pkts_color(
struct __sk_buff *skb_ctx,
239 const u32 params__sz) __ksym;
241extern int xdp_p4tc_extern_meter_pkts(
struct xdp_md *xdp_ctx,
243 const u32 params__sz) __ksym;
245extern int xdp_p4tc_extern_meter_bytes_color(
struct xdp_md *xdp_ctx,
246 const u32 params__sz) __ksym;
248extern int xdp_p4tc_extern_meter_bytes(
struct xdp_md *xdp_ctx,
250 const u32 params__sz) __ksym;
252extern int xdp_p4tc_extern_meter_pkts_color(
struct xdp_md *xdp_ctx,
254 const u32 params__sz) __ksym;
256extern int xdp_p4tc_extern_meter_pkts(
struct xdp_md *xdp_ctx,
258 const u32 params__sz) __ksym;
269 const void *data,
const u32 data__sz) __ksym;
281 const u32 params__sz,
282 const void *data,
const u32 data__sz) __ksym;
286 const u32 params__sz) __ksym;
290 const u32 params__sz) __ksym;
294 const u32 params__sz) __ksym;
299 const u32 params__sz,
300 const void *data,
int len) __ksym;
304 const u32 params__sz,
305 const void *data,
const u32 data__sz) __ksym;
309 const u32 params__sz) __ksym;
313 const u32 params__sz,
318bpf_p4tc_ext_hash_crc16(
const void *data,
int len, u16 seed) __ksym;
322bpf_p4tc_ext_hash_base_crc16(
const void *data,
const u32 data__sz,
323 u32 base, u32 max, u16 seed) {
324 u16 hash = bpf_p4tc_ext_hash_crc16(data, data__sz, seed);
326 return (base + (hash % max));
331bpf_p4tc_ext_hash_crc32(
const void *data,
const u32 data__sz, u32 seed) __ksym;
335bpf_p4tc_ext_hash_base_crc32(
const void *data,
const u32 data__sz,
336 u32 base, u32 max, u32 seed) {
337 u32 hash = bpf_p4tc_ext_hash_crc32(data, data__sz, seed);
339 return (base + (hash % max));
344bpf_p4tc_ext_hash_16bit_complement(
const void *data,
const u32 data__sz,
349bpf_p4tc_ext_hash_base_16bit_complement(
const void *data,
const u32 data__sz,
350 u32 base, u32 max, u16 seed) {
351 u16 hash = bpf_p4tc_ext_hash_16bit_complement(data, data__sz, seed);
353 return (base + (hash % max));
367#define EXTERN_IS_NET_PORT 1234
368#define EXTERN_IS_HOST_PORT 4567
372bpf_p4tc_extern_md_read(
struct __sk_buff *skb_ctx,
374 const u32 params__sz) __ksym;
377extern int bpf_p4tc_extern_md_write(
struct __sk_buff *skb_ctx,
379 const u32 params__sz,
381 const u32 val__sz) __ksym;
385xdp_p4tc_extern_md_read(
struct xdp_md *xdp_ctx,
387 const u32 params__sz) __ksym;
390extern int xdp_p4tc_extern_md_write(
struct xdp_md *xdp_ctx,
392 const u32 params__sz,
394 const u32 val__sz) __ksym;
396int bpf_p4tc_extern_digest_pack(
struct __sk_buff *skb,
398 const u32 params__sz) __ksym;
400int xdp_p4tc_extern_digest_pack(
struct xdp_md *xdp_ctx,
402 const u32 params__sz) __ksym;
405static inline u64 bpf_p4tc_extern_timestamp() {
406 return bpf_ktime_get_ns();
409#define U32_MAX ((u32)~0U)
412static inline u32 bpf_p4tc_extern_random(u32 min, u32 max) {
414 return (min + bpf_get_prandom_u32());
416 return (min + bpf_get_prandom_u32()) % (max + 1);
Definition ebpf/runtime/psa.h:124