1#[macro_export]
4macro_rules! try_ethtool {
5 ($msg: expr) => {{
6 use netlink_packet_core::{NetlinkMessage, NetlinkPayload};
7 use $crate::EthtoolError;
8
9 match $msg {
10 Ok(msg) => {
11 let (header, payload) = msg.into_parts();
12 match payload {
13 NetlinkPayload::InnerMessage(msg) => msg,
14 NetlinkPayload::Error(err) => {
15 return Err(EthtoolError::NetlinkError(err))
16 }
17 _ => {
18 return Err(EthtoolError::UnexpectedMessage(
19 NetlinkMessage::new(header, payload),
20 ))
21 }
22 }
23 }
24 Err(e) => {
25 return Err(EthtoolError::Bug(format!(
26 "BUG: decode error {:?}",
27 e
28 )))
29 }
30 }
31 }};
32}