From f6b00f8f9f54be6733879bbceca30e4c048352a2 Mon Sep 17 00:00:00 2001 From: Jiri Olsa Date: Tue, 24 Sep 2024 07:54:34 +0000 Subject: [PATCH] tetragon: Add MapUser* interface Adding MapUser* interface to create map that you don't own. Signed-off-by: Jiri Olsa --- pkg/sensors/program/map.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/pkg/sensors/program/map.go b/pkg/sensors/program/map.go index a784d8e2ac4..b615e1b4c24 100644 --- a/pkg/sensors/program/map.go +++ b/pkg/sensors/program/map.go @@ -47,6 +47,17 @@ // - 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. The map can be either +// owner of the map (via MapBuilder* helpers) or as an user (MapUser* +// helpers. +// +// Map owner object owns the pinned map and when loading it sets (and +// potentially overwrite) the map's spec and its max entries value. +// +// Map user object object is just using the pinned map and follows its +// setup and will fail if the pinned map differs in spec or configured +// max entries value. package program @@ -138,6 +149,22 @@ func MapBuilderOpts(name string, opts MapOpts, lds ...*Program) *Map { return mapBuilder(name, opts.Type, opts.Owner, lds...) } +func MapUser(name string, lds ...*Program) *Map { + return mapBuilder(name, MapTypeGlobal, false, lds...) +} + +func MapUserProgram(name string, lds ...*Program) *Map { + return mapBuilder(name, MapTypeProgram, false, lds...) +} + +func MapUserSensor(name string, lds ...*Program) *Map { + return mapBuilder(name, MapTypeSensor, false, lds...) +} + +func MapUserPolicy(name string, lds ...*Program) *Map { + return mapBuilder(name, MapTypePolicy, false, lds...) +} + func PolicyMapPath(mapDir, policy, name string) string { return filepath.Join(mapDir, policy, name) }