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 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
pkg netstate, var LoopbackIPv4AddressChooser AddressChooserFunc
