net: have SockaddrStorage type in its own header file

This patch moves SockaddrStorage type into its own header file,
as it seems more appropriate than in the generic net_util.h. This
should help breakout net_util.h even further. We are almost there.

BUG=488531
TEST=net_unittests
[email protected]
[email protected]

Review URL: https://codereview.chromium.org/1584503002

Cr-Commit-Position: refs/heads/master@{#369081}
diff --git a/net/base/address_list_unittest.cc b/net/base/address_list_unittest.cc
index cdf7fa8..44955a9 100644
--- a/net/base/address_list_unittest.cc
+++ b/net/base/address_list_unittest.cc
@@ -6,7 +6,7 @@
 
 #include "base/strings/string_util.h"
 #include "base/sys_byteorder.h"
-#include "net/base/net_util.h"
+#include "net/base/sockaddr_storage.h"
 #include "net/base/sys_addrinfo.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/net/base/ip_endpoint_unittest.cc b/net/base/ip_endpoint_unittest.cc
index 4da0bbe..a2b647c 100644
--- a/net/base/ip_endpoint_unittest.cc
+++ b/net/base/ip_endpoint_unittest.cc
@@ -15,7 +15,7 @@
 #include "base/logging.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/sys_byteorder.h"
-#include "net/base/net_util.h"
+#include "net/base/sockaddr_storage.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/platform_test.h"
 
diff --git a/net/base/net_util.cc b/net/base/net_util.cc
index afd4824..d2681f27 100644
--- a/net/base/net_util.cc
+++ b/net/base/net_util.cc
@@ -258,18 +258,6 @@
                   registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES);
 }
 
