bpf

package
v1.11.0-cni-plu...-8f3027a Latest Latest
Warning

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

Go to latest
Published: Nov 27, 2024 License: Apache-2.0, Apache-2.0 Imports: 33 Imported by: 0

Documentation

Overview

Package bpf provides primitives to manage Calico-specific XDP programs attached to network interfaces, along with the blocklist LPM map and the failsafe map.

It does not call the bpf() syscall itself but executes external programs like bpftool and ip.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Index

Constants

View Source
const (
	RuntimeProgDir = "/var/run/calico/bpf/prog"
	RuntimePolDir  = "/var/run/calico/bpf/policy"
)

Variables

This section is empty.

Functions

func AlreadyAttachedProg

func AlreadyAttachedProg(a AttachPointInfo, object string, id int) (bool, error)

AlreadyAttachedProg checks that the program we are going to attach has the same parameters as what we remembered about the currently attached.

func CidrToHex

func CidrToHex(cidr string) ([]string, error)

CidrToHex takes a CIDR in string form (e.g. "192.168.0.0/16") and outputs a string slice of hex-encoded bytes ready to be passed to bpftool.

For example, for "192.168.0.0/16":

[

10, 00, 00, 00,   mask in little endian order
C0, A8, 00, 00    IP address

]

func CleanAttachedProgDir

func CleanAttachedProgDir()

CleanAttachedProgDir makes sure /var/run/calico/bpf/prog exists and removes json files related to interfaces that do not exist.

func CleanUpCalicoPins

func CleanUpCalicoPins(dir string)

func ForgetAttachedProg

func ForgetAttachedProg(iface string, hook hook.Hook) error

ForgetAttachedProg removes what we store about the iface/hook program.

func ForgetIfaceAttachedProg

func ForgetIfaceAttachedProg(iface string) error

ForgetIfaceAttachedProg removes information we store about any programs associated with an iface.

func GetMinKernelVersionForDistro

func GetMinKernelVersionForDistro(distName string) *environment.Version

func GetMockXDPTag

func GetMockXDPTag(bytes []byte) string

func IterMapCmdOutput

func IterMapCmdOutput(output []byte, f func(k, v []byte)) error

IterMapCmdOutput iterates over the output of a command obtained by DumpMapCmd

func IterPerCpuMapCmdOutput

func IterPerCpuMapCmdOutput(output []byte, f func(k, v []byte)) error

IterPerCpuMapCmdOutput iterates over the output of the dump of per-cpu map

func KTimeNanos

func KTimeNanos() int64

KTimeNanos returns a nanosecond timestamp that is comparable with the ones generated by BPF.

func ListCalicoAttached

func ListCalicoAttached() (map[string]EPAttachInfo, error)

ListCalicoAttached list all programs that are attached to TC or XDP and are related to Calico. That is, they have jumpmap pinned in our dir hierarchy.

func ListTcXDPAttachedProgs

func ListTcXDPAttachedProgs(dev ...string) (TcList, XDPList, error)

ListTcXDPAttachedProgs returns all programs attached to TC or XDP hooks.

func MapPinDir

func MapPinDir(typ int, name, iface string, h hook.Hook) string

func MemberToIPMask

func MemberToIPMask(member string) (*net.IP, int, error)

func PinBPFProgram

func PinBPFProgram(fd ProgFD, filename string) error

func PolicyDebugJSONFileName

func PolicyDebugJSONFileName(iface, polDir string, ipFamily proto.IPVersion) string

func RememberAttachedProg

func RememberAttachedProg(a AttachPointInfo, object string, id int) error

RememberAttachedProg stores the attached programs parameters in a file.

func RuntimeJSONFilename

func RuntimeJSONFilename(iface string, hook hook.Hook) string

RuntimeJSONFilename returns filename where we store information about attached program. The filename is [iface name]_hook.json, for example, eth0_egress.json

func SupportsBPFDataplane

func SupportsBPFDataplane() error

func SupportsSockmap

func SupportsSockmap() error

func SupportsXDP

func SupportsXDP() error

func SyscallSupport

func SyscallSupport() bool

Types

type AttachPoint

type AttachPoint struct {
	Hook        hook.Hook
	PolicyIdxV4 int
	PolicyIdxV6 int
	Iface       string
	LogLevel    string
}

func (*AttachPoint) HookName

func (ap *AttachPoint) HookName() hook.Hook

func (*AttachPoint) IfaceName

func (ap *AttachPoint) IfaceName() string

func (*AttachPoint) LogVal

