rk3568 android11 双以太网(一个外网一个内网)

本文档概述了Android服务器中EthernetTracker类的更新,涉及接口状态的实时监控、网络接口的切换逻辑,以及EthernetNetworkFactoryExt的扩展功能,如DHCP/静态IP管理和网络连接状态控制。

1、frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetTracker.java

diff --git a/java/com/android/server/ethernet/EthernetTracker.java b/java/com/android/server/ethernet/EthernetTracker.java
old mode 100644
new mode 100755
index be0dcc9..b16455f
--- a/java/com/android/server/ethernet/EthernetTracker.java
+++ b/java/com/android/server/ethernet/EthernetTracker.java
@@ -44,6 +44,10 @@ import com.android.internal.util.IndentingPrintWriter;
 import com.android.server.net.BaseNetworkObserver;
 
 import java.io.FileDescriptor;
+import java.io.File;
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
 import java.net.InetAddress;
 import java.util.ArrayList;
 import java.util.concurrent.ConcurrentHashMap;
@@ -90,6 +94,10 @@ final class EthernetTracker {
     private final Handler mHandler;
     private final EthernetNetworkFactory mFactory;
     private final EthernetConfigStore mConfigStore;
+    private static String mIface = "";
+    private static String mIface_1 = "eth0";
+    private static String mIface_2 = "eth1";
+    private EthernetNetworkFactoryExt mEthernetNetworkFactoryExt;
 
     private final RemoteCallbackList<IEthernetServiceListener> mListeners =
             new RemoteCallbackList<>();
@@ -133,6 +141,7 @@ final class EthernetTracker {
         NetworkCapabilities nc = createNetworkCapabilities(true /* clear default capabilities */);
         mFactory = new EthernetNetworkFactory(handler, context, nc);
         mFactory.register();
+        mEthernetNetworkFactoryExt = new EthernetNetworkFactoryExt();
     }
 
     void start() {
@@ -343,6 +352,8 @@ final class EthernetTracker {
     }
 
     private void updateInterfaceState(String iface, boolean up) {
+	if (!mIface.equals(iface))
+		return ;
         final int mode = getInterfaceMode(iface);
         final boolean factoryLinkStateUpdated = (mode == INTERFACE_MODE_CLIENT)
                 && mFactory.updateInterfaceLinkState(iface, up);
@@ -410,6 +421,7 @@ final class EthernetTracker {
         }
 
         addInterface(iface);
+        mEthernetNetworkFactoryExt.start(mContext, mNMService);
     }
 
     private void trackAvailableInterfaces() {
@@ -431,17 +443,51 @@ final class EthernetTracker {
             if (DBG) {
                 Log.i(TAG, "interfaceLinkStateChanged, iface: " + iface + ", up: " + up);
             }
+            if (getEthernetCarrierState(mIface_1) == 1 && up) {
+                if (getEthernetCarrierState(mIface_2) == 1 && mIface_1.equals(iface)) {
+                    mHandler.post(() -> updateInterfaceState(mIface_2, false));
+                    try {
+                        Thread.sleep(2000);
+                    } catch (InterruptedException ignore) {
+                    }
+                    mHandler.post(() -> mEthernetNetworkFactoryExt.interfaceLinkStateChanged(mIface_2, true));
+                }
+                mIface = mIface_1;
+            }
+            if(getEthernetCarrierState(mIface_1) == 0 && !up) {
+                if (getEthernetCarrierState(mIface_2) == 1 && mIface_1.equals(iface)) {
+                    mHandler.post(() -> updateInterfaceState(mIface_1, false));
+                    mHandler.post(() -> mEthernetNetworkFactoryExt.interfaceLinkStateChanged(mIface_2, false));
+                    try {
+                        Thread.sleep(2000);
+                    } catch (InterruptedException ignore) {
+                    }
+                }
+                if (getEthernetCarrierState(mIface_2) == 1) {
+                    mIface = mIface_2;
+                    mHandler.post(() -> updateInterfaceState(mIface_2, true));
+                    return ;
+                }
+            }
+            if (getEthernetCarrierState(mIface_1) == 0 && getEthernetCarrierState(mIface_2) == 1 && up)
+                mIface = mIface_2;
+
             mHandler.post(() -> updateInterfaceState(iface, up));
+            if (getEthernetCarrierState(mIface_1) == 1) {
+                    mHandler.post(() -> mEthernetNetworkFactoryExt.interfaceLinkStateChanged(iface, up));
+            }
         }
 
         @Override
         public void interfaceAdded(String iface) {
             mHandler.post(() -> maybeTrackInterface(iface));
+            mHandler.post(() -> mEthernetNetworkFactoryExt.interfaceAdded(iface));
         }
 
         @Override
         public void interfaceRemoved(String iface) {
             mHandler.post(() -> s
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值