libbpfgo

package module
v0.0.5 Latest Latest
Warning

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

Go to latest
Published: Oct 18, 2023 License: MIT Imports: 9 Imported by: 0

README

libbpf-go

Load bpf program in golang dependence make gcc

libbpf

在ubuntu22.04 server版本
dependence libelf-dev zib

Documentation

Index

Constants

View Source
const (
	TracePoint = "tracepoint"
	KProbe     = "kprobe"
	KRetProbe  = "kretprobe"
	UProbe     = "uprobe"
	URetProbe  = "uretprobe"
	XDP        = "xdp"
	TC         = "tc"
	LSM        = "lsm"
)
View Source
const (
	BPF_MAP_TYPE_UNSPEC = iota
	BPF_MAP_TYPE_HASH
	BPF_MAP_TYPE_ARRAY
	BPF_MAP_TYPE_PROG_ARRAY
	BPF_MAP_TYPE_PERF_EVENT_ARRAY
	BPF_MAP_TYPE_PERCPU_HASH
	BPF_MAP_TYPE_PERCPU_ARRAY
	BPF_MAP_TYPE_STACK_TRACE
	BPF_MAP_TYPE_CGROUP_ARRAY
	BPF_MAP_TYPE_LRU_HASH
	BPF_MAP_TYPE_LRU_PERCPU_HASH
	BPF_MAP_TYPE_LPM_TRIE
	BPF_MAP_TYPE_ARRAY_OF_MAPS
	BPF_MAP_TYPE_HASH_OF_MAPS
	BPF_MAP_TYPE_DEVMAP
	BPF_MAP_TYPE_SOCKMAP
	BPF_MAP_TYPE_CPUMAP
	BPF_MAP_TYPE_XSKMAP
	BPF_MAP_TYPE_SOCKHASH
	BPF_MAP_TYPE_CGROUP_STORAGE
	BPF_MAP_TYPE_REUSEPORT_SOCKARRAY
	BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE
	BPF_MAP_TYPE_QUEUE
	BPF_MAP_TYPE_STACK
	BPF_MAP_TYPE_SK_STORAGE
	BPF_MAP_TYPE_DEVMAP_HASH
	BPF_MAP_TYPE_STRUCT_OPS
	BPF_MAP_TYPE_RINGBUF
	BPF_MAP_TYPE_INODE_STORAGE
	BPF_MAP_TYPE_TASK_STORAGE
	BPF_MAP_TYPE_BLOOM_FILTER
)
View Source
const (
	PinnedFilePath = "/sys/fs/bpf/"
)

Variables

This section is empty.

Functions

func PerfBufferFunc

func PerfBufferFunc(ctx unsafe.Pointer, cpu C.int, data unsafe.Pointer, size C.int)

func PerfBufferLostFunc

func PerfBufferLostFunc(ctx unsafe.Pointer, cpu C.int, cnt C.ulonglong)

func RingBufferFunc

func RingBufferFunc(ctx unsafe.Pointer, data unsafe.Pointer, size C.int) C.int

Types

type BPFMap

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

func (*BPFMap) PinMap

func (m *BPFMap) PinMap(pinPath string) error

func (*BPFMap) UnPinMap

func (m *BPFMap) UnPinMap(unpinPath string) error

type BPFPinnedMap

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

func (*BPFPinnedMap) MapDelElem

func (m *BPFPinnedMap) MapDelElem(key unsafe.Pointer) error

func (*BPFPinnedMap) MapLookupElem

func (m *BPFPinnedMap) MapLookupElem(key unsafe.Pointer) []byte

func (*BPFPinnedMap) MapUpdateElem

func (m *BPFPinnedMap) MapUpdateElem(key, value unsafe.Pointer)

type BPFProgram

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

type BaseProgram

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

func (BaseProgram) GetProgramSecName

func (p BaseProgram) GetProgramSecName() string

type KprobeProgram

type KprobeProgram struct {
	BaseProgram
}

func (*KprobeProgram) LoadIntoKernel

func (t *KprobeProgram) LoadIntoKernel() error

func (*KprobeProgram) Unload

func (t *KprobeProgram) Unload() error

type MapFlag

type MapFlag uint32
const (
	MapFlagUpdateAny     MapFlag = iota // create new element or update existing
	MapFlagUpdateNoExist                // create new element if it didn't exist
	MapFlagUpdateExist                  // update existing element
	MapFlagFLock                        // spin_lock-ed map_lookup/map_update
)

type Module

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

func NewModuleFromFile

func NewModuleFromFile(bpfFilePath string) *Module

func (*Module) AddDeferFunc

func (m *Module) AddDeferFunc(function func())

func (*Module) AddElfFile

func (m *Module) AddElfFile(path string)

func (*Module) BPFLoadObject

func (m *Module) BPFLoadObject() error

func (*Module) Close

func (m *Module) Close()

func (*Module) GenerationProgram

func (m *Module) GenerationProgram(bpfProgram *C.struct_bpf_program) Program

func (*Module) GetAllMapName

func (m *Module) GetAllMapName() (res []string)

func (*Module) GetAllProgram

func (m *Module) GetAllProgram() map[string]Program

func (*Module) LoadAllIntoKernel

func (m *Module) LoadAllIntoKernel() error

func (*Module) LoadAllMap

func (m *Module) LoadAllMap() error

func (*Module) LoadAllProgram

func (m *Module) LoadAllProgram() error

func (*Module) LoadPinnedMapFromPath

func (m *Module) LoadPinnedMapFromPath(name string)

func (*Module) NewPerfBuffer

func (m *Module) NewPerfBuffer(mapName string) *C.struct_perf_buffer

func (*Module) PerfStart added in v0.0.4

func (m *Module) PerfStart(mapName string)

func (*Module) PerfStop added in v0.0.4

func (m *Module) PerfStop(mapName string)

type PerfEvent added in v0.0.4

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

type Program

type Program interface {
	LoadIntoKernel() error
	Unload() error
}

type TCProgram

type TCProgram struct {
	BaseProgram
}

func (*TCProgram) LoadIntoKernel

func (t *TCProgram) LoadIntoKernel() error

func (*TCProgram) Unload

func (t *TCProgram) Unload() error

type TracePointProgram

type TracePointProgram struct {
	BaseProgram
	// contains filtered or unexported fields
}

func (*TracePointProgram) LoadIntoKernel

func (t *TracePointProgram) LoadIntoKernel() error

func (*TracePointProgram) Unload

func (t *TracePointProgram) Unload() error

type UProbeProgram

type UProbeProgram struct {
	BaseProgram
	// contains filtered or unexported fields
}

func (*UProbeProgram) AddOffset

func (t *UProbeProgram) AddOffset(offset string) error

func (*UProbeProgram) AddOffsetByFuncName

func (t *UProbeProgram) AddOffsetByFuncName(funcName string) error

func (*UProbeProgram) LoadIntoKernel

func (t *UProbeProgram) LoadIntoKernel() error

func (*UProbeProgram) Unload

func (t *UProbeProgram) Unload() error

type XDPProgram

type XDPProgram struct {
	BaseProgram
}

func (*XDPProgram) LoadIntoKernel

func (t *XDPProgram) LoadIntoKernel() error

func (*XDPProgram) Unload

func (t *XDPProgram) Unload() error

Jump to

Keyboard shortcuts

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