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