use crate::error::{NetflowError, Result};
use netflow_parser::NetflowParser;
#[cfg_attr(not(test), allow(dead_code))]
pub fn validate_v9_template(template_packet: &[u8]) -> Result<()> {
let mut parser = NetflowParser::default();
let parse_result = parser.parse_bytes(template_packet);
if let Some(error) = parse_result.error {
return Err(NetflowError::ValidationError(format!(
"Invalid V9 template: {:?}",
error
)));
}
if parse_result.packets.is_empty() {
return Err(NetflowError::ValidationError(
"No packets found in V9 template".to_string(),
));
}
for packet in &parse_result.packets {
match packet {
netflow_parser::NetflowPacket::V9(_) => {
}
_ => {
return Err(NetflowError::ValidationError(
"Expected V9 packet, got different NetFlow version".to_string(),
));
}
}
}
Ok(())
}
#[cfg_attr(not(test), allow(dead_code))]
pub fn validate_ipfix_template(template_packet: &[u8]) -> Result<()> {
let mut parser = NetflowParser::default();
let parse_result = parser.parse_bytes(template_packet);
if let Some(error) = parse_result.error {
return Err(NetflowError::ValidationError(format!(
"Invalid IPFIX template: {:?}",
error
)));
}
if parse_result.packets.is_empty() {
return Err(NetflowError::ValidationError(
"No packets found in IPFIX template".to_string(),
));
}
for packet in &parse_result.packets {
match packet {
netflow_parser::NetflowPacket::IPFix(_) => {
}
_ => {
return Err(NetflowError::ValidationError(
"Expected IPFIX packet, got different NetFlow version".to_string(),
));
}
}
}
Ok(())
}
#[cfg(test)]
mod tests {
#[test]
fn test_validation_module_compiles() {
assert!(true);
}
}