nat

package
v1.7.10-rc.2 Latest Latest
Warning

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

Go to latest
Published: Apr 10, 2022 License: BSD-3-Clause Imports: 13 Imported by: 14

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Mapper

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

Mapper attempts to open a set of ports on a router

func NewPortMapper added in v0.8.0

func NewPortMapper(log logging.Logger, r Router) Mapper

NewPortMapper returns an initialized mapper

func (*Mapper) Map added in v0.8.0

func (m *Mapper) Map(protocol string, intPort, extPort uint16, desc string, ip *utils.DynamicIPDesc, updateTime time.Duration)

Map external port [extPort] (exposed to the internet) to internal port [intPort] (where our process is listening) and set [ip]. Does this every [updateTime]. [ip] may be nil.

func (*Mapper) UnmapAllPorts

func (m *Mapper) UnmapAllPorts()

UnmapAllPorts stops mapping all ports from this mapper and attempts to unmap them.

type Router

type Router interface {
	// True iff this router supports NAT
	SupportsNAT() bool
	// Map external port [extPort] to internal port [intPort] for [duration]
	MapPort(protocol string, intPort, extPort uint16, desc string, duration time.Duration) error
	// Undo a port mapping
	UnmapPort(protocol string, intPort, extPort uint16) error
	// Return our external IP
	ExternalIP() (net.IP, error)
}

Router describes the functionality that a network device must support to be able to open ports to an external IP.

func GetRouter added in v0.8.0

func GetRouter() Router

GetRouter returns a router on the current network.

func NewNoRouter added in v0.8.0

func NewNoRouter() Router

NewNoRouter returns a router that assumes the network is public

Jump to

Keyboard shortcuts

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