-SockaddrStorage::SockaddrStorage(const SockaddrStorage& other)
-    : addr_len(other.addr_len),
-      addr(reinterpret_cast<struct sockaddr*>(&addr_storage)) {
-  memcpy(addr, other.addr, addr_len);
-}
-
-void SockaddrStorage::operator=(const SockaddrStorage& other) {
-  addr_len = other.addr_len;
-  // addr is already set to &this->addr_storage by default ctor.
-  memcpy(addr, other.addr, addr_len);
-}
-
 std::string GetHostName() {
 #if defined(OS_NACL)
   NOTIMPLEMENTED();
diff --git a/net/base/net_util.h b/net/base/net_util.h
index 0064f73..6a498f6 100644
--- a/net/base/net_util.h
+++ b/net/base/net_util.h
@@ -5,16 +5,6 @@
 #ifndef NET_BASE_NET_UTIL_H_
 #define NET_BASE_NET_UTIL_H_
 
-#include "build/build_config.h"
-
-#if defined(OS_POSIX)
-#include <sys/socket.h>
-#include <sys/types.h>
-#elif defined(OS_WIN)
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#endif
-
 #include <stddef.h>
 #include <stdint.h>
 
@@ -71,18 +61,6 @@
 // that falls in an IANA-reserved range.
 NET_EXPORT bool IsHostnameNonUnique(const std::string& hostname);
 
-// Convenience struct for when you need a |struct sockaddr|.
-struct SockaddrStorage {
-  SockaddrStorage() : addr_len(sizeof(addr_storage)),
-                      addr(reinterpret_cast<struct sockaddr*>(&addr_storage)) {}
-  SockaddrStorage(const SockaddrStorage& other);
-  void operator=(const SockaddrStorage& other);
-
-  struct sockaddr_storage addr_storage;
-  socklen_t addr_len;
-  struct sockaddr* const addr;
-};
-
 // Returns the hostname of the current system. Returns empty string on failure.
 NET_EXPORT std::string GetHostName();
 
diff --git a/net/base/network_interfaces_win.cc b/net/base/network_interfaces_win.cc
index e8480d2..e451211 100644
--- a/net/base/network_interfaces_win.cc
+++ b/net/base/network_interfaces_win.cc
@@ -2,10 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "net/base/net_util.h"
+#include "net/base/network_interfaces_win.h"
 
-#include <iphlpapi.h>
-#include <wlanapi.h>
 #pragma comment(lib, "iphlpapi.lib")
 
 #include <algorithm>
@@ -23,7 +21,7 @@
 #include "net/base/escape.h"
 #include "net/base/ip_endpoint.h"
 #include "net/base/net_errors.h"
-#include "net/base/network_interfaces_win.h"
+#include "net/base/net_util.h"
 #include "url/gurl.h"
 
 namespace net {
diff --git a/net/base/network_interfaces_win.h b/net/base/network_interfaces_win.h
index 353dda4..9d69418 100644
--- a/net/base/network_interfaces_win.h
+++ b/net/base/network_interfaces_win.h
@@ -8,6 +8,7 @@
 // This file is only used to expose some of the internals
 // of network_interfaces_win.cc to tests.
 
+#include <winsock2.h>
 #include <iphlpapi.h>
 #include <wlanapi.h>
 
diff --git a/net/base/sockaddr_storage.cc b/net/base/sockaddr_storage.cc
new file mode 100644
index 0000000..2822e07
--- /dev/null
+++ b/net/base/sockaddr_storage.cc
@@ -0,0 +1,27 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "net/base/sockaddr_storage.h"
+
+#include <string.h>
+
+namespace net {
+
+SockaddrStorage::SockaddrStorage()
+    : addr_len(sizeof(addr_storage)),
+      addr(reinterpret_cast<struct sockaddr*>(&addr_storage)) {}
+
+SockaddrStorage::SockaddrStorage(const SockaddrStorage& other)
+    : addr_len(other.addr_len),
+      addr(reinterpret_cast<struct sockaddr*>(&addr_storage)) {
+  memcpy(addr, other.addr, addr_len);
+}
+
+void SockaddrStorage::operator=(const SockaddrStorage& other) {
+  addr_len = other.addr_len;
+  // addr is already set to &this->addr_storage by default ctor.
+  memcpy(addr, other.addr, addr_len);
+}
+
+}  // namespace net
diff --git a/net/base/sockaddr_storage.h b/net/base/sockaddr_storage.h
new file mode 100644
index 0000000..cc31231
--- /dev/null
+++ b/net/base/sockaddr_storage.h
@@ -0,0 +1,35 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef NET_BASE_SOCKADDR_STORAGE_H_
+#define NET_BASE_SOCKADDR_STORAGE_H_
+
+#include "build/build_config.h"
+
+#if defined(OS_POSIX)
+#include <sys/socket.h>
+#include <sys/types.h>
+#elif defined(OS_WIN)
+#include <winsock2.h>
+#include <ws2tcpip.h>
+#endif
+
+#include "net/base/net_export.h"
+
+namespace net {
+
+// Convenience struct for when you need a |struct sockaddr|.
+struct NET_EXPORT SockaddrStorage {
+  SockaddrStorage();
+  SockaddrStorage(const SockaddrStorage& other);
+  void operator=(const SockaddrStorage& other);
+
+  struct sockaddr_storage addr_storage;
+  socklen_t addr_len;
+  struct sockaddr* const addr;
+};
+
+}  // namespace net
+
+#endif  // NET_BASE_SOCKADDR_STORAGE_H_
diff --git a/net/net.gypi b/net/net.gypi
index 0480934..3ccafca8 100644
--- a/net/net.gypi
+++ b/net/net.gypi
@@ -60,6 +60,8 @@
       'base/rand_callback.h',
       'base/registry_controlled_domains/registry_controlled_domain.cc',
       'base/registry_controlled_domains/registry_controlled_domain.h',
+      'base/sockaddr_storage.cc',
+      'base/sockaddr_storage.h',
       'base/socket_performance_watcher.cc',
       'base/socket_performance_watcher.h',
       'base/socket_performance_watcher_factory.h',
diff --git a/net/socket/socket_posix.cc b/net/socket/socket_posix.cc
index a18e22d2..9689289 100644
--- a/net/socket/socket_posix.cc
+++ b/net/socket/socket_posix.cc
@@ -16,7 +16,7 @@
 #include "net/base/io_buffer.h"
 #include "net/base/ip_endpoint.h"
 #include "net/base/net_errors.h"
-#include "net/base/net_util.h"
+#include "net/base/sockaddr_storage.h"
 
 namespace net {
 
diff --git a/net/socket/ssl_client_socket_nss.cc b/net/socket/ssl_client_socket_nss.cc
index e1a8335..fcd8739 100644
--- a/net/socket/ssl_client_socket_nss.cc
+++ b/net/socket/ssl_client_socket_nss.cc
@@ -88,7 +88,7 @@
 #include "net/base/address_list.h"
 #include "net/base/io_buffer.h"
 #include "net/base/net_errors.h"
-#include "net/base/net_util.h"
+#include "net/base/sockaddr_storage.h"
 #include "net/cert/asn1_util.h"
 #include "net/cert/cert_status_flags.h"
 #include "net/cert/cert_verifier.h"
diff --git a/net/socket/tcp_socket_posix.cc b/net/socket/tcp_socket_posix.cc
index 9996e86..0546e60 100644
--- a/net/socket/tcp_socket_posix.cc
+++ b/net/socket/tcp_socket_posix.cc
@@ -21,9 +21,9 @@
 #include "net/base/io_buffer.h"
 #include "net/base/ip_endpoint.h"
 #include "net/base/net_errors.h"
-#include "net/base/net_util.h"
 #include "net/base/network_activity_monitor.h"
 #include "net/base/network_change_notifier.h"
+#include "net/base/sockaddr_storage.h"
 #include "net/socket/socket_net_log_params.h"
 #include "net/socket/socket_posix.h"
 
diff --git a/net/socket/tcp_socket_unittest.cc b/net/socket/tcp_socket_unittest.cc
index d9d13c5..ade3ee7fd 100644
--- a/net/socket/tcp_socket_unittest.cc
+++ b/net/socket/tcp_socket_unittest.cc
@@ -15,7 +15,7 @@
 #include "net/base/io_buffer.h"
 #include "net/base/ip_endpoint.h"
 #include "net/base/net_errors.h"
-#include "net/base/net_util.h"
+#include "net/base/sockaddr_storage.h"
 #include "net/base/test_completion_callback.h"
 #include "net/socket/tcp_client_socket.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/net/socket/tcp_socket_win.cc b/net/socket/tcp_socket_win.cc
index fdf1dfa..a9998e2c 100644
--- a/net/socket/tcp_socket_win.cc
+++ b/net/socket/tcp_socket_win.cc
@@ -19,9 +19,9 @@
 #include "net/base/io_buffer.h"
 #include "net/base/ip_endpoint.h"
 #include "net/base/net_errors.h"
-#include "net/base/net_util.h"
 #include "net/base/network_activity_monitor.h"
 #include "net/base/network_change_notifier.h"
+#include "net/base/sockaddr_storage.h"
 #include "net/base/winsock_init.h"
 #include "net/base/winsock_util.h"
 #include "net/socket/socket_descriptor.h"
diff --git a/net/socket/unix_domain_client_socket_posix.cc b/net/socket/unix_domain_client_socket_posix.cc
index fc2b303..564bef8 100644
--- a/net/socket/unix_domain_client_socket_posix.cc
+++ b/net/socket/unix_domain_client_socket_posix.cc
@@ -12,7 +12,7 @@
 #include "base/posix/eintr_wrapper.h"
 #include "net/base/ip_endpoint.h"
 #include "net/base/net_errors.h"
-#include "net/base/net_util.h"
+#include "net/base/sockaddr_storage.h"
 #include "net/socket/socket_posix.h"
 
 namespace net {
diff --git a/net/socket/unix_domain_client_socket_posix_unittest.cc b/net/socket/unix_domain_client_socket_posix_unittest.cc
index 814595e..3583075 100644
--- a/net/socket/unix_domain_client_socket_posix_unittest.cc
+++ b/net/socket/unix_domain_client_socket_posix_unittest.cc
@@ -14,7 +14,7 @@
 #include "base/posix/eintr_wrapper.h"
 #include "net/base/io_buffer.h"
 #include "net/base/net_errors.h"
-#include "net/base/net_util.h"
+#include "net/base/sockaddr_storage.h"
 #include "net/base/test_completion_callback.h"
 #include "net/socket/socket_posix.h"
 #include "net/socket/unix_domain_server_socket_posix.h"
diff --git a/net/socket/unix_domain_server_socket_posix.cc b/net/socket/unix_domain_server_socket_posix.cc
index 49945c35..161893a4 100644
--- a/net/socket/unix_domain_server_socket_posix.cc
+++ b/net/socket/unix_domain_server_socket_posix.cc
@@ -12,7 +12,7 @@
 
 #include "base/logging.h"
 #include "net/base/net_errors.h"
-#include "net/base/net_util.h"
+#include "net/base/sockaddr_storage.h"
 #include "net/socket/socket_posix.h"
 #include "net/socket/unix_domain_client_socket_posix.h"
 
diff --git a/net/tools/quic/quic_client.cc b/net/tools/quic/quic_client.cc
index b1ed67e..00d38ea 100644
--- a/net/tools/quic/quic_client.cc
+++ b/net/tools/quic/quic_client.cc
@@ -13,7 +13,7 @@
 
 #include "base/logging.h"
 #include "base/run_loop.h"
-#include "net/base/net_util.h"
+#include "net/base/sockaddr_storage.h"
 #include "net/quic/crypto/quic_random.h"
 #include "net/quic/quic_connection.h"
 #include "net/quic/quic_data_reader.h"
diff --git a/net/tools/quic/quic_server.cc b/net/tools/quic/quic_server.cc
index fc1395b..2ed4e5b 100644
--- a/net/tools/quic/quic_server.cc
+++ b/net/tools/quic/quic_server.cc
@@ -12,7 +12,7 @@
 #include <sys/socket.h>
 
 #include "net/base/ip_endpoint.h"
-#include "net/base/net_util.h"
+#include "net/base/sockaddr_storage.h"
 #include "net/quic/crypto/crypto_handshake.h"
 #include "net/quic/crypto/quic_random.h"
 #include "net/quic/quic_clock.h"
diff --git a/net/udp/udp_socket_posix.cc b/net/udp/udp_socket_posix.cc
index 545d2ee8..ea1a560 100644
--- a/net/udp/udp_socket_posix.cc
+++ b/net/udp/udp_socket_posix.cc
@@ -23,8 +23,8 @@
 #include "net/base/io_buffer.h"
 #include "net/base/ip_endpoint.h"
 #include "net/base/net_errors.h"
-#include "net/base/net_util.h"
 #include "net/base/network_activity_monitor.h"
+#include "net/base/sockaddr_storage.h"
 #include "net/log/net_log.h"
 #include "net/socket/socket_descriptor.h"
 #include "net/udp/udp_net_log_parameters.h"
diff --git a/net/udp/udp_socket_win.cc b/net/udp/udp_socket_win.cc
index 60b254f..27e2750 100644
--- a/net/udp/udp_socket_win.cc
+++ b/net/udp/udp_socket_win.cc
@@ -17,8 +17,8 @@
 #include "net/base/io_buffer.h"
 #include "net/base/ip_endpoint.h"
 #include "net/base/net_errors.h"
-#include "net/base/net_util.h"
 #include "net/base/network_activity_monitor.h"
+#include "net/base/sockaddr_storage.h"
 #include "net/base/winsock_init.h"
 #include "net/base/winsock_util.h"
 #include "net/log/net_log.h"