Files
wifi-densepose/vendor/ruvector/crates/rvf/rvf-ebpf/bpf/vmlinux.h

244 lines
7.1 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
/* Minimal BPF type stubs for RVF eBPF programs.
*
* This header provides the essential kernel type definitions so that
* BPF C programs can compile without requiring the full kernel headers.
* In production, replace this with the vmlinux.h generated by:
* bpftool btf dump file /sys/kernel/btf/vmlinux format c
*/
#ifndef __VMLINUX_H__
#define __VMLINUX_H__
/* ── Scalar typedefs ─────────────────────────────────────────────── */
typedef unsigned char __u8;
typedef unsigned short __u16;
typedef unsigned int __u32;
typedef unsigned long long __u64;
typedef signed char __s8;
typedef signed short __s16;
typedef signed int __s32;
typedef signed long long __s64;
typedef __u16 __be16;
typedef __u32 __be32;
typedef __u64 __be64;
typedef __u16 __sum16;
/* ── Ethernet ────────────────────────────────────────────────────── */
#define ETH_ALEN 6
#define ETH_P_IP 0x0800
#define ETH_P_IPV6 0x86DD
struct ethhdr {
unsigned char h_dest[ETH_ALEN];
unsigned char h_source[ETH_ALEN];
__be16 h_proto;
} __attribute__((packed));
/* ── IPv4 ────────────────────────────────────────────────────────── */
#define IPPROTO_TCP 6
#define IPPROTO_UDP 17
struct iphdr {
#if defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
__u8 ihl:4,
version:4;
#else
__u8 version:4,
ihl:4;
#endif
__u8 tos;
__be16 tot_len;
__be16 id;
__be16 frag_off;
__u8 ttl;
__u8 protocol;
__sum16 check;
__be32 saddr;
__be32 daddr;
} __attribute__((packed));
/* ── UDP ─────────────────────────────────────────────────────────── */
struct udphdr {
__be16 source;
__be16 dest;
__be16 len;
__sum16 check;
} __attribute__((packed));
/* ── TCP ─────────────────────────────────────────────────────────── */
struct tcphdr {
__be16 source;
__be16 dest;
__be32 seq;
__be32 ack_seq;
#if defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
__u16 res1:4,
doff:4,
fin:1,
syn:1,
rst:1,
psh:1,
ack:1,
urg:1,
ece:1,
cwr:1;
#else
__u16 doff:4,
res1:4,
cwr:1,
ece:1,
urg:1,
ack:1,
psh:1,
rst:1,
syn:1,
fin:1;
#endif
__be16 window;
__sum16 check;
__be16 urg_ptr;
} __attribute__((packed));
/* ── XDP context ─────────────────────────────────────────────────── */
struct xdp_md {
__u32 data;
__u32 data_end;
__u32 data_meta;
__u32 ingress_ifindex;
__u32 rx_queue_index;
__u32 egress_ifindex;
};
/* XDP return codes */
#define XDP_ABORTED 0
#define XDP_DROP 1
#define XDP_PASS 2
#define XDP_TX 3
#define XDP_REDIRECT 4
/* ── TC (Traffic Control) context ────────────────────────────────── */
struct __sk_buff {
__u32 len;
__u32 pkt_type;
__u32 mark;
__u32 queue_mapping;
__u32 protocol;
__u32 vlan_present;
__u32 vlan_tci;
__u32 vlan_proto;
__u32 priority;
__u32 ingress_ifindex;
__u32 ifindex;
__u32 tc_index;
__u32 cb[5];
__u32 hash;
__u32 tc_classid;
__u32 data;
__u32 data_end;
__u32 napi_id;
__u32 family;
__u32 remote_ip4;
__u32 local_ip4;
__u32 remote_ip6[4];
__u32 local_ip6[4];
__u32 remote_port;
__u32 local_port;
__u32 data_meta;
};
/* TC action return codes */
#define TC_ACT_UNSPEC (-1)
#define TC_ACT_OK 0
#define TC_ACT_RECLASSIFY 1
#define TC_ACT_SHOT 2
#define TC_ACT_PIPE 3
#define TC_ACT_STOLEN 4
#define TC_ACT_QUEUED 5
#define TC_ACT_REPEAT 6
#define TC_ACT_REDIRECT 7
/* ── BPF map type constants ──────────────────────────────────────── */
#define BPF_MAP_TYPE_HASH 1
#define BPF_MAP_TYPE_ARRAY 2
#define BPF_MAP_TYPE_PERCPU_ARRAY 6
#define BPF_MAP_TYPE_LRU_HASH 9
/* ── BPF helper function declarations ────────────────────────────── */
/* SEC / __always_inline macros (if not using bpf/bpf_helpers.h) */
#ifndef SEC
#define SEC(name) \
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wignored-attributes\"") \
__attribute__((section(name), used)) \
_Pragma("GCC diagnostic pop")
#endif
#ifndef __always_inline
#define __always_inline inline __attribute__((always_inline))
#endif
#ifndef __uint
#define __uint(name, val) int (*name)[val]
#endif
#ifndef __type
#define __type(name, val) typeof(val) *name
#endif
/* ── BPF helper IDs (from linux/bpf.h) ──────────────────────────── */
static void *(*bpf_map_lookup_elem)(void *map, const void *key) = (void *) 1;
static long (*bpf_map_update_elem)(void *map, const void *key,
const void *value, __u64 flags) = (void *) 2;
static long (*bpf_map_delete_elem)(void *map, const void *key) = (void *) 3;
static __u64 (*bpf_ktime_get_ns)(void) = (void *) 5;
static long (*bpf_trace_printk)(const char *fmt, __u32 fmt_size, ...) = (void *) 6;
static __u32 (*bpf_get_smp_processor_id)(void) = (void *) 8;
static long (*bpf_skb_store_bytes)(struct __sk_buff *skb, __u32 offset,
const void *from, __u32 len,
__u64 flags) = (void *) 9;
static long (*bpf_skb_load_bytes)(const struct __sk_buff *skb, __u32 offset,
void *to, __u32 len) = (void *) 26;
static __u32 (*bpf_get_prandom_u32)(void) = (void *) 7;
/* ── Endian helpers ──────────────────────────────────────────────── */
#ifndef bpf_htons
#define bpf_htons(x) __builtin_bswap16(x)
#endif
#ifndef bpf_ntohs
#define bpf_ntohs(x) __builtin_bswap16(x)
#endif
#ifndef bpf_htonl
#define bpf_htonl(x) __builtin_bswap32(x)
#endif
#ifndef bpf_ntohl
#define bpf_ntohl(x) __builtin_bswap32(x)
#endif
/* memcpy/memset for BPF -- must use builtins */
#ifndef __bpf_memcpy
#define __bpf_memcpy __builtin_memcpy
#endif
#ifndef __bpf_memset
#define __bpf_memset __builtin_memset
#endif
#endif /* __VMLINUX_H__ */