func (ap *AttachPoint) LogVal() string

func (*AttachPoint) PolicyJmp

func (ap *AttachPoint) PolicyJmp(ipFamily proto.IPVersion) int

type AttachPointInfo

type AttachPointInfo interface {
	IfaceName() string
	HookName() hook.Hook
	Config() string
}

AttachPointInfo describes what we need to know about an attach point

type AttachResult

type AttachResult interface {
	ProgID() int
}

type AttachedProgInfo

type AttachedProgInfo struct {
	Object string `json:"object"`
	Hash   string `json:"hash"`
	ID     int    `json:"id"`
	Config string `json:"config"`
}

AttachedProgInfo describes what we store about an attached program.

type BPFDataplane

type BPFDataplane interface {
	DumpCIDRMap(ifName string, family IPFamily) (map[CIDRMapKey]uint32, error)
	DumpFailsafeMap() ([]ProtoPort, error)
	GetCIDRMapID(ifName string, family IPFamily) (int, error)
	GetFailsafeMapID() (int, error)
	GetMapsFromXDP(ifName string) ([]int, error)
	GetXDPID(ifName string) (int, error)
	GetXDPMode(ifName string) (XDPMode, error)
	GetXDPIfaces() ([]string, error)
	GetXDPObjTag(objPath string) (string, error)
	GetXDPObjTagAuto() (string, error)
	GetXDPTag(ifName string) (string, error)
	IsValidMap(ifName string, family IPFamily) (bool, error)
	ListCIDRMaps(family IPFamily) ([]string, error)
	LoadXDP(objPath, ifName string, mode XDPMode) error
	LoadXDPAuto(ifName string, mode XDPMode) error
	LookupCIDRMap(ifName string, family IPFamily, ip net.IP, mask int) (uint32, error)
	LookupFailsafeMap(proto uint8, port uint16) (bool, error)
	NewCIDRMap(ifName string, family IPFamily) (string, error)
	NewFailsafeMap() (string, error)
	RemoveCIDRMap(ifName string, family IPFamily) error
	RemoveFailsafeMap() error
	RemoveItemCIDRMap(ifName string, family IPFamily, ip net.IP, mask int) error
	RemoveItemFailsafeMap(proto uint8, port uint16) error
	RemoveXDP(ifName string, mode XDPMode) error
	UpdateCIDRMap(ifName string, family IPFamily, ip net.IP, mask int, refCount uint32) error
	UpdateFailsafeMap(proto uint8, port uint16) error

	GetBPFCalicoDir() string
	AttachToSockmap() error
	DetachFromSockmap(mode FindObjectMode) error
	RemoveSockmap(mode FindObjectMode) error

	LoadSockops(objPath string) error
	LoadSockopsAuto() error
	RemoveSockops() error
	LoadSkMsg(objPath string) error
	LoadSkMsgAuto() error
	RemoveSkMsg() error
	AttachToCgroup() error
	DetachFromCgroup(mode FindObjectMode) error
	NewSockmapEndpointsMap() (string, error)
	NewSockmap() (string, error)
	UpdateSockmapEndpoints(ip net.IP, mask int) error
	DumpSockmapEndpointsMap(family IPFamily) ([]CIDRMapKey, error)
	LookupSockmapEndpointsMap(ip net.IP, mask int) (bool, error)
	RemoveItemSockmapEndpointsMap(ip net.IP, mask int) error
	RemoveSockmapEndpointsMap() error
	// contains filtered or unexported methods
}

type BPFLib

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

func NewBPFLib

func NewBPFLib(binDir string) (*BPFLib, error)

func (*BPFLib) AttachToCgroup

func (b *BPFLib) AttachToCgroup() error

func (*BPFLib) AttachToSockmap

func (b *BPFLib) AttachToSockmap() error

func (*BPFLib) DetachFromCgroup

func (b *BPFLib) DetachFromCgroup(mode FindObjectMode) error

func (*BPFLib) DetachFromSockmap

func (b *BPFLib) DetachFromSockmap(mode FindObjectMode) error

func (*BPFLib) DumpCIDRMap

func (b *BPFLib) DumpCIDRMap(ifName string, family IPFamily) (map[CIDRMapKey]uint32, error)

func (*BPFLib) DumpFailsafeMap

func (b *BPFLib) DumpFailsafeMap() ([]ProtoPort, error)

func (*BPFLib) DumpSockmapEndpointsMap

func (b *BPFLib) DumpSockmapEndpointsMap(family IPFamily) ([]CIDRMapKey, error)

