cgroup

package
v0.0.0-...-ef54517 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 24, 2024 License: GPL-3.0 Imports: 18 Imported by: 0

Documentation

Overview

borrowed from tracee

borrowed from tracee

Index

Constants

View Source
const (
	CgroupV1FsType          = "cgroup"
	CgroupV2FsType          = "cgroup2"
	CgroupDefaultController = "cpuset"
	CgroupControllersFile   = "/sys/fs/cgroup/cgroup.controllers"
)

Variables

This section is empty.

Functions

func CouldNotFindOrMountDefaultCgroup

func CouldNotFindOrMountDefaultCgroup(ver CgroupVersion) error

func CouldNotOpenFile

func CouldNotOpenFile(file string, err error) error

func ErrorParsingFile

func ErrorParsingFile(file string, err error) error

func GetCgroupControllerHierarchy

func GetCgroupControllerHierarchy(subsys string) (int, error)

Returns a cgroup controller hierarchy value

func GetCgroupPath

func GetCgroupPath(rootDir string, cgroupId uint64, subPath string) (string, time.Time, error)

GetCgroupPath walks the cgroup fs and provides the cgroup directory path of given cgroupId and subPath (related to cgroup fs root dir). If subPath is empty, then all directories from cgroup fs will be searched for the given cgroupId.

Returns found cgroup path, its ctime, and an error if relevant

func IsCgroupV2MountedAndDefault

func IsCgroupV2MountedAndDefault() (bool, error)

IsCgroupV2MountedAndDefault tests if cgroup2 is mounted and is the default cgroup version being used by the running environment. It does so by checking the existence of a "cgroup.controllers" file in default cgroupfs mountpoint.

func NoCgroupSupport

func NoCgroupSupport() error

Types

type Cgroup

type Cgroup interface {
	Destroy() error
	GetMountPoint() string

	GetVersion() CgroupVersion
	// contains filtered or unexported methods
}

func NewCgroup

func NewCgroup(ver CgroupVersion) (Cgroup, error)

type CgroupInfo

type CgroupInfo struct {
	CgroupPath string
	CgroupID   uint64
}

type CgroupV1

type CgroupV1 struct {
	// contains filtered or unexported fields
}

func (*CgroupV1) Destroy

func (c *CgroupV1) Destroy() error

func (*CgroupV1) GetMountPoint

func (c *CgroupV1) GetMountPoint() string

func (*CgroupV1) GetVersion

func (c *CgroupV1) GetVersion() CgroupVersion

type CgroupV2

type CgroupV2 struct {
	// contains filtered or unexported fields
}

func (*CgroupV2) Destroy

func (c *CgroupV2) Destroy() error

func (*CgroupV2) GetMountPoint

func (c *CgroupV2) GetMountPoint() string

func (*CgroupV2) GetVersion

func (c *CgroupV2) GetVersion() CgroupVersion

type CgroupVersion

type CgroupVersion int
const (
	CgroupVersion1 CgroupVersion = iota
	CgroupVersion2
)

func GetCgroupDefaultVersion

func GetCgroupDefaultVersion() (CgroupVersion, error)

func (CgroupVersion) String

func (v CgroupVersion) String() string

type Cgroups

type Cgroups struct {
	// contains filtered or unexported fields
}

func NewCgroups

func NewCgroups() (*Cgroups, error)

func (*Cgroups) Destroy

func (cs *Cgroups) Destroy() error

func (*Cgroups) GetCgroup

func (cs *Cgroups) GetCgroup(ver CgroupVersion) Cgroup

func (*Cgroups) GetDefaultCgroup

func (cs *Cgroups) GetDefaultCgroup() Cgroup

func (*Cgroups) GetDefaultCgroupHierarchyID

func (cs *Cgroups) GetDefaultCgroupHierarchyID() int

type CgroupsController

type CgroupsController interface {
	EbpfCapturePossible() bool
	AddCgroupPath(cgroupPath string) (cgroupID uint64, containerID string, ok bool)
	PopulateSocketsInodes(isCgroupV2 bool, inodeMap *ebpf.Map) error
	DelCgroupID(cgroupID uint64)
	GetContainerID(cgroupID uint64) (containerID string)
	GetCgroupsV2(containerId string) []CgroupInfo
	GetExistingCgroupsByCgroupPath(cgroupPath string) []CgroupInfo
	GetCgroupV2MountPoint() string
	Close() error
}

func NewCgroupsController

func NewCgroupsController(procfs string) CgroupsController

type CgroupsControllerImpl

type CgroupsControllerImpl struct {
	// contains filtered or unexported fields
}

func (*CgroupsControllerImpl) AddCgroupPath

func (e *CgroupsControllerImpl) AddCgroupPath(cgroupPath string) (cgroupID uint64, containerID string, ok bool)

func (*CgroupsControllerImpl) Close

func (e *CgroupsControllerImpl) Close() error

func (*CgroupsControllerImpl) DelCgroupID

func (e *CgroupsControllerImpl) DelCgroupID(cgroup uint64)

func (*CgroupsControllerImpl) EbpfCapturePossible

func (e *CgroupsControllerImpl) EbpfCapturePossible() bool

func (*CgroupsControllerImpl) GetCgroupV2MountPoint

func (e *CgroupsControllerImpl) GetCgroupV2MountPoint() string

func (*CgroupsControllerImpl) GetCgroupsV2

func (e *CgroupsControllerImpl) GetCgroupsV2(containerID string) (info []CgroupInfo)

func (*CgroupsControllerImpl) GetContainerID

func (e *CgroupsControllerImpl) GetContainerID(cgroup uint64) string

func (*CgroupsControllerImpl) GetExistingCgroupsByCgroupPath

func (e *CgroupsControllerImpl) GetExistingCgroupsByCgroupPath(cgroupPath string) (info []CgroupInfo)

func (*CgroupsControllerImpl) PopulateSocketsInodes

func (e *CgroupsControllerImpl) PopulateSocketsInodes(isCgroupV2 bool, inodeMap *ebpf.Map) error

type RuntimeId

type RuntimeId int

func GetContainerIdByCgroupPath

func GetContainerIdByCgroupPath(cgroupPath string) (id string, runtime RuntimeId)

Borrowed from https://github.com/aquasecurity/tracee/blob/main/pkg/containers/containers.go

type VersionNotSupported

type VersionNotSupported struct{}

func (*VersionNotSupported) Error

func (c *VersionNotSupported) Error() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL