QNetworkAddressEntry Class

The QNetworkAddressEntry class stores one IP address supported by a network interface, along with its associated netmask and broadcast address. More...

Header: #include <QNetworkAddressEntry>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network

Note: All functions in this class are reentrant.

Public Types

enum DnsEligibilityStatus { DnsEligibilityUnknown, DnsEligible, DnsIneligible }

Public Functions

QNetworkAddressEntry()
QNetworkAddressEntry(const QNetworkAddressEntry &other)
~QNetworkAddressEntry()
QHostAddress broadcast() const
void clearAddressLifetime()
QNetworkAddressEntry::DnsEligibilityStatus dnsEligibility() const
QHostAddress ip() const
bool isLifetimeKnown() const
bool isPermanent() const
bool isTemporary() const
QHostAddress netmask() const
QDeadlineTimer preferredLifetime() const
int prefixLength() const
void setAddressLifetime(QDeadlineTimer preferred, QDeadlineTimer validity)
void setBroadcast(const QHostAddress &newBroadcast)
void setDnsEligibility(QNetworkAddressEntry::DnsEligibilityStatus status)
void setIp(const QHostAddress &newIp)
void setNetmask(const QHostAddress &newNetmask)
void setPrefixLength(int length)
void swap(QNetworkAddressEntry &other)
QDeadlineTimer validityLifetime() const
bool operator!=(const QNetworkAddressEntry &other) const
QNetworkAddressEntry &operator=(const QNetworkAddressEntry &other)
bool operator==(const QNetworkAddressEntry &other) const
(since 6.2) QDebug operator<<(QDebug debug, const QNetworkAddressEntry &entry)

Detailed Description

Each network interface can contain zero or more IP addresses, which in turn can be associated with a netmask and/or a broadcast address (depending on support from the operating system).

This class represents one such group.

Member Type Documentation

enum QNetworkAddressEntry::DnsEligibilityStatus

This enum indicates whether a given host address is eligible to be published in the Domain Name System (DNS) or other similar name resolution mechanisms. In general, an address is suitable for publication if it is an address this machine will be reached at for an indeterminate amount of time, though it need not be permanent. For example, addresses obtained via DHCP are often eligible, but cryptographically-generated temporary IPv6 addresses are not.

ConstantValueDescription
QNetworkAddressEntry::DnsEligibilityUnknown-1Qt and the operating system could not determine whether this address should be published or not. The application may need to apply further heuristics if it cannot find any eligible addresses.
QNetworkAddressEntry::DnsEligible1This address is eligible for publication in DNS.
QNetworkAddressEntry::DnsIneligible0This address should not be published in DNS and should not be transmitted to other parties, except maybe as the source address of an outgoing packet.

See also dnsEligibility() and setDnsEligibility().

Member Function Documentation

QNetworkAddressEntry::QNetworkAddressEntry()

Constructs an empty QNetworkAddressEntry object.

QNetworkAddressEntry::QNetworkAddressEntry(const QNetworkAddressEntry &other)

Constructs a QNetworkAddressEntry object that is a copy of the object other.

[noexcept] QNetworkAddressEntry::~QNetworkAddressEntry()

Destroys this QNetworkAddressEntry object.

QHostAddress QNetworkAddressEntry::broadcast() const

