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;
 
  397static inline u64 bpf_p4tc_extern_timestamp() {
 
  398    return bpf_ktime_get_ns();
 
  401#define U32_MAX            ((u32)~0U) 
  404static inline u32 bpf_p4tc_extern_random(u32 min, u32 max) {
 
  406        return (min + bpf_get_prandom_u32());
 
  408    return (min + bpf_get_prandom_u32()) % (max + 1);
 
Definition ebpf/runtime/psa.h:124