routing

package
v0.0.0-...-1e25372 Latest Latest
Warning

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

Go to latest
Published: May 10, 2024 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrLinkLocalNotFound     = errors.New("local link not found")
	ErrSubnetDefaultNotFound = errors.New("default subnet not found")
	ErrSubnetLocalNotFound   = errors.New("local subnet not found")
)
View Source
var (
	ErrVPNLocalGatewayIPNotFound       = errors.New("VPN local gateway IP address not found")
	ErrVPNLocalGatewayIPv6NotSupported = errors.New("VPN local gateway IPv6 address not supported")
)
View Source
var (
	ErrLinkDefaultNotFound = errors.New("default link not found")
)
View Source
var (
	ErrRouteDefaultNotFound = errors.New("default route not found")
)

Functions

func DefaultRoutesInterfaces

func DefaultRoutesInterfaces(defaultRoutes []DefaultRoute) (interfaces []string)

Types

type Addresser

type Addresser interface {
	AddrList(link netlink.Link, family int) (
		addresses []netlink.Addr, err error)
	AddrReplace(link netlink.Link, addr netlink.Addr) error
}

type DefaultRoute

type DefaultRoute struct {
	NetInterface string
	Gateway      netip.Addr
	AssignedIP   netip.Addr
	Family       int
}

func (DefaultRoute) String

func (d DefaultRoute) String() string

type Linker

type Linker interface {
	LinkList() (links []netlink.Link, err error)
	LinkByName(name string) (link netlink.Link, err error)
	LinkByIndex(index int) (link netlink.Link, err error)
	LinkAdd(link netlink.Link) (linkIndex int, err error)
	LinkDel(link netlink.Link) (err error)
	LinkSetUp(link netlink.Link) (linkIndex int, err error)
	LinkSetDown(link netlink.Link) (err error)
}

type LocalNetwork

type LocalNetwork struct {
	IPNet         netip.Prefix
	InterfaceName string
	IP            netip.Addr
}

type Logger

type Logger interface {
	Debug(s string)
	Info(s string)
	Warn(s string)
	Error(s string)
}

type NetLinker

type NetLinker interface {
	Addresser
	Router
	Ruler
	Linker
	IsWireguardSupported() (ok bool, err error)
}

type Router

type Router interface {
	RouteList(family int) (routes []netlink.Route, err error)
	RouteAdd(route netlink.Route) error
	RouteDel(route netlink.Route) error
	RouteReplace(route netlink.Route) error
}

type Routing

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

func New

func New(netLinker NetLinker, logger Logger) *Routing

New creates a new routing instance.

func (*Routing) AddLocalRules

func (r *Routing) AddLocalRules(subnets []LocalNetwork) (err error)

func (*Routing) DefaultRoutes

func (r *Routing) DefaultRoutes() (defaultRoutes []DefaultRoute, err error)

func (*Routing) LocalNetworks

func (r *Routing) LocalNetworks() (localNetworks []LocalNetwork, err error)

func (*Routing) SetOutboundRoutes

func (r *Routing) SetOutboundRoutes(outboundSubnets []netip.Prefix) error

func (*Routing) Setup

func (r *Routing) Setup() (err error)

func (*Routing) TearDown

func (r *Routing) TearDown() error

func (*Routing) VPNLocalGatewayIP

func (r *Routing) VPNLocalGatewayIP(vpnIntf string) (ip netip.Addr, err error)

type Ruler

type Ruler interface {
	RuleList(family int) (rules []netlink.Rule, err error)
	RuleAdd(rule netlink.Rule) error
	RuleDel(rule netlink.Rule) error
}

Jump to

Keyboard shortcuts

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