From c898c633891bbae7d1249f4810ef1ac1c25a1664 Mon Sep 17 00:00:00 2001 From: SoftCoder Date: Thu, 21 Sep 2017 17:46:23 -0700 Subject: [PATCH] - fix find lan games by extra NIC search --- .../sources/platform/posix/socket.cpp | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/source/shared_lib/sources/platform/posix/socket.cpp b/source/shared_lib/sources/platform/posix/socket.cpp index 1e4b044cc..936c42ef1 100644 --- a/source/shared_lib/sources/platform/posix/socket.cpp +++ b/source/shared_lib/sources/platform/posix/socket.cpp @@ -702,6 +702,29 @@ std::vector Socket::getLocalIPAddressList() { #ifndef WIN32 // Now check all linux network devices + + struct ifaddrs *ifap, *ifa; + struct sockaddr_in *sa; + char *addr; + + getifaddrs (&ifap); + for (ifa = ifap; ifa; ifa = ifa->ifa_next) { + if (ifa->ifa_addr->sa_family==AF_INET) { + sa = (struct sockaddr_in *) ifa->ifa_addr; + addr = inet_ntoa(sa->sin_addr); + //printf("Interface: %s\tAddress: %s\n", ifa->ifa_name, addr); + if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] Interface: %s\tAddress: %s\n",__FILE__,__FUNCTION__,__LINE__,addr); + if(strlen(addr) > 0 && + strncmp(addr,"127.",4) != 0 && + strncmp(addr,"0.",2) != 0) { + if(std::find(ipList.begin(),ipList.end(),addr) == ipList.end()) { + ipList.push_back(addr); + } + } + } + } + freeifaddrs(ifap); + //std::vector intfTypes; if(Socket::intfTypes.empty()) { Socket::intfTypes.push_back("lo");