fix #2942: implement lacp bond mode and bond_xmit_hash_policy

this was not yet implemented, should be compatible with pve and the gui

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak
2020-09-16 14:12:30 +02:00
committed by Dietmar Maurer
parent 85959a99ea
commit 8f2f3dd710
5 changed files with 85 additions and 3 deletions

View File

@ -27,6 +27,7 @@ pub enum Token {
BondSlaves,
BondMode,
BondPrimary,
BondXmitHashPolicy,
EOF,
}
@ -54,6 +55,8 @@ lazy_static! {
map.insert("bond-mode", Token::BondMode);
map.insert("bond-primary", Token::BondPrimary);
map.insert("bond_primary", Token::BondPrimary);
map.insert("bond_xmit_hash_policy", Token::BondXmitHashPolicy);
map.insert("bond-xmit-hash-policy", Token::BondXmitHashPolicy);
map
};
}

View File

@ -9,7 +9,7 @@ use regex::Regex;
use super::helper::*;
use super::lexer::*;
use super::{NetworkConfig, NetworkOrderEntry, Interface, NetworkConfigMethod, NetworkInterfaceType, bond_mode_from_str};
use super::{NetworkConfig, NetworkOrderEntry, Interface, NetworkConfigMethod, NetworkInterfaceType, bond_mode_from_str, bond_xmit_hash_policy_from_str};
pub struct NetworkParser<R: BufRead> {
input: Peekable<Lexer<R>>,
@ -249,6 +249,12 @@ impl <R: BufRead> NetworkParser<R> {
interface.bond_primary = Some(primary);
self.eat(Token::Newline)?;
}
Token::BondXmitHashPolicy => {
self.eat(Token::BondXmitHashPolicy)?;
let policy = bond_xmit_hash_policy_from_str(&self.next_text()?)?;
interface.bond_xmit_hash_policy = Some(policy);
self.eat(Token::Newline)?;
}
Token::Netmask => bail!("netmask is deprecated and no longer supported"),
_ => { // parse addon attributes