diff --git a/src/agent/src/config.rs b/src/agent/src/config.rs index 0c67bc19d..2a16caded 100644 --- a/src/agent/src/config.rs +++ b/src/agent/src/config.rs @@ -3,6 +3,7 @@ // SPDX-License-Identifier: Apache-2.0 // use rustjail::errors::*; +use std::env; use std::fs; use std::time; @@ -17,6 +18,9 @@ const CONTAINER_PIPE_SIZE_OPTION: &str = "agent.container_pipe_size"; const DEFAULT_LOG_LEVEL: slog::Level = slog::Level::Info; const DEFAULT_HOTPLUG_TIMEOUT: time::Duration = time::Duration::from_secs(3); const DEFAULT_CONTAINER_PIPE_SIZE: i32 = 0; +const VSOCK_ADDR: &str = "vsock://-1"; +const VSOCK_PORT: u16 = 1024; +const SERVER_ADDR_ENV_VAR: &str = "KATA_AGENT_SERVER_ADDR"; // FIXME: unused const TRACE_MODE_FLAG: &str = "agent.trace"; @@ -31,6 +35,7 @@ pub struct agentConfig { pub debug_console_vport: i32, pub log_vport: i32, pub container_pipe_size: i32, + pub server_addr: String, } impl agentConfig { @@ -43,6 +48,7 @@ impl agentConfig { debug_console_vport: 0, log_vport: 0, container_pipe_size: DEFAULT_CONTAINER_PIPE_SIZE, + server_addr: format!("{}:{}", VSOCK_ADDR, VSOCK_PORT), } } @@ -91,6 +97,10 @@ impl agentConfig { } } + if let Ok(addr) = env::var(SERVER_ADDR_ENV_VAR) { + self.server_addr = addr; + } + Ok(()) } } diff --git a/src/agent/src/main.rs b/src/agent/src/main.rs index 91c9409d1..ab50d147a 100644 --- a/src/agent/src/main.rs +++ b/src/agent/src/main.rs @@ -72,8 +72,6 @@ use uevent::watch_uevents; mod rpc; const NAME: &str = "kata-agent"; -const VSOCK_ADDR: &str = "vsock://-1"; -const VSOCK_PORT: u16 = 1024; const KERNEL_CMDLINE_FILE: &str = "/proc/cmdline"; const CONSOLE_PATH: &str = "/dev/console"; @@ -247,7 +245,7 @@ fn start_sandbox(logger: &Logger, config: &agentConfig, init_mode: bool) -> Resu sandbox.lock().unwrap().sender = Some(tx); //vsock:///dev/vsock, port - let mut server = rpc::start(sandbox.clone(), VSOCK_ADDR, VSOCK_PORT); + let mut server = rpc::start(sandbox.clone(), config.server_addr.as_str()); let _ = server.start().unwrap(); diff --git a/src/agent/src/rpc.rs b/src/agent/src/rpc.rs index 5f0990694..0cb695fa0 100644 --- a/src/agent/src/rpc.rs +++ b/src/agent/src/rpc.rs @@ -1452,7 +1452,7 @@ fn find_process<'a>( Ok(p) } -pub fn start>(s: Arc>, host: S, port: u16) -> ttrpc::Server { +pub fn start(s: Arc>, server_address: &str) -> ttrpc::Server { let agent_service = Box::new(agentService { sandbox: s, test: 1, @@ -1468,17 +1468,13 @@ pub fn start>(s: Arc>, host: S, port: u16) -> ttr let hservice = protocols::health_ttrpc::create_health(health_worker); - let mut addr: String = host.into(); - addr.push_str(":"); - addr.push_str(&port.to_string()); - let server = ttrpc::Server::new() - .bind(addr.as_str()) + .bind(server_address) .unwrap() .register_service(aservice) .register_service(hservice); - info!(sl!(), "ttRPC server started"); + info!(sl!(), "ttRPC server started"; "address" => server_address); server }