src/config/network.rs: implement bond_mode

and rename bond_slaves to slaves to make it compatible with pve.
This commit is contained in:
Dietmar Maurer
2020-05-07 14:07:45 +02:00
parent c2ffc68554
commit bab5d18c3d
5 changed files with 94 additions and 20 deletions

View File

@ -25,6 +25,7 @@ pub enum Token {
BridgePorts,
BridgeVlanAware,
BondSlaves,
BondMode,
EOF,
}
@ -49,6 +50,8 @@ lazy_static! {
map.insert("bridge_vlan_aware", Token::BridgeVlanAware);
map.insert("bond-slaves", Token::BondSlaves);
map.insert("bond_slaves", Token::BondSlaves);
map.insert("bond-mode", Token::BondMode);
map.insert("bond_mode", Token::BondMode);
map
};
}

View File

@ -9,7 +9,7 @@ use regex::Regex;
use super::helper::*;
use super::lexer::*;
use super::{NetworkConfig, NetworkOrderEntry, Interface, NetworkConfigMethod, NetworkInterfaceType};
use super::{NetworkConfig, NetworkOrderEntry, Interface, NetworkConfigMethod, NetworkInterfaceType, bond_mode_from_str};
pub struct NetworkParser<R: BufRead> {
input: Peekable<Lexer<R>>,
@ -236,9 +236,15 @@ impl <R: BufRead> NetworkParser<R> {
Token::BondSlaves => {
self.eat(Token::BondSlaves)?;
let slaves = self.parse_iface_list()?;
interface.bond_slaves = Some(slaves);
interface.slaves = Some(slaves);
interface.set_interface_type(NetworkInterfaceType::Bond)?;
}
Token::BondMode => {
self.eat(Token::BondMode)?;
let mode = self.next_text()?;
interface.bond_mode = Some(bond_mode_from_str(&mode)?);
self.eat(Token::Newline)?;
}
Token::Netmask => bail!("netmask is deprecated and no longer supported"),
_ => { // parse addon attributes