func (*BPFLib) GetBPFCalicoDir

func (b *BPFLib) GetBPFCalicoDir() string

func (*BPFLib) GetCIDRMapID

func (b *BPFLib) GetCIDRMapID(ifName string, family IPFamily) (int, error)

func (*BPFLib) GetFailsafeMapID

func (b *BPFLib) GetFailsafeMapID() (int, error)

func (*BPFLib) GetMapsFromXDP

func (b *BPFLib) GetMapsFromXDP(ifName string) ([]int, error)

func (*BPFLib) GetXDPID

func (b *BPFLib) GetXDPID(ifName string) (int, error)

func (*BPFLib) GetXDPIfaces

func (b *BPFLib) GetXDPIfaces() ([]string, error)

func (*BPFLib) GetXDPMode

func (b *BPFLib) GetXDPMode(ifName string) (XDPMode, error)

func (*BPFLib) GetXDPObjTag

func (b *BPFLib) GetXDPObjTag(objPath string) (tag string, err error)

func (*BPFLib) GetXDPObjTagAuto

func (b *BPFLib) GetXDPObjTagAuto() (string, error)

func (*BPFLib) GetXDPTag

func (b *BPFLib) GetXDPTag(ifName string) (string, error)

func (*BPFLib) IsValidMap

func (b *BPFLib) IsValidMap(ifName string, family IPFamily) (bool, error)

func (*BPFLib) ListCIDRMaps

func (b *BPFLib) ListCIDRMaps(family IPFamily) ([]string, error)

func (*BPFLib) LoadSkMsg

func (b *BPFLib) LoadSkMsg(objPath string) error

func (*BPFLib) LoadSkMsgAuto

func (b *BPFLib) LoadSkMsgAuto() error

func (*BPFLib) LoadSockops

func (b *BPFLib) LoadSockops(objPath string) error

func (*BPFLib) LoadSockopsAuto

func (b *BPFLib) LoadSockopsAuto() error

func (*BPFLib) LoadXDP

func (b *BPFLib) LoadXDP(objPath, ifName string, mode XDPMode) error

func (*BPFLib) LoadXDPAuto

func (b *BPFLib) LoadXDPAuto(ifName string, mode XDPMode) error

func (*BPFLib) LookupCIDRMap

func (b *BPFLib) LookupCIDRMap(ifName string, family IPFamily, ip net.IP, mask int) (uint32, error)

func (*BPFLib) LookupFailsafeMap

func (b *BPFLib) LookupFailsafeMap(proto uint8, port uint16) (bool, error)

func (*BPFLib) LookupSockmapEndpointsMap

func (b *BPFLib) LookupSockmapEndpointsMap(ip net.IP, mask int) (bool, error)

func (*BPFLib) NewCIDRMap

func (b *BPFLib) NewCIDRMap(ifName string, family IPFamily) (string, error)

func (*BPFLib) NewFailsafeMap

func (b *BPFLib) NewFailsafeMap() (string, error)

func (*BPFLib) NewSockmap

func (b *BPFLib) NewSockmap() (string, error)

func (*BPFLib) NewSockmapEndpointsMap

func (b *BPFLib) NewSockmapEndpointsMap() (string, error)

func (*BPFLib) RemoveCIDRMap

func (b *BPFLib) RemoveCIDRMap(ifName string, family IPFamily) error

func (*BPFLib) RemoveFailsafeMap

func (b *BPFLib) RemoveFailsafeMap() error

func (*BPFLib) RemoveItemCIDRMap

func (b *BPFLib) RemoveItemCIDRMap(ifName string, family IPFamily, ip net.IP, mask int) error

func (*BPFLib) RemoveItemFailsafeMap

func (b *BPFLib) RemoveItemFailsafeMap(proto uint8, port uint16) error

func (*BPFLib) RemoveItemSockmapEndpointsMap

func (b *BPFLib) RemoveItemSockmapEndpointsMap(ip net.IP, mask int) error

func (*BPFLib) RemoveSkMsg

func (b *BPFLib) RemoveSkMsg() error

func (*BPFLib) RemoveSockmap

func (b *BPFLib) RemoveSockmap(mode FindObjectMode) error

func (*BPFLib) RemoveSockmapEndpointsMap

func (b *BPFLib) RemoveSockmapEndpointsMap() error

func (*BPFLib) RemoveSockops

func (b *BPFLib) RemoveSockops() error

func (*BPFLib) RemoveXDP

