use alloc::string::String;
use alloc::vec::Vec;
use crate::ast::{L4Modifiers, Protocol};
use crate::reverse::{ProtocolDissection, be_u16, sd};
pub(crate) fn dissect_udp_header(
ip_body: &[u8],
l4: &mut L4Modifiers,
l4_payload: &mut Vec<u8>,
) -> Option<(u16, u16)> {
if ip_body.len() < 8 {
return None;
}
let (sp, dp, ap) = (be_u16(ip_body, 0), be_u16(ip_body, 2), &ip_body[8..]);
*l4_payload = ap.to_vec();
(l4.src_port, l4.dst_port) = (Some(sp), Some(dp));
Some((sp, dp))
}
pub(crate) fn dissect_udp(payload: &[u8]) -> ProtocolDissection {
sd(Protocol::Udp, String::from("udp"), payload.to_vec())
}