Details
Description
The problem is that the Netmask of the network interface is not reported by QNetworkAddressEntry::netmask() when using Android. Also QNetworkAddressEntry::prefixLength() gives a value of -1, indicating error.
The same test program (NetInterfView) works perfect in Linux desktop for booth Qt4.8 and Qt5.1.1.
In Android it fails for Qt5.1.1 both in the emulator and when using a real Nexus7 with Android 4.3.
The test program has been attached, and the main part of it is:
void MainWindow::on_interfButton_clicked() { QString text; QList<QNetworkInterface> intfList = QNetworkInterface::allInterfaces(); int intfListLen = intfList.size(); for (int i = 0; i < intfListLen; ++i) { QNetworkInterface interface = intfList.at(i); QNetworkInterface::InterfaceFlags flags = interface.flags(); if (!flags.testFlag( QNetworkInterface::IsUp) || flags.testFlag( QNetworkInterface::IsPointToPoint)) continue; QList<QNetworkAddressEntry> entries = interface.addressEntries(); int entriesLen = entries.size(); for (int j = 0; j < entriesLen; ++j) { QNetworkAddressEntry entry = entries.at(j); QAbstractSocket::NetworkLayerProtocol prot = entry.ip().protocol(); if ((prot != QAbstractSocket::IPv4Protocol) && (prot != QAbstractSocket::IPv6Protocol)) continue; text += interface.name() + " ip=" + entry.ip().toString() + " mask=" + entry.netmask().toString(); if (entry.prefixLength() < 0) { // TODO MW: This seemes like a bug in android/qt, any workaround? text += " Bad netmask"; } text += "\n\n"; } } ui->textEdit->setPlainText(text); }
Attachments
For Gerrit Dashboard: QTBUG-33911 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
72591,1 | Fix problem with QNetworkAddressEntry returning a invalid netmask. | stable | qt/qtbase | Status: MERGED | +2 | 0 |
77166,1 | Fix problem with QNetworkAddressEntry returning a invalid netmask. | 4.8 | qt/qt | Status: MERGED | +2 | 0 |