mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-07-18 09:23:10 +00:00
agent: set hostname when running as init
it's better to set the right hostname to guest when run rust-agent as the init process. Fixes: #355 Signed-off-by: fupan.lfp <fupan.lfp@antfin.com>
This commit is contained in:
parent
899b75f2de
commit
883af9c76f
@ -37,7 +37,9 @@ use rustjail::errors::*;
|
|||||||
use signal_hook::{iterator::Signals, SIGCHLD};
|
use signal_hook::{iterator::Signals, SIGCHLD};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::env;
|
use std::env;
|
||||||
|
use std::ffi::OsStr;
|
||||||
use std::fs::{self, File};
|
use std::fs::{self, File};
|
||||||
|
use std::os::unix::ffi::OsStrExt;
|
||||||
use std::os::unix::fs as unixfs;
|
use std::os::unix::fs as unixfs;
|
||||||
use std::os::unix::io::AsRawFd;
|
use std::os::unix::io::AsRawFd;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
@ -356,9 +358,30 @@ fn init_agent_as_init(logger: &Logger) -> Result<()> {
|
|||||||
|
|
||||||
env::set_var("PATH", "/bin:/sbin/:/usr/bin/:/usr/sbin/");
|
env::set_var("PATH", "/bin:/sbin/:/usr/bin/:/usr/sbin/");
|
||||||
|
|
||||||
|
let contents = std::fs::read_to_string("/etc/hostname").unwrap_or(String::from("localhost"));
|
||||||
|
let contents_array: Vec<&str> = contents.split(' ').collect();
|
||||||
|
let hostname = contents_array[0].trim();
|
||||||
|
|
||||||
|
if sethostname(OsStr::new(hostname)).is_err() {
|
||||||
|
warn!(logger, "failed to set hostname");
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn sethostname(hostname: &OsStr) -> Result<()> {
|
||||||
|
let size = hostname.len() as usize;
|
||||||
|
|
||||||
|
let result =
|
||||||
|
unsafe { libc::sethostname(hostname.as_bytes().as_ptr() as *const libc::c_char, size) };
|
||||||
|
|
||||||
|
if result != 0 {
|
||||||
|
Err(ErrorKind::ErrorCode("failed to set hostname".to_string()).into())
|
||||||
|
} else {
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
static ref SHELLS: Arc<Mutex<Vec<String>>> = {
|
static ref SHELLS: Arc<Mutex<Vec<String>>> = {
|
||||||
let mut v = Vec::new();
|
let mut v = Vec::new();
|
||||||
|
Loading…
Reference in New Issue
Block a user