ethtool/
macros.rs

1// SPDX-License-Identifier: MIT
2
3#[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}