From d09450980a7b9a87f1c186100ec2a62b58a5d5c9 Mon Sep 17 00:00:00 2001 From: rklabs Date: Wed, 22 Jul 2015 21:08:40 +0530 Subject: [PATCH 1/3] Incase of tunnel interface(VPN) mac address can be 0 --- src/network_interface.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/network_interface.cpp b/src/network_interface.cpp index 0ec8361..0491c86 100644 --- a/src/network_interface.cpp +++ b/src/network_interface.cpp @@ -224,10 +224,7 @@ NetworkInterface::Info NetworkInterface::info() const { InterfaceInfoCollector collector(&info, iface_id, iface_name.c_str()); info.is_up = false; Utils::generic_iface_loop(collector); - // If we didn't event get the hw address, this went wrong - if(!collector.found_hw) { - throw std::runtime_error("Error looking up interface address"); - } + return info; } From 97e6a99c5e315a04cafe5909dec865bf0e3446eb Mon Sep 17 00:00:00 2001 From: rklabs Date: Wed, 22 Jul 2015 22:06:21 +0530 Subject: [PATCH 2/3] Add additional check for found_ip in case of tunnel interface and then raise exception --- src/network_interface.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/network_interface.cpp b/src/network_interface.cpp index 0491c86..faef5b1 100644 --- a/src/network_interface.cpp +++ b/src/network_interface.cpp @@ -225,6 +225,10 @@ NetworkInterface::Info NetworkInterface::info() const { info.is_up = false; Utils::generic_iface_loop(collector); + if(!collector.found_hw && !collector.found_ip) { + throw std::runtime_error("Error looking up interface address"); + } + return info; } From 9c9994f129248e1cac99df6c13f3f78b2caac3d2 Mon Sep 17 00:00:00 2001 From: rklabs Date: Wed, 22 Jul 2015 22:24:53 +0530 Subject: [PATCH 3/3] Restoring deleted comment --- src/network_interface.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/network_interface.cpp b/src/network_interface.cpp index faef5b1..ab1dc76 100644 --- a/src/network_interface.cpp +++ b/src/network_interface.cpp @@ -224,7 +224,8 @@ NetworkInterface::Info NetworkInterface::info() const { InterfaceInfoCollector collector(&info, iface_id, iface_name.c_str()); info.is_up = false; Utils::generic_iface_loop(collector); - + + // If we didn't even get the hw address or ip address, this went wrong if(!collector.found_hw && !collector.found_ip) { throw std::runtime_error("Error looking up interface address"); }