13
#include <bpf/bpf_helpers.h>
15
#include <gadget/mntns_filter.h>
17
const volatile bool show_threads = false;
26
__u8 comm[TASK_COMM_LEN];
30
const struct process_entry *unused __attribute__((unused));
33
int ig_snap_proc(struct bpf_iter__task *ctx)
35
struct seq_file *seq = ctx->meta->seq;
36
__u32 seq_num = ctx->meta->seq_num;
37
__u64 session_id = ctx->meta->session_id;
38
struct task_struct *task = ctx->task;
39
struct task_struct *parent;
42
struct process_entry process = {};
47
if (!show_threads && task->tgid != task->pid)
50
__u64 mntns_id = task->nsproxy->mnt_ns->ns.inum;
52
if (gadget_should_discard_mntns_id(mntns_id))
55
parent = task->real_parent;
59
parent_pid = parent->pid;
61
__u32 uid = task->cred->uid.val;
62
__u32 gid = task->cred->gid.val;
64
process.tgid = task->tgid;
65
process.pid = task->pid;
66
process.parent_pid = parent_pid;
67
process.mntns_id = mntns_id;
70
__builtin_memcpy(process.comm, task->comm, TASK_COMM_LEN);
72
bpf_seq_write(seq, &process, sizeof(process));
76
char _license[] SEC("license") = "GPL";