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