diff options
| author | Paul Buetow <paul@buetow.org> | 2024-02-10 19:21:43 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2024-02-10 19:21:43 +0200 |
| commit | 7404ea281ca27b1a4ef64f54237704f463b742b7 (patch) | |
| tree | 3780e1e94666bc159c625b4d8058217eea5e6195 /main.go | |
| parent | 1554f9992aef6fc92c964af866a833c6de4e806c (diff) | |
make it generic
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 20 |
1 files changed, 12 insertions, 8 deletions
@@ -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 |
