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