Help us shape the future of Go! Take the 2026 Go Developer Survey

nat

package
v1.37.13 Latest Latest
Warning

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

Go to latest
Published: Sep 26, 2026 License: BSD-3-Clause Imports: 7 Imported by: 1

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.1.1

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

NewPortMapper returns an initialized mapper

func (*Mapper) Map added in v0.1.1

func (m *Mapper) Map(
	intPort uint16,
	extPort uint16,
	desc string,
	ip *utils.Atomic[netip.AddrPort],
	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(intPort, extPort uint16, desc string, duration time.Duration) error
	// Undo a port mapping
	UnmapPort(intPort, extPort uint16) error
	// Return our external IP
	ExternalIP() (netip.Addr, 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.1.1

func GetRouter() Router

GetRouter returns a router on the current network.

func NewNoRouter added in v0.1.1

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