diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-19 10:12:32 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-19 10:12:32 +0300 |
| commit | 127516b4bf63dc922df222825a9a6a1d7eacc214 (patch) | |
| tree | 3839a2f6a7f4f1bc713690678fc003d4e2be8a8c /internal/generate/bpfhandler.go | |
| parent | 32a19cf9fb1344c9b1a61054d7cf2c90edc3708a (diff) | |
u6: add socket/socketpair kind scaffolding and wiring
Diffstat (limited to 'internal/generate/bpfhandler.go')
| -rw-r--r-- | internal/generate/bpfhandler.go | 12 |
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 { |
