From 1893ee5e8918bf8a2b759931001f5c97e92eb980 Mon Sep 17 00:00:00 2001 From: Jiri Olsa Date: Tue, 24 Sep 2024 07:54:34 +0000 Subject: [PATCH] tetragon: Add MapOther* interface Adding MapOther* interface to create map that you don't own. Signed-off-by: Jiri Olsa --- pkg/sensors/program/map.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/pkg/sensors/program/map.go b/pkg/sensors/program/map.go index 6680e549b47..c33b74eb21d 100644 --- a/pkg/sensors/program/map.go +++ b/pkg/sensors/program/map.go @@ -47,6 +47,15 @@ // - map is local for program, not shared at all // // NOTE Please do not share MapTypeProgram maps, it brings confusion. +// +// Each map declares the ownership of the map. It can be either: +// +// MapOwnerMe - Map object owns the pinned map and when loading it sets +// (and potentially overwrite) the map's spec and its max +// entries value +// MapOwnerOther - Map object is just the user of the pinned map and follows +// its setup and will fail if the pinned map differs in spec +// or configured max entries value package program @@ -141,6 +150,26 @@ func MapBuilderType(name string, ty MapType, lds ...*Program) *Map { return mapBuilder(name, ty, MapOwnerMe, lds...) } +func MapBuilderOpts(name string, opts MapOpts, lds ...*Program) *Map { + return mapBuilder(name, opts.Type, opts.Owner, lds...) +} + +func MapOther(name string, lds ...*Program) *Map { + return mapBuilder(name, MapTypeGlobal, MapOwnerOther, lds...) +} + +func MapOtherProgram(name string, lds ...*Program) *Map { + return mapBuilder(name, MapTypeProgram, MapOwnerOther, lds...) +} + +func MapOtherSensor(name string, lds ...*Program) *Map { + return mapBuilder(name, MapTypeSensor, MapOwnerOther, lds...) +} + +func MapOtherPolicy(name string, lds ...*Program) *Map { + return mapBuilder(name, MapTypePolicy, MapOwnerOther, lds...) +} + func PolicyMapPath(mapDir, policy, name string) string { return filepath.Join(mapDir, policy, name) }