netlink_packet_route/rtnl/tc/
buffer.rs

1// SPDX-License-Identifier: MIT
2
3use crate::{
4    nlas::{NlaBuffer, NlasIterator},
5    DecodeError,
6};
7
8pub const TC_HEADER_LEN: usize = 20;
9
10buffer!(TcMessageBuffer(TC_HEADER_LEN) {
11    family: (u8, 0),
12    pad1: (u8, 1),
13    pad2: (u16, 2..4),
14    index: (i32, 4..8),
15    handle: (u32, 8..12),
16    parent: (u32, 12..16),
17    info: (u32, 16..TC_HEADER_LEN),
18    payload: (slice, TC_HEADER_LEN..),
19});
20
21impl<'a, T: AsRef<[u8]> + ?Sized> TcMessageBuffer<&'a T> {
22    pub fn nlas(&self) -> impl Iterator<Item = Result<NlaBuffer<&'a [u8]>, DecodeError>> {
23        NlasIterator::new(self.payload())
24    }
25}