Loading services/java/com/android/server/NativeDaemonConnector.java +17 −57 Original line number Diff line number Diff line Loading @@ -206,18 +206,19 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo /** * Make command for daemon, escaping arguments as needed. */ private void makeCommand(StringBuilder builder, String cmd, Object... args) throws NativeDaemonConnectorException { // TODO: eventually enforce that cmd doesn't contain arguments private void makeCommand(StringBuilder builder, String cmd, Object... args) { if (cmd.indexOf('\0') >= 0) { throw new IllegalArgumentException("unexpected command: " + cmd); throw new IllegalArgumentException("Unexpected command: " + cmd); } if (cmd.indexOf(' ') >= 0) { throw new IllegalArgumentException("Arguments must be separate from command"); } builder.append(cmd); for (Object arg : args) { final String argString = String.valueOf(arg); if (argString.indexOf('\0') >= 0) { throw new IllegalArgumentException("unexpected argument: " + arg); throw new IllegalArgumentException("Unexpected argument: " + arg); } builder.append(' '); Loading @@ -240,7 +241,8 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo /** * Issue the given command to the native daemon and return a single expected * response. * response. Any arguments must be separated from base command so they can * be properly escaped. * * @throws NativeDaemonConnectorException when problem communicating with * native daemon, or if the response matches Loading Loading @@ -274,7 +276,8 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo /** * Issue the given command to the native daemon and return any * {@link NativeDaemonEvent#isClassContinue()} responses, including the * final terminal response. * final terminal response. Any arguments must be separated from base * command so they can be properly escaped. * * @throws NativeDaemonConnectorException when problem communicating with * native daemon, or if the response matches Loading @@ -287,10 +290,11 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo } /** * Issue the given command to the native daemon and return any * {@linke NativeDaemonEvent@isClassContinue()} responses, including the * final terminal response. Note that the timeout does not count time in * deep sleep. * Issue the given command to the native daemon and return any {@linke * NativeDaemonEvent@isClassContinue()} responses, including the final * terminal response. Note that the timeout does not count time in deep * sleep. Any arguments must be separated from base command so they can be * properly escaped. * * @throws NativeDaemonConnectorException when problem communicating with * native daemon, or if the response matches Loading Loading @@ -352,51 +356,6 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo return events.toArray(new NativeDaemonEvent[events.size()]); } /** * Issue a command to the native daemon and return the raw responses. * * @deprecated callers should move to {@link #execute(String, Object...)} * which returns parsed {@link NativeDaemonEvent}. */ @Deprecated public ArrayList<String> doCommand(String cmd) throws NativeDaemonConnectorException { final ArrayList<String> rawEvents = Lists.newArrayList(); final NativeDaemonEvent[] events = executeForList(cmd); for (NativeDaemonEvent event : events) { rawEvents.add(event.getRawEvent()); } return rawEvents; } /** * Issues a list command and returns the cooked list of all * {@link NativeDaemonEvent#getMessage()} which match requested code. */ @Deprecated public String[] doListCommand(String cmd, int expectedCode) throws NativeDaemonConnectorException { final ArrayList<String> list = Lists.newArrayList(); final NativeDaemonEvent[] events = executeForList(cmd); for (int i = 0; i < events.length - 1; i++) { final NativeDaemonEvent event = events[i]; final int code = event.getCode(); if (code == expectedCode) { list.add(event.getMessage()); } else { throw new NativeDaemonConnectorException( "unexpected list response " + code + " instead of " + expectedCode); } } final NativeDaemonEvent finalEvent = events[events.length - 1]; if (!finalEvent.isClassOk()) { throw new NativeDaemonConnectorException("unexpected final event: " + finalEvent); } return list.toArray(new String[list.size()]); } /** * Append the given argument to {@link StringBuilder}, escaping as needed, * and surrounding with quotes when it contains spaces. Loading Loading @@ -444,7 +403,8 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo } /** * Command builder that handles argument list building. * Command builder that handles argument list building. Any arguments must * be separated from base command so they can be properly escaped. */ public static class Command { private String mCmd; Loading services/java/com/android/server/NetworkManagementService.java +9 −15 Original line number Diff line number Diff line Loading @@ -25,8 +25,6 @@ import static android.net.NetworkStats.UID_ALL; import static android.net.TrafficStats.UID_TETHERING; import static com.android.server.NetworkManagementService.NetdResponseCode.InterfaceGetCfgResult; import static com.android.server.NetworkManagementService.NetdResponseCode.InterfaceListResult; import static com.android.server.NetworkManagementService.NetdResponseCode.InterfaceRxThrottleResult; import static com.android.server.NetworkManagementService.NetdResponseCode.InterfaceTxThrottleResult; import static com.android.server.NetworkManagementService.NetdResponseCode.IpFwdStatusResult; import static com.android.server.NetworkManagementService.NetdResponseCode.TetherDnsFwdTgtListResult; import static com.android.server.NetworkManagementService.NetdResponseCode.TetherInterfaceListResult; Loading Loading @@ -121,8 +119,6 @@ public class NetworkManagementService extends INetworkManagementService.Stub public static final int SoftapStatusResult = 214; public static final int InterfaceRxCounterResult = 216; public static final int InterfaceTxCounterResult = 217; public static final int InterfaceRxThrottleResult = 218; public static final int InterfaceTxThrottleResult = 219; public static final int QuotaCounterResult = 220; public static final int TetheringStatsResult = 221; public static final int DnsProxyQueryResult = 222; Loading Loading @@ -836,31 +832,28 @@ public class NetworkManagementService extends INetworkManagementService.Stub } // TODO(BT) Remove public void startReverseTethering(String iface) throws IllegalStateException { if (DBG) Slog.d(TAG, "startReverseTethering in"); @Override public void startReverseTethering(String iface) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); // cmd is "tether start first_start first_stop second_start second_stop ..." // an odd number of addrs will fail String cmd = "tether start-reverse"; cmd += " " + iface; if (DBG) Slog.d(TAG, "startReverseTethering cmd: " + cmd); try { mConnector.doCommand(cmd); mConnector.execute("tether", "start-reverse", iface); } catch (NativeDaemonConnectorException e) { throw new IllegalStateException("Unable to communicate to native daemon"); throw e.rethrowAsParcelableException(); } BluetoothTetheringDataTracker.getInstance().startReverseTether(iface); } // TODO(BT) Remove public void stopReverseTethering() throws IllegalStateException { @Override public void stopReverseTethering() { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); try { mConnector.doCommand("tether stop-reverse"); mConnector.execute("tether", "stop-reverse"); } catch (NativeDaemonConnectorException e) { throw new IllegalStateException("Unable to communicate to native daemon to stop tether"); throw e.rethrowAsParcelableException(); } BluetoothTetheringDataTracker.getInstance().stopReverseTether(); } Loading Loading @@ -1506,6 +1499,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub } /** {@inheritDoc} */ @Override public void monitor() { if (mConnector != null) { mConnector.monitor(); Loading Loading
services/java/com/android/server/NativeDaemonConnector.java +17 −57 Original line number Diff line number Diff line Loading @@ -206,18 +206,19 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo /** * Make command for daemon, escaping arguments as needed. */ private void makeCommand(StringBuilder builder, String cmd, Object... args) throws NativeDaemonConnectorException { // TODO: eventually enforce that cmd doesn't contain arguments private void makeCommand(StringBuilder builder, String cmd, Object... args) { if (cmd.indexOf('\0') >= 0) { throw new IllegalArgumentException("unexpected command: " + cmd); throw new IllegalArgumentException("Unexpected command: " + cmd); } if (cmd.indexOf(' ') >= 0) { throw new IllegalArgumentException("Arguments must be separate from command"); } builder.append(cmd); for (Object arg : args) { final String argString = String.valueOf(arg); if (argString.indexOf('\0') >= 0) { throw new IllegalArgumentException("unexpected argument: " + arg); throw new IllegalArgumentException("Unexpected argument: " + arg); } builder.append(' '); Loading @@ -240,7 +241,8 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo /** * Issue the given command to the native daemon and return a single expected * response. * response. Any arguments must be separated from base command so they can * be properly escaped. * * @throws NativeDaemonConnectorException when problem communicating with * native daemon, or if the response matches Loading Loading @@ -274,7 +276,8 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo /** * Issue the given command to the native daemon and return any * {@link NativeDaemonEvent#isClassContinue()} responses, including the * final terminal response. * final terminal response. Any arguments must be separated from base * command so they can be properly escaped. * * @throws NativeDaemonConnectorException when problem communicating with * native daemon, or if the response matches Loading @@ -287,10 +290,11 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo } /** * Issue the given command to the native daemon and return any * {@linke NativeDaemonEvent@isClassContinue()} responses, including the * final terminal response. Note that the timeout does not count time in * deep sleep. * Issue the given command to the native daemon and return any {@linke * NativeDaemonEvent@isClassContinue()} responses, including the final * terminal response. Note that the timeout does not count time in deep * sleep. Any arguments must be separated from base command so they can be * properly escaped. * * @throws NativeDaemonConnectorException when problem communicating with * native daemon, or if the response matches Loading Loading @@ -352,51 +356,6 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo return events.toArray(new NativeDaemonEvent[events.size()]); } /** * Issue a command to the native daemon and return the raw responses. * * @deprecated callers should move to {@link #execute(String, Object...)} * which returns parsed {@link NativeDaemonEvent}. */ @Deprecated public ArrayList<String> doCommand(String cmd) throws NativeDaemonConnectorException { final ArrayList<String> rawEvents = Lists.newArrayList(); final NativeDaemonEvent[] events = executeForList(cmd); for (NativeDaemonEvent event : events) { rawEvents.add(event.getRawEvent()); } return rawEvents; } /** * Issues a list command and returns the cooked list of all * {@link NativeDaemonEvent#getMessage()} which match requested code. */ @Deprecated public String[] doListCommand(String cmd, int expectedCode) throws NativeDaemonConnectorException { final ArrayList<String> list = Lists.newArrayList(); final NativeDaemonEvent[] events = executeForList(cmd); for (int i = 0; i < events.length - 1; i++) { final NativeDaemonEvent event = events[i]; final int code = event.getCode(); if (code == expectedCode) { list.add(event.getMessage()); } else { throw new NativeDaemonConnectorException( "unexpected list response " + code + " instead of " + expectedCode); } } final NativeDaemonEvent finalEvent = events[events.length - 1]; if (!finalEvent.isClassOk()) { throw new NativeDaemonConnectorException("unexpected final event: " + finalEvent); } return list.toArray(new String[list.size()]); } /** * Append the given argument to {@link StringBuilder}, escaping as needed, * and surrounding with quotes when it contains spaces. Loading Loading @@ -444,7 +403,8 @@ final class NativeDaemonConnector implements Runnable, Handler.Callback, Watchdo } /** * Command builder that handles argument list building. * Command builder that handles argument list building. Any arguments must * be separated from base command so they can be properly escaped. */ public static class Command { private String mCmd; Loading
services/java/com/android/server/NetworkManagementService.java +9 −15 Original line number Diff line number Diff line Loading @@ -25,8 +25,6 @@ import static android.net.NetworkStats.UID_ALL; import static android.net.TrafficStats.UID_TETHERING; import static com.android.server.NetworkManagementService.NetdResponseCode.InterfaceGetCfgResult; import static com.android.server.NetworkManagementService.NetdResponseCode.InterfaceListResult; import static com.android.server.NetworkManagementService.NetdResponseCode.InterfaceRxThrottleResult; import static com.android.server.NetworkManagementService.NetdResponseCode.InterfaceTxThrottleResult; import static com.android.server.NetworkManagementService.NetdResponseCode.IpFwdStatusResult; import static com.android.server.NetworkManagementService.NetdResponseCode.TetherDnsFwdTgtListResult; import static com.android.server.NetworkManagementService.NetdResponseCode.TetherInterfaceListResult; Loading Loading @@ -121,8 +119,6 @@ public class NetworkManagementService extends INetworkManagementService.Stub public static final int SoftapStatusResult = 214; public static final int InterfaceRxCounterResult = 216; public static final int InterfaceTxCounterResult = 217; public static final int InterfaceRxThrottleResult = 218; public static final int InterfaceTxThrottleResult = 219; public static final int QuotaCounterResult = 220; public static final int TetheringStatsResult = 221; public static final int DnsProxyQueryResult = 222; Loading Loading @@ -836,31 +832,28 @@ public class NetworkManagementService extends INetworkManagementService.Stub } // TODO(BT) Remove public void startReverseTethering(String iface) throws IllegalStateException { if (DBG) Slog.d(TAG, "startReverseTethering in"); @Override public void startReverseTethering(String iface) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); // cmd is "tether start first_start first_stop second_start second_stop ..." // an odd number of addrs will fail String cmd = "tether start-reverse"; cmd += " " + iface; if (DBG) Slog.d(TAG, "startReverseTethering cmd: " + cmd); try { mConnector.doCommand(cmd); mConnector.execute("tether", "start-reverse", iface); } catch (NativeDaemonConnectorException e) { throw new IllegalStateException("Unable to communicate to native daemon"); throw e.rethrowAsParcelableException(); } BluetoothTetheringDataTracker.getInstance().startReverseTether(iface); } // TODO(BT) Remove public void stopReverseTethering() throws IllegalStateException { @Override public void stopReverseTethering() { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); try { mConnector.doCommand("tether stop-reverse"); mConnector.execute("tether", "stop-reverse"); } catch (NativeDaemonConnectorException e) { throw new IllegalStateException("Unable to communicate to native daemon to stop tether"); throw e.rethrowAsParcelableException(); } BluetoothTetheringDataTracker.getInstance().stopReverseTether(); } Loading Loading @@ -1506,6 +1499,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub } /** {@inheritDoc} */ @Override public void monitor() { if (mConnector != null) { mConnector.monitor(); Loading