router

package
v1.2.7 Latest Latest
Warning

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

Go to latest
Published: Nov 16, 2020 License: BSD-3-Clause Imports: 17 Imported by: 33

Documentation

Overview

Package router presents an interface to manipulate the host network stack's state.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Cleanup added in v1.0.0

func Cleanup(logf logger.Logf, interfaceName string)

Cleanup restores the system network configuration to its original state in case the Tailscale daemon terminated without closing the router. No other state needs to be instantiated before this runs.

Types

type Config

type Config struct {
	LocalAddrs []netaddr.IPPrefix
	Routes     []netaddr.IPPrefix // routes to point into the Tailscale interface

	DNS dns.Config

	SubnetRoutes     []netaddr.IPPrefix // subnets being advertised to other Tailscale nodes
	SNATSubnetRoutes bool               // SNAT traffic to local subnets
	NetfilterMode    NetfilterMode      // how much to manage netfilter rules
}

Config is the subset of Tailscale configuration that is relevant to the OS's network stack.

type NetfilterMode

type NetfilterMode int

NetfilterMode is the firewall management mode to use when programming the Linux network stack.

const (
	NetfilterOff      NetfilterMode = iota // remove all tailscale netfilter state
	NetfilterNoDivert                      // manage tailscale chains, but don't call them
	NetfilterOn                            // manage tailscale chains and call them from main chains
)

func (NetfilterMode) String

func (m NetfilterMode) String() string

type Router

type Router interface {
	// Up brings the router up.
	Up() error

	// Set updates the OS network stack with a new Config. It may be
	// called multiple times with identical Configs, which the
	// implementation should handle gracefully.
	Set(*Config) error

	// Close closes the router.
	Close() error
}

Router is responsible for managing the system network stack.

There is typically only one instance of this interface per process.

func New

func New(logf logger.Logf, wgdev *device.Device, tundev tun.Device) (Router, error)

New returns a new Router for the current platform, using the provided tun device.

func NewFake

func NewFake(logf logger.Logf, _ *device.Device, _ tun.Device) (Router, error)

NewFakeRouter returns a Router that does nothing when called and always returns nil errors.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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