use crate::dns_parser::{DnsIncoming, InterfaceId};
fn fuzz_interface_id() -> InterfaceId {
InterfaceId {
name: "fuzz0".to_string(),
index: 1,
}
}
pub fn parse_packet(data: &[u8]) {
let msg = match DnsIncoming::new(data.to_vec(), fuzz_interface_id()) {
Ok(msg) => msg,
Err(e) => {
let _ = e.to_string();
return;
}
};
assert_eq!(
msg.questions().len(),
msg.num_questions() as usize,
"parsed question count must match the header"
);
assert!(
msg.authorities().len() <= msg.num_authorities() as usize,
"parsed more authorities than the header declared"
);
assert!(
msg.additionals().len() <= msg.num_additionals() as usize,
"parsed more additionals than the header declared"
);
assert!(
msg.is_query() != msg.is_response(),
"a message must be either a query or a response"
);
let _ = format!("{msg:?}");
for record in msg.all_records() {
let _ = format!("{record:?}");
}
}