routemanager

package
v0.27.4 Latest Latest
Warning

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

Go to latest
Published: Apr 29, 2024 License: BSD-3-Clause Imports: 27 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// NetbirdVPNTableID is the ID of the custom routing table used by Netbird.
	NetbirdVPNTableID = 0x1BD0
	// NetbirdVPNTableName is the name of the custom routing table used by Netbird.
	NetbirdVPNTableName = "netbird"
)

Variables

View Source
var ErrRouteNotAllowed = errors.New("route not allowed")
View Source
var ErrRouteNotFound = errors.New("route not found")
View Source
var ErrTableIDExists = errors.New("ID exists with different name")

Functions

This section is empty.

Types

type AddRouteFunc added in v0.27.0

type AddRouteFunc func(prefix netip.Prefix) (nexthop netip.Addr, intf *net.Interface, err error)

type DefaultManager

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

DefaultManager is the default instance of a route manager

func NewManager

func NewManager(ctx context.Context, pubKey string, wgInterface *iface.WGIface, statusRecorder *peer.Status, initialRoutes []*route.Route) *DefaultManager

func (*DefaultManager) EnableServerRouter added in v0.24.4

func (m *DefaultManager) EnableServerRouter(firewall firewall.Manager) error

func (*DefaultManager) GetClientRoutes added in v0.27.4

func (m *DefaultManager) GetClientRoutes() map[string]*clientNetwork

GetClientRoutes returns the client routes

func (*DefaultManager) GetRouteSelector added in v0.27.4

func (m *DefaultManager) GetRouteSelector() *routeselector.RouteSelector

GetRouteSelector returns the route selector

func (*DefaultManager) Init added in v0.26.4

Init sets up the routing

func (*DefaultManager) InitialRouteRange added in v0.21.2

func (m *DefaultManager) InitialRouteRange() []string

InitialRouteRange return the list of initial routes. It used by mobile systems

func (*DefaultManager) SetRouteChangeListener added in v0.21.0

func (m *DefaultManager) SetRouteChangeListener(listener listener.NetworkChangeListener)

SetRouteChangeListener set RouteListener for route change notifier

func (*DefaultManager) Stop

func (m *DefaultManager) Stop()

Stop stops the manager watchers and clean firewall rules

func (*DefaultManager) TriggerSelection added in v0.27.4

func (m *DefaultManager) TriggerSelection(networks map[string][]*route.Route)

TriggerSelection triggers the selection of routes, stopping deselected watchers and starting newly selected ones

func (*DefaultManager) UpdateRoutes

func (m *DefaultManager) UpdateRoutes(updateSerial uint64, newRoutes []*route.Route) (map[string]*route.Route, map[string][]*route.Route, error)

UpdateRoutes compares received routes with existing routes and removes, updates or adds them to the client and server maps

type Manager

type Manager interface {
	Init() (peer.BeforeAddPeerHookFunc, peer.AfterRemovePeerHookFunc, error)
	UpdateRoutes(updateSerial uint64, newRoutes []*route.Route) (map[string]*route.Route, map[string][]*route.Route, error)
	TriggerSelection(map[string][]*route.Route)
	GetRouteSelector() *routeselector.RouteSelector
	SetRouteChangeListener(listener listener.NetworkChangeListener)
	InitialRouteRange() []string
	EnableServerRouter(firewall firewall.Manager) error
	Stop()
}

Manager is a route manager interface

type MockManager

type MockManager struct {
	UpdateRoutesFunc     func(updateSerial uint64, newRoutes []*route.Route) (map[string]*route.Route, map[string][]*route.Route, error)
	TriggerSelectionFunc func(map[string][]*route.Route)
	GetRouteSelectorFunc func() *routeselector.RouteSelector
	StopFunc             func()
}

MockManager is the mock instance of a route manager

func (*MockManager) EnableServerRouter added in v0.24.4

func (m *MockManager) EnableServerRouter(firewall firewall.Manager) error

func (*MockManager) GetRouteSelector added in v0.27.4

func (m *MockManager) GetRouteSelector() *routeselector.RouteSelector

GetRouteSelector mock implementation of GetRouteSelector from Manager interface

func (*MockManager) Init added in v0.26.4

func (*MockManager) InitialRouteRange added in v0.21.2

func (m *MockManager) InitialRouteRange() []string

InitialRouteRange mock implementation of InitialRouteRange from Manager interface

func (*MockManager) SetRouteChangeListener added in v0.21.0

func (m *MockManager) SetRouteChangeListener(listener listener.NetworkChangeListener)

SetRouteChangeListener mock implementation of SetRouteChangeListener from Manager interface

func (*MockManager) Start added in v0.21.0

func (m *MockManager) Start(ctx context.Context, iface *iface.WGIface)

Start mock implementation of Start from Manager interface

func (*MockManager) Stop

func (m *MockManager) Stop()

Stop mock implementation of Stop from Manager interface

func (*MockManager) TriggerSelection added in v0.27.4

func (m *MockManager) TriggerSelection(networks map[string][]*route.Route)

func (*MockManager) UpdateRoutes

func (m *MockManager) UpdateRoutes(updateSerial uint64, newRoutes []*route.Route) (map[string]*route.Route, map[string][]*route.Route, error)

UpdateRoutes mock implementation of UpdateRoutes from Manager interface

type RemoveRouteFunc added in v0.27.0

type RemoveRouteFunc func(prefix netip.Prefix, nexthop netip.Addr, intf *net.Interface) error

type RouteManager added in v0.27.0

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

func NewRouteManager added in v0.27.0

func NewRouteManager(addRoute AddRouteFunc, removeRoute RemoveRouteFunc) *RouteManager

func (*RouteManager) AddRouteRef added in v0.27.0

func (rm *RouteManager) AddRouteRef(connID nbnet.ConnectionID, prefix netip.Prefix) error

func (*RouteManager) Flush added in v0.27.0

func (rm *RouteManager) Flush() error

Flush removes all references and routes from the system

func (*RouteManager) RemoveRouteRef added in v0.27.0

func (rm *RouteManager) RemoveRouteRef(connID nbnet.ConnectionID) error

Jump to

Keyboard shortcuts

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