qnetworkinterface_unix.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/network/kernel/qnetworkinterface_unix.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4static QHostAddress addressFromSockaddr(sockaddr *sa, int ifindex = 0, const QString &ifname = QString())-
5{-
6 QHostAddress address;-
7 if (!sa
!saDescription
TRUEevaluated 408 times by 19 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfiguration
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_QXmlStream
  • tst_qtcpsocket - unknown status
FALSEevaluated 3468 times by 19 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfiguration
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_QXmlStream
  • tst_qtcpsocket - unknown status
)
408-3468
8 return
executed 408 times by 19 tests: return address;
Executed by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfiguration
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_QXmlStream
  • tst_qtcpsocket - unknown status
address;
executed 408 times by 19 tests: return address;
Executed by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfiguration
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_QXmlStream
  • tst_qtcpsocket - unknown status
408
9-
10 if (sa->sa_family == 2
sa->sa_family == 2Description
TRUEevaluated 1632 times by 19 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfiguration
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_QXmlStream
  • tst_qtcpsocket - unknown status
FALSEevaluated 1836 times by 19 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfiguration
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_QXmlStream
  • tst_qtcpsocket - unknown status
)
1632-1836
11 address.setAddress(htonl(((sockaddr_in *)sa)->sin_addr.s_addr));
executed 1632 times by 19 tests: address.setAddress(htonl(((sockaddr_in *)sa)->sin_addr.s_addr));
Executed by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfiguration
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_QXmlStream
  • tst_qtcpsocket - unknown status
1632
12 else if (sa->sa_family == 10
sa->sa_family == 10Description
TRUEevaluated 1224 times by 19 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfiguration
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_QXmlStream
  • tst_qtcpsocket - unknown status
FALSEevaluated 612 times by 19 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfiguration
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_QXmlStream
  • tst_qtcpsocket - unknown status
) {
612-1224
13 address.setAddress(((sockaddr_in6 *)sa)->sin6_addr.__in6_u.__u6_addr8);-
14 int scope = ((sockaddr_in6 *)sa)->sin6_scope_id;-
15 if (scope
scopeDescription
TRUEevaluated 408 times by 19 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfiguration
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_QXmlStream
  • tst_qtcpsocket - unknown status
FALSEevaluated 816 times by 19 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfiguration
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_QXmlStream
  • tst_qtcpsocket - unknown status
&& scope == ifindex
scope == ifindexDescription
TRUEevaluated 408 times by 19 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfiguration
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_QXmlStream
  • tst_qtcpsocket - unknown status
FALSEnever evaluated
) {
0-816
16-
17-
18 address.setScopeId(ifname);-
19 }
executed 408 times by 19 tests: end of block
Executed by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfiguration
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_QXmlStream
  • tst_qtcpsocket - unknown status
else if (scope
scopeDescription
TRUEnever evaluated
FALSEevaluated 816 times by 19 tests
Evaluated by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfiguration
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_QXmlStream
  • tst_qtcpsocket - unknown status
) {
0-816
20 char scopeid[16];-
if (::if_indextoname(scope, scopeid)) {
address.setScopeId(QLatin1String(scopeid));
} elseaddress.setScopeId(QStringQNetworkInterfaceManager::number(uintinterfaceNameFromIndex(scope)));));
21 }
never executed: end of block
0
22 }
executed 1224 times by 19 tests: end of block
Executed by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfiguration
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_QXmlStream
  • tst_qtcpsocket - unknown status
1224
23 return
executed 3468 times by 19 tests: return address;
Executed by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfiguration
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_QXmlStream
  • tst_qtcpsocket - unknown status
