diff options
Diffstat (limited to 'net/base')
-rw-r--r-- | net/base/net_util.cc | 17 | ||||
-rw-r--r-- | net/base/net_util.h | 4 |
2 files changed, 20 insertions, 1 deletions
diff --git a/net/base/net_util.cc b/net/base/net_util.cc index 3694ea8..b08dbfa 100644 --- a/net/base/net_util.cc +++ b/net/base/net_util.cc @@ -16,6 +16,7 @@ #include <windows.h> #include <iphlpapi.h> #include <winsock2.h> +#include <ws2bth.h> #pragma comment(lib, "iphlpapi.lib") #elif defined(OS_POSIX) #include <fcntl.h> @@ -524,13 +525,27 @@ bool GetIPAddressFromSockAddr(const struct sockaddr* sock_addr, return false; const struct sockaddr_in6* addr = reinterpret_cast<const struct sockaddr_in6*>(sock_addr); - *address = reinterpret_cast<const unsigned char*>(&addr->sin6_addr); + *address = reinterpret_cast<const uint8*>(&addr->sin6_addr); *address_len = kIPv6AddressSize; if (port) *port = base::NetToHost16(addr->sin6_port); return true; } +#if defined(OS_WIN) + if (sock_addr->sa_family == AF_BTH) { + if (sock_addr_len < static_cast<socklen_t>(sizeof(SOCKADDR_BTH))) + return false; + const SOCKADDR_BTH* addr = + reinterpret_cast<const SOCKADDR_BTH*>(sock_addr); + *address = reinterpret_cast<const uint8*>(&addr->btAddr); + *address_len = kBluetoothAddressSize; + if (port) + *port = addr->port; + return true; + } +#endif + return false; // Unrecognized |sa_family|. } diff --git a/net/base/net_util.h b/net/base/net_util.h index ad0c67a..5556f5e 100644 --- a/net/base/net_util.h +++ b/net/base/net_util.h @@ -52,6 +52,10 @@ typedef std::vector<IPAddressNumber> IPAddressList; static const size_t kIPv4AddressSize = 4; static const size_t kIPv6AddressSize = 16; +#if defined(OS_WIN) +// Bluetooth address size. Windows Bluetooth is supported via winsock. +static const size_t kBluetoothAddressSize = 6; +#endif // Nothing is ommitted. NET_EXPORT extern const FormatUrlType kFormatUrlOmitNothing; |