Returns the broadcast address associated with the IPv4 address and netmask. It can usually be derived from those two by setting to 1 the bits of the IP address where the netmask contains a 0. (In other words, by bitwise-OR'ing the IP address with the inverse of the netmask)

This member is always empty for IPv6 addresses, since the concept of broadcast has been abandoned in that system in favor of multicast. In particular, the group of hosts corresponding to all the nodes in the local network can be reached by the "all-nodes" special multicast group (address FF02::1).

See also setBroadcast().

void QNetworkAddressEntry::clearAddressLifetime()

Resets both the preferred and valid lifetimes for this address. After this call, isLifetimeKnown() will return false.

See also preferredLifetime(), validityLifetime(), isLifetimeKnown(), and setAddressLifetime().

QNetworkAddressEntry::DnsEligibilityStatus QNetworkAddressEntry::dnsEligibility() const

Returns whether this address is eligible for publication in the Domain Name System (DNS) or similar name resolution mechanisms.

In general, an address is suitable for publication if it is an address this machine will be reached at for an indeterminate amount of time, though it need not be permanent. For example, addresses obtained via DHCP are often eligible, but cryptographically-generated temporary IPv6 addresses are not.

On some systems, QNetworkInterface will need to heuristically determine which addresses are eligible.

See also isLifetimeKnown(), isPermanent(), and setDnsEligibility().

QHostAddress QNetworkAddressEntry::ip() const

This function returns one IPv4 or IPv6 address found, that was found in a network interface.

See also setIp().

bool QNetworkAddressEntry::isLifetimeKnown() const

Returns true if the address lifetime is known, false if not. If the lifetime is not known, both preferredLifetime() and validityLifetime() will return QDeadlineTimer::Forever.

See also preferredLifetime(), validityLifetime(), setAddressLifetime(), and clearAddressLifetime().

bool QNetworkAddressEntry::isPermanent() const

Returns true if this address is permanent on this interface, false if it's temporary. A permanent address is one which has no expiration time and is often static (manually configured).

If this information could not be determined, this function returns true.

Note: Depending on the operating system and the networking configuration tool, it is possible for a temporary address to be interpreted as permanent, if the tool did not inform the details correctly to the operating system.

See also isLifetimeKnown(), validityLifetime(), and isTemporary().

bool QNetworkAddressEntry::isTemporary() const

Returns true if this address is temporary on this interface, false if it's permanent.

See also isLifetimeKnown(), validityLifetime(), and isPermanent().

QHostAddress QNetworkAddressEntry::netmask() const

Returns the netmask associated with the IP address. The netmask is expressed in the form of an IP address, such as 255.255.0.0.

For IPv6 addresses, the prefix length is converted to an address where the number of bits set to 1 is equal to the prefix length. For a prefix length of 64 bits (the most common value), the netmask will be expressed as a QHostAddress holding the address FFFF:FFFF:FFFF:FFFF::

See also setNetmask() and prefixLength().

QDeadlineTimer QNetworkAddressEntry::preferredLifetime() const

Returns the deadline when this address becomes deprecated (no longer preferred), if known. If the address lifetime is not known (see isLifetimeKnown()), this function always returns QDeadlineTimer::Forever.

While an address is preferred, it may be used by the operating system as the source address for new, outgoing packets. After it becomes deprecated, it will remain valid for incoming packets for a while longer until finally removed (see validityLifetime()).

See also validityLifetime(), isLifetimeKnown(), setAddressLifetime(), and clearAddressLifetime().

int QNetworkAddressEntry::prefixLength() const

Returns the prefix length of this IP address. The prefix length matches the number of bits set to 1 in the netmask (see netmask()). For IPv4 addresses, the value is between 0 and 32. For IPv6 addresses, it's contained between 0 and 128 and is the preferred form of representing addresses.

This function returns -1 if the prefix length could not be determined (i.e., netmask() returns a null QHostAddress()).

See also setPrefixLength() and netmask().

void QNetworkAddressEntry::setAddressLifetime(QDeadlineTimer preferred, QDeadlineTimer validity)

Sets both the preferred and valid lifetimes for this address to the preferred and validity deadlines, respectively. After this call, isLifetimeKnown() will return true, even if both parameters are QDeadlineTimer::Forever.

See also preferredLifetime(), validityLifetime(), isLifetimeKnown(), and clearAddressLifetime().

void QNetworkAddressEntry::setBroadcast(const QHostAddress &newBroadcast)

Sets the broadcast IP address of this QNetworkAddressEntry object to newBroadcast.

See also broadcast().

void QNetworkAddressEntry::setDnsEligibility(QNetworkAddressEntry::DnsEligibilityStatus status)

Sets the DNS eligibility flag for this address to status.

See also dnsEligibility().

void QNetworkAddressEntry::setIp(const QHostAddress &newIp)

Sets the IP address the QNetworkAddressEntry object contains to newIp.

See also ip().

void QNetworkAddressEntry::setNetmask(const QHostAddress &newNetmask)

Sets the netmask that this QNetworkAddressEntry object contains to newNetmask. Setting the netmask also sets the prefix length to match the new netmask.

See also netmask() and setPrefixLength().

void QNetworkAddressEntry::setPrefixLength(int length)

Sets the prefix length of this IP address to length. The value of length must be valid for this type of IP address: between 0 and 32 for IPv4 addresses, between 0 and 128 for IPv6 addresses. Setting to any invalid value is equivalent to setting to -1, which means "no prefix length".

Setting the prefix length also sets the netmask (see netmask()).

See also prefixLength() and setNetmask().

[noexcept] void QNetworkAddressEntry::swap(QNetworkAddressEntry &other)

Swaps this network address entry instance with other. This operation is very fast and never fails.

QDeadlineTimer QNetworkAddressEntry::validityLifetime() const

Returns the deadline when this address becomes invalid and will be removed from the networking stack, if known. If the address lifetime is not known (see isLifetimeKnown()), this function always returns QDeadlineTimer::Forever.

While an address is valid, it will be accepted by the operating system as a valid destination address for this machine. Whether it is used as a source address for new, outgoing packets is controlled by, among other rules, the preferred lifetime (see preferredLifetime()).

See also preferredLifetime(), isLifetimeKnown(), setAddressLifetime(), and clearAddressLifetime().

bool QNetworkAddressEntry::operator!=(const QNetworkAddressEntry &other) const

Returns true if this network address entry is different from other.

QNetworkAddressEntry &QNetworkAddressEntry::operator=(const QNetworkAddressEntry &other)

Makes a copy of the QNetworkAddressEntry object other.

bool QNetworkAddressEntry::operator==(const QNetworkAddressEntry &other) const

Returns true if this network address entry is the same as other.

Related Non-Members

[since 6.2] QDebug operator<<(QDebug debug, const QNetworkAddressEntry &entry)

Writes the QNetworkAddressEntry entry to the stream and returns a reference to the debug stream.

This function was introduced in Qt 6.2.

© 2024 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.