| Line | Source Code | Coverage |
|---|
| 1 | | - |
| 2 | | - |
| 3 | | - |
| 4 | static QHostAddress addressFromSockaddr(sockaddr *sa) | - |
| 5 | { | - |
| 6 | QHostAddress address; | - |
| 7 | if (!sa) evaluated: !sa| yes Evaluation Count:489 | yes Evaluation Count:3912 |
| 489-3912 |
| 8 | return address; executed: return address;Execution Count:489 | 489 |
| 9 | | - |
| 10 | if (sa->sa_family == 2) evaluated: sa->sa_family == 2| yes Evaluation Count:1793 | yes Evaluation Count:2119 |
| 1793-2119 |
| 11 | address.setAddress((__extension__ ({ register unsigned int __v, __x = (((sockaddr_in *)sa)->sin_addr.s_addr); if (__builtin_constant_p (__x)) __v = ((((__x) & 0xff000000) >> 24) | (((__x) & 0x00ff0000) >> 8) | (((__x) & 0x0000ff00) << 8) | (((__x) & 0x000000ff) << 24)); else __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); __v; }))); executed: address.setAddress((__extension__ ({ register unsigned int __v, __x = (((sockaddr_in *)sa)->sin_addr.s_addr); if (__builtin_constant_p (__x)) __v = ((((__x) & 0xff000000) >> 24) | (((__x) & 0x00ff0000) >> 8) | (((__x) & 0x0000ff00) << 8) | (((__x) & 0x000000ff) << 24)); else __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); __v; })));Execution Count:1793 never executed: __v = ((((__x) & 0xff000000) >> 24) | (((__x) & 0x00ff0000) >> 8) | (((__x) & 0x0000ff00) << 8) | (((__x) & 0x000000ff) << 24)); executed: __asm__ ("bswap %0" : "=r" (__v) : "0" (__x));Execution Count:1793 partially evaluated: __builtin_constant_p (__x)| no Evaluation Count:0 | yes Evaluation Count:1793 |
| 0-1793 |
| 12 | else if (sa->sa_family == 10) { evaluated: sa->sa_family == 10| yes Evaluation Count:1304 | yes Evaluation Count:815 |
| 815-1304 |
| 13 | address.setAddress(((sockaddr_in6 *)sa)->sin6_addr.__in6_u.__u6_addr8); | - |
| 14 | int scope = ((sockaddr_in6 *)sa)->sin6_scope_id; | - |
| 15 | if (scope) { evaluated: scope| yes Evaluation Count:489 | yes Evaluation Count:815 |
| 489-815 |
| 16 | | - |
| 17 | char scopeid[16]; | - |
| 18 | if (::if_indextoname(scope, scopeid)) { partially evaluated: ::if_indextoname(scope, scopeid)| yes Evaluation Count:489 | no Evaluation Count:0 |
| 0-489 |
| 19 | address.setScopeId(QLatin1String(scopeid)); | - |
| 20 | } else executed: }Execution Count:489 | 489 |
| 21 | | - |
| 22 | address.setScopeId(QString::number(scope)); never executed: address.setScopeId(QString::number(scope)); | 0 |
| 23 | } | - |
| 24 | } executed: }Execution Count:1304 | 1304 |
| 25 | return address; executed: return address;Execution Count:3912 | 3912 |
| 26 | | - |
| 27 | } | - |
| 28 | | - |
| 29 | static QNetworkInterface::InterfaceFlags convertFlags(uint rawFlags) | - |
| 30 | { | - |
| 31 | QNetworkInterface::InterfaceFlags flags = 0; | - |
| 32 | flags |= (rawFlags & IFF_UP) ? QNetworkInterface::IsUp : QNetworkInterface::InterfaceFlag(0); evaluated: (rawFlags & IFF_UP)| yes Evaluation Count:652 | yes Evaluation Count:163 |
| 163-652 |
| 33 | flags |= (rawFlags & IFF_RUNNING) ? QNetworkInterface::IsRunning : QNetworkInterface::InterfaceFlag(0); evaluated: (rawFlags & IFF_RUNNING)| yes Evaluation Count:652 | yes Evaluation Count:163 |
| 163-652 |
| 34 | flags |= (rawFlags & IFF_BROADCAST) ? QNetworkInterface::CanBroadcast : QNetworkInterface::InterfaceFlag(0); evaluated: (rawFlags & IFF_BROADCAST)| yes Evaluation Count:652 | yes Evaluation Count:163 |
| 163-652 |
| 35 | flags |= (rawFlags & IFF_LOOPBACK) ? QNetworkInterface::IsLoopBack : QNetworkInterface::InterfaceFlag(0); evaluated: (rawFlags & IFF_LOOPBACK)| yes Evaluation Count:163 | yes Evaluation Count:652 |
| 163-652 |
| 36 | | - |
| 37 | flags |= (rawFlags & IFF_POINTOPOINT) ? QNetworkInterface::IsPointToPoint : QNetworkInterface::InterfaceFlag(0); partially evaluated: (rawFlags & IFF_POINTOPOINT)| no Evaluation Count:0 | yes Evaluation Count:815 |
| 0-815 |
| 38 | | - |
| 39 | | - |
| 40 | | - |
| 41 | flags |= (rawFlags & IFF_MULTICAST) ? QNetworkInterface::CanMulticast : QNetworkInterface::InterfaceFlag(0); evaluated: (rawFlags & IFF_MULTICAST)| yes Evaluation Count:652 | yes Evaluation Count:163 |
| 163-652 |
| 42 | | - |
| 43 | return flags; executed: return flags;Execution Count:815 | 815 |
| 44 | } | - |
| 45 | | - |
| 46 | | - |
| 47 | | - |
| 48 | | - |
| 49 | | - |
| 50 | | - |
| 51 | | - |
| 52 | static QList<QNetworkInterfacePrivate *> createInterfaces(ifaddrs *rawList) | - |
| 53 | { | - |
| 54 | QList<QNetworkInterfacePrivate *> interfaces; | - |
| 55 | | - |
| 56 | for (ifaddrs *ptr = rawList; ptr; ptr = ptr->ifa_next) { evaluated: ptr| yes Evaluation Count:2119 | yes Evaluation Count:163 |
| 163-2119 |
| 57 | if ( !ptr->ifa_addr ) partially evaluated: !ptr->ifa_addr| no Evaluation Count:0 | yes Evaluation Count:2119 |
| 0-2119 |
| 58 | continue; never executed: continue; | 0 |
| 59 | | - |
| 60 | | - |
| 61 | int ifindex = if_nametoindex(ptr->ifa_name); | - |
| 62 | | - |
| 63 | | - |
| 64 | QList<QNetworkInterfacePrivate *>::Iterator if_it = interfaces.begin(); | - |
| 65 | for ( ; if_it != interfaces.end(); ++if_it) evaluated: if_it != interfaces.end()| yes Evaluation Count:5542 | yes Evaluation Count:815 |
| 815-5542 |
| 66 | if ((*if_it)->index == ifindex) { evaluated: (*if_it)->index == ifindex| yes Evaluation Count:1304 | yes Evaluation Count:4238 |
| 1304-4238 |
| 67 | | - |
| 68 | if ( ptr->ifa_addr->sa_family == 17 partially evaluated: ptr->ifa_addr->sa_family == 17| no Evaluation Count:0 | yes Evaluation Count:1304 |
| 0-1304 |
| 69 | && (*if_it)->hardwareAddress.isEmpty()) { never evaluated: (*if_it)->hardwareAddress.isEmpty() | 0 |
| 70 | sockaddr_ll *sll = (sockaddr_ll *)ptr->ifa_addr; | - |
| 71 | (*if_it)->hardwareAddress = (*if_it)->makeHwAddress(sll->sll_halen, (uchar*)sll->sll_addr); | - |
| 72 | } | 0 |
| 73 | break; executed: break;Execution Count:1304 | 1304 |
| 74 | } | - |
| 75 | if ( if_it != interfaces.end() ) evaluated: if_it != interfaces.end()| yes Evaluation Count:1304 | yes Evaluation Count:815 |
| 815-1304 |
| 76 | continue; executed: continue;Execution Count:1304 | 1304 |
| 77 | | - |
| 78 | QNetworkInterfacePrivate *iface = new QNetworkInterfacePrivate; | - |
| 79 | interfaces << iface; | - |
| 80 | iface->index = ifindex; | - |
| 81 | iface->name = QString::fromLatin1(ptr->ifa_name); | - |
| 82 | iface->flags = convertFlags(ptr->ifa_flags); | - |
| 83 | | - |
| 84 | if ( ptr->ifa_addr->sa_family == 17 ) { partially evaluated: ptr->ifa_addr->sa_family == 17| yes Evaluation Count:815 | no Evaluation Count:0 |
| 0-815 |
| 85 | sockaddr_ll *sll = (sockaddr_ll *)ptr->ifa_addr; | - |
| 86 | iface->hardwareAddress = iface->makeHwAddress(sll->sll_halen, (uchar*)sll->sll_addr); | - |
| 87 | } executed: }Execution Count:815 | 815 |
| 88 | } executed: }Execution Count:815 | 815 |
| 89 | | - |
| 90 | return interfaces; executed: return interfaces;Execution Count:163 | 163 |
| 91 | } | - |
| 92 | static QList<QNetworkInterfacePrivate *> interfaceListing() | - |
| 93 | { | - |
| 94 | QList<QNetworkInterfacePrivate *> interfaces; | - |
| 95 | | - |
| 96 | int socket; | - |
| 97 | if ((socket = qt_safe_socket(2, SOCK_STREAM, IPPROTO_IP)) == -1) partially evaluated: (socket = qt_safe_socket(2, SOCK_STREAM, IPPROTO_IP)) == -1| no Evaluation Count:0 | yes Evaluation Count:163 |
| 0-163 |
| 98 | return interfaces; never executed: return interfaces; | 0 |
| 99 | | - |
| 100 | ifaddrs *interfaceListing; | - |
| 101 | if (getifaddrs(&interfaceListing) == -1) { partially evaluated: getifaddrs(&interfaceListing) == -1| no Evaluation Count:0 | yes Evaluation Count:163 |
| 0-163 |
| 102 | | - |
| 103 | ::close(socket); | - |
| 104 | return interfaces; never executed: return interfaces; | 0 |
| 105 | } | - |
| 106 | | - |
| 107 | interfaces = createInterfaces(interfaceListing); | - |
| 108 | for (ifaddrs *ptr = interfaceListing; ptr; ptr = ptr->ifa_next) { evaluated: ptr| yes Evaluation Count:2119 | yes Evaluation Count:163 |
| 163-2119 |
| 109 | | - |
| 110 | int ifindex = if_nametoindex(ptr->ifa_name); | - |
| 111 | QNetworkInterfacePrivate *iface = 0; | - |
| 112 | QList<QNetworkInterfacePrivate *>::Iterator if_it = interfaces.begin(); | - |
| 113 | for ( ; if_it != interfaces.end(); ++if_it) partially evaluated: if_it != interfaces.end()| yes Evaluation Count:6357 | no Evaluation Count:0 |
| 0-6357 |
| 114 | if ((*if_it)->index == ifindex) { evaluated: (*if_it)->index == ifindex| yes Evaluation Count:2119 | yes Evaluation Count:4238 |
| 2119-4238 |
| 115 | | - |
| 116 | iface = *if_it; | - |
| 117 | break; executed: break;Execution Count:2119 | 2119 |
| 118 | } | - |
| 119 | if (!iface) { partially evaluated: !iface| no Evaluation Count:0 | yes Evaluation Count:2119 |
| 0-2119 |
| 120 | | - |
| 121 | continue; never executed: continue; | 0 |
| 122 | } | - |
| 123 | | - |
| 124 | QNetworkAddressEntry entry; | - |
| 125 | entry.setIp(addressFromSockaddr(ptr->ifa_addr)); | - |
| 126 | if (entry.ip().isNull()) evaluated: entry.ip().isNull()| yes Evaluation Count:815 | yes Evaluation Count:1304 |
| 815-1304 |
| 127 | | - |
| 128 | continue; executed: continue;Execution Count:815 | 815 |
| 129 | | - |
| 130 | entry.setNetmask(addressFromSockaddr(ptr->ifa_netmask)); | - |
| 131 | if (iface->flags & QNetworkInterface::CanBroadcast) evaluated: iface->flags & QNetworkInterface::CanBroadcast| yes Evaluation Count:978 | yes Evaluation Count:326 |
| 326-978 |
| 132 | entry.setBroadcast(addressFromSockaddr(ptr->ifa_ifu.ifu_broadaddr)); executed: entry.setBroadcast(addressFromSockaddr(ptr->ifa_ifu.ifu_broadaddr));Execution Count:978 | 978 |
| 133 | | - |
| 134 | iface->addressEntries << entry; | - |
| 135 | } executed: }Execution Count:1304 | 1304 |
| 136 | | - |
| 137 | freeifaddrs(interfaceListing); | - |
| 138 | ::close(socket); | - |
| 139 | return interfaces; executed: return interfaces;Execution Count:163 | 163 |
| 140 | } | - |
| 141 | | - |
| 142 | | - |
| 143 | QList<QNetworkInterfacePrivate *> QNetworkInterfaceManager::scan() | - |
| 144 | { | - |
| 145 | return interfaceListing(); executed: return interfaceListing();Execution Count:163 | 163 |
| 146 | } | - |
| 147 | | - |
| 148 | | - |
| 149 | | - |
| | |