Loading services/core/java/com/android/server/NetworkManagementService.java +29 −43 Original line number Diff line number Diff line Loading @@ -160,6 +160,8 @@ public class NetworkManagementService extends INetworkManagementService.Stub private static final int MAX_UID_RANGES_PER_COMMAND = 10; private static final String[] EMPTY_STRING_ARRAY = new String[0]; /** * Name representing {@link #setGlobalAlert(long)} limit when delivered to * {@link INetworkManagementEventObserver#limitReached(String, String)}. Loading Loading @@ -1229,18 +1231,12 @@ public class NetworkManagementService extends INetworkManagementService.Stub @Override public void startTethering(String[] dhcpRange) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); // cmd is "tether start first_start first_stop second_start second_stop ..." // an odd number of addrs will fail final Command cmd = new Command("tether", "start"); for (String d : dhcpRange) { cmd.appendArg(d); } try { mConnector.execute(cmd); } catch (NativeDaemonConnectorException e) { throw e.rethrowAsParcelableException(); mNetdService.tetherStart(dhcpRange); } catch (RemoteException | ServiceSpecificException e) { throw new IllegalStateException(e); } } Loading @@ -1248,9 +1244,9 @@ public class NetworkManagementService extends INetworkManagementService.Stub public void stopTethering() { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); try { mConnector.execute("tether", "stop"); } catch (NativeDaemonConnectorException e) { throw e.rethrowAsParcelableException(); mNetdService.tetherStop(); } catch (RemoteException | ServiceSpecificException e) { throw new IllegalStateException(e); } } Loading @@ -1258,25 +1254,21 @@ public class NetworkManagementService extends INetworkManagementService.Stub public boolean isTetheringStarted() { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); final NativeDaemonEvent event; try { event = mConnector.execute("tether", "status"); } catch (NativeDaemonConnectorException e) { throw e.rethrowAsParcelableException(); final boolean isEnabled = mNetdService.tetherIsEnabled(); return isEnabled; } catch (RemoteException | ServiceSpecificException e) { throw new IllegalStateException(e); } // 210 Tethering services started event.checkCode(TetherStatusResult); return event.getMessage().endsWith("started"); } @Override public void tetherInterface(String iface) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); try { mConnector.execute("tether", "interface", "add", iface); } catch (NativeDaemonConnectorException e) { throw e.rethrowAsParcelableException(); mNetdService.tetherInterfaceAdd(iface); } catch (RemoteException | ServiceSpecificException e) { throw new IllegalStateException(e); } List<RouteInfo> routes = new ArrayList<>(); // The RouteInfo constructor truncates the LinkAddress to a network prefix, thus making it Loading @@ -1289,9 +1281,9 @@ public class NetworkManagementService extends INetworkManagementService.Stub public void untetherInterface(String iface) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); try { mConnector.execute("tether", "interface", "remove", iface); } catch (NativeDaemonConnectorException e) { throw e.rethrowAsParcelableException(); mNetdService.tetherInterfaceRemove(iface); } catch (RemoteException | ServiceSpecificException e) { throw new IllegalStateException(e); } finally { removeInterfaceFromLocalNetwork(iface); } Loading @@ -1301,11 +1293,10 @@ public class NetworkManagementService extends INetworkManagementService.Stub public String[] listTetheredInterfaces() { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); try { return NativeDaemonEvent.filterMessageList( mConnector.executeForList("tether", "interface", "list"), TetherInterfaceListResult); } catch (NativeDaemonConnectorException e) { throw e.rethrowAsParcelableException(); final List<String> result = mNetdService.tetherInterfaceList(); return result.toArray(EMPTY_STRING_ARRAY); } catch (RemoteException | ServiceSpecificException e) { throw new IllegalStateException(e); } } Loading @@ -1314,16 +1305,11 @@ public class NetworkManagementService extends INetworkManagementService.Stub mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); int netId = (network != null) ? network.netId : ConnectivityManager.NETID_UNSET; final Command cmd = new Command("tether", "dns", "set", netId); for (String s : dns) { cmd.appendArg(NetworkUtils.numericToInetAddress(s).getHostAddress()); } try { mConnector.execute(cmd); } catch (NativeDaemonConnectorException e) { throw e.rethrowAsParcelableException(); mNetdService.tetherDnsSet(netId, dns); } catch (RemoteException | ServiceSpecificException e) { throw new IllegalStateException(e); } } Loading @@ -1331,10 +1317,10 @@ public class NetworkManagementService extends INetworkManagementService.Stub public String[] getDnsForwarders() { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); try { return NativeDaemonEvent.filterMessageList( mConnector.executeForList("tether", "dns", "list"), TetherDnsFwdTgtListResult); } catch (NativeDaemonConnectorException e) { throw e.rethrowAsParcelableException(); final List<String> result = mNetdService.tetherDnsList(); return result.toArray(EMPTY_STRING_ARRAY); } catch (RemoteException | ServiceSpecificException e) { throw new IllegalStateException(e); } } Loading Loading
services/core/java/com/android/server/NetworkManagementService.java +29 −43 Original line number Diff line number Diff line Loading @@ -160,6 +160,8 @@ public class NetworkManagementService extends INetworkManagementService.Stub private static final int MAX_UID_RANGES_PER_COMMAND = 10; private static final String[] EMPTY_STRING_ARRAY = new String[0]; /** * Name representing {@link #setGlobalAlert(long)} limit when delivered to * {@link INetworkManagementEventObserver#limitReached(String, String)}. Loading Loading @@ -1229,18 +1231,12 @@ public class NetworkManagementService extends INetworkManagementService.Stub @Override public void startTethering(String[] dhcpRange) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); // cmd is "tether start first_start first_stop second_start second_stop ..." // an odd number of addrs will fail final Command cmd = new Command("tether", "start"); for (String d : dhcpRange) { cmd.appendArg(d); } try { mConnector.execute(cmd); } catch (NativeDaemonConnectorException e) { throw e.rethrowAsParcelableException(); mNetdService.tetherStart(dhcpRange); } catch (RemoteException | ServiceSpecificException e) { throw new IllegalStateException(e); } } Loading @@ -1248,9 +1244,9 @@ public class NetworkManagementService extends INetworkManagementService.Stub public void stopTethering() { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); try { mConnector.execute("tether", "stop"); } catch (NativeDaemonConnectorException e) { throw e.rethrowAsParcelableException(); mNetdService.tetherStop(); } catch (RemoteException | ServiceSpecificException e) { throw new IllegalStateException(e); } } Loading @@ -1258,25 +1254,21 @@ public class NetworkManagementService extends INetworkManagementService.Stub public boolean isTetheringStarted() { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); final NativeDaemonEvent event; try { event = mConnector.execute("tether", "status"); } catch (NativeDaemonConnectorException e) { throw e.rethrowAsParcelableException(); final boolean isEnabled = mNetdService.tetherIsEnabled(); return isEnabled; } catch (RemoteException | ServiceSpecificException e) { throw new IllegalStateException(e); } // 210 Tethering services started event.checkCode(TetherStatusResult); return event.getMessage().endsWith("started"); } @Override public void tetherInterface(String iface) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); try { mConnector.execute("tether", "interface", "add", iface); } catch (NativeDaemonConnectorException e) { throw e.rethrowAsParcelableException(); mNetdService.tetherInterfaceAdd(iface); } catch (RemoteException | ServiceSpecificException e) { throw new IllegalStateException(e); } List<RouteInfo> routes = new ArrayList<>(); // The RouteInfo constructor truncates the LinkAddress to a network prefix, thus making it Loading @@ -1289,9 +1281,9 @@ public class NetworkManagementService extends INetworkManagementService.Stub public void untetherInterface(String iface) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); try { mConnector.execute("tether", "interface", "remove", iface); } catch (NativeDaemonConnectorException e) { throw e.rethrowAsParcelableException(); mNetdService.tetherInterfaceRemove(iface); } catch (RemoteException | ServiceSpecificException e) { throw new IllegalStateException(e); } finally { removeInterfaceFromLocalNetwork(iface); } Loading @@ -1301,11 +1293,10 @@ public class NetworkManagementService extends INetworkManagementService.Stub public String[] listTetheredInterfaces() { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); try { return NativeDaemonEvent.filterMessageList( mConnector.executeForList("tether", "interface", "list"), TetherInterfaceListResult); } catch (NativeDaemonConnectorException e) { throw e.rethrowAsParcelableException(); final List<String> result = mNetdService.tetherInterfaceList(); return result.toArray(EMPTY_STRING_ARRAY); } catch (RemoteException | ServiceSpecificException e) { throw new IllegalStateException(e); } } Loading @@ -1314,16 +1305,11 @@ public class NetworkManagementService extends INetworkManagementService.Stub mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); int netId = (network != null) ? network.netId : ConnectivityManager.NETID_UNSET; final Command cmd = new Command("tether", "dns", "set", netId); for (String s : dns) { cmd.appendArg(NetworkUtils.numericToInetAddress(s).getHostAddress()); } try { mConnector.execute(cmd); } catch (NativeDaemonConnectorException e) { throw e.rethrowAsParcelableException(); mNetdService.tetherDnsSet(netId, dns); } catch (RemoteException | ServiceSpecificException e) { throw new IllegalStateException(e); } } Loading @@ -1331,10 +1317,10 @@ public class NetworkManagementService extends INetworkManagementService.Stub public String[] getDnsForwarders() { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); try { return NativeDaemonEvent.filterMessageList( mConnector.executeForList("tether", "dns", "list"), TetherDnsFwdTgtListResult); } catch (NativeDaemonConnectorException e) { throw e.rethrowAsParcelableException(); final List<String> result = mNetdService.tetherDnsList(); return result.toArray(EMPTY_STRING_ARRAY); } catch (RemoteException | ServiceSpecificException e) { throw new IllegalStateException(e); } } Loading