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, error)
pkg netstate, func GetAllInterfaces() (InterfaceList, error)
pkg netstate, func GetNetState() ([]NetworkInterface, RouteTable, 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 LoopbackIPv4AddressChooser(string, []net.Addr) ([]net.Addr, error)
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 (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 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
