From 7404ea281ca27b1a4ef64f54237704f463b742b7 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 10 Feb 2024 19:21:43 +0200 Subject: make it generic --- main.go | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'main.go') diff --git a/main.go b/main.go index a260017..3be7aef 100644 --- a/main.go +++ b/main.go @@ -15,6 +15,10 @@ import ( bpf "github.com/aquasecurity/libbpfgo" ) +type BpfMapper interface { + String() string +} + type openEvent struct { FD int32 SyscallID int32 @@ -82,7 +86,7 @@ func main() { go func() { defer wg.Done() - if err := openEvents(bpfModule); err != nil { + if err := listenToEvents[openEvent](bpfModule, "open_event_map"); err != nil { log.Fatal(err) } }() @@ -95,10 +99,11 @@ func main() { log.Println("Good bye") } -func openEvents(bpfModule *bpf.Module) error { +func listenToEvents[T BpfMapper](bpfModule *bpf.Module, mapName string) error { + pollSize := 300 eventsChannel := make(chan []byte) lostChannel := make(chan uint64) - pb, err := bpfModule.InitPerfBuf("open_event_map", eventsChannel, lostChannel, 1) + pb, err := bpfModule.InitPerfBuf(mapName, eventsChannel, lostChannel, 1) if err != nil { return err } @@ -107,16 +112,15 @@ func openEvents(bpfModule *bpf.Module) error { pb.Close() }() - pb.Poll(300) + pb.Poll(pollSize) for ev := range eventsChannel { - var e openEvent + var e T if err := binary.Read(bytes.NewReader(ev), binary.LittleEndian, &e); err != nil { - log.Fatal(err) - + return err } fmt.Println(e) - pb.Poll(300) + pb.Poll(pollSize) } return nil -- cgit v1.2.3