ethernet: Fix the connect fail issue when switch DHCP to Static config at Ethernet interface.

add different logic to handle static ip configuration.

Bug: b/64914694 <http://b/issue?id=64914694&query=64914694>
Test: follow the following steps to switch ethernet config
1.Plug Ethernet cable ,Ethernet succeed to access internet with DHCP mode
2.Change Ethernet IP settings to Static
3.Input correct ip , gateway, prefix length, DNS
4.UI show Connected, but failed to access Internet.

Change-Id: I223bca85814e94745fbb8b50ca677eb7032e9bb3
(cherry picked from commit 44a107bc8f058c6ac1aab6fbfbf60bf8f3474711)
diff --git a/java/com/android/server/ethernet/EthernetNetworkFactory.java b/java/com/android/server/ethernet/EthernetNetworkFactory.java
index d6d0def..2d54fd2 100644
--- a/java/com/android/server/ethernet/EthernetNetworkFactory.java
+++ b/java/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);
     }
 
     /**