vold: Add command to unmount secure containers
Signed-off-by: San Mehat <san@google.com>
diff --git a/CommandListener.cpp b/CommandListener.cpp
index 0207245..f15d44a 100644
--- a/CommandListener.cpp
+++ b/CommandListener.cpp
@@ -45,6 +45,7 @@
registerCmd(new FinalizeAsecCmd());
registerCmd(new DestroyAsecCmd());
registerCmd(new MountAsecCmd());
+ registerCmd(new UnmountAsecCmd());
registerCmd(new ListAsecCmd());
registerCmd(new AsecPathCmd());
}
@@ -254,6 +255,26 @@
return 0;
}
+CommandListener::UnmountAsecCmd::UnmountAsecCmd() :
+ VoldCommand("unmount_asec") {
+}
+
+int CommandListener::UnmountAsecCmd::runCommand(SocketClient *cli,
+ int argc, char **argv) {
+ if (argc != 2) {
+ cli->sendMsg(ResponseCode::CommandSyntaxError,
+ "Usage: unmount_asec <namespace-id>", false);
+ return 0;
+ }
+
+ if (VolumeManager::Instance()->unmountAsec(argv[1])) {
+ cli->sendMsg(ResponseCode::OperationFailed, "Unmount failed", true);
+ } else {
+ cli->sendMsg(ResponseCode::CommandOkay, "Unmount succeeded", false);
+ }
+ return 0;
+}
+
CommandListener::ListAsecCmd::ListAsecCmd() :
VoldCommand("list_asec") {
diff --git a/CommandListener.h b/CommandListener.h
index cc078da..64ff31f 100644
--- a/CommandListener.h
+++ b/CommandListener.h
@@ -111,6 +111,13 @@
int runCommand(SocketClient *c, int argc, char ** argv);
};
+ class UnmountAsecCmd : public VoldCommand {
+ public:
+ UnmountAsecCmd();
+ virtual ~UnmountAsecCmd() {}
+ int runCommand(SocketClient *c, int argc, char ** argv);
+ };
+
class ListAsecCmd : public VoldCommand {
public:
ListAsecCmd();