summaryrefslogtreecommitdiff
path: root/internal/generate/bpfhandler.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-19 10:12:32 +0300
committerPaul Buetow <paul@buetow.org>2026-05-19 10:12:32 +0300
commit127516b4bf63dc922df222825a9a6a1d7eacc214 (patch)
tree3839a2f6a7f4f1bc713690678fc003d4e2be8a8c /internal/generate/bpfhandler.go
parent32a19cf9fb1344c9b1a61054d7cf2c90edc3708a (diff)
u6: add socket/socketpair kind scaffolding and wiring
Diffstat (limited to 'internal/generate/bpfhandler.go')
-rw-r--r--internal/generate/bpfhandler.go12
1 files changed, 12 insertions, 0 deletions
diff --git a/internal/generate/bpfhandler.go b/internal/generate/bpfhandler.go
index 549e80b..6c9c314 100644
--- a/internal/generate/bpfhandler.go
+++ b/internal/generate/bpfhandler.go
@@ -73,6 +73,10 @@ func generateExtra(tp GeneratedTracepoint, isEnter bool) string {
return " ev->fd = (__s32)ctx->args[0];\n ev->flags = (__s32)ctx->args[2];\n"
case KindOpenByHandleAt:
return " ev->flags = (__s32)ctx->args[2];\n"
+ case KindSocket:
+ return generateExtraSocket()
+ case KindSocketpair:
+ return generateExtraSocketpair()
case KindOpen:
return generateExtraOpen(f)
case KindPathname:
@@ -149,6 +153,14 @@ func generateExtraFcntl(f *Format) string {
)
}
+func generateExtraSocket() string {
+ return " ev->family = (__s32)ctx->args[0];\n ev->type = (__s32)ctx->args[1];\n ev->protocol = (__s32)ctx->args[2];\n"
+}
+
+func generateExtraSocketpair() string {
+ return " int sv[2];\n __builtin_memset(&sv, 0xff, sizeof(sv));\n if (ctx->args[3] != 0) {\n bpf_probe_read_user(&sv, sizeof(sv), (void *)ctx->args[3]);\n }\n ev->family = (__s32)ctx->args[0];\n ev->type = (__s32)ctx->args[1];\n ev->protocol = (__s32)ctx->args[2];\n ev->sv0 = (__s32)sv[0];\n ev->sv1 = (__s32)sv[1];\n"
+}
+
// eventStructName returns the C struct name for a TracepointKind. The mapping
// is driven by kindRegistry so adding a new kind only requires a registry entry.
func eventStructName(kind TracepointKind) string {