frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetTracker.java
diff --git a/core/java/android/net/EthernetManager.java b/core/java/android/net/EthernetManager.java
old mode 100644
new mode 100755
index ecccda588ae..39e54920abc
--- a/core/java/android/net/EthernetManager.java
+++ b/core/java/android/net/EthernetManager.java
@@ -123,6 +123,7 @@ public class EthernetManager {
}
}
+
@@ -171,4 +172,18 @@ public class EthernetManager {
}
}
}
+
+
+
+ public boolean setInterfaceStatus(String iface, boolean state){
+ try {
+ return mService.setInterfaceStatus(iface,state);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
}
diff --git a/core/java/android/net/IEthernetManager.aidl b/core/java/android/net/IEthernetManager.aidl
old mode 100644
new mode 100755
index 94960b51d32..08b5f055ab6
--- a/core/java/android/net/IEthernetManager.aidl
+++ b/core/java/android/net/IEthernetManager.aidl
@@ -32,4 +32,5 @@ interface IEthernetManager
boolean isAvailable(String iface);
void addListener(in IEthernetServiceListener listener);
void removeListener(in IEthernetServiceListener listener);
+ boolean setInterfaceStatus(String iface, boolean state);
}
diff --git a/java/com/android/server/ethernet/EthernetServiceImpl.java b/java/com/android/server/ethernet/EthernetServiceImpl.java
old mode 100644
new mode 100755
index d5beec1..5bb7b0d
--- a/java/com/android/server/ethernet/EthernetServiceImpl.java
+++ b/java/com/android/server/ethernet/EthernetServiceImpl.java
@@ -126,6 +126,19 @@ public class EthernetServiceImpl extends IEthernetManager.Stub {
mTracker.updateIpConfiguration(iface, new IpConfiguration(config));
+
+ if (mTracker.isRestrictedInterface(iface)) {
+ enforceUseRestrictedNetworksPermission();
+ }
+
+
+
+
+ mTracker.updateIpConfiguration(iface, new IpConfiguration(config));
+ mTracker.removeInterface(iface);
+ mTracker.start();
+
}
@@ -142,6 +155,7 @@ public class EthernetServiceImpl extends IEthernetManager.Stub {
return mTracker.isTrackingInterface(iface);
}
+
@@ -187,4 +201,16 @@ public class EthernetServiceImpl extends IEthernetManager.Stub {
mHandler.dump(new PrintWriterPrinter(pw), "EthernetServiceImpl");
pw.decreaseIndent();
}
+
+
+ @Override
+ public boolean setInterfaceStatus(String iface, boolean state){
+ enforceAccessPermission();
+ return mTracker.setInterfaceStatus(iface,state);
+ }
+
}
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 00eedd5..720c2dd
--- a/java/com/android/server/ethernet/EthernetTracker.java
+++ b/java/com/android/server/ethernet/EthernetTracker.java
@@ -167,7 +167,7 @@ final class EthernetTracker {
mListeners.unregister(listener);
}
- private void removeInterface(String iface) {
+ public void removeInterface(String iface) {
mFactory.removeInterface(iface);
}
@@ -427,4 +427,28 @@ final class EthernetTracker {
mFactory.dump(fd, pw, args);
});
}
+
+
+ public boolean setInterfaceStatus(String iface, boolean state){
+ try {
+ if(!TextUtils.isEmpty(iface)) {
+ if(!state)
+ mNMService.setInterfaceDown(iface);
+ else
+ mNMService.setInterfaceUp(iface);
+ return true;
+ } else {
+ Log.e(TAG,"iface is null");
+ }
+ } catch (Exception e) {
+ Log.e(TAG, "Error setInterfaceStatus : " + iface + " state : " + state + " exception : " + e);
+ }
+ return false;
+ }
+
+
}