1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
use nom::bytes::complete::take;
use nom::IResult;
use crate::frame::components::MacAddress;
mod frame_control;
mod header;
mod sequence_control;
mod station_info;
pub use frame_control::parse_frame_control;
pub use header::*;
pub use sequence_control::parse_sequence_control;
pub use station_info::parse_station_info;
pub fn parse_mac(input: &[u8]) -> IResult<&[u8], MacAddress> {
let (remaining, bytes) = take(6usize)(input)?;
Ok((remaining, MacAddress(clone_slice::<6>(bytes))))
}
pub(crate) fn clone_slice<const X: usize>(slice: &[u8]) -> [u8; X] {
let mut cloned_slice: [u8; X] = [0; X];
cloned_slice.copy_from_slice(&slice[0..X]);
cloned_slice
}