summaryrefslogtreecommitdiffstats
path: root/net/base
diff options
context:
space:
mode:
Diffstat (limited to 'net/base')
-rw-r--r--net/base/net_util.cc17
-rw-r--r--net/base/net_util.h4
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;