use crate::netlink::{Error, MessageBuilder, Result, types::tc::qdisc::sfq::*};
pub fn build(builder: &mut MessageBuilder, params: &[String]) -> Result<()> {
let mut qopt = TcSfqQopt {
quantum: 0, perturb_period: 0,
limit: 127,
..Default::default()
};
let mut i = 0;
while i < params.len() {
match params[i].as_str() {
"quantum" if i + 1 < params.len() => {
qopt.quantum = crate::util::parse::get_size(¶ms[i + 1])
.map_err(|_| Error::InvalidMessage("invalid quantum".into()))?
as u32;
i += 2;
}
"perturb" if i + 1 < params.len() => {
qopt.perturb_period = params[i + 1]
.parse()
.map_err(|_| Error::InvalidMessage("invalid perturb".into()))?;
i += 2;
}
"limit" if i + 1 < params.len() => {
qopt.limit = params[i + 1]
.parse()
.map_err(|_| Error::InvalidMessage("invalid limit".into()))?;
i += 2;
}
"divisor" if i + 1 < params.len() => {
qopt.divisor = params[i + 1]
.parse()
.map_err(|_| Error::InvalidMessage("invalid divisor".into()))?;
i += 2;
}
_ => i += 1,
}
}
builder.append(&qopt);
Ok(())
}