src/config/network.rs: write changes to interfaces.new

This commit is contained in:
Dietmar Maurer 2020-04-23 07:19:29 +02:00
parent 2c18efd902
commit 02e36d96ad

View File

@ -266,19 +266,27 @@ impl NetworkConfig {
}
pub const NETWORK_INTERFACES_FILENAME: &str = "/etc/network/interfaces";
pub const NETWORK_INTERFACES_NEW_FILENAME: &str = "/etc/network/interfaces.new";
pub const NETWORK_LOCKFILE: &str = "/var/lock/pve-network.lck";
pub fn config() -> Result<(NetworkConfig, [u8;32]), Error> {
let content = match std::fs::read(NETWORK_INTERFACES_FILENAME) {
Ok(c) => c,
Err(err) => {
let content = std::fs::read(NETWORK_INTERFACES_NEW_FILENAME)
.or_else(|err| {
if err.kind() == std::io::ErrorKind::NotFound {
Vec::new()
std::fs::read(NETWORK_INTERFACES_FILENAME)
.or_else(|err| {
if err.kind() == std::io::ErrorKind::NotFound {
Ok(Vec::new())
} else {
bail!("unable to read '{}' - {}", NETWORK_INTERFACES_FILENAME, err);
}
})
} else {
bail!("unable to read '{}' - {}", NETWORK_INTERFACES_FILENAME, err);
bail!("unable to read '{}' - {}", NETWORK_INTERFACES_NEW_FILENAME, err);
}
}
};
})?;
let digest = openssl::sha::sha256(&content);
@ -301,7 +309,7 @@ pub fn save_config(config: &NetworkConfig) -> Result<(), Error> {
.owner(nix::unistd::ROOT)
.group(nix::unistd::Gid::from_raw(0));
replace_file(NETWORK_INTERFACES_FILENAME, &raw, options)?;
replace_file(NETWORK_INTERFACES_NEW_FILENAME, &raw, options)?;
Ok(())
}