Documentation ¶
Index ¶
- Constants
- Variables
- func MaxPeerAddressPayload(version uint32) uint32
- func ReadPeerAddress(r io.Reader, pver uint32, na *PeerAddress, ts bool) error
- func WritePeerAddress(w io.Writer, pver uint32, na *PeerAddress, ts bool) (err error)
- type AddressPriority
- type HostToNetAddrFunc
- type KnownAddress
- type LocalAddress
- type NATInterface
- type NetAddressManager
- func (addressManager *NetAddressManager) AddAddress(addr, srcAddr *PeerAddress)
- func (addressManager *NetAddressManager) AddAddressByIP(addressIP string) error
- func (addressManager *NetAddressManager) AddLocalAddress(peerAddress *PeerAddress, priority AddressPriority) error
- func (addressManager *NetAddressManager) AddPeerAddresses(addresses []*PeerAddress, srcAddress *PeerAddress)
- func (addressManager *NetAddressManager) AddressCache() []*PeerAddress
- func (addressManager *NetAddressManager) Attempt(peerAddress *PeerAddress)
- func (addressManager *NetAddressManager) Connected(peerAddress *PeerAddress)
- func (addressManager *NetAddressManager) DeserializeNetAddress(addressString string) (*PeerAddress, error)
- func (addressManager *NetAddressManager) GetAddress() *KnownAddress
- func (addressManager *NetAddressManager) GetBestLocalAddress(remoteAddress *PeerAddress) *PeerAddress
- func (addressManager *NetAddressManager) HostToNetAddress(host string, port uint16, servicesFlag protocol.ServiceFlag) (*PeerAddress, error)
- func (addressManager *NetAddressManager) MarkGood(address *PeerAddress)
- func (addressManager *NetAddressManager) NeedMoreAddresses() bool
- func (addressManager *NetAddressManager) Numaddresses() int
- func (addressManager *NetAddressManager) Start()
- func (addressManager *NetAddressManager) Stop() error
- type PeerAddress
- func NewPeerAddress(addr *net.TCPAddr, serviceFlag protocol.ServiceFlag) *PeerAddress
- func NewPeerAddressIPPort(serviceFlag protocol.ServiceFlag, ip net.IP, port uint16) *PeerAddress
- func NewPeerAddressTimestamp(timestamp time.Time, serviceFlag protocol.ServiceFlag, ip net.IP, port uint16) *PeerAddress
- func NewPeerAddressWithNetAddr(address net.Addr, servicesFlag protocol.ServiceFlag) (*PeerAddress, error)
- func (peerAddress *PeerAddress) AddService(serviceFlag protocol.ServiceFlag)
- func (peerAddress *PeerAddress) EqualService(serviceFlag protocol.ServiceFlag) bool
- func (peerAddress *PeerAddress) GroupKey() string
- func (peerAddress *PeerAddress) IPString() string
- func (peerAddress *PeerAddress) IsIPv4() bool
- func (peerAddress *PeerAddress) IsLocal() bool
- func (peerAddress *PeerAddress) IsOnionCatTor() bool
- func (peerAddress *PeerAddress) IsRFC1918() bool
- func (peerAddress *PeerAddress) IsRFC2544() bool
- func (peerAddress *PeerAddress) IsRFC3849() bool
- func (peerAddress *PeerAddress) IsRFC3927() bool
- func (peerAddress *PeerAddress) IsRFC3964() bool
- func (peerAddress *PeerAddress) IsRFC4193() bool
- func (peerAddress *PeerAddress) IsRFC4380() bool
- func (peerAddress *PeerAddress) IsRFC4843() bool
- func (peerAddress *PeerAddress) IsRFC4862() bool
- func (peerAddress *PeerAddress) IsRFC5737() bool
- func (peerAddress *PeerAddress) IsRFC6052() bool
- func (peerAddress *PeerAddress) IsRFC6145() bool
- func (peerAddress *PeerAddress) IsRFC6598() bool
- func (peerAddress *PeerAddress) IsRoutable() bool
- func (peerAddress *PeerAddress) IsValid() bool
- func (peerAddress *PeerAddress) NetAddressKey() string
- type PeerAddressFunc
- type Reachability
- type SerializedAddressManager
- type SerializedKnownAddress
Constants ¶
View Source
const ( BucketCount = 1024 TriedBucketCount = 64 TriedBucketsPeerGroup = 8 NumMissingDays = 30 NumReties = 3 MinBadDays = 7 MaxFailures = 10 BucketsPeerAddress = 8 NewBucketsPeerGroup = 64 NewBucketSize = 64 DumpAddressInterval = time.Minute * 10 SerialisationVersion = 1 NeedAddressThreshold = 1000 AddressPercent = 23 AddressMax = 2500 TriedBucketSize = 256 )
Variables ¶
View Source
var ( // OnionCatNet defines the IPv6 address block used to support Tor. // bitcoind encodes addressManager .onion address as addressManager 16 byte number by decoding the // address prior to the .onion (i.e. the key hash) base32 into a ten // byte number. It then stores the first 6 bytes of the address as // 0xfd, 0x87, 0xd8, 0x7e, 0xeb, 0x43. // // This is the same range used by OnionCat, which is part part of the // RFC4193 unique local IPv6 range. // // In summary the format is: // { magic 6 bytes, 10 bytes base32 decode of key hash } OnionCatNet = ipNet("fd87:d87e:eb43::", 48, 128) // Zero4Net defines the IPv4 address block for address staring with 0 // (0.0.0.0/8). Zero4Net = ipNet("0.0.0.0", 8, 32) // HeNet defines the Hurricane Electric IPv6 address block. HeNet = ipNet("2001:470::", 32, 128) )
Functions ¶
func MaxPeerAddressPayload ¶
func ReadPeerAddress ¶
func WritePeerAddress ¶
Types ¶
type AddressPriority ¶
type AddressPriority int
const ( InterfacePriority AddressPriority = iota BoundPriority UpnpPriority HTTPPriority ManualPriority )
type HostToNetAddrFunc ¶
type HostToNetAddrFunc func(host string, port uint16, serviceFlag protocol.ServiceFlag) (*PeerAddress, error)
type KnownAddress ¶
type KnownAddress struct { NetAddress *PeerAddress SrcAddress *PeerAddress LastAttempt time.Time // contains filtered or unexported fields }
func (*KnownAddress) Chance ¶
func (knownAddress *KnownAddress) Chance() float64
func (*KnownAddress) IsBad ¶
func (knownAddress *KnownAddress) IsBad() bool
type LocalAddress ¶
type LocalAddress struct { PeerAddress *PeerAddress // contains filtered or unexported fields }
type NATInterface ¶
type NetAddressManager ¶
type NetAddressManager struct {
// contains filtered or unexported fields
}
func NewNetAddressManager ¶
func NewNetAddressManager(dataDir string, lookupFunc utils.LookupFunc) *NetAddressManager
func (*NetAddressManager) AddAddress ¶
func (addressManager *NetAddressManager) AddAddress(addr, srcAddr *PeerAddress)
func (*NetAddressManager) AddAddressByIP ¶
func (addressManager *NetAddressManager) AddAddressByIP(addressIP string) error
func (*NetAddressManager) AddLocalAddress ¶
func (addressManager *NetAddressManager) AddLocalAddress(peerAddress *PeerAddress, priority AddressPriority) error
func (*NetAddressManager) AddPeerAddresses ¶
func (addressManager *NetAddressManager) AddPeerAddresses(addresses []*PeerAddress, srcAddress *PeerAddress)
func (*NetAddressManager) AddressCache ¶
func (addressManager *NetAddressManager) AddressCache() []*PeerAddress
func (*NetAddressManager) Attempt ¶
func (addressManager *NetAddressManager) Attempt(peerAddress *PeerAddress)
func (*NetAddressManager) Connected ¶
func (addressManager *NetAddressManager) Connected(peerAddress *PeerAddress)
func (*NetAddressManager) DeserializeNetAddress ¶
func (addressManager *NetAddressManager) DeserializeNetAddress(addressString string) (*PeerAddress, error)
func (*NetAddressManager) GetAddress ¶
func (addressManager *NetAddressManager) GetAddress() *KnownAddress
func (*NetAddressManager) GetBestLocalAddress ¶
func (addressManager *NetAddressManager) GetBestLocalAddress(remoteAddress *PeerAddress) *PeerAddress
func (*NetAddressManager) HostToNetAddress ¶
func (addressManager *NetAddressManager) HostToNetAddress(host string, port uint16, servicesFlag protocol.ServiceFlag) (*PeerAddress, error)
func (*NetAddressManager) MarkGood ¶
func (addressManager *NetAddressManager) MarkGood(address *PeerAddress)
func (*NetAddressManager) NeedMoreAddresses ¶
func (addressManager *NetAddressManager) NeedMoreAddresses() bool
func (*NetAddressManager) Numaddresses ¶
func (addressManager *NetAddressManager) Numaddresses() int
func (*NetAddressManager) Start ¶
func (addressManager *NetAddressManager) Start()
func (*NetAddressManager) Stop ¶
func (addressManager *NetAddressManager) Stop() error
type PeerAddress ¶
type PeerAddress struct { Timestamp time.Time ServicesFlag protocol.ServiceFlag IP net.IP Port uint16 }
func NewPeerAddress ¶
func NewPeerAddress(addr *net.TCPAddr, serviceFlag protocol.ServiceFlag) *PeerAddress
func NewPeerAddressIPPort ¶
func NewPeerAddressIPPort(serviceFlag protocol.ServiceFlag, ip net.IP, port uint16) *PeerAddress
func NewPeerAddressTimestamp ¶
func NewPeerAddressTimestamp(timestamp time.Time, serviceFlag protocol.ServiceFlag, ip net.IP, port uint16) *PeerAddress
func NewPeerAddressWithNetAddr ¶
func NewPeerAddressWithNetAddr(address net.Addr, servicesFlag protocol.ServiceFlag) (*PeerAddress, error)
func (*PeerAddress) AddService ¶
func (peerAddress *PeerAddress) AddService(serviceFlag protocol.ServiceFlag)
func (*PeerAddress) EqualService ¶
func (peerAddress *PeerAddress) EqualService(serviceFlag protocol.ServiceFlag) bool
func (*PeerAddress) GroupKey ¶
func (peerAddress *PeerAddress) GroupKey() string
func (*PeerAddress) IPString ¶
func (peerAddress *PeerAddress) IPString() string
func (*PeerAddress) IsIPv4 ¶
func (peerAddress *PeerAddress) IsIPv4() bool
func (*PeerAddress) IsLocal ¶
func (peerAddress *PeerAddress) IsLocal() bool
func (*PeerAddress) IsOnionCatTor ¶
func (peerAddress *PeerAddress) IsOnionCatTor() bool
IsOnionCatTor returns whether or not the passed address is in the IPv6 range used by bitcoin to support Tor (fd87:d87e:eb43::/48). Note that this range is the same range used by OnionCat, which is part of the RFC4193 unique local IPv6 range.
func (*PeerAddress) IsRFC1918 ¶
func (peerAddress *PeerAddress) IsRFC1918() 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 (*PeerAddress) IsRFC2544 ¶
func (peerAddress *PeerAddress) IsRFC2544() bool
func (*PeerAddress) IsRFC3849 ¶
func (peerAddress *PeerAddress) IsRFC3849() bool
func (*PeerAddress) IsRFC3927 ¶
func (peerAddress *PeerAddress) IsRFC3927() bool
func (*PeerAddress) IsRFC3964 ¶
func (peerAddress *PeerAddress) IsRFC3964() bool
func (*PeerAddress) IsRFC4193 ¶
func (peerAddress *PeerAddress) IsRFC4193() bool
func (*PeerAddress) IsRFC4380 ¶
func (peerAddress *PeerAddress) IsRFC4380() bool
func (*PeerAddress) IsRFC4843 ¶
func (peerAddress *PeerAddress) IsRFC4843() bool
func (*PeerAddress) IsRFC4862 ¶
func (peerAddress *PeerAddress) IsRFC4862() bool
func (*PeerAddress) IsRFC5737 ¶
func (peerAddress *PeerAddress) IsRFC5737() bool
func (*PeerAddress) IsRFC6052 ¶
func (peerAddress *PeerAddress) IsRFC6052() bool
func (*PeerAddress) IsRFC6145 ¶
func (peerAddress *PeerAddress) IsRFC6145() bool
func (*PeerAddress) IsRFC6598 ¶
func (peerAddress *PeerAddress) IsRFC6598() bool
func (*PeerAddress) IsRoutable ¶
func (peerAddress *PeerAddress) IsRoutable() bool
IsRoutable returns whether or not the passed address is routable over the public internet. This is true as long as the address is valid and is not in any reserved ranges.
func (*PeerAddress) IsValid ¶
func (peerAddress *PeerAddress) IsValid() bool
func (*PeerAddress) NetAddressKey ¶
func (peerAddress *PeerAddress) NetAddressKey() string
type PeerAddressFunc ¶
type PeerAddressFunc func(remoteAddr *PeerAddress) *PeerAddress
type Reachability ¶
type Reachability int
const ( Unreachable Reachability = 0 Default Reachability = iota Teredo Ipv6Weak Ipv4 Ipv6Strong Private )
func GetReachabilityFrom ¶
func GetReachabilityFrom(localPeerAddress, remoteAddress *PeerAddress) Reachability
type SerializedAddressManager ¶
type SerializedAddressManager struct { Version int Key [32]byte Addresses []*SerializedKnownAddress NewBuckets [BucketCount][]string TriedBuckets [TriedBucketCount][]string }
Click to show internal directories.
Click to hide internal directories.