1
0
mirror of https://gitlab.com/bauen1/dn42-roagen synced 2024-05-11 05:55:36 +00:00

fix max-length calculation

This commit is contained in:
bauen1
2020-05-09 18:37:47 +02:00
parent 28c34cd74e
commit 36aed41b3f

View File

@ -159,20 +159,36 @@ fn roa_filter(roas: Vec<ROA>, filters: Vec<ROAFilter>) -> Vec<ROA> {
}
}
print!("1");
println!("# warning: dropped {:?}", roa);
return None;
}).filter(|(_roa, filter)|
}).filter(|(roa, filter)|
/* drop roa if the filter isn't permit */
match filter.action {
ROAFilterAction::Permit => true,
ROAFilterAction::Deny => false,
ROAFilterAction::Deny => {
println!("# warning: dropped {:?}", roa);
return false;
}
}
).map(|(roa, filter)| {
ROA {
).filter_map(|(roa, filter)| {
if roa.route.network_length() > filter.maxlen {
println!("# warning: dropped {:?}", roa);
return None;
}
let mut maxlen = filter.maxlen;
if roa.maxlen != 0 {
if (roa.maxlen < maxlen) && (roa.maxlen > filter.minlen) {
maxlen = roa.maxlen;
}
// maxlen = std::cmp::max(std::cmp::min(maxlen, roa.maxlen), filter.minlen);
}
return Some(ROA {
route: roa.route,
origins: roa.origins,
maxlen: std::cmp::min(std::cmp::max(filter.minlen, roa.maxlen), filter.maxlen),
}
maxlen: maxlen,
});
}).collect();
// roas
}