activator

package
v0.12.0 Latest Latest
Warning

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

Go to latest
Published: May 20, 2026 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Overview

Package activator contains a userspace TCP proxy that listens on a random port and loads an eBPF program to intercept and redirect packets destined to the configured ports. The activator accepts the connection, calls onAccept, signals to disable the eBPF redirect and then proxies the initial data to the defined ports as soon as something is listening.

Index

Constants

View Source
const (
	IfaceETH0     = "eth0"
	IfaceLoopback = "lo"
)
View Source
const (
	BPFFSPath = "/sys/fs/bpf"

	SocketTrackerMap     = "socket_tracker"
	PodKubeletAddrsMapv4 = "kubelet_addrs_v4"
	PodKubeletAddrsMapv6 = "kubelet_addrs_v6"

	ManagedByShimSuffix = "_managed_by_shim"
)
View Source
const AttachActivatorFlag = "-zeropod-attach-activator"

Variables

View Source
var (
	ErrMapNotFound = errors.New("bpf map could not be found")
	DefaultIfaces  = []string{IfaceLoopback, IfaceETH0}
)

Functions

func ManagedByShim added in v0.12.0

func ManagedByShim(pid int) bool

ManagedByShim returns true if loading/pinning is managed by the shim itself.

func MapsPath added in v0.2.0

func MapsPath() string

func MountBPFFS added in v0.2.0

func MountBPFFS(path string) error

MountBPFFS executes a bpf mount on the supplied path. It has been adapted by: https://github.com/cilium/cilium/blob/cf3889af46a4058d5e89495d502fc19c10713110/pkg/bpf/bpffs_linux.go#L124

func PinPath added in v0.2.0

func PinPath(pid int) string

func TCXPinned added in v0.12.0

func TCXPinned(pid int, ifaces ...string) bool

TCXPinned returns true if all TCX programs for the pid are pinned.

Types

type BPF added in v0.2.0

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

func InitBPF added in v0.2.0

func InitBPF(pid int, log *slog.Logger, opts ...BPFOpts) (*BPF, error)

func (*BPF) AttachInNetNS added in v0.12.0

func (bpf *BPF) AttachInNetNS(pid int, ifaces ...string) error

func (*BPF) AttachRedirector added in v0.2.0

func (bpf *BPF) AttachRedirector(ifaces ...string) error

func (*BPF) Cleanup added in v0.2.0

func (bpf *BPF) Cleanup() error

type BPFConfig added in v0.9.0

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

type BPFOpts added in v0.9.0

type BPFOpts func(cfg *BPFConfig)

func DisablePinning added in v0.10.0

func DisablePinning() BPFOpts

func OverrideMapSize added in v0.9.0

func OverrideMapSize(mapSizes map[string]uint32) BPFOpts

func ProbeBinaryName added in v0.9.2

func ProbeBinaryName(name string) BPFOpts

func ShimManaged added in v0.12.0

func ShimManaged() BPFOpts

func TrackerIgnoreLocalhost added in v0.9.2

func TrackerIgnoreLocalhost(ignore bool) BPFOpts

type ConnHook added in v0.7.0

type ConnHook func(net.Conn) (conn net.Conn, cont bool, err error)

type NoActivityRecordedErr added in v0.9.0

type NoActivityRecordedErr struct{}

func (NoActivityRecordedErr) Error added in v0.9.0

func (err NoActivityRecordedErr) Error() string

type RestoreHook added in v0.7.0

type RestoreHook func() error

type Server

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

func NewServer

func NewServer(ctx context.Context, nn ns.NetNS) (*Server, error)

func (*Server) AttachExec added in v0.12.0

func (s *Server) AttachExec() error

AttachExec attaches the activator using exec on itself.

func (*Server) DisableRedirects added in v0.1.0

func (s *Server) DisableRedirects() error

func (*Server) LastActivity added in v0.9.0

func (s *Server) LastActivity(port uint16) (time.Time, error)

func (*Server) RedirectPort added in v0.1.0

func (s *Server) RedirectPort(from, to uint16) error

RedirectPort redirects the port from to on ingress and to from on egress.

func (*Server) Reset added in v0.1.0

func (s *Server) Reset() error

func (*Server) SetConnectTimeout added in v0.11.0

func (s *Server) SetConnectTimeout(d time.Duration)

func (*Server) SetPeekBufferSize added in v0.7.0

func (s *Server) SetPeekBufferSize(size int)

func (*Server) SetProxyTimeout added in v0.11.0

func (s *Server) SetProxyTimeout(d time.Duration)

func (*Server) Start

func (s *Server) Start(ctx context.Context, connHook ConnHook, restoreHook RestoreHook, ports ...uint16) error

func (*Server) Started added in v0.2.0

func (s *Server) Started() bool

func (*Server) Stop

func (s *Server) Stop(ctx context.Context)

Jump to

Keyboard shortcuts

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