Documentation ¶
Index ¶
- func FtraceEnabled() (bool, error)
- func GetCPUAmount() (int, error)
- func GetMEMAmountInMBs() int
- func OSBTFEnabled() bool
- func UnameMachine() (string, error)
- func UnameRelease() (string, error)
- type KSymbTableOption
- type KernelConfig
- func (k *KernelConfig) AddCustomKernelConfig(key KernelConfigOption, value string) error
- func (k *KernelConfig) AddNeeded(option KernelConfigOption, value interface{})
- func (k *KernelConfig) CheckMissing() []KernelConfigOption
- func (k *KernelConfig) Exists(option KernelConfigOption) bool
- func (k *KernelConfig) ExistsValue(option KernelConfigOption, value interface{}) bool
- func (k *KernelConfig) GetKernelConfigFilePath() string
- func (k *KernelConfig) GetValue(option KernelConfigOption) KernelConfigOptionValue
- func (k *KernelConfig) GetValueString(option KernelConfigOption) (string, error)
- func (k *KernelConfig) LoadKernelConfig() error
- type KernelConfigOption
- type KernelConfigOptionValue
- type KernelSymbol
- type KernelSymbolTable
- func (k *KernelSymbolTable) GetSymbolByAddr(addr uint64) ([]KernelSymbol, error)
- func (k *KernelSymbolTable) GetSymbolByName(name string) ([]KernelSymbol, error)
- func (k *KernelSymbolTable) GetSymbolByOwnerAndAddr(owner string, addr uint64) ([]KernelSymbol, error)
- func (k *KernelSymbolTable) GetSymbolByOwnerAndName(owner, name string) ([]KernelSymbol, error)
- func (k *KernelSymbolTable) Refresh() error
- func (k *KernelSymbolTable) TextSegmentContains(addr uint64) (bool, error)
- type KernelVersionComparison
- type LockdownMode
- type OSInfo
- func (btfi *OSInfo) CompareOSBaseKernelRelease(version string) (KernelVersionComparison, error)
- func (btfi *OSInfo) GetOSReleaseAllFieldValues() map[OSReleaseField]string
- func (btfi *OSInfo) GetOSReleaseFieldValue(value OSReleaseField) string
- func (btfi *OSInfo) GetOSReleaseFilePath() string
- func (btfi *OSInfo) GetOSReleaseID() OSReleaseID
- type OSReleaseField
- type OSReleaseID
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FtraceEnabled ¶ added in v0.20.0
func GetCPUAmount ¶
func GetMEMAmountInMBs ¶
func GetMEMAmountInMBs() int
GetMEMAmountInMBs reads meminfo file and returns MemTotal in megabytes
func OSBTFEnabled ¶ added in v0.20.0
func OSBTFEnabled() bool
OSBTFEnabled checks if kernel has embedded BTF vmlinux file
func UnameMachine ¶ added in v0.20.0
UnameMachine gets the version string of host's architecture
func UnameRelease ¶ added in v0.20.0
UnameRelease gets the version string of the current running kernel
Types ¶
type KSymbTableOption ¶ added in v0.20.0
type KSymbTableOption func(k *KernelSymbolTable) error
KSymbTableOption defines a function signature for configuration options.
func WithRequiredAddresses ¶ added in v0.20.0
func WithRequiredAddresses(reqAddrs []uint64) KSymbTableOption
WithRequiredAddresses sets the required addresses for the KernelSymbolTable.
func WithRequiredSymbols ¶ added in v0.20.0
func WithRequiredSymbols(reqSyms []string) KSymbTableOption
WithRequiredSymbols sets the required symbols for the KernelSymbolTable.
type KernelConfig ¶ added in v0.20.0
type KernelConfig struct {
// contains filtered or unexported fields
}
KernelConfig is a set of kernel configuration options (currently for running OS only)
func InitKernelConfig ¶ added in v0.20.0
func InitKernelConfig() (*KernelConfig, error)
InitKernelConfig inits external KernelConfig object
func (*KernelConfig) AddCustomKernelConfig ¶ added in v0.20.0
func (k *KernelConfig) AddCustomKernelConfig(key KernelConfigOption, value string) error
AddCustomKernelConfig allows user to extend list of possible existing kconfigs to be parsed from kConfigFilePath
func (*KernelConfig) AddNeeded ¶ added in v0.20.0
func (k *KernelConfig) AddNeeded(option KernelConfigOption, value interface{})
AddNeeded adds a KernelConfigOption and its value, if needed, as required for further checks with CheckMissing
Examples: kernelConfig.AddNeeded(helpers.CONFIG_BPF, helpers.ANY) kernelConfig.AddNeeded(helpers.CONFIG_BPF_PRELOAD, helpers.ANY) kernelConfig.AddNeeded(helpers.CONFIG_HZ, "250")
func (*KernelConfig) CheckMissing ¶ added in v0.20.0
func (k *KernelConfig) CheckMissing() []KernelConfigOption
CheckMissing returns an array of KernelConfigOption's that were added to KernelConfig as needed but couldn't be found. It returns an empty array if nothing is missing.
func (*KernelConfig) Exists ¶ added in v0.20.0
func (k *KernelConfig) Exists(option KernelConfigOption) bool
Exists will return true if a given KernelConfigOption was found in provided KernelConfig and it will return false if the KernelConfigOption is not set (# XXXXX is not set)
Examples: kernelConfig.Exists(helpers.CONFIG_BPF) kernelConfig.Exists(helpers.CONFIG_BPF_PRELOAD) kernelConfig.Exists(helpers.CONFIG_HZ)
func (*KernelConfig) ExistsValue ¶ added in v0.20.0
func (k *KernelConfig) ExistsValue(option KernelConfigOption, value interface{}) bool
ExistsValue will return true if a given KernelConfigOption was found in provided KernelConfig AND its value is the same as the one provided by KernelConfigOptionValue
func (*KernelConfig) GetKernelConfigFilePath ¶ added in v0.20.0
func (k *KernelConfig) GetKernelConfigFilePath() string
GetKernelConfigFilePath gives the kconfig file chosen by InitKernelConfig during initialization
func (*KernelConfig) GetValue ¶ added in v0.20.0
func (k *KernelConfig) GetValue(option KernelConfigOption) KernelConfigOptionValue
GetValue will return a KernelConfigOptionValue for a given KernelConfigOption when this is a BUILTIN or a MODULE
func (*KernelConfig) GetValueString ¶ added in v0.20.0
func (k *KernelConfig) GetValueString(option KernelConfigOption) (string, error)
GetValueString will return a KernelConfigOptionValue for a given KernelConfigOption when this is actually a string
func (*KernelConfig) LoadKernelConfig ¶ added in v0.20.0
func (k *KernelConfig) LoadKernelConfig() error
LoadKernelConfig will (re)read kconfig file (likely after AddCustomKernelConfig was called)
type KernelConfigOption ¶ added in v0.20.0
type KernelConfigOption uint32
KernelConfigOption is an abstraction of the key in key=value syntax of the kernel config file
const ( CONFIG_BPF KernelConfigOption = iota + 1 CONFIG_BPF_SYSCALL CONFIG_HAVE_EBPF_JIT CONFIG_BPF_JIT CONFIG_BPF_JIT_ALWAYS_ON CONFIG_CGROUPS CONFIG_CGROUP_BPF CONFIG_CGROUP_NET_CLASSID CONFIG_SOCK_CGROUP_DATA CONFIG_BPF_EVENTS CONFIG_KPROBE_EVENTS CONFIG_UPROBE_EVENTS CONFIG_TRACING CONFIG_FTRACE_SYSCALLS CONFIG_FUNCTION_ERROR_INJECTION CONFIG_BPF_KPROBE_OVERRIDE CONFIG_NET CONFIG_XDP_SOCKETS CONFIG_LWTUNNEL_BPF CONFIG_NET_ACT_BPF CONFIG_NET_CLS_BPF CONFIG_NET_CLS_ACT CONFIG_NET_SCH_INGRESS CONFIG_XFRM CONFIG_IP_ROUTE_CLASSID CONFIG_IPV6_SEG6_BPF CONFIG_BPF_LIRC_MODE2 CONFIG_BPF_STREAM_PARSER CONFIG_NETFILTER_XT_MATCH_BPF CONFIG_BPFILTER CONFIG_BPFILTER_UMH CONFIG_TEST_BPF CONFIG_HZ CONFIG_DEBUG_INFO_BTF CONFIG_DEBUG_INFO_BTF_MODULES CONFIG_BPF_LSM CONFIG_BPF_PRELOAD CONFIG_BPF_PRELOAD_UMD CUSTOM_OPTION_START KernelConfigOption = 1000 )
func (KernelConfigOption) String ¶ added in v0.20.0
func (k KernelConfigOption) String() string
type KernelConfigOptionValue ¶ added in v0.20.0
type KernelConfigOptionValue uint8
KernelConfigOptionValue is an abstraction of the value in key=value syntax of kernel config file
const ( UNDEFINED KernelConfigOptionValue = iota BUILTIN MODULE STRING ANY )
func (KernelConfigOptionValue) String ¶ added in v0.20.0
func (k KernelConfigOptionValue) String() string
type KernelSymbol ¶ added in v0.20.0
type KernelSymbolTable ¶ added in v0.20.0
type KernelSymbolTable struct {
// contains filtered or unexported fields
}
KernelSymbolTable manages kernel symbols with multiple maps for fast lookup.
func NewKernelSymbolTable ¶ added in v0.20.0
func NewKernelSymbolTable(opts ...KSymbTableOption) (*KernelSymbolTable, error)
NewKernelSymbolTable initializes a KernelSymbolTable with optional configuration functions.
func (*KernelSymbolTable) GetSymbolByAddr ¶ added in v0.20.0
func (k *KernelSymbolTable) GetSymbolByAddr(addr uint64) ([]KernelSymbol, error)
GetSymbolByAddr returns all the symbols with the given address.
func (*KernelSymbolTable) GetSymbolByName ¶ added in v0.20.0
func (k *KernelSymbolTable) GetSymbolByName(name string) ([]KernelSymbol, error)
GetSymbolByName returns all the symbols with the given name.
func (*KernelSymbolTable) GetSymbolByOwnerAndAddr ¶ added in v0.20.0
func (k *KernelSymbolTable) GetSymbolByOwnerAndAddr(owner string, addr uint64) ([]KernelSymbol, error)
GetSymbolByOwnerAndAddr returns all the symbols with the given owner and address.
func (*KernelSymbolTable) GetSymbolByOwnerAndName ¶ added in v0.20.0
func (k *KernelSymbolTable) GetSymbolByOwnerAndName(owner, name string) ([]KernelSymbol, error)
GetSymbolByOwnerAndName returns all the symbols with the given owner and name.
func (*KernelSymbolTable) Refresh ¶ added in v0.20.0
func (k *KernelSymbolTable) Refresh() error
Refresh is the exported method that acquires the lock and calls the internal refresh method.
func (*KernelSymbolTable) TextSegmentContains ¶ added in v0.20.0
func (k *KernelSymbolTable) TextSegmentContains(addr uint64) (bool, error)
TextSegmentContains returns true if the given address is in the kernel text segment.
type KernelVersionComparison ¶ added in v0.20.0
type KernelVersionComparison int
const ( KernelVersionInvalid KernelVersionComparison = iota - 1 KernelVersionEqual KernelVersionOlder KernelVersionNewer )
func CompareKernelRelease ¶ added in v0.20.0
func CompareKernelRelease(base, given string) (KernelVersionComparison, error)
CompareKernelRelease will compare two given kernel version/release strings and returns a KernelVersionComparison constant that shows the relationship of the given kernel version to the base. For example CompareKernelRelease("5.8.1", "4.12.3") == KernelVersionOlder because 4.12.3 is older than 5.8.1
It also returns an error incase of a malformed kernel version.
Consumers should use the constants defined in this package for checking the results: KernelVersionOlder, KernelVersionEqual, KernelVersionNewer
Examples of $(uname -r):
5.11.0-31-generic (ubuntu) 4.18.0-305.12.1.el8_4.x86_64 (alma) 4.18.0-338.el8.x86_64 (stream8) 4.18.0-305.7.1.el8_4.centos.x86_64 (centos) 4.18.0-305.7.1.el8_4.centos.plus.x86_64 (centos + plus repo) 5.13.13-arch1-1 (archlinux) 5.4.228+ (ubuntu-gke 5.4)
type LockdownMode ¶ added in v0.20.0
type LockdownMode int32
const ( NOVALUE LockdownMode = iota NONE INTEGRITY CONFIDENTIALITY )
func Lockdown ¶ added in v0.20.0
func Lockdown() (LockdownMode, error)
func (LockdownMode) String ¶ added in v0.20.0
func (l LockdownMode) String() string
type OSInfo ¶ added in v0.20.0
type OSInfo struct {
// contains filtered or unexported fields
}
OSInfo object contains all OS relevant information
OSRelease is relevant to examples such as: 1) OSInfo.OSReleaseInfo[helpers.OS_KERNEL_RELEASE] => will provide $(uname -r) string 2) if OSInfo.GetReleaseID() == helpers.UBUNTU => {} will allow running code in specific distribution
func GetOSInfo ¶ added in v0.20.0
GetOSInfo creates a OSInfo object and runs discoverOSDistro() on its creation
func (*OSInfo) CompareOSBaseKernelRelease ¶ added in v0.20.0
func (btfi *OSInfo) CompareOSBaseKernelRelease(version string) (KernelVersionComparison, error)
CompareOSBaseKernelRelease will compare a given kernel version/release string to the current running version and returns a KernelVersionComparison constant that shows the relationship of the given kernel version to the running kernel.
For example, if the running kernel is 5.18.0 and pass "4.3.2", the result would be KernelVersionOlder because 4.3.2 is older than the running kernel
Consumers should use the constants defined in this package for checking the results: KernelVersionOlder, KernelVersionEqual, KernelVersionNewer
func (*OSInfo) GetOSReleaseAllFieldValues ¶ added in v0.20.0
func (btfi *OSInfo) GetOSReleaseAllFieldValues() map[OSReleaseField]string
GetOSReleaseAllFieldValues allows user to dump, as strings, the existing OSReleaseField's and its values
func (*OSInfo) GetOSReleaseFieldValue ¶ added in v0.20.0
func (btfi *OSInfo) GetOSReleaseFieldValue(value OSReleaseField) string
GetOSReleaseFieldValue provides access to internal OSInfo OSReleaseField's
func (*OSInfo) GetOSReleaseFilePath ¶ added in v0.20.0
GetOSReleaseFilePath provides the path for the used os-release file as it might not necessarily be /etc/os-release, depending on the environment variable
func (*OSInfo) GetOSReleaseID ¶ added in v0.20.0
func (btfi *OSInfo) GetOSReleaseID() OSReleaseID
GetOSReleaseID provides the ID of current Linux distribution
type OSReleaseField ¶ added in v0.20.0
type OSReleaseField uint32
const ( OS_NAME OSReleaseField = iota + 0 OS_ID OS_ID_LIKE OS_PRETTY_NAME OS_VARIANT OS_VARIANT_ID OS_VERSION OS_VERSION_ID OS_VERSION_CODENAME OS_BUILD_ID OS_IMAGE_ID OS_IMAGE_VERSION // not part of default os-release: OS_KERNEL_RELEASE OS_ARCH )
func (OSReleaseField) String ¶ added in v0.20.0
func (o OSReleaseField) String() string
type OSReleaseID ¶ added in v0.20.0
type OSReleaseID uint32
const ( UBUNTU OSReleaseID = iota + 1 FEDORA ARCH DEBIAN CENTOS STREAM ALMA RHEL )
func (OSReleaseID) String ¶ added in v0.20.0
func (o OSReleaseID) String() string