|
1 | 1 | //! Linux-specific network interfaces implementations.
|
2 | 2 |
|
3 | 3 | #[cfg(not(target_os = "android"))]
|
4 |
| -use n0_future::{Either, TryStream, TryStreamExt}; |
| 4 | +use n0_future::{Either, StreamExt, TryStream, TryStreamExt}; |
5 | 5 | #[cfg(not(target_os = "android"))]
|
6 | 6 | use netlink_packet_core::{NetlinkMessage, NLM_F_DUMP, NLM_F_REQUEST};
|
7 | 7 | #[cfg(not(target_os = "android"))]
|
@@ -37,8 +37,12 @@ pub enum Error {
|
37 | 37 | #[cfg(not(target_os = "android"))]
|
38 | 38 | #[error("netlink")]
|
39 | 39 | Netlink(#[from] NetlinkError),
|
| 40 | + #[cfg(not(target_os = "android"))] |
40 | 41 | #[error("unexpected netlink message")]
|
41 | 42 | UnexpectedNetlinkMessage,
|
| 43 | + #[cfg(not(target_os = "android"))] |
| 44 | + #[error("netlink error message: {0:?}")] |
| 45 | + NetlinkErrorMessage(netlink_packet_core::error::ErrorMessage), |
42 | 46 | }
|
43 | 47 |
|
44 | 48 | pub async fn default_route() -> Option<DefaultRouteDetails> {
|
@@ -104,7 +108,7 @@ macro_rules! try_rtnl {
|
104 | 108 | let (header, payload) = $msg.into_parts();
|
105 | 109 | match payload {
|
106 | 110 | NetlinkPayload::InnerMessage($message_type(msg)) => msg,
|
107 |
| - NetlinkPayload::Error(err) => return Err(Error::from(err)), |
| 111 | + NetlinkPayload::Error(err) => return Err(Error::NetlinkErrorMessage(err)), |
108 | 112 | _ => return Err(Error::UnexpectedNetlinkMessage),
|
109 | 113 | }
|
110 | 114 | }};
|
@@ -186,7 +190,9 @@ fn get_route(
|
186 | 190 | Ok(response) => {
|
187 | 191 | Either::Left(response.map(move |msg| Ok(try_rtnl!(msg, RouteNetlinkMessage::NewRoute))))
|
188 | 192 | }
|
189 |
| - Err(e) => Either::Right(n0_future::stream::once::<Result<RouteMessage, Error>>(e)), |
| 193 | + Err(e) => Either::Right(n0_future::stream::once::<Result<RouteMessage, Error>>(Err( |
| 194 | + e, |
| 195 | + ))), |
190 | 196 | }
|
191 | 197 | }
|
192 | 198 |
|
@@ -258,7 +264,9 @@ fn get_link(
|
258 | 264 | Ok(response) => {
|
259 | 265 | Either::Left(response.map(move |msg| Ok(try_rtnl!(msg, RouteNetlinkMessage::NewLink))))
|
260 | 266 | }
|
261 |
| - Err(e) => Either::Right(n0_future::stream::once::<Result<RouteMessage, Error>>(e)), |
| 267 | + Err(e) => Either::Right(n0_future::stream::once::<Result<RouteMessage, Error>>(Err( |
| 268 | + e, |
| 269 | + ))), |
262 | 270 | }
|
263 | 271 | }
|
264 | 272 |
|
|
0 commit comments