Roll Fuchsia SDK from 9d623aaaba71 to cdb810be4406

Also includes minor changes in //net to account for changes in
fuchsia.netstack API.

[email protected]

Change-Id: Ic473819b6aa65c6876bff0cf4f4544a471297b29
Reviewed-on: https://chromium-review.googlesource.com/c/1370487
Commit-Queue: Sergey Ulanov <[email protected]>
Reviewed-by: Kevin Marshall <[email protected]>
Cr-Commit-Position: refs/heads/master@{#615276}
diff --git a/net/base/network_change_notifier_fuchsia.cc b/net/base/network_change_notifier_fuchsia.cc
index e4ef84b..6698ec6 100644
--- a/net/base/network_change_notifier_fuchsia.cc
+++ b/net/base/network_change_notifier_fuchsia.cc
@@ -94,8 +94,8 @@
   auto default_route_interface = std::find_if(
       route_table->begin(), route_table->end(),
       [](const fuchsia::netstack::RouteTableEntry& rt) {
-        return MaskPrefixLength(internal::NetAddressToIPAddress(rt.netmask)) ==
-               0;
+        return MaskPrefixLength(
+                   internal::FuchsiaIpAddressToIPAddress(rt.netmask)) == 0;
       });
 
   // Find the default interface in the NetInterface list.
diff --git a/net/base/network_change_notifier_fuchsia_unittest.cc b/net/base/network_change_notifier_fuchsia_unittest.cc
index 1ecfc2a..0c4158c7 100644
--- a/net/base/network_change_notifier_fuchsia_unittest.cc
+++ b/net/base/network_change_notifier_fuchsia_unittest.cc
@@ -20,35 +20,31 @@
 const int kDefaultNic = 1;
 const int kSecondaryNic = kDefaultNic + 1;
 
-fuchsia::netstack::NetAddress CreateIPv6Address(std::vector<uint8_t> addr) {
-  fuchsia::netstack::NetAddress output;
-  output.family = fuchsia::netstack::NetAddressFamily::IPV6;
-  output.ipv6 = fuchsia::netstack::Ipv6Address::New();
+fuchsia::net::IpAddress CreateIPv6Address(std::vector<uint8_t> addr) {
+  fuchsia::net::IpAddress output;
   for (size_t i = 0; i < addr.size(); ++i) {
-    output.ipv6->addr[i] = addr[i];
+    output.ipv6().addr[i] = addr[i];
   }
   return output;
 }
 
-fuchsia::netstack::Subnet CreateSubnet(const std::vector<uint8_t>& addr,
-                                       uint8_t prefix) {
-  fuchsia::netstack::Subnet output;
+fuchsia::net::Subnet CreateSubnet(const std::vector<uint8_t>& addr,
+                                  uint8_t prefix) {
+  fuchsia::net::Subnet output;
   output.addr = CreateIPv6Address(addr);
   output.prefix_len = prefix;
   return output;
 }
 
-fuchsia::netstack::NetAddress CreateIPv4Address(uint8_t a0,
-                                                uint8_t a1,
-                                                uint8_t a2,
-                                                uint8_t a3) {
-  fuchsia::netstack::NetAddress output;
-  output.family = fuchsia::netstack::NetAddressFamily::IPV4;
-  output.ipv4 = std::make_unique<fuchsia::netstack::Ipv4Address>();
-  output.ipv4->addr[0] = a0;
-  output.ipv4->addr[1] = a1;
-  output.ipv4->addr[2] = a2;
-  output.ipv4->addr[3] = a3;
+fuchsia::net::IpAddress CreateIPv4Address(uint8_t a0,
+                                          uint8_t a1,
+                                          uint8_t a2,
+                                          uint8_t a3) {
+  fuchsia::net::IpAddress output;
+  output.ipv4().addr[0] = a0;
+  output.ipv4().addr[1] = a1;
+  output.ipv4().addr[2] = a2;
+  output.ipv4().addr[3] = a3;
   return output;
 }
 
@@ -59,8 +55,12 @@
 
   if (is_default) {
     output.netmask = CreateIPv4Address(0, 0, 0, 0);
+    output.destination = CreateIPv4Address(192, 168, 42, 0);
+    output.gateway = CreateIPv4Address(192, 168, 42, 1);
   } else {
     output.netmask = CreateIPv4Address(255, 255, 255, 0);
+    output.destination = CreateIPv4Address(192, 168, 43, 0);
+    output.gateway = CreateIPv4Address(192, 168, 43, 1);
   }
 
   return output;
@@ -70,20 +70,21 @@
     uint32_t id,
     uint32_t flags,
     uint32_t features,
-    fuchsia::netstack::NetAddress address,
-    fuchsia::netstack::NetAddress netmask,
-    std::vector<fuchsia::netstack::Subnet> ipv6) {
+    fuchsia::net::IpAddress address,
+    fuchsia::net::IpAddress netmask,
+    std::vector<fuchsia::net::Subnet> ipv6) {
   fuchsia::netstack::NetInterface output;
   output.name = "foo";
   output.id = id;
   output.flags = flags;
   output.features = features;
-  address.Clone(&output.addr);
-  netmask.Clone(&output.netmask);
+  output.addr = std::move(address);
+  output.netmask = std::move(netmask);
   output.hwaddr = fidl::VectorPtr<uint8_t>::New(0);
 
-  output.ipv6addrs =
-      fidl::VectorPtr<fuchsia::netstack::Subnet>::New(ipv6.size());
+  output.addr.Clone(&output.broadaddr);
+
+  output.ipv6addrs = fidl::VectorPtr<fuchsia::net::Subnet>::New(0);
   for (auto& x : ipv6) {
     output.ipv6addrs.push_back(std::move(x));
   }
@@ -128,10 +129,8 @@
   void GetRouteTable(GetRouteTableCallback callback) override {
     fidl::VectorPtr<fuchsia::netstack::RouteTableEntry> table =
         fidl::VectorPtr<fuchsia::netstack::RouteTableEntry>::New(2);
-    (*table)[0].nicid = kDefaultNic;
-    (*table)[0].netmask = CreateIPv4Address(0, 0, 0, 0);
-    (*table)[1].nicid = kSecondaryNic;
-    (*table)[1].netmask = CreateIPv4Address(255, 255, 255, 0);
+    (*table)[0] = CreateRouteTableEntry(kDefaultNic, true);
+    (*table)[1] = CreateRouteTableEntry(kSecondaryNic, true);
 
     callback(std::move(table));
   }
@@ -147,12 +146,12 @@
   void GetAggregateStats(GetAggregateStatsCallback callback) override {}
   void SetInterfaceStatus(uint32_t nicid, bool enabled) override {}
   void SetInterfaceAddress(uint32_t nicid,
-                           fuchsia::netstack::NetAddress addr,
+                           fuchsia::net::IpAddress addr,
                            uint8_t prefixLen,
                            SetInterfaceAddressCallback callback) override {}
   void RemoveInterfaceAddress(
       uint32_t nicid,
-      fuchsia::netstack::NetAddress addr,
+      fuchsia::net::IpAddress addr,
       uint8_t prefixLen,
       RemoveInterfaceAddressCallback callback) override {}
   void SetDhcpClientStatus(uint32_t nicid,
@@ -161,7 +160,7 @@
   void BridgeInterfaces(::fidl::VectorPtr<uint32_t> nicids,
                         BridgeInterfacesCallback callback) override {}
   void SetNameServers(
-      ::fidl::VectorPtr<::fuchsia::netstack::NetAddress> servers) override {}
+      ::fidl::VectorPtr<::fuchsia::net::IpAddress> servers) override {}
   void AddEthernetDevice(
       ::fidl::StringPtr topological_path,
       fuchsia::netstack::InterfaceConfig interfaceConfig,
@@ -284,7 +283,7 @@
 }
 
 TEST_F(NetworkChangeNotifierFuchsiaTest, MultiV6IPNoChange) {
-  std::vector<fuchsia::netstack::Subnet> addresses;
+  std::vector<fuchsia::net::Subnet> addresses;
   addresses.push_back(CreateSubnet({0xfe, 0x80, 0x01}, 2));
   netstack_.PushInterface(CreateNetInterface(
       kDefaultNic, fuchsia::netstack::NetInterfaceFlagUp, 0,
@@ -342,7 +341,7 @@
 }
 
 TEST_F(NetworkChangeNotifierFuchsiaTest, MultiV6IPChanged) {
-  std::vector<fuchsia::netstack::Subnet> addresses;
+  std::vector<fuchsia::net::Subnet> addresses;
   addresses.push_back(CreateSubnet({0xfe, 0x80, 0x01}, 2));
   netstack_.PushInterface(CreateNetInterface(
       kDefaultNic, fuchsia::netstack::NetInterfaceFlagUp, 0,
@@ -376,7 +375,7 @@
               OnNetworkChanged(NetworkChangeNotifier::CONNECTION_NONE));
   EXPECT_CALL(observer_,
               OnNetworkChanged(NetworkChangeNotifier::CONNECTION_UNKNOWN));
-  std::vector<fuchsia::netstack::Subnet> addresses;
+  std::vector<fuchsia::net::Subnet> addresses;
   addresses.push_back(CreateSubnet({0xfe, 0x80, 0x01}, 2));
   netstack_.PushInterface(CreateNetInterface(
       kDefaultNic, fuchsia::netstack::NetInterfaceFlagUp, 0,
diff --git a/net/base/network_interfaces_fuchsia.cc b/net/base/network_interfaces_fuchsia.cc
index de08376..52d4c4e 100644
--- a/net/base/network_interfaces_fuchsia.cc
+++ b/net/base/network_interfaces_fuchsia.cc
@@ -4,6 +4,7 @@
 
 #include "net/base/network_interfaces_fuchsia.h"
 
+#include <fuchsia/net/cpp/fidl.h>
 #include <fuchsia/netstack/cpp/fidl.h>
 #include <zircon/ethernet/cpp/fidl.h>
 
@@ -47,12 +48,13 @@
   IPAddress address;
   uint8_t prefix_length;
   if (address_index == 0) {
-    address = NetAddressToIPAddress(interface.addr);
-    prefix_length = MaskPrefixLength(NetAddressToIPAddress(interface.netmask));
+    address = FuchsiaIpAddressToIPAddress(interface.addr);
+    prefix_length =
+        MaskPrefixLength(FuchsiaIpAddressToIPAddress(interface.netmask));
   } else {
     CHECK_LE(address_index, interface.ipv6addrs->size());
-    address =
-        NetAddressToIPAddress(interface.ipv6addrs->at(address_index - 1).addr);
+    address = FuchsiaIpAddressToIPAddress(
+        interface.ipv6addrs->at(address_index - 1).addr);
     prefix_length = interface.ipv6addrs->at(address_index - 1).prefix_len;
   }
 
@@ -63,12 +65,12 @@
 
 }  // namespace
 
-IPAddress NetAddressToIPAddress(const fuchsia::netstack::NetAddress& addr) {
-  if (addr.ipv4) {
-    return IPAddress(addr.ipv4->addr.data(), addr.ipv4->addr.count());
+IPAddress FuchsiaIpAddressToIPAddress(const fuchsia::net::IpAddress& addr) {
+  if (addr.is_ipv4()) {
+    return IPAddress(addr.ipv4().addr.data(), addr.ipv4().addr.count());
   }
-  if (addr.ipv6) {
-    return IPAddress(addr.ipv6->addr.data(), addr.ipv6->addr.count());
+  if (addr.is_ipv6()) {
+    return IPAddress(addr.ipv6().addr.data(), addr.ipv6().addr.count());
   }
   return IPAddress();
 }
diff --git a/net/base/network_interfaces_fuchsia.h b/net/base/network_interfaces_fuchsia.h
index 7883408b..06dbd95 100644
--- a/net/base/network_interfaces_fuchsia.h
+++ b/net/base/network_interfaces_fuchsia.h
@@ -8,8 +8,10 @@
 #include <vector>
 
 namespace fuchsia {
+namespace net {
+class IpAddress;
+}
 namespace netstack {
-class NetAddress;
 class NetInterface;
 }  // namespace netstack
 }  // namespace fuchsia
@@ -29,7 +31,7 @@
     const fuchsia::netstack::NetInterface& iface_in);
 
 // Converts a Fuchsia IPv4/IPv6 address to a Chromium IPAddress.
-IPAddress NetAddressToIPAddress(const fuchsia::netstack::NetAddress& addr);
+IPAddress FuchsiaIpAddressToIPAddress(const fuchsia::net::IpAddress& addr);
 
 }  // namespace internal
 }  // namespace net