Search in sources :

Example 31 with Command

use of com.android.server.NativeDaemonConnector.Command in project android_frameworks_base by ParanoidAndroid.

the class NetworkManagementService method startTethering.

@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();
    }
}
Also used : Command(com.android.server.NativeDaemonConnector.Command)

Example 32 with Command

use of com.android.server.NativeDaemonConnector.Command in project android_frameworks_base by ParanoidAndroid.

the class MountService method doUnmountVolume.

/*
     * If force is not set, we do not unmount if there are
     * processes holding references to the volume about to be unmounted.
     * If force is set, all the processes holding references need to be
     * killed via the ActivityManager before actually unmounting the volume.
     * This might even take a while and might be retried after timed delays
     * to make sure we dont end up in an instable state and kill some core
     * processes.
     * If removeEncryption is set, force is implied, and the system will remove any encryption
     * mapping set on the volume when unmounting.
     */
private int doUnmountVolume(String path, boolean force, boolean removeEncryption) {
    if (!getVolumeState(path).equals(Environment.MEDIA_MOUNTED)) {
        return VoldResponseCode.OpFailedVolNotMounted;
    }
    /*
         * Force a GC to make sure AssetManagers in other threads of the
         * system_server are cleaned up. We have to do this since AssetManager
         * instances are kept as a WeakReference and it's possible we have files
         * open on the external storage.
         */
    Runtime.getRuntime().gc();
    // Redundant probably. But no harm in updating state again.
    mPms.updateExternalMediaStatus(false, false);
    try {
        final Command cmd = new Command("volume", "unmount", path);
        if (removeEncryption) {
            cmd.appendArg("force_and_revert");
        } else if (force) {
            cmd.appendArg("force");
        }
        mConnector.execute(cmd);
        // We unmounted the volume. None of the asec containers are available now.
        synchronized (mAsecMountSet) {
            mAsecMountSet.clear();
        }
        return StorageResultCode.OperationSucceeded;
    } catch (NativeDaemonConnectorException e) {
        // Don't worry about mismatch in PackageManager since the
        // call back will handle the status changes any way.
        int code = e.getCode();
        if (code == VoldResponseCode.OpFailedVolNotMounted) {
            return StorageResultCode.OperationFailedStorageNotMounted;
        } else if (code == VoldResponseCode.OpFailedStorageBusy) {
            return StorageResultCode.OperationFailedStorageBusy;
        } else {
            return StorageResultCode.OperationFailedInternalError;
        }
    }
}
Also used : Command(com.android.server.NativeDaemonConnector.Command)

Example 33 with Command

use of com.android.server.NativeDaemonConnector.Command in project android_frameworks_base by ParanoidAndroid.

the class MountService method unmountSecureContainer.

public int unmountSecureContainer(String id, boolean force) {
    validatePermission(android.Manifest.permission.ASEC_MOUNT_UNMOUNT);
    waitForReady();
    warnOnNotMounted();
    synchronized (mAsecMountSet) {
        if (!mAsecMountSet.contains(id)) {
            return StorageResultCode.OperationFailedStorageNotMounted;
        }
    }
    /*
         * Force a GC to make sure AssetManagers in other threads of the
         * system_server are cleaned up. We have to do this since AssetManager
         * instances are kept as a WeakReference and it's possible we have files
         * open on the external storage.
         */
    Runtime.getRuntime().gc();
    int rc = StorageResultCode.OperationSucceeded;
    try {
        final Command cmd = new Command("asec", "unmount", id);
        if (force) {
            cmd.appendArg("force");
        }
        mConnector.execute(cmd);
    } catch (NativeDaemonConnectorException e) {
        int code = e.getCode();
        if (code == VoldResponseCode.OpFailedStorageBusy) {
            rc = StorageResultCode.OperationFailedStorageBusy;
        } else {
            rc = StorageResultCode.OperationFailedInternalError;
        }
    }
    if (rc == StorageResultCode.OperationSucceeded) {
        synchronized (mAsecMountSet) {
            mAsecMountSet.remove(id);
        }
    }
    return rc;
}
Also used : Command(com.android.server.NativeDaemonConnector.Command)

Example 34 with Command

use of com.android.server.NativeDaemonConnector.Command in project platform_frameworks_base by android.

the class MountService method destroySecureContainer.

public int destroySecureContainer(String id, boolean force) {
    enforcePermission(android.Manifest.permission.ASEC_DESTROY);
    waitForReady();
    warnOnNotMounted();
    /*
         * Force a GC to make sure AssetManagers in other threads of the
         * system_server are cleaned up. We have to do this since AssetManager
         * instances are kept as a WeakReference and it's possible we have files
         * open on the external storage.
         */
    Runtime.getRuntime().gc();
    int rc = StorageResultCode.OperationSucceeded;
    try {
        final Command cmd = new Command("asec", "destroy", id);
        if (force) {
            cmd.appendArg("force");
        }
        mConnector.execute(cmd);
    } catch (NativeDaemonConnectorException e) {
        int code = e.getCode();
        if (code == VoldResponseCode.OpFailedStorageBusy) {
            rc = StorageResultCode.OperationFailedStorageBusy;
        } else {
            rc = StorageResultCode.OperationFailedInternalError;
        }
    }
    if (rc == StorageResultCode.OperationSucceeded) {
        synchronized (mAsecMountSet) {
            if (mAsecMountSet.contains(id)) {
                mAsecMountSet.remove(id);
            }
        }
    }
    return rc;
}
Also used : Command(com.android.server.NativeDaemonConnector.Command)

Example 35 with Command

use of com.android.server.NativeDaemonConnector.Command in project platform_frameworks_base by android.

the class NetworkManagementService method startTethering.

@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();
    }
}
Also used : Command(com.android.server.NativeDaemonConnector.Command)

Aggregations

Command (com.android.server.NativeDaemonConnector.Command)58 LinkAddress (android.net.LinkAddress)12 InetAddress (java.net.InetAddress)11 InterfaceAddress (java.net.InterfaceAddress)6 NetworkInterface (java.net.NetworkInterface)6 Inet4Address (java.net.Inet4Address)1