mirror of
https://github.com/netdata/libbpf.git
synced 2026-04-05 16:19:06 +08:00
bpf: Sync bpf.h to tools/
Sync BPF_PROG_TYPE_CGROUP_SYSCTL related bpf UAPI changes to tools/. Signed-off-by: Andrey Ignatov <rdna@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
committed by
Andrii Nakryiko
parent
b18e6122b6
commit
805f4593af
@@ -167,6 +167,7 @@ enum bpf_prog_type {
|
|||||||
BPF_PROG_TYPE_LIRC_MODE2,
|
BPF_PROG_TYPE_LIRC_MODE2,
|
||||||
BPF_PROG_TYPE_SK_REUSEPORT,
|
BPF_PROG_TYPE_SK_REUSEPORT,
|
||||||
BPF_PROG_TYPE_FLOW_DISSECTOR,
|
BPF_PROG_TYPE_FLOW_DISSECTOR,
|
||||||
|
BPF_PROG_TYPE_CGROUP_SYSCTL,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum bpf_attach_type {
|
enum bpf_attach_type {
|
||||||
@@ -188,6 +189,7 @@ enum bpf_attach_type {
|
|||||||
BPF_CGROUP_UDP6_SENDMSG,
|
BPF_CGROUP_UDP6_SENDMSG,
|
||||||
BPF_LIRC_MODE2,
|
BPF_LIRC_MODE2,
|
||||||
BPF_FLOW_DISSECTOR,
|
BPF_FLOW_DISSECTOR,
|
||||||
|
BPF_CGROUP_SYSCTL,
|
||||||
__MAX_BPF_ATTACH_TYPE
|
__MAX_BPF_ATTACH_TYPE
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -2504,6 +2506,75 @@ union bpf_attr {
|
|||||||
* Return
|
* Return
|
||||||
* 0 if iph and th are a valid SYN cookie ACK, or a negative error
|
* 0 if iph and th are a valid SYN cookie ACK, or a negative error
|
||||||
* otherwise.
|
* otherwise.
|
||||||
|
*
|
||||||
|
* int bpf_sysctl_get_name(struct bpf_sysctl *ctx, char *buf, size_t buf_len, u64 flags)
|
||||||
|
* Description
|
||||||
|
* Get name of sysctl in /proc/sys/ and copy it into provided by
|
||||||
|
* program buffer *buf* of size *buf_len*.
|
||||||
|
*
|
||||||
|
* The buffer is always NUL terminated, unless it's zero-sized.
|
||||||
|
*
|
||||||
|
* If *flags* is zero, full name (e.g. "net/ipv4/tcp_mem") is
|
||||||
|
* copied. Use **BPF_F_SYSCTL_BASE_NAME** flag to copy base name
|
||||||
|
* only (e.g. "tcp_mem").
|
||||||
|
* Return
|
||||||
|
* Number of character copied (not including the trailing NUL).
|
||||||
|
*
|
||||||
|
* **-E2BIG** if the buffer wasn't big enough (*buf* will contain
|
||||||
|
* truncated name in this case).
|
||||||
|
*
|
||||||
|
* int bpf_sysctl_get_current_value(struct bpf_sysctl *ctx, char *buf, size_t buf_len)
|
||||||
|
* Description
|
||||||
|
* Get current value of sysctl as it is presented in /proc/sys
|
||||||
|
* (incl. newline, etc), and copy it as a string into provided
|
||||||
|
* by program buffer *buf* of size *buf_len*.
|
||||||
|
*
|
||||||
|
* The whole value is copied, no matter what file position user
|
||||||
|
* space issued e.g. sys_read at.
|
||||||
|
*
|
||||||
|
* The buffer is always NUL terminated, unless it's zero-sized.
|
||||||
|
* Return
|
||||||
|
* Number of character copied (not including the trailing NUL).
|
||||||
|
*
|
||||||
|
* **-E2BIG** if the buffer wasn't big enough (*buf* will contain
|
||||||
|
* truncated name in this case).
|
||||||
|
*
|
||||||
|
* **-EINVAL** if current value was unavailable, e.g. because
|
||||||
|
* sysctl is uninitialized and read returns -EIO for it.
|
||||||
|
*
|
||||||
|
* int bpf_sysctl_get_new_value(struct bpf_sysctl *ctx, char *buf, size_t buf_len)
|
||||||
|
* Description
|
||||||
|
* Get new value being written by user space to sysctl (before
|
||||||
|
* the actual write happens) and copy it as a string into
|
||||||
|
* provided by program buffer *buf* of size *buf_len*.
|
||||||
|
*
|
||||||
|
* User space may write new value at file position > 0.
|
||||||
|
*
|
||||||
|
* The buffer is always NUL terminated, unless it's zero-sized.
|
||||||
|
* Return
|
||||||
|
* Number of character copied (not including the trailing NUL).
|
||||||
|
*
|
||||||
|
* **-E2BIG** if the buffer wasn't big enough (*buf* will contain
|
||||||
|
* truncated name in this case).
|
||||||
|
*
|
||||||
|
* **-EINVAL** if sysctl is being read.
|
||||||
|
*
|
||||||
|
* int bpf_sysctl_set_new_value(struct bpf_sysctl *ctx, const char *buf, size_t buf_len)
|
||||||
|
* Description
|
||||||
|
* Override new value being written by user space to sysctl with
|
||||||
|
* value provided by program in buffer *buf* of size *buf_len*.
|
||||||
|
*
|
||||||
|
* *buf* should contain a string in same form as provided by user
|
||||||
|
* space on sysctl write.
|
||||||
|
*
|
||||||
|
* User space may write new value at file position > 0. To override
|
||||||
|
* the whole sysctl value file position should be set to zero.
|
||||||
|
* Return
|
||||||
|
* 0 on success.
|
||||||
|
*
|
||||||
|
* **-E2BIG** if the *buf_len* is too big.
|
||||||
|
*
|
||||||
|
* **-EINVAL** if sysctl is being read.
|
||||||
*/
|
*/
|
||||||
#define __BPF_FUNC_MAPPER(FN) \
|
#define __BPF_FUNC_MAPPER(FN) \
|
||||||
FN(unspec), \
|
FN(unspec), \
|
||||||
@@ -2606,7 +2677,11 @@ union bpf_attr {
|
|||||||
FN(skb_ecn_set_ce), \
|
FN(skb_ecn_set_ce), \
|
||||||
FN(get_listener_sock), \
|
FN(get_listener_sock), \
|
||||||
FN(skc_lookup_tcp), \
|
FN(skc_lookup_tcp), \
|
||||||
FN(tcp_check_syncookie),
|
FN(tcp_check_syncookie), \
|
||||||
|
FN(sysctl_get_name), \
|
||||||
|
FN(sysctl_get_current_value), \
|
||||||
|
FN(sysctl_get_new_value), \
|
||||||
|
FN(sysctl_set_new_value),
|
||||||
|
|
||||||
/* 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
|
||||||
@@ -2679,6 +2754,9 @@ enum bpf_func_id {
|
|||||||
BPF_ADJ_ROOM_ENCAP_L2_MASK) \
|
BPF_ADJ_ROOM_ENCAP_L2_MASK) \
|
||||||
<< BPF_ADJ_ROOM_ENCAP_L2_SHIFT)
|
<< BPF_ADJ_ROOM_ENCAP_L2_SHIFT)
|
||||||
|
|
||||||
|
/* BPF_FUNC_sysctl_get_name flags. */
|
||||||
|
#define BPF_F_SYSCTL_BASE_NAME (1ULL << 0)
|
||||||
|
|
||||||
/* Mode for BPF_FUNC_skb_adjust_room helper. */
|
/* Mode for BPF_FUNC_skb_adjust_room helper. */
|
||||||
enum bpf_adj_room_mode {
|
enum bpf_adj_room_mode {
|
||||||
BPF_ADJ_ROOM_NET,
|
BPF_ADJ_ROOM_NET,
|
||||||
@@ -3308,4 +3386,14 @@ struct bpf_line_info {
|
|||||||
struct bpf_spin_lock {
|
struct bpf_spin_lock {
|
||||||
__u32 val;
|
__u32 val;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct bpf_sysctl {
|
||||||
|
__u32 write; /* Sysctl is being read (= 0) or written (= 1).
|
||||||
|
* Allows 1,2,4-byte read, but no write.
|
||||||
|
*/
|
||||||
|
__u32 file_pos; /* Sysctl file position to read from, write to.
|
||||||
|
* Allows 1,2,4-byte read an 4-byte write.
|
||||||
|
*/
|
||||||
|
};
|
||||||
|
|
||||||
#endif /* _UAPI__LINUX_BPF_H__ */
|
#endif /* _UAPI__LINUX_BPF_H__ */
|
||||||
|
|||||||
Reference in New Issue
Block a user