Merge commit 'a1081715561b15daf2018c74e9aff434f602fcc9' into HEAD

Change-Id: I1da9335d26d418de026c25d59aa6ee43af6d602c
diff --git a/service-t/src/com/android/server/ethernet/EthernetNetworkFactory.java b/service-t/src/com/android/server/ethernet/EthernetNetworkFactory.java
index d6d0def..0bbe3b5 100644
--- a/service-t/src/com/android/server/ethernet/EthernetNetworkFactory.java
+++ b/service-t/src/com/android/server/ethernet/EthernetNetworkFactory.java
@@ -248,25 +248,6 @@
         return true;
     }
 
-    private boolean setStaticIpAddress(StaticIpConfiguration staticConfig) {
-        if (staticConfig.ipAddress != null &&
-                staticConfig.gateway != null &&
-                staticConfig.dnsServers.size() > 0) {
-            try {
-                Log.i(TAG, "Applying static IPv4 configuration to " + mIface + ": " + staticConfig);
-                InterfaceConfiguration config = mNMService.getInterfaceConfig(mIface);
-                config.setLinkAddress(staticConfig.ipAddress);
-                mNMService.setInterfaceConfig(mIface, config);
-                return true;
-            } catch(RemoteException|IllegalStateException e) {
-               Log.e(TAG, "Setting static IP address failed: " + e.getMessage());
-            }
-        } else {
-            Log.e(TAG, "Invalid static IP configuration.");
-        }
-        return false;
-    }
-
     public void updateAgent() {
         if (mNetworkAgent == null) return;
         if (DBG) {
@@ -332,55 +313,52 @@
                     mNetworkInfo));
         }
 
-        LinkProperties linkProperties;
-
         IpConfiguration config = mEthernetManager.getConfiguration();
 
-        if (config.getIpAssignment() == IpAssignment.STATIC) {
-            if (!setStaticIpAddress(config.getStaticIpConfiguration())) {
-                // We've already logged an error.
-                return;
-            }
-            linkProperties = config.getStaticIpConfiguration().toLinkProperties(mIface);
-        } else {
-            mNetworkInfo.setDetailedState(DetailedState.OBTAINING_IPADDR, null, mHwAddr);
-            IpManager.Callback ipmCallback = new IpManager.Callback() {
-                @Override
-                public void onProvisioningSuccess(LinkProperties newLp) {
-                    mHandler.post(() -> onIpLayerStarted(newLp));
-                }
-
-                @Override
-                public void onProvisioningFailure(LinkProperties newLp) {
-                    mHandler.post(() -> onIpLayerStopped(newLp));
-                }
-
-                @Override
-                public void onLinkPropertiesChange(LinkProperties newLp) {
-                    mHandler.post(() -> updateLinkProperties(newLp));
-                }
-            };
-
-            stopIpManager();
-            mIpManager = new IpManager(mContext, mIface, ipmCallback);
-
-            if (config.getProxySettings() == ProxySettings.STATIC ||
-                    config.getProxySettings() == ProxySettings.PAC) {
-                mIpManager.setHttpProxy(config.getHttpProxy());
+        mNetworkInfo.setDetailedState(DetailedState.OBTAINING_IPADDR, null, mHwAddr);
+        IpManager.Callback ipmCallback = new IpManager.Callback() {
+            @Override
+            public void onProvisioningSuccess(LinkProperties newLp) {
+                mHandler.post(() -> onIpLayerStarted(newLp));
             }
 
-            final String tcpBufferSizes = mContext.getResources().getString(
-                    com.android.internal.R.string.config_ethernet_tcp_buffers);
-            if (!TextUtils.isEmpty(tcpBufferSizes)) {
-                mIpManager.setTcpBufferSizes(tcpBufferSizes);
+            @Override
+            public void onProvisioningFailure(LinkProperties newLp) {
+                mHandler.post(() -> onIpLayerStopped(newLp));
             }
 
-            final ProvisioningConfiguration provisioningConfiguration =
-                    mIpManager.buildProvisioningConfiguration()
-                            .withProvisioningTimeoutMs(0)
-                            .build();
-            mIpManager.startProvisioning(provisioningConfiguration);
+            @Override
+            public void onLinkPropertiesChange(LinkProperties newLp) {
+                mHandler.post(() -> updateLinkProperties(newLp));
+            }
+        };
+
+        stopIpManager();
+        mIpManager = new IpManager(mContext, mIface, ipmCallback);
+
+        if (config.getProxySettings() == ProxySettings.STATIC ||
+                config.getProxySettings() == ProxySettings.PAC) {
+            mIpManager.setHttpProxy(config.getHttpProxy());
         }
+
+        final String tcpBufferSizes = mContext.getResources().getString(
+                com.android.internal.R.string.config_ethernet_tcp_buffers);
+        if (!TextUtils.isEmpty(tcpBufferSizes)) {
+            mIpManager.setTcpBufferSizes(tcpBufferSizes);
+        }
+
+        final ProvisioningConfiguration provisioningConfiguration;
+        if (config.getIpAssignment() == IpAssignment.STATIC) {
+            provisioningConfiguration = IpManager.buildProvisioningConfiguration()
+                    .withStaticConfiguration(config.getStaticIpConfiguration())
+                    .build();
+        } else {
+            provisioningConfiguration = mIpManager.buildProvisioningConfiguration()
+                    .withProvisioningTimeoutMs(0)
+                    .build();
+        }
+
+        mIpManager.startProvisioning(provisioningConfiguration);
     }
 
     /**
@@ -449,6 +427,8 @@
         mNetworkCapabilities = new NetworkCapabilities();
         mNetworkCapabilities.addTransportType(NetworkCapabilities.TRANSPORT_ETHERNET);
         mNetworkCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
+        mNetworkCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
+        mNetworkCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING);
         mNetworkCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
         // We have no useful data on bandwidth. Say 100M up and 100M down. :-(
         mNetworkCapabilities.setLinkUpstreamBandwidthKbps(100 * 1000);