netlink_packet_route/rtnl/neighbour_table/
header.rs

1// SPDX-License-Identifier: MIT
2
3use netlink_packet_utils::{
4    traits::{Emitable, Parseable},
5    DecodeError,
6};
7
8use super::buffer::{NeighbourTableMessageBuffer, NEIGHBOUR_TABLE_HEADER_LEN};
9
10#[derive(Debug, PartialEq, Eq, Clone)]
11pub struct NeighbourTableHeader {
12    pub family: u8,
13}
14
15impl<T: AsRef<[u8]>> Parseable<NeighbourTableMessageBuffer<T>>
16    for NeighbourTableHeader
17{
18    fn parse(
19        buf: &NeighbourTableMessageBuffer<T>,
20    ) -> Result<Self, DecodeError> {
21        Ok(Self {
22            family: buf.family(),
23        })
24    }
25}
26
27impl Emitable for NeighbourTableHeader {
28    fn buffer_len(&self) -> usize {
29        NEIGHBOUR_TABLE_HEADER_LEN
30    }
31
32    fn emit(&self, buffer: &mut [u8]) {
33        let mut packet = NeighbourTableMessageBuffer::new(buffer);
34        packet.set_family(self.family);
35    }
36}