func (b *BPFLib) RemoveXDP(ifName string, mode XDPMode) error

func (*BPFLib) UpdateCIDRMap

func (b *BPFLib) UpdateCIDRMap(ifName string, family IPFamily, ip net.IP, mask int, refCount uint32) error

func (*BPFLib) UpdateFailsafeMap

func (b *BPFLib) UpdateFailsafeMap(proto uint8, port uint16) error

func (*BPFLib) UpdateSockmapEndpoints

func (b *BPFLib) UpdateSockmapEndpoints(ip net.IP, mask int) error

type BPFProgType

type BPFProgType string

BPFProgType is usually a string, but if the type is not known to bpftool, it would be represented by an int. We do not care about those, but we must not fail on parsing them.

func (*BPFProgType) UnmarshalJSON

func (t *BPFProgType) UnmarshalJSON(data []byte) error

type Binary

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

Binary is an in memory representation of a BPF binary

func BinaryFromFile

func BinaryFromFile(ifile string) (*Binary, error)

BinaryFromFile reads a binary from a file

func (*Binary) PatchSkbMark

func (b *Binary) PatchSkbMark(mark uint32)

PatchSkbMark replaces SKBM with the expected mark - for tests.

func (*Binary) ReplaceAll

func (b *Binary) ReplaceAll(orig, replacement []byte)

ReplaceAll replaces all non-overlapping instance of orig with replacements.

func (*Binary) WriteToFile

func (b *Binary) WriteToFile(ofile string) error

WriteToFile writes the binary to a file

type CIDRMap

type CIDRMap struct {
	Info CIDRMapInfo
	M    map[IPv4Mask]uint32
}

func NewMockCIDRMap

func NewMockCIDRMap(mapID int) CIDRMap

type CIDRMapInfo

type CIDRMapInfo struct {
	CommonMapInfo

	Family IPFamily
}

type CIDRMapKey

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

func NewCIDRMapKey

func NewCIDRMapKey(n *net.IPNet) CIDRMapKey

func (*CIDRMapKey) ToIPNet

func (k *CIDRMapKey) ToIPNet() *net.IPNet

type CIDRMapsKey

type CIDRMapsKey struct {
	IfName string
	Family IPFamily
}

type CommonMapInfo

type CommonMapInfo struct {
	Id        int
	Type      string
	KeySize   int
	ValueSize int
}

type EPAttachInfo

type EPAttachInfo struct {
	Ingress int
	Egress  int
	XDP     int
	XDPMode string
}

EPAttachInfo tells what programs are attached to an endpoint.

type FailsafeMap

type FailsafeMap struct {
	Info FailsafeMapInfo
	M    map[ProtoPort]struct{} // (protocol, port) set
}

func NewMockFailsafeMap

func NewMockFailsafeMap(mapID int) FailsafeMap

type FailsafeMapInfo

type FailsafeMapInfo struct {
	CommonMapInfo
}

type FindObjectMode

type FindObjectMode uint32
const (
	FindInBPFFSOnly FindObjectMode = 1 << iota
	FindByID
)

type IPFamily

type IPFamily int

XXX maybe use ipsets.IPFamily

const (
	IPFamilyUnknown IPFamily = iota
	IPFamilyV4
	IPFamilyV6
)

func (IPFamily) Size

func (m IPFamily) Size() int

func (IPFamily) String

func (m IPFamily) String() string

type IPv4Mask

type IPv4Mask struct {
	Ip   [4]byte
	Mask int
}

type MockBPFLib

type MockBPFLib struct {
	XDPProgs            map[string]XDPInfo      // iface -> []maps
	CIDRMaps            map[CIDRMapsKey]CIDRMap // iface -> map[ip]refCount
	SockopsProg         *SockopsInfo
	SockMap             *SockMap
	SkMsgProg           *SkMsgInfo
	SockmapEndpointsMap *CIDRMap
	FailsafeMap         FailsafeMap
	CgroupV2Dir         string
	// contains filtered or unexported fields
}

func NewMockBPFLib

func NewMockBPFLib(binDir string) *MockBPFLib

func (*MockBPFLib) AttachToCgroup

func (b *MockBPFLib) AttachToCgroup() error

func (*MockBPFLib) AttachToSockmap

func (b *MockBPFLib) AttachToSockmap() error

func (*MockBPFLib) DetachFromCgroup

func (b *MockBPFLib) DetachFromCgroup(mode FindObjectMode) error

func (*MockBPFLib) DetachFromSockmap

