pkg netstate, func AddressFromAddr(net.Addr) (Address, error)
pkg netstate, func AddressFromIP(net.IP) (Address, error)
pkg netstate, func AsIP(net.Addr) net.IP
pkg netstate, func AsIPAddr(net.Addr) *net.IPAddr
pkg netstate, func ConvertToAddresses([]net.Addr) AddrList
pkg netstate, func FindAdded(AddrList, AddrList) AddrList
pkg netstate, func FindRemoved(AddrList, AddrList) AddrList
pkg netstate, func GetAccessibleIPs() (AddrList, error)
pkg netstate, func GetAllAddresses() (AddrList, <-chan struct{}, error)
pkg netstate, func GetAllInterfaces() (InterfaceList, error)
pkg netstate, func InvalidateCache()
pkg netstate, func IsAccessibleIP(Address) bool
pkg netstate, func IsDefaultRoute(*netconfig.IPRoute) bool
pkg netstate, func IsGloballyRoutableIP(net.IP) bool
pkg netstate, func IsIPProtocol(string) bool
pkg netstate, func IsLoopbackIP(Address) bool
pkg netstate, func IsOnDefaultRoute(Address) bool
pkg netstate, func IsPublicUnicastIP(Address) bool
pkg netstate, func IsPublicUnicastIPv4(Address) bool
pkg netstate, func IsPublicUnicastIPv6(Address) bool
pkg netstate, func IsUnicastIP(Address) bool
pkg netstate, func IsUnicastIPv4(Address) bool
pkg netstate, func IsUnicastIPv6(Address) bool
pkg netstate, func IsUnspecifiedIP(Address) bool
pkg netstate, func NewNetAddr(string, string) net.Addr
pkg netstate, func PossibleAddresses(string, string, AddressChooser) ([]net.Addr, bool, error)
pkg netstate, func SameMachine(net.Addr) (bool, error)
pkg netstate, func WithIPHost(Address) Address
pkg netstate, func WithIPHostAndPort(Address, string) Address
pkg netstate, method (AddrList) AsNetAddrs() []net.Addr
pkg netstate, method (AddrList) Filter(AddressPredicate) AddrList
pkg netstate, method (AddrList) Map(Mapper) AddrList
pkg netstate, method (AddrList) String() string
pkg netstate, method (AddressChooserFunc) ChooseAddresses(string, []net.Addr) ([]net.Addr, error)
pkg netstate, method (IPRouteList) Filter(RoutePredicate) IPRouteList
pkg netstate, method (IPRouteList) String() string
pkg netstate, method (InterfaceList) String() string
pkg netstate, type AddrList []Address
pkg netstate, type Address interface { DebugString, Interface, Network, String }
pkg netstate, type Address interface, DebugString() string
pkg netstate, type Address interface, Interface() NetworkInterface
pkg netstate, type Address interface, Network() string
pkg netstate, type Address interface, String() string
pkg netstate, type AddressChooser interface { ChooseAddresses }
pkg netstate, type AddressChooser interface, ChooseAddresses(string, []net.Addr) ([]net.Addr, error)
pkg netstate, type AddressChooserFunc func(protocol string, candidates []net.Addr) ([]net.Addr, error)
pkg netstate, type AddressPredicate func(a Address) bool
pkg netstate, type IPNetworkInterface interface { Addrs, Flags, HardwareAddr, IPRoutes, Index, MTU, Name, Networks, String }
pkg netstate, type IPNetworkInterface interface, Addrs() []net.Addr
pkg netstate, type IPNetworkInterface interface, Flags() net.Flags
pkg netstate, type IPNetworkInterface interface, HardwareAddr() net.HardwareAddr
pkg netstate, type IPNetworkInterface interface, IPRoutes() IPRouteList
pkg netstate, type IPNetworkInterface interface, Index() int
pkg netstate, type IPNetworkInterface interface, MTU() int
pkg netstate, type IPNetworkInterface interface, Name() string
pkg netstate, type IPNetworkInterface interface, Networks() []net.Addr
pkg netstate, type IPNetworkInterface interface, String() string
pkg netstate, type IPRouteList []*netconfig.IPRoute
pkg netstate, type InterfaceList []NetworkInterface
pkg netstate, type Mapper func(a Address) Address
pkg netstate, type NetworkInterface interface { Addrs, Flags, HardwareAddr, Index, MTU, Name, Networks, String }
pkg netstate, type NetworkInterface interface, Addrs() []net.Addr
pkg netstate, type NetworkInterface interface, Flags() net.Flags
pkg netstate, type NetworkInterface interface, HardwareAddr() net.HardwareAddr
pkg netstate, type NetworkInterface interface, Index() int
pkg netstate, type NetworkInterface interface, MTU() int
pkg netstate, type NetworkInterface interface, Name() string
pkg netstate, type NetworkInterface interface, Networks() []net.Addr
pkg netstate, type NetworkInterface interface, String() string
pkg netstate, type RoutePredicate func(r *netconfig.IPRoute) bool
pkg netstate, type RouteTable map[int]IPRouteList
pkg netstate, var ErrFailedToFindInterface error
pkg netstate, var ErrFailedToParseIPAddr error
pkg netstate, var ErrNotAnIPProtocol error
pkg netstate, var ErrUnspecifiedIPAddr error
pkg netstate, var ErrUnsupportedProtocol error
