20static QList<QNetworkInterfacePrivate *> postProcess(QList<QNetworkInterfacePrivate *> list)
30 for (QNetworkInterfacePrivate *iface : list) {
31 for (QNetworkAddressEntry &address : iface->addressEntries) {
32 if (address.ip().protocol() != QAbstractSocket::IPv4Protocol)
35 if (!address.netmask().isNull() && address.broadcast().isNull()) {
36 QHostAddress bcast = address.ip();
37 bcast = QHostAddress(bcast.toIPv4Address() | ~address.netmask().toIPv4Address());
38 address.setBroadcast(bcast);
86 const QList<QNetworkInterfacePrivate *> list = postProcess(scan());
87 QList<QSharedDataPointer<QNetworkInterfacePrivate> > result;
88 result.reserve(list.size());
90 for (QNetworkInterfacePrivate *ptr : list) {
91 if ((ptr->flags & QNetworkInterface::IsUp) == 0) {
93 for (
auto &addr : ptr->addressEntries)
94 addr.setDnsEligibility(QNetworkAddressEntry::DnsIneligible);
97 result << QSharedDataPointer<QNetworkInterfacePrivate>(ptr);
105 const int outLen = qMax(len * 2 + (len - 1) * 1, 0);
106 QString result(outLen, Qt::Uninitialized);
107 QChar *out = result.data();
108 for (
int i = 0; i < len; ++i) {
111 *out++ = QLatin1Char(QtMiscUtils::toHexUpper(data[i] / 16));
112 *out++ = QLatin1Char(QtMiscUtils::toHexUpper(data[i] % 16));
205bool QNetworkAddressEntry::operator==(
const QNetworkAddressEntry &other)
const
207 if (d == other.d)
return true;
208 if (!d || !other.d)
return false;
209 return d->address == other.d->address &&
210 d->netmask == other.d->netmask &&
211 d->broadcast == other.d->broadcast;
866QList<QHostAddress> QNetworkInterface::allAddresses()
868 const QList<QSharedDataPointer<QNetworkInterfacePrivate> > privs = manager()->allInterfaces();
869 QList<QHostAddress> result;
870 for (
const auto &p : privs) {
872 if ((p->flags & QNetworkInterface::IsUp) == 0)
875 for (
const QNetworkAddressEntry &entry : std::as_const(p->addressEntries))
876 result += entry.ip();
885 if (flags & QNetworkInterface::IsUp)
887 if (flags & QNetworkInterface::IsRunning)
888 debug <<
"IsRunning ";
889 if (flags & QNetworkInterface::CanBroadcast)
890 debug <<
"CanBroadcast ";
891 if (flags & QNetworkInterface::IsLoopBack)
892 debug <<
"IsLoopBack ";
893 if (flags & QNetworkInterface::IsPointToPoint)
894 debug <<
"IsPointToPoint ";
895 if (flags & QNetworkInterface::CanMulticast)
896 debug <<
"CanMulticast ";
910 QDebugStateSaver saver(debug);
911 debug.resetFormat().nospace();
912 debug <<
"address = " << entry.ip();
913 if (!entry.netmask().isNull())
914 debug <<
", netmask = " << entry.netmask();
915 if (!entry.broadcast().isNull())
916 debug <<
", broadcast = " << entry.broadcast();
928 QDebugStateSaver saver(debug);
929 debug.resetFormat().nospace();
930 debug <<
"QNetworkInterface(name = " << networkInterface.name()
931 <<
", hardware address = " << networkInterface.hardwareAddress()
933 flagsDebug(debug, networkInterface.flags());
934 debug <<
", entries = " << networkInterface.addressEntries()