@@ -24,6 +24,7 @@ char LICENSE[] SEC("license") = "Dual BSD/GPL";
24
24
#define AUDIT_POSTURE 140
25
25
#define BLOCK_POSTURE 141
26
26
#define CAPABLE_KEY 200
27
+ #define TTY_LEN 64
27
28
28
29
enum {
29
30
IPPROTO_ICMPV6 = 58
@@ -130,6 +131,7 @@ typedef struct {
130
131
s64 retval ;
131
132
132
133
u8 comm [TASK_COMM_LEN ];
134
+ u8 tty [TTY_LEN ];
133
135
134
136
bufs_k data ;
135
137
} event ;
@@ -324,27 +326,37 @@ static inline void get_outer_key(struct outer_key *pokey,
324
326
325
327
static __always_inline u32 init_context (event * event_data ) {
326
328
struct task_struct * task = (struct task_struct * )bpf_get_current_task ();
329
+ u32 tgid , pid ;
330
+ u32 uid = bpf_get_current_uid_gid () & 0xffffffff ;
327
331
328
332
event_data -> ts = bpf_ktime_get_ns ();
329
-
333
+ event_data -> pid_id = get_task_pid_ns_id (task );
334
+ event_data -> mnt_id = get_task_mnt_ns_id (task );
330
335
event_data -> host_ppid = get_task_ppid (task );
331
336
event_data -> host_pid = bpf_get_current_pid_tgid () >> 32 ;
337
+ event_data -> ppid = get_task_ns_ppid (task );
338
+ event_data -> pid = get_task_ns_tgid (task );
339
+ event_data -> uid = uid ;
332
340
333
- struct outer_key okey ;
334
- get_outer_key (& okey , task );
335
- event_data -> pid_id = okey .pid_ns ;
336
- event_data -> mnt_id = okey .mnt_ns ;
337
-
338
- event_data -> ppid = get_task_ppid (task );
339
- event_data -> pid = get_task_ns_tgid (task );
341
+ bpf_get_current_comm (& event_data -> comm , sizeof (event_data -> comm ));
340
342
341
- event_data -> uid = bpf_get_current_uid_gid ();
343
+ // Get TTY information
344
+ struct signal_struct * signal = READ_KERN (task -> signal );
345
+ if (signal != NULL ) {
346
+ struct tty_struct * tty = READ_KERN (signal -> tty );
347
+ if (tty != NULL ) {
348
+ bpf_probe_read_str (& event_data -> tty , TTY_LEN , (void * )tty -> name );
349
+ } else {
350
+ event_data -> tty [0 ] = '\0' ;
351
+ }
352
+ } else {
353
+ event_data -> tty [0 ] = '\0' ;
354
+ }
342
355
343
- // Clearing array to avoid garbage values
344
- __builtin_memset (event_data -> comm , 0 , sizeof (event_data -> comm ));
345
- bpf_get_current_comm (& event_data -> comm , sizeof (event_data -> comm ));
356
+ struct outer_key okey ;
357
+ get_outer_key (& okey , task );
346
358
347
- return 0 ;
359
+ return okey . pid_ns ;
348
360
}
349
361
350
362
0 commit comments