loader

package
v1.10.3 Latest Latest
Warning

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

Go to latest
Published: Jul 15, 2021 License: Apache-2.0 Imports: 54 Imported by: 17

Documentation

Overview

Package loader provides accessors to compilation and BPF load routines necessary for creating datapath objects and attaching them to links.

Index

Constants

View Source
const (
	SecctxFromIpcacheDisabled = iota + 1
	SecctxFromIpcacheEnabled
)
View Source
const (
	Subsystem = "datapath-loader"
)

Variables

View Source
var (
	// DatapathSHA256 is set during build to the SHA across all datapath BPF
	// code. See the definition of CILIUM_DATAPATH_SHA256 in Makefile.defs for
	// details.
	DatapathSHA256 string
)

Functions

func Compile

func Compile(ctx context.Context, src string, out string) error

Compile compiles a BPF program generating an object file.

func CompileWithOptions

func CompileWithOptions(ctx context.Context, src string, out string, opts []string) error

CompileWithOptions compiles a BPF program generating an object file, using a set of provided compiler options.

func ELFSubstitutions

func ELFSubstitutions(ep datapath.Endpoint) (map[string]uint32, map[string]string)

ELFSubstitutions fetches the set of variable and map substitutions that must be implemented against an ELF template to configure the datapath for the specified endpoint.

func GetBPFCPU

func GetBPFCPU() string

GetBPFCPU returns the BPF CPU for this host.

func NewObjectCache

func NewObjectCache(c datapath.ConfigWriter, nodeCfg *datapath.LocalNodeConfiguration) *objectCache

NewObjectCache creates a new cache for datapath objects, basing the hash upon the configuration of the datapath and the specified node configuration.

func RemoveTCFilters

func RemoveTCFilters(ifName string, tcDir uint32) error

RemoveTCFilters removes all tc filters from the given interface. Direction is passed as netlink.HANDLE_MIN_{INGRESS,EGRESS} via tcDir.

func RestoreTemplates

func RestoreTemplates(stateDir string) error

RestoreTemplates populates the object cache from templates on the filesystem at the specified path.

func SetXDPMode

func SetXDPMode(mode string) error

Types

type Loader

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

Loader is a wrapper structure around operations related to compiling, loading, and reloading datapath programs.

func NewLoader

func NewLoader(canDisableDwarfRelocations bool) *Loader

NewLoader returns a new loader.

func (*Loader) CallsMapPath

func (l *Loader) CallsMapPath(id uint16) string

CallsMapPath gets the BPF Calls Map for the endpoint with the specified ID.

func (*Loader) CompileAndLoad

func (l *Loader) CompileAndLoad(ctx context.Context, ep datapath.Endpoint, stats *metrics.SpanStat) error

CompileAndLoad compiles the BPF datapath programs for the specified endpoint and loads it onto the interface associated with the endpoint.

Expects the caller to have created the directory at the path ep.StateDir().

func (*Loader) CompileOrLoad

func (l *Loader) CompileOrLoad(ctx context.Context, ep datapath.Endpoint, stats *metrics.SpanStat) error

CompileOrLoad loads the BPF datapath programs for the specified endpoint.

In contrast with CompileAndLoad(), it attempts to find a pre-compiled template datapath object to use, to avoid a costly compile operation. Only if there is no existing template that has the same configuration parameters as the specified endpoint, this function will compile a new template for this configuration.

This function will block if the cache does not contain an entry for the same EndpointConfiguration and multiple goroutines attempt to concurrently CompileOrLoad with the same configuration parameters. When the first goroutine completes compilation of the template, all other CompileOrLoad invocations will be released.

func (*Loader) CustomCallsMapPath

func (l *Loader) CustomCallsMapPath(id uint16) string

CustomCallsMapPath gets the BPF Custom Calls Map for the endpoint with the specified ID.

func (*Loader) EndpointHash

func (l *Loader) EndpointHash(cfg datapath.EndpointConfiguration) (string, error)

EndpointHash hashes the specified endpoint configuration with the current datapath hash cache and returns the hash as string.

func (*Loader) Reinitialize

func (l *Loader) Reinitialize(ctx context.Context, o datapath.BaseProgramOwner, deviceMTU int, iptMgr datapath.IptablesManager, p datapath.Proxy) error

Reinitialize (re-)configures the base datapath configuration including global BPF programs, netfilter rule configuration and reserving routes in IPAM for locally detected prefixes. It may be run upon initial Cilium startup, after restore from a previous Cilium run, or during regular Cilium operation.

func (*Loader) ReinitializeXDP

func (l *Loader) ReinitializeXDP(ctx context.Context, o datapath.BaseProgramOwner, extraCArgs []string) error

ReinitializeXDP (re-)configures the XDP datapath only. This includes recompilation and reinsertion of the object into the kernel as well as an atomic program replacement at the XDP hook. extraCArgs can be passed-in in order to alter BPF code defines.

func (*Loader) ReloadDatapath

func (l *Loader) ReloadDatapath(ctx context.Context, ep datapath.Endpoint, stats *metrics.SpanStat) (err error)

ReloadDatapath reloads the BPF datapath pgorams for the specified endpoint.

func (*Loader) Unload

func (l *Loader) Unload(ep datapath.Endpoint)

Unload removes the datapath specific program aspects

type OutputType

type OutputType string

OutputType determines the type to be generated by the compilation steps.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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