Commit 6cce73a8 authored by Teng Qin's avatar Teng Qin

Update bpf.h and virtual_bpf.h to 4.12

This commit updates the compat header files to 4.12-rc1
parent 78bf9fb4
...@@ -81,6 +81,7 @@ enum bpf_cmd { ...@@ -81,6 +81,7 @@ enum bpf_cmd {
BPF_OBJ_GET, BPF_OBJ_GET,
BPF_PROG_ATTACH, BPF_PROG_ATTACH,
BPF_PROG_DETACH, BPF_PROG_DETACH,
BPF_PROG_TEST_RUN,
}; };
enum bpf_map_type { enum bpf_map_type {
...@@ -96,6 +97,8 @@ enum bpf_map_type { ...@@ -96,6 +97,8 @@ enum bpf_map_type {
BPF_MAP_TYPE_LRU_HASH, BPF_MAP_TYPE_LRU_HASH,
BPF_MAP_TYPE_LRU_PERCPU_HASH, BPF_MAP_TYPE_LRU_PERCPU_HASH,
BPF_MAP_TYPE_LPM_TRIE, BPF_MAP_TYPE_LPM_TRIE,
BPF_MAP_TYPE_ARRAY_OF_MAPS,
BPF_MAP_TYPE_HASH_OF_MAPS,
}; };
enum bpf_prog_type { enum bpf_prog_type {
...@@ -123,6 +126,12 @@ enum bpf_attach_type { ...@@ -123,6 +126,12 @@ enum bpf_attach_type {
#define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE #define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
/* If BPF_F_ALLOW_OVERRIDE flag is used in BPF_PROG_ATTACH command
* to the given target_fd cgroup the descendent cgroup will be able to
* override effective bpf program that was inherited from this cgroup
*/
#define BPF_F_ALLOW_OVERRIDE (1U << 0)
#define BPF_PSEUDO_MAP_FD 1 #define BPF_PSEUDO_MAP_FD 1
/* flags for BPF_MAP_UPDATE_ELEM command */ /* flags for BPF_MAP_UPDATE_ELEM command */
...@@ -146,6 +155,7 @@ union bpf_attr { ...@@ -146,6 +155,7 @@ union bpf_attr {
__u32 value_size; /* size of value in bytes */ __u32 value_size; /* size of value in bytes */
__u32 max_entries; /* max number of entries in a map */ __u32 max_entries; /* max number of entries in a map */
__u32 map_flags; /* prealloc or not */ __u32 map_flags; /* prealloc or not */
__u32 inner_map_fd; /* fd pointing to the inner map */
}; };
struct { /* anonymous struct used by BPF_MAP_*_ELEM commands */ struct { /* anonymous struct used by BPF_MAP_*_ELEM commands */
...@@ -178,7 +188,19 @@ union bpf_attr { ...@@ -178,7 +188,19 @@ union bpf_attr {
__u32 target_fd; /* container object to attach to */ __u32 target_fd; /* container object to attach to */
__u32 attach_bpf_fd; /* eBPF program to attach */ __u32 attach_bpf_fd; /* eBPF program to attach */
__u32 attach_type; __u32 attach_type;
__u32 attach_flags;
}; };
struct { /* anonymous struct used by BPF_PROG_TEST_RUN command */
__u32 prog_fd;
__u32 retval;
__u32 data_size_in;
__u32 data_size_out;
__aligned_u64 data_in;
__aligned_u64 data_out;
__u32 repeat;
__u32 duration;
} test;
} __attribute__((aligned(8))); } __attribute__((aligned(8)));
/* BPF helper function descriptions: /* BPF helper function descriptions:
...@@ -437,6 +459,29 @@ union bpf_attr { ...@@ -437,6 +459,29 @@ union bpf_attr {
* @xdp_md: pointer to xdp_md * @xdp_md: pointer to xdp_md
* @delta: An positive/negative integer to be added to xdp_md.data * @delta: An positive/negative integer to be added to xdp_md.data
* Return: 0 on success or negative on error * Return: 0 on success or negative on error
*
* int bpf_probe_read_str(void *dst, int size, const void *unsafe_ptr)
* Copy a NUL terminated string from unsafe address. In case the string
* length is smaller than size, the target is not padded with further NUL
* bytes. In case the string length is larger than size, just count-1
* bytes are copied and the last byte is set to NUL.
* @dst: destination address
* @size: maximum number of bytes to copy, including the trailing NUL
* @unsafe_ptr: unsafe address
* Return:
* > 0 length of the string including the trailing NUL on success
* < 0 error
*
* u64 bpf_get_socket_cookie(skb)
* Get the cookie for the socket stored inside sk_buff.
* @skb: pointer to skb
* Return: 8 Bytes non-decreasing number on success or 0 if the socket
* field is missing inside sk_buff
*
* u32 bpf_get_socket_uid(skb)
* Get the owner uid of the socket stored inside sk_buff.
* @skb: pointer to skb
* Return: uid of the socket owner on success or overflowuid if failed.
*/ */
#define __BPF_FUNC_MAPPER(FN) \ #define __BPF_FUNC_MAPPER(FN) \
FN(unspec), \ FN(unspec), \
...@@ -483,7 +528,10 @@ union bpf_attr { ...@@ -483,7 +528,10 @@ union bpf_attr {
FN(set_hash_invalid), \ FN(set_hash_invalid), \
FN(get_numa_node_id), \ FN(get_numa_node_id), \
FN(skb_change_head), \ FN(skb_change_head), \
FN(xdp_adjust_head), FN(xdp_adjust_head), \
FN(probe_read_str), \
FN(get_socket_cookie), \
FN(get_socket_uid),
/* 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
...@@ -509,6 +557,7 @@ enum bpf_func_id { ...@@ -509,6 +557,7 @@ enum bpf_func_id {
/* BPF_FUNC_l4_csum_replace flags. */ /* BPF_FUNC_l4_csum_replace flags. */
#define BPF_F_PSEUDO_HDR (1ULL << 4) #define BPF_F_PSEUDO_HDR (1ULL << 4)
#define BPF_F_MARK_MANGLED_0 (1ULL << 5) #define BPF_F_MARK_MANGLED_0 (1ULL << 5)
#define BPF_F_MARK_ENFORCE (1ULL << 6)
/* BPF_FUNC_clone_redirect and BPF_FUNC_redirect flags. */ /* BPF_FUNC_clone_redirect and BPF_FUNC_redirect flags. */
#define BPF_F_INGRESS (1ULL << 0) #define BPF_F_INGRESS (1ULL << 0)
...@@ -553,6 +602,7 @@ struct __sk_buff { ...@@ -553,6 +602,7 @@ struct __sk_buff {
__u32 tc_classid; __u32 tc_classid;
__u32 data; __u32 data;
__u32 data_end; __u32 data_end;
__u32 napi_id;
}; };
struct bpf_tunnel_key { struct bpf_tunnel_key {
......
...@@ -82,6 +82,7 @@ enum bpf_cmd { ...@@ -82,6 +82,7 @@ enum bpf_cmd {
BPF_OBJ_GET, BPF_OBJ_GET,
BPF_PROG_ATTACH, BPF_PROG_ATTACH,
BPF_PROG_DETACH, BPF_PROG_DETACH,
BPF_PROG_TEST_RUN,
}; };
enum bpf_map_type { enum bpf_map_type {
...@@ -97,6 +98,8 @@ enum bpf_map_type { ...@@ -97,6 +98,8 @@ enum bpf_map_type {
BPF_MAP_TYPE_LRU_HASH, BPF_MAP_TYPE_LRU_HASH,
BPF_MAP_TYPE_LRU_PERCPU_HASH, BPF_MAP_TYPE_LRU_PERCPU_HASH,
BPF_MAP_TYPE_LPM_TRIE, BPF_MAP_TYPE_LPM_TRIE,
BPF_MAP_TYPE_ARRAY_OF_MAPS,
BPF_MAP_TYPE_HASH_OF_MAPS,
}; };
enum bpf_prog_type { enum bpf_prog_type {
...@@ -124,6 +127,12 @@ enum bpf_attach_type { ...@@ -124,6 +127,12 @@ enum bpf_attach_type {
#define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE #define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
/* If BPF_F_ALLOW_OVERRIDE flag is used in BPF_PROG_ATTACH command
* to the given target_fd cgroup the descendent cgroup will be able to
* override effective bpf program that was inherited from this cgroup
*/
#define BPF_F_ALLOW_OVERRIDE (1U << 0)
#define BPF_PSEUDO_MAP_FD 1 #define BPF_PSEUDO_MAP_FD 1
/* flags for BPF_MAP_UPDATE_ELEM command */ /* flags for BPF_MAP_UPDATE_ELEM command */
...@@ -147,6 +156,7 @@ union bpf_attr { ...@@ -147,6 +156,7 @@ union bpf_attr {
__u32 value_size; /* size of value in bytes */ __u32 value_size; /* size of value in bytes */
__u32 max_entries; /* max number of entries in a map */ __u32 max_entries; /* max number of entries in a map */
__u32 map_flags; /* prealloc or not */ __u32 map_flags; /* prealloc or not */
__u32 inner_map_fd; /* fd pointing to the inner map */
}; };
struct { /* anonymous struct used by BPF_MAP_*_ELEM commands */ struct { /* anonymous struct used by BPF_MAP_*_ELEM commands */
...@@ -179,7 +189,19 @@ union bpf_attr { ...@@ -179,7 +189,19 @@ union bpf_attr {
__u32 target_fd; /* container object to attach to */ __u32 target_fd; /* container object to attach to */
__u32 attach_bpf_fd; /* eBPF program to attach */ __u32 attach_bpf_fd; /* eBPF program to attach */
__u32 attach_type; __u32 attach_type;
__u32 attach_flags;
}; };
struct { /* anonymous struct used by BPF_PROG_TEST_RUN command */
__u32 prog_fd;
__u32 retval;
__u32 data_size_in;
__u32 data_size_out;
__aligned_u64 data_in;
__aligned_u64 data_out;
__u32 repeat;
__u32 duration;
} test;
} __attribute__((aligned(8))); } __attribute__((aligned(8)));
/* BPF helper function descriptions: /* BPF helper function descriptions:
...@@ -438,6 +460,29 @@ union bpf_attr { ...@@ -438,6 +460,29 @@ union bpf_attr {
* @xdp_md: pointer to xdp_md * @xdp_md: pointer to xdp_md
* @delta: An positive/negative integer to be added to xdp_md.data * @delta: An positive/negative integer to be added to xdp_md.data
* Return: 0 on success or negative on error * Return: 0 on success or negative on error
*
* int bpf_probe_read_str(void *dst, int size, const void *unsafe_ptr)
* Copy a NUL terminated string from unsafe address. In case the string
* length is smaller than size, the target is not padded with further NUL
* bytes. In case the string length is larger than size, just count-1
* bytes are copied and the last byte is set to NUL.
* @dst: destination address
* @size: maximum number of bytes to copy, including the trailing NUL
* @unsafe_ptr: unsafe address
* Return:
* > 0 length of the string including the trailing NUL on success
* < 0 error
*
* u64 bpf_get_socket_cookie(skb)
* Get the cookie for the socket stored inside sk_buff.
* @skb: pointer to skb
* Return: 8 Bytes non-decreasing number on success or 0 if the socket
* field is missing inside sk_buff
*
* u32 bpf_get_socket_uid(skb)
* Get the owner uid of the socket stored inside sk_buff.
* @skb: pointer to skb
* Return: uid of the socket owner on success or overflowuid if failed.
*/ */
#define __BPF_FUNC_MAPPER(FN) \ #define __BPF_FUNC_MAPPER(FN) \
FN(unspec), \ FN(unspec), \
...@@ -484,7 +529,10 @@ union bpf_attr { ...@@ -484,7 +529,10 @@ union bpf_attr {
FN(set_hash_invalid), \ FN(set_hash_invalid), \
FN(get_numa_node_id), \ FN(get_numa_node_id), \
FN(skb_change_head), \ FN(skb_change_head), \
FN(xdp_adjust_head), FN(xdp_adjust_head), \
FN(probe_read_str), \
FN(get_socket_cookie), \
FN(get_socket_uid),
/* 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
...@@ -510,6 +558,7 @@ enum bpf_func_id { ...@@ -510,6 +558,7 @@ enum bpf_func_id {
/* BPF_FUNC_l4_csum_replace flags. */ /* BPF_FUNC_l4_csum_replace flags. */
#define BPF_F_PSEUDO_HDR (1ULL << 4) #define BPF_F_PSEUDO_HDR (1ULL << 4)
#define BPF_F_MARK_MANGLED_0 (1ULL << 5) #define BPF_F_MARK_MANGLED_0 (1ULL << 5)
#define BPF_F_MARK_ENFORCE (1ULL << 6)
/* BPF_FUNC_clone_redirect and BPF_FUNC_redirect flags. */ /* BPF_FUNC_clone_redirect and BPF_FUNC_redirect flags. */
#define BPF_F_INGRESS (1ULL << 0) #define BPF_F_INGRESS (1ULL << 0)
...@@ -554,6 +603,7 @@ struct __sk_buff { ...@@ -554,6 +603,7 @@ struct __sk_buff {
__u32 tc_classid; __u32 tc_classid;
__u32 data; __u32 data;
__u32 data_end; __u32 data_end;
__u32 napi_id;
}; };
struct bpf_tunnel_key { struct bpf_tunnel_key {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment