Documentation ¶
Overview ¶
Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2024 Datadog, Inc.
Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2024 Datadog, Inc.
Index ¶
- Constants
- type ConfigInformer
- type ConfigInformerMock
- func (_m *ConfigInformerMock) EXPECT() *ConfigInformerMock_Expecter
- func (_m *ConfigInformerMock) GetKernelFeatures() (Features, error)
- func (_m *ConfigInformerMock) GetMapTypes() MapTypes
- func (_m *ConfigInformerMock) GetRequiredSystemConfig() KernelParams
- func (_m *ConfigInformerMock) IsKernelConfigAvailable() bool
- func (_m *ConfigInformerMock) ValidateRequiredSystemConfig() error
- type ConfigInformerMock_Expecter
- func (_e *ConfigInformerMock_Expecter) GetKernelFeatures() *ConfigInformerMock_GetKernelFeatures_Call
- func (_e *ConfigInformerMock_Expecter) GetMapTypes() *ConfigInformerMock_GetMapTypes_Call
- func (_e *ConfigInformerMock_Expecter) GetRequiredSystemConfig() *ConfigInformerMock_GetRequiredSystemConfig_Call
- func (_e *ConfigInformerMock_Expecter) IsKernelConfigAvailable() *ConfigInformerMock_IsKernelConfigAvailable_Call
- func (_e *ConfigInformerMock_Expecter) ValidateRequiredSystemConfig() *ConfigInformerMock_ValidateRequiredSystemConfig_Call
- type ConfigInformerMock_GetKernelFeatures_Call
- func (_c *ConfigInformerMock_GetKernelFeatures_Call) Return(_a0 Features, _a1 error) *ConfigInformerMock_GetKernelFeatures_Call
- func (_c *ConfigInformerMock_GetKernelFeatures_Call) Run(run func()) *ConfigInformerMock_GetKernelFeatures_Call
- func (_c *ConfigInformerMock_GetKernelFeatures_Call) RunAndReturn(run func() (Features, error)) *ConfigInformerMock_GetKernelFeatures_Call
- type ConfigInformerMock_GetMapTypes_Call
- func (_c *ConfigInformerMock_GetMapTypes_Call) Return(_a0 MapTypes) *ConfigInformerMock_GetMapTypes_Call
- func (_c *ConfigInformerMock_GetMapTypes_Call) Run(run func()) *ConfigInformerMock_GetMapTypes_Call
- func (_c *ConfigInformerMock_GetMapTypes_Call) RunAndReturn(run func() MapTypes) *ConfigInformerMock_GetMapTypes_Call
- type ConfigInformerMock_GetRequiredSystemConfig_Call
- func (_c *ConfigInformerMock_GetRequiredSystemConfig_Call) Return(_a0 KernelParams) *ConfigInformerMock_GetRequiredSystemConfig_Call
- func (_c *ConfigInformerMock_GetRequiredSystemConfig_Call) Run(run func()) *ConfigInformerMock_GetRequiredSystemConfig_Call
- func (_c *ConfigInformerMock_GetRequiredSystemConfig_Call) RunAndReturn(run func() KernelParams) *ConfigInformerMock_GetRequiredSystemConfig_Call
- type ConfigInformerMock_IsKernelConfigAvailable_Call
- func (_c *ConfigInformerMock_IsKernelConfigAvailable_Call) Return(_a0 bool) *ConfigInformerMock_IsKernelConfigAvailable_Call
- func (_c *ConfigInformerMock_IsKernelConfigAvailable_Call) Run(run func()) *ConfigInformerMock_IsKernelConfigAvailable_Call
- func (_c *ConfigInformerMock_IsKernelConfigAvailable_Call) RunAndReturn(run func() bool) *ConfigInformerMock_IsKernelConfigAvailable_Call
- type ConfigInformerMock_ValidateRequiredSystemConfig_Call
- func (_c *ConfigInformerMock_ValidateRequiredSystemConfig_Call) Return(_a0 error) *ConfigInformerMock_ValidateRequiredSystemConfig_Call
- func (_c *ConfigInformerMock_ValidateRequiredSystemConfig_Call) Run(run func()) *ConfigInformerMock_ValidateRequiredSystemConfig_Call
- func (_c *ConfigInformerMock_ValidateRequiredSystemConfig_Call) RunAndReturn(run func() error) *ConfigInformerMock_ValidateRequiredSystemConfig_Call
- type Executor
- type ExecutorMock
- type ExecutorMock_Expecter
- type ExecutorMock_Run_Call
- func (_c *ExecutorMock_Run_Call) Return(exitCode int, stdout string, stderr error) *ExecutorMock_Run_Call
- func (_c *ExecutorMock_Run_Call) Run(run func(args []string)) *ExecutorMock_Run_Call
- func (_c *ExecutorMock_Run_Call) RunAndReturn(run func([]string) (int, string, error)) *ExecutorMock_Run_Call
- type Features
- type KernelOption
- type KernelParam
- type KernelParams
- type MapTypes
- type SystemConfig
Constants ¶
const BpftoolBinary = "bpftool"
const SysOpenat = "__x64_sys_openat"
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ConfigInformer ¶
type ConfigInformer interface { // GetKernelFeatures retrieves kernel features and returns them as a 'Features' struct, // along with any encountered error. GetKernelFeatures() (Features, error) // ValidateRequiredSystemConfig validates the required system configuration. // It returns an error if the validation fails. ValidateRequiredSystemConfig() error // GetRequiredSystemConfig retrieves the required system configuration parameters as // a 'KernelParams' struct. GetRequiredSystemConfig() KernelParams // GetMapTypes retrieves information about available map types and returns them as a 'MapTypes' struct. GetMapTypes() MapTypes // IsKernelConfigAvailable checks if the kernel configuration is available IsKernelConfigAvailable() bool }
ConfigInformer is an interface that defines a set of methods for retrieving and validating system configuration information related to kernel features and maps.
func NewConfigInformer ¶
func NewConfigInformer(log *zap.SugaredLogger, dryRun bool, executor Executor, fsMock fs.StatFS, unameFuncMock func() (unix.Utsname, error)) (ConfigInformer, error)
NewConfigInformer creates and returns a new instance of a ConfigInformer, which is an interface that provides methods to retrieve system configuration information.
Parameters:
- log: Required - A SugaredLogger from the zap library used for logging.
- dryRun: Required - A boolean flag indicating whether the operations should be executed as a dry run.
- executor: An Executor interface that defines how system commands are executed. If nil, a default BpftoolExecutor is created.
- FSMock: A FileSystem interface used for file operations. If nil, the default osFS implementation is used.
- unameFuncMock: A function that provides Utsname information. If nil, the system's Uname function is used.
Returns:
- ConfigInformer: An interface for retrieving system configuration information.
- error: An error, if any, encountered during the creation and initialization of the ConfigInformer.
type ConfigInformerMock ¶
ConfigInformerMock is an autogenerated mock type for the ConfigInformer type
func NewConfigInformerMock ¶
func NewConfigInformerMock(t interface { mock.TestingT Cleanup(func()) }) *ConfigInformerMock
NewConfigInformerMock creates a new instance of ConfigInformerMock. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. The first argument is typically a *testing.T value.
func (*ConfigInformerMock) EXPECT ¶
func (_m *ConfigInformerMock) EXPECT() *ConfigInformerMock_Expecter
func (*ConfigInformerMock) GetKernelFeatures ¶
func (_m *ConfigInformerMock) GetKernelFeatures() (Features, error)
GetKernelFeatures provides a mock function with given fields:
func (*ConfigInformerMock) GetMapTypes ¶
func (_m *ConfigInformerMock) GetMapTypes() MapTypes
GetMapTypes provides a mock function with given fields:
func (*ConfigInformerMock) GetRequiredSystemConfig ¶
func (_m *ConfigInformerMock) GetRequiredSystemConfig() KernelParams
GetRequiredSystemConfig provides a mock function with given fields:
func (*ConfigInformerMock) IsKernelConfigAvailable ¶
func (_m *ConfigInformerMock) IsKernelConfigAvailable() bool
IsKernelConfigAvailable provides a mock function with given fields:
func (*ConfigInformerMock) ValidateRequiredSystemConfig ¶
func (_m *ConfigInformerMock) ValidateRequiredSystemConfig() error
ValidateRequiredSystemConfig provides a mock function with given fields:
type ConfigInformerMock_Expecter ¶
type ConfigInformerMock_Expecter struct {
// contains filtered or unexported fields
}
func (*ConfigInformerMock_Expecter) GetKernelFeatures ¶
func (_e *ConfigInformerMock_Expecter) GetKernelFeatures() *ConfigInformerMock_GetKernelFeatures_Call
GetKernelFeatures is a helper method to define mock.On call
func (*ConfigInformerMock_Expecter) GetMapTypes ¶
func (_e *ConfigInformerMock_Expecter) GetMapTypes() *ConfigInformerMock_GetMapTypes_Call
GetMapTypes is a helper method to define mock.On call
func (*ConfigInformerMock_Expecter) GetRequiredSystemConfig ¶
func (_e *ConfigInformerMock_Expecter) GetRequiredSystemConfig() *ConfigInformerMock_GetRequiredSystemConfig_Call
GetRequiredSystemConfig is a helper method to define mock.On call
func (*ConfigInformerMock_Expecter) IsKernelConfigAvailable ¶
func (_e *ConfigInformerMock_Expecter) IsKernelConfigAvailable() *ConfigInformerMock_IsKernelConfigAvailable_Call
IsKernelConfigAvailable is a helper method to define mock.On call
func (*ConfigInformerMock_Expecter) ValidateRequiredSystemConfig ¶
func (_e *ConfigInformerMock_Expecter) ValidateRequiredSystemConfig() *ConfigInformerMock_ValidateRequiredSystemConfig_Call
ValidateRequiredSystemConfig is a helper method to define mock.On call
type ConfigInformerMock_GetKernelFeatures_Call ¶
ConfigInformerMock_GetKernelFeatures_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetKernelFeatures'
func (*ConfigInformerMock_GetKernelFeatures_Call) Return ¶
func (_c *ConfigInformerMock_GetKernelFeatures_Call) Return(_a0 Features, _a1 error) *ConfigInformerMock_GetKernelFeatures_Call
func (*ConfigInformerMock_GetKernelFeatures_Call) Run ¶
func (_c *ConfigInformerMock_GetKernelFeatures_Call) Run(run func()) *ConfigInformerMock_GetKernelFeatures_Call
func (*ConfigInformerMock_GetKernelFeatures_Call) RunAndReturn ¶
func (_c *ConfigInformerMock_GetKernelFeatures_Call) RunAndReturn(run func() (Features, error)) *ConfigInformerMock_GetKernelFeatures_Call
type ConfigInformerMock_GetMapTypes_Call ¶
ConfigInformerMock_GetMapTypes_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetMapTypes'
func (*ConfigInformerMock_GetMapTypes_Call) Return ¶
func (_c *ConfigInformerMock_GetMapTypes_Call) Return(_a0 MapTypes) *ConfigInformerMock_GetMapTypes_Call
func (*ConfigInformerMock_GetMapTypes_Call) Run ¶
func (_c *ConfigInformerMock_GetMapTypes_Call) Run(run func()) *ConfigInformerMock_GetMapTypes_Call
func (*ConfigInformerMock_GetMapTypes_Call) RunAndReturn ¶
func (_c *ConfigInformerMock_GetMapTypes_Call) RunAndReturn(run func() MapTypes) *ConfigInformerMock_GetMapTypes_Call
type ConfigInformerMock_GetRequiredSystemConfig_Call ¶
ConfigInformerMock_GetRequiredSystemConfig_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetRequiredSystemConfig'
func (*ConfigInformerMock_GetRequiredSystemConfig_Call) Run ¶
func (_c *ConfigInformerMock_GetRequiredSystemConfig_Call) Run(run func()) *ConfigInformerMock_GetRequiredSystemConfig_Call
func (*ConfigInformerMock_GetRequiredSystemConfig_Call) RunAndReturn ¶
func (_c *ConfigInformerMock_GetRequiredSystemConfig_Call) RunAndReturn(run func() KernelParams) *ConfigInformerMock_GetRequiredSystemConfig_Call
type ConfigInformerMock_IsKernelConfigAvailable_Call ¶
ConfigInformerMock_IsKernelConfigAvailable_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'IsKernelConfigAvailable'
func (*ConfigInformerMock_IsKernelConfigAvailable_Call) Return ¶
func (_c *ConfigInformerMock_IsKernelConfigAvailable_Call) Return(_a0 bool) *ConfigInformerMock_IsKernelConfigAvailable_Call
func (*ConfigInformerMock_IsKernelConfigAvailable_Call) Run ¶
func (_c *ConfigInformerMock_IsKernelConfigAvailable_Call) Run(run func()) *ConfigInformerMock_IsKernelConfigAvailable_Call
func (*ConfigInformerMock_IsKernelConfigAvailable_Call) RunAndReturn ¶
func (_c *ConfigInformerMock_IsKernelConfigAvailable_Call) RunAndReturn(run func() bool) *ConfigInformerMock_IsKernelConfigAvailable_Call
type ConfigInformerMock_ValidateRequiredSystemConfig_Call ¶
ConfigInformerMock_ValidateRequiredSystemConfig_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ValidateRequiredSystemConfig'
func (*ConfigInformerMock_ValidateRequiredSystemConfig_Call) Run ¶
func (_c *ConfigInformerMock_ValidateRequiredSystemConfig_Call) Run(run func()) *ConfigInformerMock_ValidateRequiredSystemConfig_Call
func (*ConfigInformerMock_ValidateRequiredSystemConfig_Call) RunAndReturn ¶
func (_c *ConfigInformerMock_ValidateRequiredSystemConfig_Call) RunAndReturn(run func() error) *ConfigInformerMock_ValidateRequiredSystemConfig_Call
type Executor ¶
func NewBpftoolExecutor ¶
func NewBpftoolExecutor(log *zap.SugaredLogger, dryRun bool) Executor
NewBpftoolExecutor create a new instance of an Executor responsible of running bpftool command
type ExecutorMock ¶
ExecutorMock is an autogenerated mock type for the Executor type
func NewExecutorMock ¶
func NewExecutorMock(t interface { mock.TestingT Cleanup(func()) }) *ExecutorMock
NewExecutorMock creates a new instance of ExecutorMock. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. The first argument is typically a *testing.T value.
func (*ExecutorMock) EXPECT ¶
func (_m *ExecutorMock) EXPECT() *ExecutorMock_Expecter
type ExecutorMock_Expecter ¶
type ExecutorMock_Expecter struct {
// contains filtered or unexported fields
}
func (*ExecutorMock_Expecter) Run ¶
func (_e *ExecutorMock_Expecter) Run(args interface{}) *ExecutorMock_Run_Call
Run is a helper method to define mock.On call
- args []string
type ExecutorMock_Run_Call ¶
ExecutorMock_Run_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Run'
func (*ExecutorMock_Run_Call) Return ¶
func (_c *ExecutorMock_Run_Call) Return(exitCode int, stdout string, stderr error) *ExecutorMock_Run_Call
func (*ExecutorMock_Run_Call) Run ¶
func (_c *ExecutorMock_Run_Call) Run(run func(args []string)) *ExecutorMock_Run_Call
func (*ExecutorMock_Run_Call) RunAndReturn ¶
func (_c *ExecutorMock_Run_Call) RunAndReturn(run func([]string) (int, string, error)) *ExecutorMock_Run_Call
type Features ¶
type Features struct { // SystemConfig represents a system's configuration information. SystemConfig `json:"system_config"` // MapTypes represents information about available map types. MapTypes `json:"map_types"` }
Features is a struct that represents a collection of features.
type KernelOption ¶
KernelOption holds information about kernel parameters to probe.
type KernelParam ¶
type KernelParam string
KernelParam is a type based on string which represents CONFIG_* kernel parameters which usually have values "y", "n" or "m".
func (KernelParam) Enabled ¶
func (kp KernelParam) Enabled() bool
Enabled checks whether the kernel parameter is enabled.
type KernelParams ¶
type KernelParams map[KernelParam]KernelOption
KernelParams is a map that associates KernelParam keys with their corresponding KernelOption values. It is used to store and manage kernel parameters and their options.
type MapTypes ¶
type MapTypes struct { HaveHashMapType bool `json:"have_hash_map_type"` HaveArrayMapType bool `json:"have_array_map_type"` HaveProgArrayMapType bool `json:"have_prog_array_map_type"` HavePerfEventArrayMapType bool `json:"have_perf_event_array_map_type"` HavePercpuHashMapType bool `json:"have_percpu_hash_map_type"` HavePercpuArrayMapType bool `json:"have_percpu_array_map_type"` HaveStackTraceMapType bool `json:"have_stack_trace_map_type"` HaveCgroupArrayMapType bool `json:"have_cgroup_array_map_type"` HaveLruHashMapType bool `json:"have_lru_hash_map_type"` HaveLruPercpuHashMapType bool `json:"have_lru_percpu_hash_map_type"` HaveLpmTrieMapType bool `json:"have_lpm_trie_map_type"` HaveArrayOfMapsMapType bool `json:"have_array_of_maps_map_type"` HaveHashOfMapsMapType bool `json:"have_hash_of_maps_map_type"` HaveDevmapMapType bool `json:"have_devmap_map_type"` HaveSockmapMapType bool `json:"have_sockmap_map_type"` HaveCpumapMapType bool `json:"have_cpumap_map_type"` HaveXskmapMapType bool `json:"have_xskmap_map_type"` HaveSockhashMapType bool `json:"have_sockhash_map_type"` HaveCgroupStorageMapType bool `json:"have_cgroup_storage_map_type"` HaveReuseportSockarrayMapType bool `json:"have_reuseport_sockarray_map_type"` HavePercpuCgroupStorageMapType bool `json:"have_percpu_cgroup_storage_map_type"` HaveQueueMapType bool `json:"have_queue_map_type"` HaveStackMapType bool `json:"have_stack_map_type"` }
MapTypes contains bools indicating which types of BPF maps the currently running kernel supports.
type SystemConfig ¶
type SystemConfig struct { UnprivilegedBpfDisabled int `json:"unprivileged_bpf_disabled"` BpfJitEnable int `json:"bpf_jit_enable"` BpfJitHarden int `json:"bpf_jit_harden"` BpfJitKallsyms int `json:"bpf_jit_kallsyms"` BpfJitLimit int `json:"bpf_jit_limit"` ConfigBpf KernelParam `json:"CONFIG_BPF"` ConfigBpfSyscall KernelParam `json:"CONFIG_BPF_SYSCALL"` ConfigHaveEbpfJit KernelParam `json:"CONFIG_HAVE_EBPF_JIT"` ConfigBpfJit KernelParam `json:"CONFIG_BPF_JIT"` ConfigBpfJitAlwaysOn KernelParam `json:"CONFIG_BPF_JIT_ALWAYS_ON"` ConfigCgroups KernelParam `json:"CONFIG_CGROUPS"` ConfigCgroupBpf KernelParam `json:"CONFIG_CGROUP_BPF"` ConfigCgroupNetClassID KernelParam `json:"CONFIG_CGROUP_NET_CLASSID"` ConfigSockCgroupData KernelParam `json:"CONFIG_SOCK_CGROUP_DATA"` ConfigBpfEvents KernelParam `json:"CONFIG_BPF_EVENTS"` ConfigKprobeEvents KernelParam `json:"CONFIG_KPROBE_EVENTS"` ConfigUprobeEvents KernelParam `json:"CONFIG_UPROBE_EVENTS"` ConfigTracing KernelParam `json:"CONFIG_TRACING"` ConfigFtraceSyscalls KernelParam `json:"CONFIG_FTRACE_SYSCALLS"` ConfigFunctionErrorInjection KernelParam `json:"CONFIG_FUNCTION_ERROR_INJECTION"` ConfigBpfKprobeOverride KernelParam `json:"CONFIG_BPF_KPROBE_OVERRIDE"` ConfigNet KernelParam `json:"CONFIG_NET"` ConfigXdpSockets KernelParam `json:"CONFIG_XDP_SOCKETS"` ConfigLwtunnelBpf KernelParam `json:"CONFIG_LWTUNNEL_BPF"` ConfigNetActBpf KernelParam `json:"CONFIG_NET_ACT_BPF"` ConfigNetClsBpf KernelParam `json:"CONFIG_NET_CLS_BPF"` ConfigNetClsAct KernelParam `json:"CONFIG_NET_CLS_ACT"` ConfigNetSchIngress KernelParam `json:"CONFIG_NET_SCH_INGRESS"` ConfigXfrm KernelParam `json:"CONFIG_XFRM"` ConfigIPRouteClassID KernelParam `json:"CONFIG_IP_ROUTE_CLASSID"` ConfigIPv6Seg6Bpf KernelParam `json:"CONFIG_IPV6_SEG6_BPF"` ConfigBpfLircMode2 KernelParam `json:"CONFIG_BPF_LIRC_MODE2"` ConfigBpfStreamParser KernelParam `json:"CONFIG_BPF_STREAM_PARSER"` ConfigNetfilterXtMatchBpf KernelParam `json:"CONFIG_NETFILTER_XT_MATCH_BPF"` ConfigBpfilter KernelParam `json:"CONFIG_BPFILTER"` ConfigBpfilterUmh KernelParam `json:"CONFIG_BPFILTER_UMH"` ConfigTestBpf KernelParam `json:"CONFIG_TEST_BPF"` ConfigKernelHz KernelParam `json:"CONFIG_HZ"` }
SystemConfig contains kernel configuration and sysctl parameters related to BPF functionality.