优化数据对象decode + profile validate;benchmark对比routinator geomean 0.8
This commit is contained in:
19
src/audit.rs
19
src/audit.rs
@@ -133,28 +133,23 @@ pub fn sha256_hex(bytes: &[u8]) -> String {
|
||||
}
|
||||
|
||||
pub fn format_roa_ip_prefix(p: &crate::data_model::roa::IpPrefix) -> String {
|
||||
let addr = p.addr_bytes();
|
||||
match p.afi {
|
||||
crate::data_model::roa::RoaAfi::Ipv4 => {
|
||||
if p.addr.len() != 4 {
|
||||
return format!("ipv4:{:02X?}/{}", p.addr, p.prefix_len);
|
||||
}
|
||||
format!(
|
||||
"{}.{}.{}.{}{}",
|
||||
p.addr[0],
|
||||
p.addr[1],
|
||||
p.addr[2],
|
||||
p.addr[3],
|
||||
addr[0],
|
||||
addr[1],
|
||||
addr[2],
|
||||
addr[3],
|
||||
format!("/{}", p.prefix_len)
|
||||
)
|
||||
}
|
||||
crate::data_model::roa::RoaAfi::Ipv6 => {
|
||||
if p.addr.len() != 16 {
|
||||
return format!("ipv6:{:02X?}/{}", p.addr, p.prefix_len);
|
||||
}
|
||||
let mut parts = Vec::with_capacity(8);
|
||||
for i in 0..8 {
|
||||
let hi = p.addr[i * 2] as u16;
|
||||
let lo = p.addr[i * 2 + 1] as u16;
|
||||
let hi = addr[i * 2] as u16;
|
||||
let lo = addr[i * 2 + 1] as u16;
|
||||
parts.push(format!("{:x}", (hi << 8) | lo));
|
||||
}
|
||||
format!("{}{}", parts.join(":"), format!("/{}", p.prefix_len))
|
||||
|
||||
Reference in New Issue
Block a user