diff --git a/pythonbpf/helper/bpf_helper_handler.py b/pythonbpf/helper/bpf_helper_handler.py index 6e29614..e82dfc6 100644 --- a/pythonbpf/helper/bpf_helper_handler.py +++ b/pythonbpf/helper/bpf_helper_handler.py @@ -23,6 +23,7 @@ class BPFHelperID(Enum): BPF_KTIME_GET_NS = 5 BPF_PRINTK = 6 BPF_GET_CURRENT_PID_TGID = 14 + BPF_GET_CURRENT_COMM = 16 BPF_PERF_EVENT_OUTPUT = 25 @@ -234,6 +235,23 @@ def bpf_map_delete_elem_emitter( return result, None +@HelperHandlerRegistry.register("comm") +def bpf_get_current_comm_emitter( + call, + map_ptr, + module, + builder, + func, + local_sym_tab=None, + struct_sym_tab=None, + map_sym_tab=None, +): + """ + Emit LLVM IR for bpf_get_current_comm helper function call. + """ + pass # Not implemented yet + + @HelperHandlerRegistry.register("pid") def bpf_get_current_pid_tgid_emitter( call, diff --git a/pythonbpf/helper/helpers.py b/pythonbpf/helper/helpers.py index 1a84599..1861e67 100644 --- a/pythonbpf/helper/helpers.py +++ b/pythonbpf/helper/helpers.py @@ -2,19 +2,26 @@ import ctypes def ktime(): + """get current ktime""" return ctypes.c_int64(0) def pid(): + """get current process id""" return ctypes.c_int32(0) def deref(ptr): - "dereference a pointer" + """dereference a pointer""" result = ctypes.cast(ptr, ctypes.POINTER(ctypes.c_void_p)).contents.value return result if result is not None else 0 +def comm(buf): + """get current process command name""" + return ctypes.c_int64(0) + + XDP_ABORTED = ctypes.c_int64(0) XDP_DROP = ctypes.c_int64(1) XDP_PASS = ctypes.c_int64(2)