summary refs log tree commit diff
path: root/src/main.rs
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2020-06-07 09:47:21 +0000
committerAlyssa Ross <hi@alyssa.is>2020-07-02 12:33:02 +0000
commitf57267d7e998ffec48794723b188b35489acfeec (patch)
treed0612accc4c8a20942bf333cb15e34c4203c1c4c /src/main.rs
parentb7f9c8db01cd673a8b20bb5649f6cd06371b9695 (diff)
downloadcrosvm-f57267d7e998ffec48794723b188b35489acfeec.tar
crosvm-f57267d7e998ffec48794723b188b35489acfeec.tar.gz
crosvm-f57267d7e998ffec48794723b188b35489acfeec.tar.bz2
crosvm-f57267d7e998ffec48794723b188b35489acfeec.tar.lz
crosvm-f57267d7e998ffec48794723b188b35489acfeec.tar.xz
crosvm-f57267d7e998ffec48794723b188b35489acfeec.tar.zst
crosvm-f57267d7e998ffec48794723b188b35489acfeec.zip
devices: enable adding Wl sockets at runtime
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs
index 87ecdb6..e5b5053 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -34,7 +34,7 @@ use sys_util::{
 };
 use vm_control::{
     BalloonControlCommand, DiskControlCommand, MaybeOwnedFd, UsbControlCommand, UsbControlResult,
-    VmControlRequestSocket, VmRequest, VmResponse, USB_CONTROL_MAX_PORTS,
+    VmControlRequestSocket, VmRequest, VmResponse, WlControlCommand, USB_CONTROL_MAX_PORTS,
 };
 
 fn executable_is_plugin(executable: &Option<Executable>) -> bool {
@@ -2178,6 +2178,31 @@ fn modify_usb(mut args: std::env::Args) -> std::result::Result<(), ()> {
     }
 }
 
+fn wl_cmd(mut args: std::env::Args) -> std::result::Result<(), ()> {
+    if args.len() < 2 {
+        print_help("crosvm wl", "SUBCOMMAND VM_SOCKET...", &[]);
+        println!("Manage attached virtio Wayland sockets.");
+        println!("Subcommands:");
+        println!("  add NAME PATH VM_SOCKET");
+        return Err(());
+    }
+    let subcommand: &str = &args.next().unwrap();
+
+    let request = match subcommand {
+        "add" => {
+            let name = args.next().unwrap();
+            let path = args.next().unwrap().into();
+            VmRequest::WlCommand(WlControlCommand::AddSocket { name, path })
+        }
+        _ => {
+            error!("Unknown wl subcommand '{}'", subcommand);
+            return Err(());
+        }
+    };
+
+    vms_request(&request, args)
+}
+
 fn print_usage() {
     print_help("crosvm", "[stop|run]", &[]);
     println!("Commands:");
@@ -2189,6 +2214,7 @@ fn print_usage() {
     println!("    create_qcow2  Create a new qcow2 disk image file.");
     println!("    disk          Manage attached virtual disk devices.");
     println!("    usb           Manage attached virtual USB devices.");
+    println!("    wl            Manage attached virtio_wl sockets.");
     println!("    version       Show package version.");
 }
 
@@ -2233,6 +2259,7 @@ fn crosvm_main() -> std::result::Result<(), ()> {
         Some("create_qcow2") => create_qcow2(args),
         Some("disk") => disk_cmd(args),
         Some("usb") => modify_usb(args),
+        Some("wl") => wl_cmd(args),
         Some("version") => pkg_version(),
         Some(c) => {
             println!("invalid subcommand: {:?}", c);