From c37a58d39c8903c4d571412f64ca0fec7d074792 Mon Sep 17 00:00:00 2001 From: ANR2ME Date: Sat, 29 Jan 2022 05:38:50 +0700 Subject: [PATCH] We might be missing the SIOCGIFADDR --- Common/Net/Resolve.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/Common/Net/Resolve.cpp b/Common/Net/Resolve.cpp index 7b1a28e19f..0e7facd071 100644 --- a/Common/Net/Resolve.cpp +++ b/Common/Net/Resolve.cpp @@ -157,17 +157,30 @@ bool GetIPList(std::vector &IP4s) { return false; } + struct ifreq* item; + struct sockaddr* addr; + for (int i = 0; i < ifc.ifc_len / sizeof(struct ifreq); ++i) { + item = &ifreqs[i]; + addr = &(item->ifr_addr); + + // Get the IP address + r = ioctl(sd, SIOCGIFADDR, item); + if (r != 0) + { + ERROR_LOG(SCENET, "GetIPList failed ioctl/SIOCGIFADDR (i = %i, result = %i, errno = %i)", i, r, errno); + } + if (ifreqs[i].ifr_addr.sa_family == AF_INET) { // is a valid IP4 Address - if (inet_ntop(AF_INET, &((struct sockaddr_in*)&ifreqs[i].ifr_addr)->sin_addr, ipstr, sizeof(ipstr)) != 0) { + if (inet_ntop(AF_INET, &((struct sockaddr_in*)addr)->sin_addr, ipstr, sizeof(ipstr)) != 0) { IP4s.push_back(ipstr); } } /*else if (ifreqs[i].ifr_addr.sa_family == AF_INET6) { // is a valid IP6 Address - if (inet_ntop(AF_INET6, &((struct sockaddr_in6*)&ifreqs[i].ifr_addr)->sin6_addr, ipstr, sizeof(ipstr)) != 0) { + if (inet_ntop(AF_INET6, &((struct sockaddr_in6*)addr)->sin6_addr, ipstr, sizeof(ipstr)) != 0) { IP6s.push_back(ipstr); } }*/