From 45fb9187c5da8890f8bf10905047db0611e0eff5 Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Tue, 21 Jan 2020 15:28:42 +0000 Subject: [PATCH] main: Allow main binary to be used as net or block backend Use newly factorised out function to start the block or net vhost-user-backend. Signed-off-by: Rob Bradford --- src/main.rs | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/src/main.rs b/src/main.rs index 4550cacd9..bfc47de01 100755 --- a/src/main.rs +++ b/src/main.rs @@ -9,12 +9,13 @@ extern crate vmm_sys_util; #[macro_use(crate_version, crate_authors)] extern crate clap; -use clap::{App, Arg, ArgGroup}; +use clap::{App, Arg, ArgGroup, ArgMatches}; use libc::EFD_NONBLOCK; use log::LevelFilter; use std::sync::mpsc::channel; use std::sync::{Arc, Mutex}; use std::{env, process}; +use vhost_user_net::start_net_backend; use vmm::config; use vmm_sys_util::eventfd::EventFd; @@ -260,9 +261,32 @@ fn create_app<'a, 'b>( .default_value(&api_server_path) .group("vmm-config"), ) + .arg( + Arg::with_name("net-backend") + .long("net-backend") + .help( + "vhost-user-net backend parameters \"ip=,\ + mask=,sock=,\ + num_queues=,\ + queue_size=\"", + ) + .takes_value(true) + .min_values(1), + ) + .arg( + Arg::with_name("block-backend") + .long("block-backend") + .help( + "vhost-user-block backend parameters \"image=,\ + sock=,readonly=true|false,\ + direct=true|false\"", + ) + .takes_value(true) + .min_values(1), + ) } -fn start_vmm(cmd_arguments: clap::ArgMatches) { +fn start_vmm(cmd_arguments: ArgMatches) { let vm_params = config::VmParams::from_arg_matches(&cmd_arguments); let vm_config = match config::VmConfig::parse(vm_params) { Ok(config) => config, @@ -383,7 +407,13 @@ fn main() { .map(|()| log::set_max_level(log_level)) .expect("Expected to be able to setup logger"); - start_vmm(cmd_arguments); + if let Some(backend_command) = cmd_arguments.value_of("net-backend") { + start_net_backend(backend_command); + } else if let Some(backend_command) = cmd_arguments.value_of("block-backend") { + start_net_backend(backend_command); + } else { + start_vmm(cmd_arguments); + } } #[cfg(test)]