[#CAddress] = CAddress :mrdocs: A CService with information about it as peer == Synopsis Declared in `<protocol.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- class CAddress : public xref:CService.adoc[CService] ---- == Base Classes [cols="1,4"] |=== | Name| Description | `xref:CService.adoc[CService]` | A combination of a network address (CNetAddr) and a (TCP) port |=== == Types [cols="1,4"] |=== | Name| Description | xref:CAddress/SerParams.adoc[`SerParams`] | Serialization parameters pairing a network encoding with a target format. |=== == Enums [cols="1,4"] |=== | Name| Description | xref:CNetAddr/BIP155Network.adoc[`BIP155Network`] | BIP155 network ids recognized by this software. | xref:CNetAddr/Encoding.adoc[`Encoding`] | Wire encoding used when (un)serializing an address. | xref:CAddress/Format.adoc[`Format`] | Selects the serialization format used for an address. |=== == Member Functions [cols="1,4"] |=== | Name| Description | xref:CAddress/2constructor-0d.adoc[`CAddress`] [.small]#[constructor]# | Constructors | xref:CNetAddr/GetAddrBytes.adoc[`GetAddrBytes`] | Get the raw address bytes. | xref:CNetAddr/GetIn6Addr.adoc[`GetIn6Addr`] | Fill an in6_addr with this address's IPv6 value. | xref:CNetAddr/GetInAddr.adoc[`GetInAddr`] | Fill an in_addr with this address's IPv4 value. | xref:CService/GetKey.adoc[`GetKey`] | Get a unique key identifying this service (address and port). | xref:CNetAddr/GetLinkedIPv4.adoc[`GetLinkedIPv4`] | For IPv4, mapped IPv4, SIIT translated IPv4, Teredo, 6to4 tunneled addresses, return the relevant IPv4 address as a uint32. | xref:CNetAddr/GetNetClass.adoc[`GetNetClass`] | Get the network class used for grouping this address. | xref:CNetAddr/GetNetwork.adoc[`GetNetwork`] | Get the network this address belongs to. | xref:CService/GetPort.adoc[`GetPort`] | Get the TCP port in host byte order. | xref:CNetAddr/GetReachabilityFrom.adoc[`GetReachabilityFrom`] | Calculate how reachable this address is from a given peer address. | xref:CService/GetSAFamily.adoc[`GetSAFamily`] | Get the address family | xref:CService/GetSockAddr.adoc[`GetSockAddr`] | Fill a sockaddr structure with this service's address and port. | xref:CNetAddr/HasCJDNSPrefix.adoc[`HasCJDNSPrefix`] | Whether the raw address begins with the CJDNS prefix byte. | xref:CNetAddr/HasLinkedIPv4.adoc[`HasLinkedIPv4`] | Whether this address has a linked IPv4 address (see GetLinkedIPv4()). | xref:CNetAddr/IsAddrV1Compatible.adoc[`IsAddrV1Compatible`] | Check if the current object can be serialized in pre‐ADDRv2/BIP155 format. | xref:CNetAddr/IsBindAny.adoc[`IsBindAny`] | Whether this address is the INADDR_ANY / "bind any" wildcard address. | xref:CNetAddr/IsCJDNS.adoc[`IsCJDNS`] | Whether this is a CJDNS address. | xref:CNetAddr/IsHeNet.adoc[`IsHeNet`] | Whether this is an IPv6 Hurricane Electric address (2001:0470::/36). | xref:CNetAddr/IsI2P.adoc[`IsI2P`] | Whether this is an I2P address. | xref:CNetAddr/IsIPv4.adoc[`IsIPv4`] | Whether this is an IPv4 address (::FFFF:0:0/96, 0.0.0.0/0). | xref:CNetAddr/IsIPv6.adoc[`IsIPv6`] | Whether this is a native IPv6 address (not mapped IPv4, not Tor). | xref:CNetAddr/IsInternal.adoc[`IsInternal`] | Whether this is an internal (NET_INTERNAL) address. | xref:CNetAddr/IsLocal.adoc[`IsLocal`] | Whether this is a local (loopback) address. | xref:CNetAddr/IsPrivacyNet.adoc[`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 | xref:CNetAddr/IsRFC1918.adoc[`IsRFC1918`] | Whether this is an IPv4 private‐network address (10/8, 192.168/16, 172.16/12). | xref:CNetAddr/IsRFC2544.adoc[`IsRFC2544`] | Whether this is an IPv4 inter‐network benchmarking address (198.18.0.0/15). | xref:CNetAddr/IsRFC3849.adoc[`IsRFC3849`] | Whether this is an IPv6 documentation address (2001:0DB8::/32). | xref:CNetAddr/IsRFC3927.adoc[`IsRFC3927`] | Whether this is an IPv4 link‐local autoconfig address (169.254.0.0/16). | xref:CNetAddr/IsRFC3964.adoc[`IsRFC3964`] | Whether this is an IPv6 6to4 tunnelling address (2002::/16). | xref:CNetAddr/IsRFC4193.adoc[`IsRFC4193`] | Whether this is an IPv6 unique‐local address (FC00::/7). | xref:CNetAddr/IsRFC4380.adoc[`IsRFC4380`] | Whether this is an IPv6 Teredo tunnelling address (2001::/32). | xref:CNetAddr/IsRFC4843.adoc[`IsRFC4843`] | Whether this is an IPv6 ORCHID (deprecated) address (2001:10::/28). | xref:CNetAddr/IsRFC4862.adoc[`IsRFC4862`] | Whether this is an IPv6 link‐local autoconfig address (FE80::/64). | xref:CNetAddr/IsRFC5737.adoc[`IsRFC5737`] | Whether this is an IPv4 documentation address (192.0.2/24, 198.51.100/24, 203.0.113/24). | xref:CNetAddr/IsRFC6052.adoc[`IsRFC6052`] | Whether this is an IPv6 well‐known prefix for IPv4‐embedded addresses (64:FF9B::/96). | xref:CNetAddr/IsRFC6145.adoc[`IsRFC6145`] | Whether this is an IPv6 IPv4‐translated address (::FFFF:0:0:0/96). | xref:CNetAddr/IsRFC6598.adoc[`IsRFC6598`] | Whether this is an IPv4 ISP‐level NAT (shared) address (100.64.0.0/10). | xref:CNetAddr/IsRFC7343.adoc[`IsRFC7343`] | Whether this is an IPv6 ORCHIDv2 address (2001:20::/28). | xref:CNetAddr/IsRelayable.adoc[`IsRelayable`] | Whether this address should be relayed to other peers even if we can't reach it ourselves. | xref:CNetAddr/IsRoutable.adoc[`IsRoutable`] | Whether this address is publicly routable. | xref:CNetAddr/IsTor.adoc[`IsTor`] | Whether this is a Tor onion address. | xref:CNetAddr/IsValid.adoc[`IsValid`] | Whether this address is valid. | xref:CNetAddr/SetIP.adoc[`SetIP`] | Copy the address value from another CNetAddr. | xref:CNetAddr/SetInternal.adoc[`SetInternal`] | Set this address to an internal address derived from a string or FQDN. | xref:CNetAddr/SetLegacyIPv6.adoc[`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. | xref:CService/SetSockAddr.adoc[`SetSockAddr`] | Set CService from a network sockaddr. | xref:CNetAddr/SetSpecial.adoc[`SetSpecial`] | Parse a Tor or I2P address and set this object to it. | xref:CNetAddr/ToStringAddr.adoc[`ToStringAddr`] | Get the address as a human‐readable string, without a port. | xref:CService/ToStringAddrPort.adoc[`ToStringAddrPort`] | Get a human‐readable representation of the address and port. |=== == Static Member Functions [cols="1,4"] |=== | Name| Description | xref:CAddress/Ser-02f2.adoc[`Ser`] | `Ser` overloads | xref:CAddress/Unser-0a.adoc[`Unser`] | `Unser` overloads |=== == Data Members [cols="1,4"] |=== | Name| Description | xref:CAddress/nServices.adoc[`nServices`] | Serialized as uint64_t in V1, and as CompactSize in V2. | xref:CAddress/nTime.adoc[`nTime`] | Always included in serialization. The behavior is unspecified if the value is not representable as uint32_t. |=== == Static Data Members [cols="1,4"] |=== | Name| Description | xref:CNetAddr/V1.adoc[`V1`] | Serialization parameters for the legacy ADDRv1 encoding. | xref:CAddress/V1_DISK.adoc[`V1_DISK`] | Serialization parameters for the V1 disk format. | xref:CAddress/V1_NETWORK.adoc[`V1_NETWORK`] | Serialization parameters for the V1 network format. | xref:CNetAddr/V2.adoc[`V2`] | Serialization parameters for the BIP155 ADDRv2 encoding. | xref:CAddress/V2_DISK.adoc[`V2_DISK`] | Serialization parameters for the V2 disk format. | xref:CAddress/V2_NETWORK.adoc[`V2_NETWORK`] | Serialization parameters for the V2 network format. |=== == Protected Data Members [cols="1,4"] |=== | Name| Description | xref:CNetAddr/m_addr.adoc[`m_addr`] | Raw representation of the network address. In network byte order (big endian) for IPv4 and IPv6. | xref:CNetAddr/m_net.adoc[`m_net`] | Network to which this address belongs. | xref:CNetAddr/m_scope_id.adoc[`m_scope_id`] | Scope id if scoped/link‐local IPV6 address. See https://tools.ietf.org/html/rfc4007 | xref:CService/port.adoc[`port`] | TCP port number, in host byte order. |=== == Friends [cols="1,4"] |=== | Name| Description | `xref:operator_eq-0c2.adoc[operator==]` | Returns whether two addresses have equal time, service flags, and endpoint. |=== == Non-Member Functions [cols="1,4"] |=== | Name| Description | xref:AddLocal-0ab.adoc[`AddLocal`] | Record a local address that we may advertise, scored by nScore. | xref:AddLocal-0af.adoc[`AddLocal`] | Record a local address (with port) that we may advertise, scored by nScore. | xref:ConnectDirectly-0c.adoc[`ConnectDirectly`] | Create a socket and try to connect to the specified service, using the provided timeout. | xref:ConnectDirectly-0e.adoc[`ConnectDirectly`] | Create a socket and try to connect to the specified service. | xref:IsLocal.adoc[`IsLocal`] | Return whether the given address is one of our known local addresses. | xref:IsProxy.adoc[`IsProxy`] | Check whether an address is one of the configured proxies. | xref:MaybeFlipIPv6toCJDNS.adoc[`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. | xref:NATPMPRequestPortMap.adoc[`NATPMPRequestPortMap`] | Try to open a port using RFC 6886 NAT‐PMP. IPv4 only. | xref:ReadAnchors.adoc[`ReadAnchors`] | Read the anchor IP address database (anchors.dat) | xref:RemoveLocal.adoc[`RemoveLocal`] | Forget a previously recorded local address. | xref:SeenLocal.adoc[`SeenLocal`] | Mark a local address as having been seen, returning whether it was already known. | xref:operator_lt-07a.adoc[`operator<`] | Order two services. | xref:operator_lt-0c.adoc[`operator<`] | Order two addresses. | xref:operator_eq-007e.adoc[`operator==`] | Compare two services for equality. | xref:operator_eq-0d.adoc[`operator==`] | Compare two addresses for equality. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#