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;
861QList<QHostAddress> QNetworkInterface::allAddresses()
863 const QList<QSharedDataPointer<QNetworkInterfacePrivate> > privs = manager()->allInterfaces();
864 QList<QHostAddress> result;
865 for (
const auto &p : privs) {
867 if ((p->flags & QNetworkInterface::IsUp) == 0)
870 for (
const QNetworkAddressEntry &entry : std::as_const(p->addressEntries))
871 result += entry.ip();
880 if (flags & QNetworkInterface::IsUp)
882 if (flags & QNetworkInterface::IsRunning)
883 debug <<
"IsRunning ";
884 if (flags & QNetworkInterface::CanBroadcast)
885 debug <<
"CanBroadcast ";
886 if (flags & QNetworkInterface::IsLoopBack)
887 debug <<
"IsLoopBack ";
888 if (flags & QNetworkInterface::IsPointToPoint)
889 debug <<
"IsPointToPoint ";
890 if (flags & QNetworkInterface::CanMulticast)
891 debug <<
"CanMulticast ";
905 QDebugStateSaver saver(debug);
906 debug.resetFormat().nospace();
907 debug <<
"address = " << entry.ip();
908 if (!entry.netmask().isNull())
909 debug <<
", netmask = " << entry.netmask();
910 if (!entry.broadcast().isNull())
911 debug <<
", broadcast = " << entry.broadcast();
923 QDebugStateSaver saver(debug);
924 debug.resetFormat().nospace();
925 debug <<
"QNetworkInterface(name = " << networkInterface.name()
926 <<
", hardware address = " << networkInterface.hardwareAddress()
928 flagsDebug(debug, networkInterface.flags());
929 debug <<
", entries = " << networkInterface.addressEntries()