A CService with information about it as peer

Synopsis

Declared in <protocol.h>

class CAddress
    : public CService

Base Classes

Name

Description

CService

A combination of a network address (CNetAddr) and a (TCP) port

Types

Name

Description

SerParams

Serialization parameters pairing a network encoding with a target format.

Enums

Name

Description

BIP155Network

BIP155 network ids recognized by this software.

Encoding

Wire encoding used when (un)serializing an address.

Format

Selects the serialization format used for an address.

Member Functions

Name

Description

CAddress [constructor]

Constructors

GetAddrBytes

Get the raw address bytes.

GetIn6Addr

Fill an in6_addr with this address's IPv6 value.

GetInAddr

Fill an in_addr with this address's IPv4 value.

GetKey

Get a unique key identifying this service (address and port).

GetLinkedIPv4

For IPv4, mapped IPv4, SIIT translated IPv4, Teredo, 6to4 tunneled addresses, return the relevant IPv4 address as a uint32.

GetNetClass

Get the network class used for grouping this address.

GetNetwork

Get the network this address belongs to.

GetPort

Get the TCP port in host byte order.

GetReachabilityFrom

Calculate how reachable this address is from a given peer address.

GetSAFamily

Get the address family

GetSockAddr

Fill a sockaddr structure with this service's address and port.

HasCJDNSPrefix

Whether the raw address begins with the CJDNS prefix byte.

HasLinkedIPv4

Whether this address has a linked IPv4 address (see GetLinkedIPv4()).

IsAddrV1Compatible

Check if the current object can be serialized in pre‐ADDRv2/BIP155 format.

IsBindAny

Whether this address is the INADDR_ANY / "bind any" wildcard address.

IsCJDNS

Whether this is a CJDNS address.

IsHeNet

Whether this is an IPv6 Hurricane Electric address (2001:0470::/36).

IsI2P

Whether this is an I2P address.

IsIPv4

Whether this is an IPv4 address (::FFFF:0:0/96, 0.0.0.0/0).

IsIPv6

Whether this is a native IPv6 address (not mapped IPv4, not Tor).

IsInternal

Whether this is an internal (NET_INTERNAL) address.

IsLocal

Whether this is a local (loopback) address.

IsPrivacyNet

Whether this object is a privacy network. TODO: consider adding IsCJDNS() here when more peers adopt CJDNS, see: https://github.com/bitcoin/bitcoin/pull/27411#issuecomment‐1497176155

IsRFC1918

Whether this is an IPv4 private‐network address (10/8, 192.168/16, 172.16/12).

IsRFC2544

Whether this is an IPv4 inter‐network benchmarking address (198.18.0.0/15).

IsRFC3849

Whether this is an IPv6 documentation address (2001:0DB8::/32).

IsRFC3927

Whether this is an IPv4 link‐local autoconfig address (169.254.0.0/16).

IsRFC3964

Whether this is an IPv6 6to4 tunnelling address (2002::/16).

IsRFC4193

Whether this is an IPv6 unique‐local address (FC00::/7).

IsRFC4380

Whether this is an IPv6 Teredo tunnelling address (2001::/32).

IsRFC4843

Whether this is an IPv6 ORCHID (deprecated) address (2001:10::/28).

IsRFC4862

Whether this is an IPv6 link‐local autoconfig address (FE80::/64).

IsRFC5737

Whether this is an IPv4 documentation address (192.0.2/24, 198.51.100/24, 203.0.113/24).

IsRFC6052

Whether this is an IPv6 well‐known prefix for IPv4‐embedded addresses (64:FF9B::/96).

IsRFC6145

Whether this is an IPv6 IPv4‐translated address (::FFFF:0:0:0/96).

IsRFC6598

Whether this is an IPv4 ISP‐level NAT (shared) address (100.64.0.0/10).

IsRFC7343

Whether this is an IPv6 ORCHIDv2 address (2001:20::/28).

IsRelayable

Whether this address should be relayed to other peers even if we can't reach it ourselves.

IsRoutable

Whether this address is publicly routable.

IsTor

Whether this is a Tor onion address.

IsValid

Whether this address is valid.

SetIP

Copy the address value from another CNetAddr.

SetInternal

Set this address to an internal address derived from a string or FQDN.

SetLegacyIPv6

Set from a legacy IPv6 address. Legacy IPv6 address may be a normal IPv6 address, or another address (e.g. IPv4) disguised as IPv6. This encoding is used in the legacy addr encoding.

SetSockAddr

Set CService from a network sockaddr.

SetSpecial

Parse a Tor or I2P address and set this object to it.

ToStringAddr

Get the address as a human‐readable string, without a port.

ToStringAddrPort

Get a human‐readable representation of the address and port.

Static Member Functions

Name

Description

Ser

Ser overloads

Unser

Unser overloads

Data Members

Name

Description

nServices

Serialized as uint64_t in V1, and as CompactSize in V2.

nTime

Always included in serialization. The behavior is unspecified if the value is not representable as uint32_t.

Static Data Members

Name

Description

V1

Serialization parameters for the legacy ADDRv1 encoding.

V1_DISK

Serialization parameters for the V1 disk format.

V1_NETWORK

Serialization parameters for the V1 network format.

V2

Serialization parameters for the BIP155 ADDRv2 encoding.

V2_DISK

Serialization parameters for the V2 disk format.

V2_NETWORK

Serialization parameters for the V2 network format.

Protected Data Members

Name

Description

m_addr

Raw representation of the network address. In network byte order (big endian) for IPv4 and IPv6.

m_net

Network to which this address belongs.

m_scope_id

Scope id if scoped/link‐local IPV6 address. See https://tools.ietf.org/html/rfc4007

port

TCP port number, in host byte order.

Friends

Name

Description

operator==

Returns whether two addresses have equal time, service flags, and endpoint.

Non-Member Functions

Name

Description

AddLocal

Record a local address that we may advertise, scored by nScore.

AddLocal

Record a local address (with port) that we may advertise, scored by nScore.

ConnectDirectly

Create a socket and try to connect to the specified service, using the provided timeout.

ConnectDirectly

Create a socket and try to connect to the specified service.

IsLocal

Return whether the given address is one of our known local addresses.

IsProxy

Check whether an address is one of the configured proxies.

MaybeFlipIPv6toCJDNS

If an IPv6 address belongs to the address range used by the CJDNS network and the CJDNS network is reachable (‐cjdnsreachable config is set), then change the type from NET_IPV6 to NET_CJDNS.

NATPMPRequestPortMap

Try to open a port using RFC 6886 NAT‐PMP. IPv4 only.

ReadAnchors

Read the anchor IP address database (anchors.dat)

RemoveLocal

Forget a previously recorded local address.

SeenLocal

Mark a local address as having been seen, returning whether it was already known.

operator<

Order two services.

operator<

Order two addresses.

operator==

Compare two services for equality.

operator==

Compare two addresses for equality.

Created with MrDocs