mirror of
https://github.com/netdata/libbpf.git
synced 2026-04-05 16:19:06 +08:00
bpf: Add support for BPF_OBJ_GET_INFO_BY_FD for bpf_link
Add ability to fetch bpf_link details through BPF_OBJ_GET_INFO_BY_FD command. Also enhance show_fdinfo to potentially include bpf_link type-specific information (similarly to obj_info). Also introduce enum bpf_link_type stored in bpf_link itself and expose it in UAPI. bpf_link_tracing also now will store and return bpf_attach_type. Signed-off-by: Andrii Nakryiko <andriin@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Link: https://lore.kernel.org/bpf/20200429001614.1544-5-andriin@fb.com
This commit is contained in:
committed by
Andrii Nakryiko
parent
7878754030
commit
2a374b5df0
@@ -113,6 +113,8 @@ enum bpf_cmd {
|
|||||||
BPF_MAP_DELETE_BATCH,
|
BPF_MAP_DELETE_BATCH,
|
||||||
BPF_LINK_CREATE,
|
BPF_LINK_CREATE,
|
||||||
BPF_LINK_UPDATE,
|
BPF_LINK_UPDATE,
|
||||||
|
BPF_LINK_GET_FD_BY_ID,
|
||||||
|
BPF_LINK_GET_NEXT_ID,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum bpf_map_type {
|
enum bpf_map_type {
|
||||||
@@ -220,6 +222,15 @@ enum bpf_attach_type {
|
|||||||
|
|
||||||
#define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
|
#define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
|
||||||
|
|
||||||
|
enum bpf_link_type {
|
||||||
|
BPF_LINK_TYPE_UNSPEC = 0,
|
||||||
|
BPF_LINK_TYPE_RAW_TRACEPOINT = 1,
|
||||||
|
BPF_LINK_TYPE_TRACING = 2,
|
||||||
|
BPF_LINK_TYPE_CGROUP = 3,
|
||||||
|
|
||||||
|
MAX_BPF_LINK_TYPE,
|
||||||
|
};
|
||||||
|
|
||||||
/* cgroup-bpf attach flags used in BPF_PROG_ATTACH command
|
/* cgroup-bpf attach flags used in BPF_PROG_ATTACH command
|
||||||
*
|
*
|
||||||
* NONE(default): No further bpf programs allowed in the subtree.
|
* NONE(default): No further bpf programs allowed in the subtree.
|
||||||
@@ -523,6 +534,7 @@ union bpf_attr {
|
|||||||
__u32 prog_id;
|
__u32 prog_id;
|
||||||
__u32 map_id;
|
__u32 map_id;
|
||||||
__u32 btf_id;
|
__u32 btf_id;
|
||||||
|
__u32 link_id;
|
||||||
};
|
};
|
||||||
__u32 next_id;
|
__u32 next_id;
|
||||||
__u32 open_flags;
|
__u32 open_flags;
|
||||||
@@ -3609,6 +3621,25 @@ struct bpf_btf_info {
|
|||||||
__u32 id;
|
__u32 id;
|
||||||
} __attribute__((aligned(8)));
|
} __attribute__((aligned(8)));
|
||||||
|
|
||||||
|
struct bpf_link_info {
|
||||||
|
__u32 type;
|
||||||
|
__u32 id;
|
||||||
|
__u32 prog_id;
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
__aligned_u64 tp_name; /* in/out: tp_name buffer ptr */
|
||||||
|
__u32 tp_name_len; /* in/out: tp_name buffer len */
|
||||||
|
} raw_tracepoint;
|
||||||
|
struct {
|
||||||
|
__u32 attach_type;
|
||||||
|
} tracing;
|
||||||
|
struct {
|
||||||
|
__u64 cgroup_id;
|
||||||
|
__u32 attach_type;
|
||||||
|
} cgroup;
|
||||||
|
};
|
||||||
|
} __attribute__((aligned(8)));
|
||||||
|
|
||||||
/* User bpf_sock_addr struct to access socket fields and sockaddr struct passed
|
/* User bpf_sock_addr struct to access socket fields and sockaddr struct passed
|
||||||
* by user and intended to be used by socket (e.g. to bind to, depends on
|
* by user and intended to be used by socket (e.g. to bind to, depends on
|
||||||
* attach attach type).
|
* attach attach type).
|
||||||
|
|||||||
Reference in New Issue
Block a user