use crate::netlink::{Error, MessageBuilder, Result, types::tc::qdisc::prio::*};
pub fn build(builder: &mut MessageBuilder, params: &[String]) -> Result<()> {
let mut bands: i32 = 3;
let mut priomap = [1u8, 2, 2, 2, 1, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1];
let mut i = 0;
while i < params.len() {
match params[i].as_str() {
"bands" if i + 1 < params.len() => {
bands = params[i + 1]
.parse()
.map_err(|_| Error::InvalidMessage("invalid bands".into()))?;
i += 2;
}
"priomap" if i + 16 < params.len() => {
for j in 0..16 {
priomap[j] = params[i + 1 + j]
.parse()
.map_err(|_| Error::InvalidMessage("invalid priomap value".into()))?;
}
i += 17;
}
_ => i += 1,
}
}
let qopt = TcPrioQopt { bands, priomap };
builder.append(&qopt);
Ok(())
}