diff options
| author | Paul Buetow <paul@buetow.org> | 2024-02-15 09:58:49 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2024-02-15 09:58:49 +0200 |
| commit | a7733cd4ab00b542d7e1afd53d9319b7f8b33674 (patch) | |
| tree | 4975fe995d15fd7af9be5b1aeb870f52e19aac36 /internal/flags | |
| parent | 00b7b0383d6610a585dbea190a2c9c6326174fe9 (diff) | |
map sizes can be specified through flags
Diffstat (limited to 'internal/flags')
| -rw-r--r-- | internal/flags/flags.go | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/internal/flags/flags.go b/internal/flags/flags.go index 674f22f..1ba9d60 100644 --- a/internal/flags/flags.go +++ b/internal/flags/flags.go @@ -2,17 +2,22 @@ package flags import ( "flag" + "fmt" "unsafe" bpf "github.com/aquasecurity/libbpfgo" ) type Flags struct { - UidFilter int + UidFilter int + FdEventMapSize int + OpenEventMapSize int } func New() (flags Flags) { flag.IntVar(&flags.UidFilter, "uid", 0, "Filter for processes with UID") + flag.IntVar(&flags.FdEventMapSize, "fdMapSize", 4096, "BPF FD event map size") + flag.IntVar(&flags.OpenEventMapSize, "openMapSize", 1024, "BPF open event map size") flag.Parse() return flags } @@ -32,3 +37,30 @@ func (flags Flags) SetBPF(bpfModule *bpf.Module) error { key := uint32(1) return flagsMap.Update(unsafe.Pointer(&key), unsafe.Pointer(&flagsValues)) } + +func (flags Flags) ResizeBPFMaps(bpfModule *bpf.Module) error { + if err := resizeBPFMap(bpfModule, "open_event_map", uint32(flags.OpenEventMapSize)); err != nil { + return err + } + if err := resizeBPFMap(bpfModule, "fd_event_map", uint32(flags.FdEventMapSize)); err != nil { + return err + } + return nil +} + +func resizeBPFMap(module *bpf.Module, name string, size uint32) error { + m, err := module.GetMap("open_event_map") + if err != nil { + return err + } + + if err = m.SetMaxEntries(size); err != nil { + return err + } + + if actual := m.MaxEntries(); actual != size { + return fmt.Errorf("map resize failed, expected %v, actual %v", size, actual) + } + + return nil +} |
