From 96eb3046753055173a3d621c73b6898a6dd77bac Mon Sep 17 00:00:00 2001 From: Francisco Javier Honduvilla Coto Date: Thu, 28 Apr 2022 11:34:00 +0100 Subject: [PATCH] Add strict mode API See https://github.com/libbpf/libbpf/wiki/Libbpf-1.0-migration-guide for context. Related to https://github.com/aquasecurity/libbpfgo/issues/159 --- libbpfgo.go | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/libbpfgo.go b/libbpfgo.go index e5117390..5c80025f 100644 --- a/libbpfgo.go +++ b/libbpfgo.go @@ -328,6 +328,24 @@ func NewModuleFromFile(bpfObjPath string) (*Module, error) { }) } +func SetStrictMode(mode string) error { + var chosenMode uint32 + switch mode { + case "all": + chosenMode = C.LIBBPF_STRICT_ALL + case "none": + chosenMode = C.LIBBPF_STRICT_NONE + case "clean_ptrs": + chosenMode = C.LIBBPF_STRICT_CLEAN_PTRS + case "direct_errs": + chosenMode = C.LIBBPF_STRICT_DIRECT_ERRS + default: + return fmt.Errorf("%s is not a valid strict mode", mode) + } + C.libbpf_set_strict_mode(chosenMode) + return nil +} + func NewModuleFromFileArgs(args NewModuleArgs) (*Module, error) { C.set_print_fn() if err := bumpMemlockRlimit(); err != nil { @@ -787,7 +805,7 @@ func (b *BPFMap) DeleteKeyBatch(keys unsafe.Pointer, count uint32) error { ElemFlags: C.BPF_ANY, Flags: C.BPF_ANY, } - + errC := C.bpf_map_delete_batch(b.fd, keys, &countC, bpfMapBatchOptsToC(opts)) if errC != 0 { sc := syscall.Errno(-errC)