use netlink_packet_core::{Emitable, Parseable};
use crate::{
stats::{
AfSpecStat, AfSpecStats, MplsLinkStats, StatsAttribute,
StatsFilterMask, StatsHeader, StatsMessage, StatsMessageBuffer,
},
AddressFamily,
};
#[test]
fn test_parsing_af_spec_mpls() {
let raw: Vec<u8> = {
let mut v = vec![
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x54, 0x00, 0x05, 0x00,
0x50, 0x00, 0x1c, 0x00,
0x4c, 0x00, 0x01, 0x00,
];
v.extend_from_slice(&[0u8; 72]);
v
};
let expected = StatsMessage {
header: StatsHeader {
family: AddressFamily::Unspec,
ifindex: 1,
filter_mask: StatsFilterMask::AfSpec,
},
attributes: vec![StatsAttribute::AfSpec(AfSpecStats(vec![
AfSpecStat::Mpls(MplsLinkStats::default()),
]))],
};
assert_eq!(
expected,
StatsMessage::parse(&StatsMessageBuffer::new(&raw)).unwrap()
);
let mut buf = vec![0; expected.buffer_len()];
expected.emit(&mut buf);
assert_eq!(buf, raw);
}