netlink_packet_core/
payload.rs1use 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)]
19pub enum NetlinkPayload<I> {
20 Done(DoneMessage),
21 Error(ErrorMessage),
22 Noop,
23 Overrun(Vec<u8>),
24 InnerMessage(I),
25}
26
27impl<I> NetlinkPayload<I>
28where
29 I: NetlinkSerializable,
30{
31 pub fn message_type(&self) -> u16 {
32 match self {
33 NetlinkPayload::Done(_) => NLMSG_DONE,
34 NetlinkPayload::Error(_) => NLMSG_ERROR,
35 NetlinkPayload::Noop => NLMSG_NOOP,
36 NetlinkPayload::Overrun(_) => NLMSG_OVERRUN,
37 NetlinkPayload::InnerMessage(message) => message.message_type(),
38 }
39 }
40}