func (b *MockBPFLib) DetachFromSockmap(mode FindObjectMode) error

func (*MockBPFLib) DumpCIDRMap

func (b *MockBPFLib) DumpCIDRMap(ifName string, family IPFamily) (map[CIDRMapKey]uint32, error)

func (*MockBPFLib) DumpFailsafeMap

func (b *MockBPFLib) DumpFailsafeMap() ([]ProtoPort, error)

func (*MockBPFLib) DumpSockmapEndpointsMap

func (b *MockBPFLib) DumpSockmapEndpointsMap(family IPFamily) ([]CIDRMapKey, error)

func (*MockBPFLib) GetBPFCalicoDir

func (b *MockBPFLib) GetBPFCalicoDir() string

func (*MockBPFLib) GetCIDRMapID

func (b *MockBPFLib) GetCIDRMapID(ifName string, family IPFamily) (int, error)

func (*MockBPFLib) GetFailsafeMapID

func (b *MockBPFLib) GetFailsafeMapID() (int, error)

func (*MockBPFLib) GetMapsFromXDP

func (b *MockBPFLib) GetMapsFromXDP(ifName string) ([]int, error)

func (*MockBPFLib) GetXDPID

func (b *MockBPFLib) GetXDPID(ifName string) (int, error)

func (*MockBPFLib) GetXDPIfaces

func (b *MockBPFLib) GetXDPIfaces() ([]string, error)

func (*MockBPFLib) GetXDPMode

func (b *MockBPFLib) GetXDPMode(ifName string) (XDPMode, error)

func (*MockBPFLib) GetXDPObjTag

func (b *MockBPFLib) GetXDPObjTag(objPath string) (tag string, err error)

func (*MockBPFLib) GetXDPObjTagAuto

func (b *MockBPFLib) GetXDPObjTagAuto() (string, error)

func (*MockBPFLib) GetXDPTag

func (b *MockBPFLib) GetXDPTag(ifName string) (string, error)

func (*MockBPFLib) IsValidMap

func (b *MockBPFLib) IsValidMap(ifName string, family IPFamily) (bool, error)

func (*MockBPFLib) ListCIDRMaps

func (b *MockBPFLib) ListCIDRMaps(family IPFamily) ([]string, error)

func (*MockBPFLib) LoadSkMsg

func (b *MockBPFLib) LoadSkMsg(objPath string) error

func (*MockBPFLib) LoadSkMsgAuto

func (b *MockBPFLib) LoadSkMsgAuto() error

func (*MockBPFLib) LoadSockops

func (b *MockBPFLib) LoadSockops(objPath string) error

func (*MockBPFLib) LoadSockopsAuto

func (b *MockBPFLib) LoadSockopsAuto() error

func (*MockBPFLib) LoadXDP

func (b *MockBPFLib) LoadXDP(objPath, ifName string, mode XDPMode) error

func (*MockBPFLib) LoadXDPAuto

func (b *MockBPFLib) LoadXDPAuto(ifName string, mode XDPMode) error

func (*MockBPFLib) LookupCIDRMap

func (b *MockBPFLib) LookupCIDRMap(ifName string, family IPFamily, ip net.IP, mask int) (uint32, error)

func (*MockBPFLib) LookupFailsafeMap

func (b *MockBPFLib) LookupFailsafeMap(proto uint8, port uint16) (bool, error)

func (*MockBPFLib) LookupSockmapEndpointsMap

func (b *MockBPFLib) LookupSockmapEndpointsMap(ip net.IP, mask int) (bool, error)

func (*MockBPFLib) NewCIDRMap

func (b *MockBPFLib) NewCIDRMap(ifName string, family IPFamily) (string, error)

func (*MockBPFLib) NewFailsafeMap

func (b *MockBPFLib) NewFailsafeMap() (string, error)

func (*MockBPFLib) NewSockmap

func (b *MockBPFLib) NewSockmap() (string, error)

func (*MockBPFLib) NewSockmapEndpointsMap

func (b *MockBPFLib) NewSockmapEndpointsMap() (string, error)

func (*MockBPFLib) RemoveCIDRMap

func (b *MockBPFLib) RemoveCIDRMap(ifName string, family IPFamily) error

func (*MockBPFLib) RemoveFailsafeMap

func (b *MockBPFLib) RemoveFailsafeMap() error

func (*MockBPFLib) RemoveItemCIDRMap

func (b *MockBPFLib) RemoveItemCIDRMap(ifName string, family IPFamily, ip net.IP, mask int) error

func (*MockBPFLib) RemoveItemFailsafeMap

