netlink_packet_route/tc/stats/
basic.rs
1use netlink_packet_utils::traits::{Emitable, Parseable};
4use netlink_packet_utils::DecodeError;
5
6#[derive(Default, Debug, PartialEq, Eq, Clone, Copy)]
8#[non_exhaustive]
9pub struct TcStatsBasic {
10 pub bytes: u64,
12 pub packets: u32,
14}
15
16const STATS_BASIC_LEN: usize = 16;
18
19buffer!(TcStatsBasicBuffer(STATS_BASIC_LEN) {
20 bytes: (u64, 0..8),
21 packets: (u32, 8..12),
22});
23
24impl<T: AsRef<[u8]>> Parseable<TcStatsBasicBuffer<T>> for TcStatsBasic {
25 type Error = ();
26 fn parse(buf: &TcStatsBasicBuffer<T>) -> Result<Self, ()> {
27 Ok(TcStatsBasic { bytes: buf.bytes(), packets: buf.packets() })
28 }
29}
30
31impl Emitable for TcStatsBasic {
32 fn buffer_len(&self) -> usize {
33 STATS_BASIC_LEN
34 }
35
36 fn emit(&self, buffer: &mut [u8]) {
37 let mut buffer = TcStatsBasicBuffer::new(buffer);
38 buffer.set_bytes(self.bytes);
39 buffer.set_packets(self.packets);
40 }
41}