From f57267d7e998ffec48794723b188b35489acfeec Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Sun, 7 Jun 2020 09:47:21 +0000 Subject: devices: enable adding Wl sockets at runtime --- src/main.rs | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'src/main.rs') 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) -> 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); -- cgit 1.4.1