From c79dc635d7244a2468e31eac6bd3bcc015286546 Mon Sep 17 00:00:00 2001 From: Pragyansh Chaturvedi Date: Sun, 21 Sep 2025 04:23:54 +0530 Subject: [PATCH] Add process_bpf_struct --- pythonbpf/structs_pass.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/pythonbpf/structs_pass.py b/pythonbpf/structs_pass.py index bf81e32..6574af0 100644 --- a/pythonbpf/structs_pass.py +++ b/pythonbpf/structs_pass.py @@ -16,5 +16,24 @@ def structs_proc(tree, module, chunks): break if is_struct: print(f"Found BPF struct: {cls_node.name}") + process_bpf_struct(cls_node, module) continue return structs_sym_tab + + +def process_bpf_struct(cls_node, module): + struct_name = cls_node.name + field_names = [] + field_types = [] + + for item in cls_node.body: + if isinstance(item, ast.AnnAssign) and isinstance(item.target, ast.Name): + field_names.append(item.target.id) + field_types.append(ctypes_to_ir(item.annotation.id)) + + struct_type = ir.LiteralStructType(field_types) + structs_sym_tab[struct_name] = { + "type": struct_type, + "fields": {name: idx for idx, name in enumerate(field_names)} + } + print(f"Created struct {struct_name} with fields {field_names}")