summaryrefslogtreecommitdiff
path: root/internal/bpfembed.go
blob: fce784cad918bf64c344e66c2aaf542551ce3669 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package internal

import (
	_ "embed"
	"os"

	bpf "github.com/aquasecurity/libbpfgo"
)

const (
	bpfObjectOverrideEnv  = "IOR_BPF_OBJECT"
	embeddedBPFObjectName = "ior.bpf.o"
)

//go:embed c/ior.bpf.o
var embeddedBPFObject []byte

var (
	newBPFModuleFromFile   = bpf.NewModuleFromFile
	newBPFModuleFromBuffer = bpf.NewModuleFromBuffer
)

func loadBPFModule() (*bpf.Module, string, error) {
	if path := os.Getenv(bpfObjectOverrideEnv); path != "" {
		module, err := newBPFModuleFromFile(path)
		return module, "load module from override file", err
	}

	module, err := newBPFModuleFromBuffer(embeddedBPFObject, embeddedBPFObjectName)
	return module, "load embedded module", err
}