summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-02-10 19:21:43 +0200
committerPaul Buetow <paul@buetow.org>2024-02-10 19:21:43 +0200
commit7404ea281ca27b1a4ef64f54237704f463b742b7 (patch)
tree3780e1e94666bc159c625b4d8058217eea5e6195 /main.go
parent1554f9992aef6fc92c964af866a833c6de4e806c (diff)
make it generic
Diffstat (limited to 'main.go')
-rw-r--r--main.go20
1 files changed, 12 insertions, 8 deletions
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