src/config/network.rs: parse bridge-ports
This commit is contained in:
@ -22,6 +22,7 @@ pub enum Token {
|
||||
Static,
|
||||
Attribute,
|
||||
MTU,
|
||||
BridgePorts,
|
||||
EOF,
|
||||
}
|
||||
|
||||
@ -40,6 +41,8 @@ lazy_static! {
|
||||
map.insert("netmask", Token::Netmask);
|
||||
map.insert("static", Token::Static);
|
||||
map.insert("mtu", Token::MTU);
|
||||
map.insert("bridge-ports", Token::BridgePorts);
|
||||
map.insert("bridge_ports", Token::BridgePorts);
|
||||
map
|
||||
};
|
||||
}
|
||||
|
@ -156,6 +156,24 @@ impl <R: BufRead> NetworkParser<R> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn parse_iface_list(&mut self) -> Result<Vec<String>, Error> {
|
||||
let mut list = Vec::new();
|
||||
|
||||
loop {
|
||||
let (token, text) = self.next()?;
|
||||
match token {
|
||||
Token::Newline => break,
|
||||
Token::Text => {
|
||||
if &text != "none" {
|
||||
list.push(text);
|
||||
}
|
||||
}
|
||||
_ => bail!("unable to parse interface list - unexpected token '{:?}'", token),
|
||||
}
|
||||
}
|
||||
|
||||
Ok(list)
|
||||
}
|
||||
fn parse_iface_attributes(&mut self, interface: &mut Interface) -> Result<(), Error> {
|
||||
|
||||
loop {
|
||||
@ -172,6 +190,12 @@ impl <R: BufRead> NetworkParser<R> {
|
||||
let mtu = self.parse_iface_mtu()?;
|
||||
interface.mtu = Some(mtu);
|
||||
}
|
||||
Token::BridgePorts => {
|
||||
self.eat(Token::BridgePorts)?;
|
||||
let ports = self.parse_iface_list()?;
|
||||
interface.bridge_ports = Some(ports);
|
||||
interface.interface_type = NetworkInterfaceType::Bridge;
|
||||
}
|
||||
Token::Netmask => bail!("netmask is deprecated and no longer supported"),
|
||||
_ => {
|
||||
self.parse_iface_addon_attribute(interface)?;
|
||||
|
Reference in New Issue
Block a user