netlink_packet_core/
payload.rs
1use std::fmt::Debug;
4
5use crate::{DoneMessage, ErrorMessage, NetlinkSerializable};
6
7pub const NLMSG_NOOP: u16 = 1;
9pub const NLMSG_ERROR: u16 = 2;
12pub const NLMSG_DONE: u16 = 3;
15pub const NLMSG_OVERRUN: u16 = 4;
16pub const NLMSG_ALIGNTO: u16 = 4;
17
18#[derive(Debug, PartialEq, Eq, Clone)]
19#[non_exhaustive]
20pub enum NetlinkPayload<I> {
21 Done(DoneMessage),
22 Error(ErrorMessage),
23 Noop,
24 Overrun(Vec<u8>),
25 InnerMessage(I),
26}
27
28impl<I> NetlinkPayload<I>
29where
30 I: NetlinkSerializable,
31{
32 pub fn message_type(&self) -> u16 {
33 match self {
34 NetlinkPayload::Done(_) => NLMSG_DONE,
35 NetlinkPayload::Error(_) => NLMSG_ERROR,
36 NetlinkPayload::Noop => NLMSG_NOOP,
37 NetlinkPayload::Overrun(_) => NLMSG_OVERRUN,
38 NetlinkPayload::InnerMessage(message) => message.message_type(),
39 }
40 }
41}