Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c419cf52 authored by Roman Gushchin's avatar Roman Gushchin Committed by Daniel Borkmann
Browse files

bpf: sync bpf.h to tools/



Sync cgroup storage related changes:
1) new BPF_MAP_TYPE_CGROUP_STORAGE map type
2) struct bpf_cgroup_sotrage_key definition
3) get_local_storage() helper

Signed-off-by: default avatarRoman Gushchin <guro@fb.com>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: default avatarMartin KaFai Lau <kafai@fb.com>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
parent cd339431
Loading
Loading
Loading
Loading
+26 −1
Original line number Original line Diff line number Diff line
@@ -75,6 +75,11 @@ struct bpf_lpm_trie_key {
	__u8	data[0];	/* Arbitrary size */
	__u8	data[0];	/* Arbitrary size */
};
};


struct bpf_cgroup_storage_key {
	__u64	cgroup_inode_id;	/* cgroup inode id */
	__u32	attach_type;		/* program attach type */
};

/* BPF syscall commands, see bpf(2) man-page for details. */
/* BPF syscall commands, see bpf(2) man-page for details. */
enum bpf_cmd {
enum bpf_cmd {
	BPF_MAP_CREATE,
	BPF_MAP_CREATE,
@@ -120,6 +125,7 @@ enum bpf_map_type {
	BPF_MAP_TYPE_CPUMAP,
	BPF_MAP_TYPE_CPUMAP,
	BPF_MAP_TYPE_XSKMAP,
	BPF_MAP_TYPE_XSKMAP,
	BPF_MAP_TYPE_SOCKHASH,
	BPF_MAP_TYPE_SOCKHASH,
	BPF_MAP_TYPE_CGROUP_STORAGE,
};
};


enum bpf_prog_type {
enum bpf_prog_type {
@@ -2089,6 +2095,24 @@ union bpf_attr {
 * 	Return
 * 	Return
 * 		A 64-bit integer containing the current cgroup id based
 * 		A 64-bit integer containing the current cgroup id based
 * 		on the cgroup within which the current task is running.
 * 		on the cgroup within which the current task is running.
 *
 * void* get_local_storage(void *map, u64 flags)
 *	Description
 *		Get the pointer to the local storage area.
 *		The type and the size of the local storage is defined
 *		by the *map* argument.
 *		The *flags* meaning is specific for each map type,
 *		and has to be 0 for cgroup local storage.
 *
 *		Depending on the bpf program type, a local storage area
 *		can be shared between multiple instances of the bpf program,
 *		running simultaneously.
 *
 *		A user should care about the synchronization by himself.
 *		For example, by using the BPF_STX_XADD instruction to alter
 *		the shared data.
 *	Return
 *		Pointer to the local storage area.
 */
 */
#define __BPF_FUNC_MAPPER(FN)		\
#define __BPF_FUNC_MAPPER(FN)		\
	FN(unspec),			\
	FN(unspec),			\
@@ -2171,7 +2195,8 @@ union bpf_attr {
	FN(rc_repeat),			\
	FN(rc_repeat),			\
	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),


/* 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