mirror of
https://github.com/pocoproject/poco.git
synced 2025-10-24 09:12:28 +02:00
GH #147: NetworkInterface (linux): MAC address not always available
This commit is contained in:
@@ -1277,7 +1277,7 @@ NetworkInterface::Map NetworkInterface::map(bool ipOnly, bool upOnly)
|
||||
ifIndex = sdl->sdl_index;
|
||||
intf = NetworkInterface(ifIndex);
|
||||
setInterfaceParams(currIface, intf.impl());
|
||||
if ((result.find(ifIndex) == result.end()) && ((upOnly && intf.isUp()) || !upOnly) && !ipOnly)
|
||||
if ((result.find(ifIndex) == result.end()) && ((upOnly && intf.isUp()) || !upOnly))
|
||||
ifIt = result.insert(Map::value_type(ifIndex, intf)).first;
|
||||
break;
|
||||
}
|
||||
@@ -1340,6 +1340,18 @@ NetworkInterface::Map NetworkInterface::map(bool ipOnly, bool upOnly)
|
||||
}
|
||||
if (ifaces) freeifaddrs(ifaces);
|
||||
|
||||
if (ipOnly)
|
||||
{
|
||||
Map::iterator it = result.begin();
|
||||
Map::iterator end = result.end();
|
||||
for (; it != end;)
|
||||
{
|
||||
if (!it->second.supportsIPv4() && !it->second.supportsIPv6())
|
||||
result.erase(it++);
|
||||
else ++it;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -1437,7 +1449,7 @@ NetworkInterface::Map NetworkInterface::map(bool ipOnly, bool upOnly)
|
||||
intf = NetworkInterface(ifIndex);
|
||||
setInterfaceParams(iface, intf.impl());
|
||||
|
||||
if ((result.find(ifIndex) == result.end()) && ((upOnly && intf.isUp()) || !upOnly) && !ipOnly)
|
||||
if ((result.find(ifIndex) == result.end()) && ((upOnly && intf.isUp()) || !upOnly))
|
||||
ifIt = result.insert(Map::value_type(ifIndex, intf)).first;
|
||||
|
||||
break;
|
||||
@@ -1505,6 +1517,18 @@ NetworkInterface::Map NetworkInterface::map(bool ipOnly, bool upOnly)
|
||||
|
||||
if (ifaces) freeifaddrs(ifaces);
|
||||
|
||||
if (ipOnly)
|
||||
{
|
||||
Map::iterator it = result.begin();
|
||||
Map::iterator end = result.end();
|
||||
for (; it != end;)
|
||||
{
|
||||
if (!it->second.supportsIPv4() && !it->second.supportsIPv6())
|
||||
result.erase(it++);
|
||||
else ++it;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
#else
|
||||
throw Poco::NotImplementedException("Not implemented in Android");
|
||||
|
||||
Reference in New Issue
Block a user