From 1b192c2557daeeb0b75c28c168f279e7f170ede9 Mon Sep 17 00:00:00 2001 From: renaud gaudin Date: Sat, 31 May 2014 13:53:46 +0000 Subject: [PATCH] Added 10.0.0.0 private network scheme --- src/common/networkTools.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/common/networkTools.cpp b/src/common/networkTools.cpp index 80375f8e6..c246ffa13 100644 --- a/src/common/networkTools.cpp +++ b/src/common/networkTools.cpp @@ -38,7 +38,7 @@ std::map kiwix::getNetworkInterfaces() { std::endl; return interfaces; } - + int nNumInterfaces = nBytesReturned / sizeof(INTERFACE_INFO); for (int i = 0; i < nNumInterfaces; ++i) { sockaddr_in *pAddress; @@ -47,7 +47,7 @@ std::map kiwix::getNetworkInterfaces() { /* Add to the map */ std::string interfaceName = std::string(inet_ntoa(pAddress->sin_addr)); std::string interfaceIp = std::string(inet_ntoa(pAddress->sin_addr)); - interfaces.insert(std::pair(interfaceName, interfaceIp)); + interfaces.insert(std::pair(interfaceName, interfaceIp)); } #else /* Get Network interfaces information */ @@ -76,9 +76,9 @@ std::map kiwix::getNetworkInterfaces() { std::string interfaceIp = std::string(host); /* Add to the map */ - interfaces.insert(std::pair(interfaceName, interfaceIp)); + interfaces.insert(std::pair(interfaceName, interfaceIp)); - /* some systems have ifr_addr.sa_len and adjust the length that + /* some systems have ifr_addr.sa_len and adjust the length that * way, but not mine. weird */ #ifndef linux len=IFNAMSIZ + ifreq->ifr_addr.sa_len; @@ -107,17 +107,24 @@ std::string kiwix::getBestPublicIp() { } #endif - for(std::map::iterator iter = interfaces.begin(); + for(std::map::iterator iter = interfaces.begin(); iter != interfaces.end(); ++iter) { std::string interfaceIp = iter->second; if (interfaceIp.length() >= 7 && interfaceIp.substr(0, 7) == "192.168") return interfaceIp; } - for(std::map::iterator iter = interfaces.begin(); + for(std::map::iterator iter = interfaces.begin(); iter != interfaces.end(); ++iter) { std::string interfaceIp = iter->second; - if (interfaceIp.length() >= 3 && interfaceIp.substr(0, 3) == "172") + if (interfaceIp.length() >= 7 && interfaceIp.substr(0, 7) == "172.16.") + return interfaceIp; + } + + for(std::map::iterator iter = interfaces.begin(); + iter != interfaces.end(); ++iter) { + std::string interfaceIp = iter->second; + if (interfaceIp.length() >= 3 && interfaceIp.substr(0, 3) == "10.") return interfaceIp; }