Documentation
¶
Overview ¶
Package interfaces contains helpers for looking up system network interfaces.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ForeachInterfaceAddress ¶
ForeachInterfaceAddress calls fn for each interface's address on the machine.
func HTTPOfListener ¶ added in v0.98.0
HTTPOfListener returns the HTTP address to ln. If the listener is listening on the unspecified address, it it tries to find a reasonable interface address on the machine to use.
func IsTailscaleIP ¶
IsTailscaleIP reports whether ip is an IP in a range used by Tailscale virtual network interfaces.
func LocalAddresses ¶
LocalAddresses returns the machine's IP addresses, separated by whether they're loopback addresses.
Types ¶
type Interface ¶
Interface is a wrapper around Go's net.Interface with some extra methods.
func (Interface) IsLoopback ¶
type State ¶
type State struct {
InterfaceIPs map[string][]netaddr.IP
InterfaceUp map[string]bool
// HaveV6Global is whether this machine has an IPv6 global address
// on some interface.
HaveV6Global bool
// HaveV4 is whether the machine has some non-localhost IPv4 address.
HaveV4 bool
// IsExpensive is whether the current network interface is
// considered "expensive", which currently means LTE/etc
// instead of Wifi. This field is not populated by GetState.
IsExpensive bool
}
State is intended to store the state of the machine's network interfaces, routing table, and other network configuration. For now it's pretty basic.
func GetState ¶
GetState returns the state of all the current machine's network interfaces.
It does not set the returned State.IsExpensive. The caller can populate that.
func (*State) RemoveTailscaleInterfaces ¶
func (s *State) RemoveTailscaleInterfaces()
RemoveTailscaleInterfaces modifes s to remove any interfaces that are owned by this process. (TODO: make this true; currently it makes the Linux-only assumption that the interface is named /^tailscale/)