Documentation ¶
Index ¶
- Constants
- Variables
- func IsIPv4(na *appmessage.NetAddress) bool
- func IsLocal(na *appmessage.NetAddress) bool
- func IsRFC1918(na *appmessage.NetAddress) bool
- func IsRFC2544(na *appmessage.NetAddress) bool
- func IsRFC3849(na *appmessage.NetAddress) bool
- func IsRFC3927(na *appmessage.NetAddress) bool
- func IsRFC3964(na *appmessage.NetAddress) bool
- func IsRFC4193(na *appmessage.NetAddress) bool
- func IsRFC4380(na *appmessage.NetAddress) bool
- func IsRFC4843(na *appmessage.NetAddress) bool
- func IsRFC4862(na *appmessage.NetAddress) bool
- func IsRFC5737(na *appmessage.NetAddress) bool
- func IsRFC6052(na *appmessage.NetAddress) bool
- func IsRFC6145(na *appmessage.NetAddress) bool
- func IsRFC6598(na *appmessage.NetAddress) bool
- func IsRoutable(na *appmessage.NetAddress, acceptUnroutable bool) bool
- func IsValid(na *appmessage.NetAddress) bool
- type AddressManager
- func (am *AddressManager) AddAddresses(addresses ...*appmessage.NetAddress) error
- func (am *AddressManager) Addresses() []*appmessage.NetAddress
- func (am *AddressManager) Ban(addressToBan *appmessage.NetAddress) error
- func (am *AddressManager) BestLocalAddress(remoteAddress *appmessage.NetAddress) *appmessage.NetAddress
- func (am *AddressManager) IsBanned(address *appmessage.NetAddress) (bool, error)
- type AddressPriority
- type Config
Constants ¶
const ( // GetAddressesMax is the most addresses that we will send in response // to a getAddress (in practise the most addresses we will return from a // call to AddressCache()). GetAddressesMax = 2500 )
Variables ¶
var ErrAddressNotFound = errors.New("address not found")
ErrAddressNotFound is an error returned from some functions when a given address is not found in the address manager
Functions ¶
func IsIPv4 ¶
func IsIPv4(na *appmessage.NetAddress) bool
IsIPv4 returns whether or not the given address is an IPv4 address.
func IsLocal ¶
func IsLocal(na *appmessage.NetAddress) bool
IsLocal returns whether or not the given address is a local address.
func IsRFC1918 ¶
func IsRFC1918(na *appmessage.NetAddress) bool
IsRFC1918 returns whether or not the passed address is part of the IPv4 private network address space as defined by RFC1918 (10.0.0.0/8, 172.16.0.0/12, or 192.168.0.0/16).
func IsRFC2544 ¶
func IsRFC2544(na *appmessage.NetAddress) bool
IsRFC2544 returns whether or not the passed address is part of the IPv4 address space as defined by RFC2544 (198.18.0.0/15)
func IsRFC3849 ¶
func IsRFC3849(na *appmessage.NetAddress) bool
IsRFC3849 returns whether or not the passed address is part of the IPv6 documentation range as defined by RFC3849 (2001:DB8::/32).
func IsRFC3927 ¶
func IsRFC3927(na *appmessage.NetAddress) bool
IsRFC3927 returns whether or not the passed address is part of the IPv4 autoconfiguration range as defined by RFC3927 (169.254.0.0/16).
func IsRFC3964 ¶
func IsRFC3964(na *appmessage.NetAddress) bool
IsRFC3964 returns whether or not the passed address is part of the IPv6 to IPv4 encapsulation range as defined by RFC3964 (2002::/16).
func IsRFC4193 ¶
func IsRFC4193(na *appmessage.NetAddress) bool
IsRFC4193 returns whether or not the passed address is part of the IPv6 unique local range as defined by RFC4193 (FC00::/7).
func IsRFC4380 ¶
func IsRFC4380(na *appmessage.NetAddress) bool
IsRFC4380 returns whether or not the passed address is part of the IPv6 teredo tunneling over UDP range as defined by RFC4380 (2001::/32).
func IsRFC4843 ¶
func IsRFC4843(na *appmessage.NetAddress) bool
IsRFC4843 returns whether or not the passed address is part of the IPv6 ORCHID range as defined by RFC4843 (2001:10::/28).
func IsRFC4862 ¶
func IsRFC4862(na *appmessage.NetAddress) bool
IsRFC4862 returns whether or not the passed address is part of the IPv6 stateless address autoconfiguration range as defined by RFC4862 (FE80::/64).
func IsRFC5737 ¶
func IsRFC5737(na *appmessage.NetAddress) bool
IsRFC5737 returns whether or not the passed address is part of the IPv4 documentation address space as defined by RFC5737 (192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24)
func IsRFC6052 ¶
func IsRFC6052(na *appmessage.NetAddress) bool
IsRFC6052 returns whether or not the passed address is part of the IPv6 well-known prefix range as defined by RFC6052 (64:FF9B::/96).
func IsRFC6145 ¶
func IsRFC6145(na *appmessage.NetAddress) bool
IsRFC6145 returns whether or not the passed address is part of the IPv6 to IPv4 translated address range as defined by RFC6145 (::FFFF:0:0:0/96).
func IsRFC6598 ¶
func IsRFC6598(na *appmessage.NetAddress) bool
IsRFC6598 returns whether or not the passed address is part of the IPv4 shared address space specified by RFC6598 (100.64.0.0/10)
func IsRoutable ¶
func IsRoutable(na *appmessage.NetAddress, acceptUnroutable bool) bool
func IsValid ¶
func IsValid(na *appmessage.NetAddress) bool
IsValid returns whether or not the passed address is valid. The address is considered invalid under the following circumstances: IPv4: It is either a zero or all bits set address. IPv6: It is either a zero or RFC3849 documentation address.
Types ¶
type AddressManager ¶
type AddressManager struct {
// contains filtered or unexported fields
}
func (*AddressManager) AddAddresses ¶
func (am *AddressManager) AddAddresses(addresses ...*appmessage.NetAddress) error
func (*AddressManager) Addresses ¶
func (am *AddressManager) Addresses() []*appmessage.NetAddress
Addresses returns all addresses
func (*AddressManager) Ban ¶
func (am *AddressManager) Ban(addressToBan *appmessage.NetAddress) error
Ban marks the given address as banned
func (*AddressManager) BestLocalAddress ¶
func (am *AddressManager) BestLocalAddress(remoteAddress *appmessage.NetAddress) *appmessage.NetAddress
BestLocalAddress returns the most appropriate local address to use for the given remote address.
func (*AddressManager) IsBanned ¶
func (am *AddressManager) IsBanned(address *appmessage.NetAddress) (bool, error)
IsBanned returns true if the given address is marked as banned
type AddressPriority ¶
type AddressPriority int
const ( // InterfacePrio signifies the address is on a local interface InterfacePrio AddressPriority = iota // BoundPrio signifies the address has been explicitly bounded to. BoundPrio // UpnpPrio signifies the address was obtained from UPnP. UpnpPrio // HTTPPrio signifies the address was obtained from an external HTTP service. HTTPPrio // ManualPrio signifies the address was provided by --externalip. ManualPrio )
type Config ¶
type Config struct { AcceptUnroutable bool DefaultPort string ExternalIPs []string Listeners []string Lookup func(string) ([]net.IP, error) }
Config is a descriptor which specifies the AddressManager instance configuration.
func NewConfig ¶
func NewConfig(cfg *infraconfig.Config) *Config
NewConfig returns a new address manager Config.