1#[macro_export]
4macro_rules! try_rtnl {
5 ($msg: expr, $message_type:path) => {{
6 use netlink_packet_core::{NetlinkMessage, NetlinkPayload};
7 use netlink_packet_route::RouteNetlinkMessage;
8 use $crate::Error;
9
10 let (header, payload) = $msg.into_parts();
11 match payload {
12 NetlinkPayload::InnerMessage($message_type(msg)) => msg,
13 NetlinkPayload::Error(err) => return Err(Error::NetlinkError(err)),
14 _ => {
15 return Err(Error::UnexpectedMessage(NetlinkMessage::new(
16 header, payload,
17 )))
18 }
19 }
20 }};
21}
22
23#[macro_export]
24macro_rules! try_nl {
25 ($msg: expr) => {{
26 use netlink_packet_core::NetlinkPayload;
27 use $crate::Error;
28 if let NetlinkPayload::Error(err) = $msg.payload {
29 return Err(Error::NetlinkError(err));
30 }
31 }};
32}