netlink_packet_route/rtnl/nsid/
header.rs

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