mirror of
https://github.com/netbirdio/netbird.git
synced 2024-12-03 05:24:56 +01:00
24713fbe59
* Move ebpf code to its own package to avoid crash issues in Android Older versions of android crashes because of the bytecode files Even when they aren't loaded as it was our case * move c file to own folder * fix lint
121 lines
2.7 KiB
Go
121 lines
2.7 KiB
Go
// Code generated by bpf2go; DO NOT EDIT.
|
|
//go:build 386 || amd64 || amd64p32 || arm || arm64 || mips64le || mips64p32le || mipsle || ppc64le || riscv64
|
|
// +build 386 amd64 amd64p32 arm arm64 mips64le mips64p32le mipsle ppc64le riscv64
|
|
|
|
package ebpf
|
|
|
|
import (
|
|
"bytes"
|
|
_ "embed"
|
|
"fmt"
|
|
"io"
|
|
|
|
"github.com/cilium/ebpf"
|
|
)
|
|
|
|
// loadBpf returns the embedded CollectionSpec for bpf.
|
|
func loadBpf() (*ebpf.CollectionSpec, error) {
|
|
reader := bytes.NewReader(_BpfBytes)
|
|
spec, err := ebpf.LoadCollectionSpecFromReader(reader)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("can't load bpf: %w", err)
|
|
}
|
|
|
|
return spec, err
|
|
}
|
|
|
|
// loadBpfObjects loads bpf and converts it into a struct.
|
|
//
|
|
// The following types are suitable as obj argument:
|
|
//
|
|
// *bpfObjects
|
|
// *bpfPrograms
|
|
// *bpfMaps
|
|
//
|
|
// See ebpf.CollectionSpec.LoadAndAssign documentation for details.
|
|
func loadBpfObjects(obj interface{}, opts *ebpf.CollectionOptions) error {
|
|
spec, err := loadBpf()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return spec.LoadAndAssign(obj, opts)
|
|
}
|
|
|
|
// bpfSpecs contains maps and programs before they are loaded into the kernel.
|
|
//
|
|
// It can be passed ebpf.CollectionSpec.Assign.
|
|
type bpfSpecs struct {
|
|
bpfProgramSpecs
|
|
bpfMapSpecs
|
|
}
|
|
|
|
// bpfSpecs contains programs before they are loaded into the kernel.
|
|
//
|
|
// It can be passed ebpf.CollectionSpec.Assign.
|
|
type bpfProgramSpecs struct {
|
|
XdpProgFunc *ebpf.ProgramSpec `ebpf:"xdp_prog_func"`
|
|
}
|
|
|
|
// bpfMapSpecs contains maps before they are loaded into the kernel.
|
|
//
|
|
// It can be passed ebpf.CollectionSpec.Assign.
|
|
type bpfMapSpecs struct {
|
|
XdpPortMap *ebpf.MapSpec `ebpf:"xdp_port_map"`
|
|
}
|
|
|
|
// bpfObjects contains all objects after they have been loaded into the kernel.
|
|
//
|
|
// It can be passed to loadBpfObjects or ebpf.CollectionSpec.LoadAndAssign.
|
|
type bpfObjects struct {
|
|
bpfPrograms
|
|
bpfMaps
|
|
}
|
|
|
|
func (o *bpfObjects) Close() error {
|
|
return _BpfClose(
|
|
&o.bpfPrograms,
|
|
&o.bpfMaps,
|
|
)
|
|
}
|
|
|
|
// bpfMaps contains all maps after they have been loaded into the kernel.
|
|
//
|
|
// It can be passed to loadBpfObjects or ebpf.CollectionSpec.LoadAndAssign.
|
|
type bpfMaps struct {
|
|
XdpPortMap *ebpf.Map `ebpf:"xdp_port_map"`
|
|
}
|
|
|
|
func (m *bpfMaps) Close() error {
|
|
return _BpfClose(
|
|
m.XdpPortMap,
|
|
)
|
|
}
|
|
|
|
// bpfPrograms contains all programs after they have been loaded into the kernel.
|
|
//
|
|
// It can be passed to loadBpfObjects or ebpf.CollectionSpec.LoadAndAssign.
|
|
type bpfPrograms struct {
|
|
XdpProgFunc *ebpf.Program `ebpf:"xdp_prog_func"`
|
|
}
|
|
|
|
func (p *bpfPrograms) Close() error {
|
|
return _BpfClose(
|
|
p.XdpProgFunc,
|
|
)
|
|
}
|
|
|
|
func _BpfClose(closers ...io.Closer) error {
|
|
for _, closer := range closers {
|
|
if err := closer.Close(); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Do not access this directly.
|
|
//
|
|
//go:embed bpf_bpfel.o
|
|
var _BpfBytes []byte
|