uapi: update bpf headers
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
This commit is contained in:
parent
0bab7630e3
commit
0ebb420929
|
|
@ -126,6 +126,7 @@ enum bpf_map_type {
|
||||||
BPF_MAP_TYPE_XSKMAP,
|
BPF_MAP_TYPE_XSKMAP,
|
||||||
BPF_MAP_TYPE_SOCKHASH,
|
BPF_MAP_TYPE_SOCKHASH,
|
||||||
BPF_MAP_TYPE_CGROUP_STORAGE,
|
BPF_MAP_TYPE_CGROUP_STORAGE,
|
||||||
|
BPF_MAP_TYPE_REUSEPORT_SOCKARRAY,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum bpf_prog_type {
|
enum bpf_prog_type {
|
||||||
|
|
@ -150,6 +151,7 @@ enum bpf_prog_type {
|
||||||
BPF_PROG_TYPE_CGROUP_SOCK_ADDR,
|
BPF_PROG_TYPE_CGROUP_SOCK_ADDR,
|
||||||
BPF_PROG_TYPE_LWT_SEG6LOCAL,
|
BPF_PROG_TYPE_LWT_SEG6LOCAL,
|
||||||
BPF_PROG_TYPE_LIRC_MODE2,
|
BPF_PROG_TYPE_LIRC_MODE2,
|
||||||
|
BPF_PROG_TYPE_SK_REUSEPORT,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum bpf_attach_type {
|
enum bpf_attach_type {
|
||||||
|
|
@ -2091,6 +2093,24 @@ union bpf_attr {
|
||||||
* Return
|
* Return
|
||||||
* The id is returned or 0 in case the id could not be retrieved.
|
* The id is returned or 0 in case the id could not be retrieved.
|
||||||
*
|
*
|
||||||
|
* u64 bpf_skb_ancestor_cgroup_id(struct sk_buff *skb, int ancestor_level)
|
||||||
|
* Description
|
||||||
|
* Return id of cgroup v2 that is ancestor of cgroup associated
|
||||||
|
* with the *skb* at the *ancestor_level*. The root cgroup is at
|
||||||
|
* *ancestor_level* zero and each step down the hierarchy
|
||||||
|
* increments the level. If *ancestor_level* == level of cgroup
|
||||||
|
* associated with *skb*, then return value will be same as that
|
||||||
|
* of **bpf_skb_cgroup_id**\ ().
|
||||||
|
*
|
||||||
|
* The helper is useful to implement policies based on cgroups
|
||||||
|
* that are upper in hierarchy than immediate cgroup associated
|
||||||
|
* with *skb*.
|
||||||
|
*
|
||||||
|
* The format of returned id and helper limitations are same as in
|
||||||
|
* **bpf_skb_cgroup_id**\ ().
|
||||||
|
* Return
|
||||||
|
* The id is returned or 0 in case the id could not be retrieved.
|
||||||
|
*
|
||||||
* u64 bpf_get_current_cgroup_id(void)
|
* u64 bpf_get_current_cgroup_id(void)
|
||||||
* Return
|
* Return
|
||||||
* A 64-bit integer containing the current cgroup id based
|
* A 64-bit integer containing the current cgroup id based
|
||||||
|
|
@ -2113,6 +2133,14 @@ union bpf_attr {
|
||||||
* the shared data.
|
* the shared data.
|
||||||
* Return
|
* Return
|
||||||
* Pointer to the local storage area.
|
* Pointer to the local storage area.
|
||||||
|
*
|
||||||
|
* int bpf_sk_select_reuseport(struct sk_reuseport_md *reuse, struct bpf_map *map, void *key, u64 flags)
|
||||||
|
* Description
|
||||||
|
* Select a SO_REUSEPORT sk from a BPF_MAP_TYPE_REUSEPORT_ARRAY map
|
||||||
|
* It checks the selected sk is matching the incoming
|
||||||
|
* request in the skb.
|
||||||
|
* Return
|
||||||
|
* 0 on success, or a negative error in case of failure.
|
||||||
*/
|
*/
|
||||||
#define __BPF_FUNC_MAPPER(FN) \
|
#define __BPF_FUNC_MAPPER(FN) \
|
||||||
FN(unspec), \
|
FN(unspec), \
|
||||||
|
|
@ -2196,7 +2224,9 @@ union bpf_attr {
|
||||||
FN(rc_keydown), \
|
FN(rc_keydown), \
|
||||||
FN(skb_cgroup_id), \
|
FN(skb_cgroup_id), \
|
||||||
FN(get_current_cgroup_id), \
|
FN(get_current_cgroup_id), \
|
||||||
FN(get_local_storage),
|
FN(get_local_storage), \
|
||||||
|
FN(sk_select_reuseport), \
|
||||||
|
FN(skb_ancestor_cgroup_id),
|
||||||
|
|
||||||
/* integer value in 'imm' field of BPF_CALL instruction selects which helper
|
/* integer value in 'imm' field of BPF_CALL instruction selects which helper
|
||||||
* function eBPF program intends to call
|
* function eBPF program intends to call
|
||||||
|
|
@ -2413,6 +2443,30 @@ struct sk_msg_md {
|
||||||
__u32 local_port; /* stored in host byte order */
|
__u32 local_port; /* stored in host byte order */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct sk_reuseport_md {
|
||||||
|
/*
|
||||||
|
* Start of directly accessible data. It begins from
|
||||||
|
* the tcp/udp header.
|
||||||
|
*/
|
||||||
|
void *data;
|
||||||
|
void *data_end; /* End of directly accessible data */
|
||||||
|
/*
|
||||||
|
* Total length of packet (starting from the tcp/udp header).
|
||||||
|
* Note that the directly accessible bytes (data_end - data)
|
||||||
|
* could be less than this "len". Those bytes could be
|
||||||
|
* indirectly read by a helper "bpf_skb_load_bytes()".
|
||||||
|
*/
|
||||||
|
__u32 len;
|
||||||
|
/*
|
||||||
|
* Eth protocol in the mac header (network byte order). e.g.
|
||||||
|
* ETH_P_IP(0x0800) and ETH_P_IPV6(0x86DD)
|
||||||
|
*/
|
||||||
|
__u32 eth_protocol;
|
||||||
|
__u32 ip_protocol; /* IP protocol. e.g. IPPROTO_TCP, IPPROTO_UDP */
|
||||||
|
__u32 bind_inany; /* Is sock bound to an INANY address? */
|
||||||
|
__u32 hash; /* A hash of the packet 4 tuples */
|
||||||
|
};
|
||||||
|
|
||||||
#define BPF_TAG_SIZE 8
|
#define BPF_TAG_SIZE 8
|
||||||
|
|
||||||
struct bpf_prog_info {
|
struct bpf_prog_info {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue