buf_t
void *buf_t, size_t count)
char *buf = buf_t;
void *buf_t, size_t count)
char *buf = buf_t;
static __always_inline size_t buf_off(const buf_t *buf)
static __always_inline bool buf_copy(buf_t *buf, void *dst, size_t len)
static __always_inline bool buf_skip(buf_t *buf, const size_t len)
static __always_inline void *buf_assign(buf_t *buf, const size_t len, void *scratch)
static INLINING bool pkt_skip_ipv4_options(buf_t *buf, const struct iphdr *ipv4)
static __always_inline struct iphdr *pkt_parse_ipv4(buf_t *pkt, struct iphdr *scratch)
static INLINING bool pkt_parse_icmp_l4_ports(buf_t *pkt, flow_ports_t *ports)
bool pkt_skip_ipv6_extension_headers(buf_t *pkt,
pkt_parse_ipv6(buf_t *pkt, struct ipv6hdr *scratch, uint8_t *proto,
buf_t pkt = {
static INLINING ret_t skip_next_hops(buf_t *pkt, int n)
static INLINING ret_t get_next_hop(buf_t *pkt, encap_headers_t *encap,
static INLINING verdict_t process_icmpv4(buf_t *pkt, metrics_t *metrics)
static INLINING verdict_t process_icmpv6(buf_t *pkt, metrics_t *metrics)
static INLINING verdict_t process_tcp(buf_t *pkt, void *iph, uint64_t iphlen,
static INLINING verdict_t process_udp(buf_t *pkt, void *iph, uint64_t iphlen,
static INLINING verdict_t process_ipv4(buf_t *pkt, metrics_t *metrics)
static INLINING verdict_t process_ipv6(buf_t *pkt, metrics_t *metrics)
buf_t pkt = {