Network address.

Synopsis

Declared in <netaddress.h>

class CNetAddr;

Types

Name

Description

SerParams

Serialization parameters selecting the address wire encoding.

Enums

Name

Description

BIP155Network

BIP155 network ids recognized by this software.

Encoding

Wire encoding used when (un)serializing an address.

Member Functions

Name

Description

CNetAddr [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.

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.

GetReachabilityFrom

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

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.

Serialize

Serialize to a stream.

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.

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.

Unserialize

Unserialize from a stream.

Static Data Members

Name

Description

V1

Serialization parameters for the legacy ADDRv1 encoding.

V2

Serialization parameters for the BIP155 ADDRv2 encoding.

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

Friends

Name

Description

CSubNet

A subnet: a network base address together with a netmask.

operator<

Order two addresses.

operator==

Compare two addresses for equality.

Non-Member Functions

Name

Description

AddLocal

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

GetLocalAddresses

Return all local non‐loopback IPv4 and IPv6 network addresses.

IsProxy

Check whether an address is one of the configured proxies.

LookupHost

Resolve a host string to its first corresponding network address.

LookupHost

Resolve a host string to its corresponding network addresses.

NATPMPRequestPortMap

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

QueryDefaultGateway

Query the OS for the default gateway for network. This only makes sense for NET_IPV4 and NET_IPV6. Returns std::nullopt if it cannot be found, or there is no support for this OS.

WrappedGetAddrInfo

Wrapper for getaddrinfo(3). Do not use directly: call Lookup/LookupHost/LookupNumeric/LookupSubNet.

Derived Classes

Name

Description

CService

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

Created with MrDocs