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:
30
src/main.rs
30
src/main.rs
@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user