Implement GetNetworkList on Mac/iOS to expose IPv6 address attributes.

Enhance attributes mapping to expose IPv6 temporary and deprecated address attributes on Mac. For iOS, it should only be a non-functional refactor change.

Also refactor the code to facilitate testing and add additional testing.

BUG=413437

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

Cr-Commit-Position: refs/heads/master@{#304231}
diff --git a/net/base/net_util_linux.h b/net/base/net_util_linux.h
new file mode 100644
index 0000000..340c3802
--- /dev/null
+++ b/net/base/net_util_linux.h
@@ -0,0 +1,31 @@
+// Copyright (c) 2014 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_NET_UTIL_LINUX_H_
+#define NET_BASE_NET_UTIL_LINUX_H_
+
+// This file is only used to expose some of the internals
+// of net_util_linux.cc to tests.
+
+#include "base/containers/hash_tables.h"
+#include "net/base/address_tracker_linux.h"
+#include "net/base/net_util.h"
+
+namespace net {
+namespace internal {
+
+typedef char* (*GetInterfaceNameFunction)(unsigned int interface_index,
+                                          char* ifname);
+
+NET_EXPORT bool GetNetworkListImpl(
+    NetworkInterfaceList* networks,
+    int policy,
+    const base::hash_set<int>& online_links,
+    const internal::AddressTrackerLinux::AddressMap& address_map,
+    GetInterfaceNameFunction get_interface_name);
+
+}  // namespace internal
+}  // namespace net
+
+#endif  // NET_BASE_NET_UTIL_LINUX_H_