fix(net): Query IP addresses for tun/ tap devices
Before tuntap devices would never call the generic `network::query` method and just return true. Fixes #1986
This commit is contained in:
parent
e43ba9bd3a
commit
0dbcb28a2c
@ -52,11 +52,6 @@ namespace net {
|
|||||||
* Query device driver for information
|
* Query device driver for information
|
||||||
*/
|
*/
|
||||||
bool network::query(bool accumulate) {
|
bool network::query(bool accumulate) {
|
||||||
struct ifaddrs* ifaddr;
|
|
||||||
if (getifaddrs(&ifaddr) == -1 || ifaddr == nullptr) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_status.previous = m_status.current;
|
m_status.previous = m_status.current;
|
||||||
m_status.current.transmitted = 0;
|
m_status.current.transmitted = 0;
|
||||||
m_status.current.received = 0;
|
m_status.current.received = 0;
|
||||||
@ -64,6 +59,11 @@ namespace net {
|
|||||||
m_status.ip = NO_IP;
|
m_status.ip = NO_IP;
|
||||||
m_status.ip6 = NO_IP;
|
m_status.ip6 = NO_IP;
|
||||||
|
|
||||||
|
struct ifaddrs* ifaddr;
|
||||||
|
if (getifaddrs(&ifaddr) == -1 || ifaddr == nullptr) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
for (auto ifa = ifaddr; ifa != nullptr; ifa = ifa->ifa_next) {
|
for (auto ifa = ifaddr; ifa != nullptr; ifa = ifa->ifa_next) {
|
||||||
if (ifa->ifa_addr == nullptr) {
|
if (ifa->ifa_addr == nullptr) {
|
||||||
continue;
|
continue;
|
||||||
@ -248,10 +248,12 @@ namespace net {
|
|||||||
* Query device driver for information
|
* Query device driver for information
|
||||||
*/
|
*/
|
||||||
bool wired_network::query(bool accumulate) {
|
bool wired_network::query(bool accumulate) {
|
||||||
|
if (!network::query(accumulate)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (m_tuntap) {
|
if (m_tuntap) {
|
||||||
return true;
|
return true;
|
||||||
} else if (!network::query(accumulate)) {
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m_bridge) {
|
if(m_bridge) {
|
||||||
|
Loading…
Reference in New Issue
Block a user