address;
executed 3468 times by 19 tests: return address;
Executed by:
  • tst_NetworkSelfTest
  • tst_QAbstractNetworkCache
  • tst_QFtp
  • tst_QHostInfo
  • tst_QHttpNetworkConnection
  • tst_QNetworkAccessManager
  • tst_QNetworkAccessManager_And_QProgressDialog
  • tst_QNetworkConfiguration
  • tst_QNetworkConfigurationManager
  • tst_QNetworkDiskCache
  • tst_QNetworkInterface
  • tst_QNetworkProxyFactory
  • tst_QNetworkReply
  • tst_QNetworkSession
  • tst_QTcpServer
  • tst_QUdpSocket
  • tst_QXmlInputSource
  • tst_QXmlStream
  • tst_qtcpsocket - unknown status
3468
24-
25}-
26-
27static QNetworkInterface::InterfaceFlags convertFlags(uint rawFlags)-
28{-
29 QNetworkInterface::InterfaceFlags flags = 0;-
30 flags |= (rawFlags & IFF_UP) ? QNetworkInterface::IsUp : QNetworkInterface::InterfaceFlag(0);-
31 flags |= (rawFlags & IFF_RUNNING) ? QNetworkInterface::IsRunning : QNetworkInterface::InterfaceFlag(0);-
32 flags |= (rawFlags & IFF_BROADCAST) ? QNetworkInterface::CanBroadcast : QNetworkInterface::InterfaceFlag(0);-
33 flags |= (rawFlags & IFF_LOOPBACK) ? QNetworkInterface::IsLoopBack : QNetworkInterface::InterfaceFlag(0);-
34-
35 flags |= (rawFlags & IFF_POINTOPOINT) ? QNetworkInterface::IsPointToPoint : QNetworkInterface::InterfaceFlag(0);-
36-
37-
38-
39 flags |= (rawFlags & IFF_MULTICAST) ? QNetworkInterface::CanMulticast : QNetworkInterface::InterfaceFlag(0);-
40-
41 return flags;-
42}-
43-
44uint QNetworkInterfaceManager::interfaceIndexFromName(const QString &name)-
45{-
46-
47 return
executed 27 times by 3 tests: return ::if_nametoindex(name.toLatin1());
Executed by:
  • tst_QNetworkInterface
  • tst_QTcpServer
  • tst_QUdpSocket
::if_nametoindex(name.toLatin1());
executed 27 times by 3 tests: return ::if_nametoindex(name.toLatin1());
Executed by:
  • tst_QNetworkInterface
  • tst_QTcpServer
  • tst_QUdpSocket
27
48}-
49-
50QString QNetworkInterfaceManager::interfaceNameFromIndex(uint index)-
51{-
52-
53 char buf[16];-
54 if (::
::if_indextoname(index, buf)Description
TRUEevaluated 33 times by 3 tests
Evaluated by:
  • tst_QNetworkInterface
  • tst_QTcpServer
  • tst_QUdpSocket
FALSEnever evaluated
if_indextoname(index, buf)
::if_indextoname(index, buf)Description
TRUEevaluated 33 times by 3 tests
Evaluated by:
  • tst_QNetworkInterface
  • tst_QTcpServer
  • tst_QUdpSocket
FALSEnever evaluated
)
0-33
55 return
executed 33 times by 3 tests: return QString::fromLatin1(buf);
Executed by:
  • tst_QNetworkInterface
  • tst_QTcpServer
  • tst_QUdpSocket
QString::fromLatin1(buf);
executed 33 times by 3 tests: return QString::fromLatin1(buf);
Executed by:
  • tst_QNetworkInterface
  • tst_QTcpServer
  • tst_QUdpSocket
33
56 return
never executed: return QString::number(uint(index));
QString::number(uint(index));
never executed: return QString::number(uint(index));
0
57}-
58-
59-
60-
61-
62-
63-
64-
65static QList<QNetworkInterfacePrivate *> createInterfaces(ifaddrs *rawList)-
66{-
67 QList<QNetworkInterfacePrivate *> interfaces;-
68 QSet<QString> seenInterfaces;-
69 QVarLengthArray<int, 16> seenIndexes;-
70 for (ifaddrs *ptr = rawList; ptr; ptr = ptr->ifa_next) {-
71 if (ptr->ifa_addr && ptr->ifa_addr->sa_family == 17) {-
72 sockaddr_ll *sll = (sockaddr_ll *)ptr->ifa_addr;-
73 QNetworkInterfacePrivate *iface = new QNetworkInterfacePrivate;-
74 interfaces << iface;-
75 iface->index = sll->sll_ifindex;-
76 iface->name = QString::fromLatin1(ptr->ifa_name);-
77 iface->flags = convertFlags(ptr->ifa_flags);-
78 iface->hardwareAddress = iface->makeHwAddress(sll->sll_halen, (uchar*)sll->sll_addr);-
79-
80 ((!(!seenIndexes.contains(iface->index))) ? qt_assert("!seenIndexes.contains(iface->index)",__FILE__,336388) : qt_noop());-
81 seenIndexes.append(iface->index);-
82 seenInterfaces.insert(iface->name);-
83 }-
84 }-
85-
86-
87-
88-
89 for (ifaddrs *ptr = rawList; ptr; ptr = ptr->ifa_next) {-
90 if (!ptr->ifa_addr || ptr->ifa_addr->sa_family != 17) {-
91 QString name = QString::fromLatin1(ptr->ifa_name);-
92 if (seenInterfaces.contains(name))-
93 continue;-
94-
95 int ifindex = if_nametoindex(ptr->ifa_name);-
96 if (seenIndexes.contains(ifindex))-
97 continue;-
98-
99 seenInterfaces.insert(name);-
100 seenIndexes.append(ifindex);-
101-
102 QNetworkInterfacePrivate *iface = new QNetworkInterfacePrivate;-
103 interfaces << iface;-
104 iface->name = name;-
105 iface->flags = convertFlags(ptr->ifa_flags);-
106 iface->index = ifindex;-
107 }-
108 }-
109-
110 return interfaces;-
111}-
112static QList<QNetworkInterfacePrivate *> interfaceListing()-
113{-
114 QList<QNetworkInterfacePrivate *> interfaces;-
115-
116 ifaddrs *interfaceListing;-
117 if (getifaddrs(&interfaceListing) == -1) {-
118-
119 return interfaces;-
120 }-
121-
122 interfaces = createInterfaces(interfaceListing);-
123 for (ifaddrs *ptr = interfaceListing; ptr; ptr = ptr->ifa_next) {-
124-
125 QString name = QString::fromLatin1(ptr->ifa_name);-
126 QNetworkInterfacePrivate *iface = 0;-
127 QList<QNetworkInterfacePrivate *>::Iterator if_it = interfaces.begin();-
128 for ( ; if_it != interfaces.end(); ++if_it)-
129 if ((*if_it)->name == name) {-
130-
131 iface = *if_it;-
132 break;-
133 }-
134-
135 if (!iface) {-
136-
137 int ifindex = if_nametoindex(ptr->ifa_name);-
138 for (if_it = interfaces.begin(); if_it != interfaces.end(); ++if_it)-
139 if ((*if_it)->index == ifindex) {-
140-
141 iface = *if_it;-
142 break;-
143 }-
144 }-
145-
146 if (!iface) {-
147-
148 continue;-
149 }-
150-
151 QNetworkAddressEntry entry;-
152 entry.setIp(addressFromSockaddr(ptr->ifa_addr, iface->index, iface->name));-
153 if (entry.ip().isNull())-
154-
155 continue;-
156-
157 entry.setNetmask(addressFromSockaddr(ptr->ifa_netmask, iface->index, iface->name));-
158 if (iface->flags & QNetworkInterface::CanBroadcast)-
159 entry.setBroadcast(addressFromSockaddr(ptr->ifa_ifu.ifu_broadaddr, iface->index, iface->name));-
160-
161 iface->addressEntries << entry;-
162 }-
163-
164 freeifaddrs(interfaceListing);-
165 return interfaces;-
166}-
167-
168-
169QList<QNetworkInterfacePrivate *> QNetworkInterfaceManager::scan()-
170{-
171 return interfaceListing();-
172}-
173-
174-
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9