src/api2/config/network.rs: allow to update 'auto' flag
This commit is contained in:
		@ -4,7 +4,6 @@ use ::serde::{Deserialize, Serialize};
 | 
			
		||||
 | 
			
		||||
use proxmox::api::{api, ApiMethod, Router, RpcEnvironment, Permission};
 | 
			
		||||
 | 
			
		||||
//use crate::api2::types::*;
 | 
			
		||||
use crate::config::network;
 | 
			
		||||
use crate::config::acl::{PRIV_SYS_AUDIT, PRIV_SYS_MODIFY};
 | 
			
		||||
use crate::api2::types::*;
 | 
			
		||||
@ -95,6 +94,8 @@ pub enum DeletableProperty {
 | 
			
		||||
    mtu_v4,
 | 
			
		||||
    /// Delete mtu IPv6.
 | 
			
		||||
    mtu_v6,
 | 
			
		||||
    /// Delete auto flag
 | 
			
		||||
    auto,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[api(
 | 
			
		||||
@ -104,6 +105,11 @@ pub enum DeletableProperty {
 | 
			
		||||
            name: {
 | 
			
		||||
                schema: NETWORK_INTERFACE_NAME_SCHEMA,
 | 
			
		||||
            },
 | 
			
		||||
            auto: {
 | 
			
		||||
                description: "Autostart interface.",
 | 
			
		||||
                type: bool,
 | 
			
		||||
                optional: true,
 | 
			
		||||
            },
 | 
			
		||||
            method_v4: {
 | 
			
		||||
                type: NetworkConfigMethod,
 | 
			
		||||
                optional: true,
 | 
			
		||||
@ -153,6 +159,7 @@ pub enum DeletableProperty {
 | 
			
		||||
/// Update network interface config.
 | 
			
		||||
pub fn update_interface(
 | 
			
		||||
    name: String,
 | 
			
		||||
    auto: Option<bool>,
 | 
			
		||||
    method_v4: Option<NetworkConfigMethod>,
 | 
			
		||||
    method_v6: Option<NetworkConfigMethod>,
 | 
			
		||||
    address: Option<String>,
 | 
			
		||||
@ -185,10 +192,12 @@ pub fn update_interface(
 | 
			
		||||
                DeletableProperty::method_v6 => { interface.method_v6 = None; },
 | 
			
		||||
                DeletableProperty::mtu_v4 => { interface.mtu_v4 = None; },
 | 
			
		||||
                DeletableProperty::mtu_v6 => { interface.mtu_v6 = None; },
 | 
			
		||||
                DeletableProperty::auto => { interface.auto = false; },
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if let Some(auto) = auto { interface.auto = auto; }
 | 
			
		||||
    if method_v4.is_some() { interface.method_v4 = method_v4; }
 | 
			
		||||
    if method_v6.is_some() { interface.method_v6 = method_v6; }
 | 
			
		||||
    if mtu_v4.is_some() { interface.mtu_v4 = mtu_v4; }
 | 
			
		||||
 | 
			
		||||
@ -562,7 +562,7 @@ pub const NETWORK_INTERFACE_NAME_SCHEMA: Schema = StringSchema::new("Network int
 | 
			
		||||
/// Network Interface configuration
 | 
			
		||||
pub struct Interface {
 | 
			
		||||
    /// Autostart interface
 | 
			
		||||
    pub autostart: bool,
 | 
			
		||||
    pub auto: bool,
 | 
			
		||||
    /// Interface is a physical network device
 | 
			
		||||
    pub exists: bool,
 | 
			
		||||
    /// Interface is active (UP)
 | 
			
		||||
 | 
			
		||||
@ -21,7 +21,7 @@ impl Interface {
 | 
			
		||||
    pub fn new(name: String) -> Self {
 | 
			
		||||
        Self {
 | 
			
		||||
            name,
 | 
			
		||||
            autostart: false,
 | 
			
		||||
            auto: false,
 | 
			
		||||
            exists: false,
 | 
			
		||||
            active: false,
 | 
			
		||||
            method_v4: None,
 | 
			
		||||
@ -154,7 +154,7 @@ impl Interface {
 | 
			
		||||
 | 
			
		||||
        if self.method_v4.is_none() && self.method_v6.is_none() { return Ok(()); }
 | 
			
		||||
 | 
			
		||||
        if self.autostart {
 | 
			
		||||
        if self.auto {
 | 
			
		||||
            writeln!(w, "auto {}", self.name)?;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -282,7 +282,7 @@ impl <R: BufRead> NetworkParser<R> {
 | 
			
		||||
 | 
			
		||||
        for iface in auto_flag.iter() {
 | 
			
		||||
            if let Some(interface) = config.interfaces.get_mut(iface) {
 | 
			
		||||
                interface.autostart = true;
 | 
			
		||||
                interface.auto = true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user