diff options
Diffstat (limited to 'drivers/unix/ip_unix.cpp')
-rw-r--r-- | drivers/unix/ip_unix.cpp | 65 |
1 files changed, 18 insertions, 47 deletions
diff --git a/drivers/unix/ip_unix.cpp b/drivers/unix/ip_unix.cpp index ec60d9e91a..5987c1675d 100644 --- a/drivers/unix/ip_unix.cpp +++ b/drivers/unix/ip_unix.cpp @@ -32,19 +32,21 @@ #if defined(UNIX_ENABLED) || defined(WINDOWS_ENABLED) -#include <string.h> - #ifdef WINDOWS_ENABLED -#include <stdio.h> + #define WIN32_LEAN_AND_MEAN #include <windows.h> #include <winsock2.h> #include <ws2tcpip.h> -#ifndef UWP_ENABLED + #include <iphlpapi.h> -#endif + +#include <stdio.h> + #else // UNIX + #include <netdb.h> + #ifdef ANDROID_ENABLED // We could drop this file once we up our API level to 24, // where the NDK's ifaddrs.h supports to needed getifaddrs. @@ -55,13 +57,19 @@ #endif #include <ifaddrs.h> #endif + #include <arpa/inet.h> #include <sys/socket.h> + #ifdef __FreeBSD__ #include <netinet/in.h> #endif -#include <net/if.h> // Order is important on OpenBSD, leave as last -#endif + +#include <net/if.h> // Order is important on OpenBSD, leave as last. + +#endif // UNIX + +#include <string.h> static IPAddress _sockaddr2ip(struct sockaddr *p_addr) { IPAddress ip; @@ -126,42 +134,6 @@ void IPUnix::_resolve_hostname(List<IPAddress> &r_addresses, const String &p_hos #if defined(WINDOWS_ENABLED) -#if defined(UWP_ENABLED) - -void IPUnix::get_local_interfaces(HashMap<String, Interface_Info> *r_interfaces) const { - using namespace Windows::Networking; - using namespace Windows::Networking::Connectivity; - - // Returns addresses, not interfaces. - auto hostnames = NetworkInformation::GetHostNames(); - - for (int i = 0; i < hostnames->Size; i++) { - auto hostname = hostnames->GetAt(i); - - if (hostname->Type != HostNameType::Ipv4 && hostname->Type != HostNameType::Ipv6) { - continue; - } - - String name = hostname->RawName->Data(); - HashMap<String, Interface_Info>::Element *E = r_interfaces->find(name); - if (!E) { - Interface_Info info; - info.name = name; - info.name_friendly = hostname->DisplayName->Data(); - info.index = String::num_uint64(0); - E = r_interfaces->insert(name, info); - ERR_CONTINUE(!E); - } - - Interface_Info &info = E->get(); - - IPAddress ip = IPAddress(hostname->CanonicalName->Data()); - info.ip_addresses.push_front(ip); - } -} - -#else - void IPUnix::get_local_interfaces(HashMap<String, Interface_Info> *r_interfaces) const { ULONG buf_size = 1024; IP_ADAPTER_ADDRESSES *addrs; @@ -208,8 +180,6 @@ void IPUnix::get_local_interfaces(HashMap<String, Interface_Info> *r_interfaces) memfree(addrs); } -#endif - #else // UNIX void IPUnix::get_local_interfaces(HashMap<String, Interface_Info> *r_interfaces) const { @@ -248,7 +218,8 @@ void IPUnix::get_local_interfaces(HashMap<String, Interface_Info> *r_interfaces) freeifaddrs(ifAddrStruct); } } -#endif + +#endif // UNIX void IPUnix::make_default() { _create = _create_unix; @@ -261,4 +232,4 @@ IP *IPUnix::_create_unix() { IPUnix::IPUnix() { } -#endif +#endif // UNIX_ENABLED || WINDOWS_ENABLED |