netlink_packet_route/rtnl/nsid/
header.rs

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