func (b *MockBPFLib) RemoveItemFailsafeMap(proto uint8, port uint16) error

func (*MockBPFLib) RemoveItemSockmapEndpointsMap

func (b *MockBPFLib) RemoveItemSockmapEndpointsMap(ip net.IP, mask int) error

func (*MockBPFLib) RemoveSkMsg

func (b *MockBPFLib) RemoveSkMsg() error

func (*MockBPFLib) RemoveSockmap

func (b *MockBPFLib) RemoveSockmap(mode FindObjectMode) error

func (*MockBPFLib) RemoveSockmapEndpointsMap

func (b *MockBPFLib) RemoveSockmapEndpointsMap() error

func (*MockBPFLib) RemoveSockops

func (b *MockBPFLib) RemoveSockops() error

func (*MockBPFLib) RemoveXDP

func (b *MockBPFLib) RemoveXDP(ifName string, mode XDPMode) error

func (*MockBPFLib) UpdateCIDRMap

func (b *MockBPFLib) UpdateCIDRMap(ifName string, family IPFamily, ip net.IP, mask int, refCount uint32) error

func (*MockBPFLib) UpdateFailsafeMap

func (b *MockBPFLib) UpdateFailsafeMap(proto uint8, port uint16) error

func (*MockBPFLib) UpdateSockmapEndpoints

func (b *MockBPFLib) UpdateSockmapEndpoints(ip net.IP, mask int) error

type PolicyDebugInfo

type PolicyDebugInfo struct {
	IfaceName  string    `json:"ifacename"`
	Hook       string    `json:"hook"`
	PolicyInfo asm.Insns `json:"policyInfo"`
	Error      string    `json:"error"`
}

PolicyDebugInfo describes policy debug info

type ProgFD

type ProgFD uint32

func LoadBPFProgramFromInsns

func LoadBPFProgramFromInsns(insns asm.Insns, name, license string, progType uint32) (fd ProgFD, err error)

func (ProgFD) Close

func (f ProgFD) Close() error

func (ProgFD) FD

func (f ProgFD) FD() uint32

type ProgInfo

type ProgInfo struct {
	Name   string      `json:"name"`
	Id     int         `json:"id"`
	Type   BPFProgType `json:"type"`
	Tag    string      `json:"tag"`
	MapIds []int       `json:"map_ids"`
	Err    string      `json:"error"`
}

func GetAllProgs

func GetAllProgs() ([]ProgInfo, error)

func GetProgByID

func GetProgByID(id int) (ProgInfo, error)

type ProgResult

type ProgResult struct {
	RC       int32
	Duration time.Duration
	DataOut  []byte
}

func RunBPFProgram

func RunBPFProgram(fd ProgFD, dataIn []byte, repeat int) (pr ProgResult, err error)

type ProtoPort

type ProtoPort struct {
	Proto labelindex.IPSetPortProtocol
	Port  uint16
}

type SkMsgInfo

type SkMsgInfo struct {
}

type SockMap

type SockMap struct {
	Info SockMapInfo
	M    map[IPv4Mask]uint32
}

func NewMockSockMap

func NewMockSockMap(mapID int) SockMap

type SockMapInfo

type SockMapInfo struct {
	CommonMapInfo

	SkMsg *SkMsgInfo
}

type SockopsInfo

type SockopsInfo struct {
	CgroupPath string
}

type TcList

type TcList []struct {
	DevName string `json:"devname"`
	ID      int    `json:"id"`
	Name    string `json:"name"`
	Kind    string `json:"kind"`
}

type XDPInfo

type XDPInfo struct {
	Id    int
	Maps  []int
	Bytes []byte
	Mode  XDPMode
}

type XDPList

type XDPList []struct {
	DevName string `json:"devname"`
	IfIndex int    `json:"ifindex"`
	Mode    string `json:"mode"`
	ID      int    `json:"id"`
	Name    string `json:"name"`
}

type XDPMode

type XDPMode int
const (
	XDPDriver  XDPMode = unix.XDP_FLAGS_DRV_MODE
	XDPOffload XDPMode = unix.XDP_FLAGS_HW_MODE
	XDPGeneric XDPMode = unix.XDP_FLAGS_SKB_MODE
)

func (XDPMode) String

func (m XDPMode) String() string

Directories

Path Synopsis
Package asm contains a basic eBPF bytecode assembler.
Package asm contains a basic eBPF bytecode assembler.
v2
v3
tc

Jump to

Keyboard shortcuts

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