diff --git a/src/addr/get.rs b/src/addr/get.rs index c64d86d..35f78c8 100644 --- a/src/addr/get.rs +++ b/src/addr/get.rs @@ -2,7 +2,7 @@ use futures::{ future::{self, Either}, - stream::{StreamExt, TryStream, TryStreamExt}, + stream::{Stream, StreamExt, TryStreamExt}, FutureExt, }; use std::net::IpAddr; @@ -34,7 +34,7 @@ impl AddressGetRequest { &mut self.message } - pub fn execute(self) -> impl TryStream { + pub fn execute(self) -> impl Stream> { let AddressGetRequest { mut handle, message, diff --git a/src/link/get.rs b/src/link/get.rs index 8ab9c0f..ec76ef4 100644 --- a/src/link/get.rs +++ b/src/link/get.rs @@ -2,7 +2,7 @@ use futures::{ future::{self, Either}, - stream::{StreamExt, TryStream}, + stream::{Stream, StreamExt}, FutureExt, }; use netlink_packet_core::{NetlinkMessage, NLM_F_DUMP, NLM_F_REQUEST}; @@ -48,7 +48,7 @@ impl LinkGetRequest { } /// Execute the request - pub fn execute(self) -> impl TryStream { + pub fn execute(self) -> impl Stream> { let LinkGetRequest { mut handle, message, diff --git a/src/neighbour/get.rs b/src/neighbour/get.rs index 3966cb2..ff5a1cb 100644 --- a/src/neighbour/get.rs +++ b/src/neighbour/get.rs @@ -2,7 +2,7 @@ use futures::{ future::{self, Either}, - stream::{StreamExt, TryStream}, + stream::{Stream, StreamExt}, FutureExt, }; use netlink_packet_core::{ @@ -41,7 +41,7 @@ impl NeighbourGetRequest { /// Execute the request pub fn execute( self, - ) -> impl TryStream { + ) -> impl Stream> { let NeighbourGetRequest { mut handle, message, diff --git a/src/route/get.rs b/src/route/get.rs index a938532..c817e81 100644 --- a/src/route/get.rs +++ b/src/route/get.rs @@ -2,13 +2,14 @@ use futures::{ future::{self, Either}, - stream::{StreamExt, TryStream}, + stream::{Stream, StreamExt}, FutureExt, }; use netlink_packet_core::{NetlinkMessage, NLM_F_DUMP, NLM_F_REQUEST}; use netlink_packet_route::{ - route::RouteMessage, AddressFamily, RouteNetlinkMessage, + route::{RouteAttribute, RouteMessage}, + AddressFamily, RouteNetlinkMessage, }; use crate::{try_rtnl, Error, Handle}; @@ -45,15 +46,24 @@ impl RouteGetRequest { &mut self.message } - pub fn execute(self) -> impl TryStream { + pub fn execute(self) -> impl Stream> { let RouteGetRequest { mut handle, message, } = self; + let has_dest = message + .attributes + .iter() + .any(|attr| matches!(attr, RouteAttribute::Destination(_))); + let mut req = NetlinkMessage::from(RouteNetlinkMessage::GetRoute(message)); - req.header.flags = NLM_F_REQUEST | NLM_F_DUMP; + req.header.flags = NLM_F_REQUEST; + + if !has_dest { + req.header.flags |= NLM_F_DUMP; + } match handle.request(req) { Ok(response) => Either::Left(response.map(move |msg| { diff --git a/src/rule/get.rs b/src/rule/get.rs index ee3d50d..04d5699 100644 --- a/src/rule/get.rs +++ b/src/rule/get.rs @@ -2,7 +2,7 @@ use futures::{ future::{self, Either}, - stream::{StreamExt, TryStream}, + stream::{Stream, StreamExt}, FutureExt, }; use netlink_packet_core::{NetlinkMessage, NLM_F_DUMP, NLM_F_REQUEST}; @@ -37,7 +37,7 @@ impl RuleGetRequest { &mut self.message } - pub fn execute(self) -> impl TryStream { + pub fn execute(self) -> impl Stream> { let RuleGetRequest { mut handle, message, diff --git a/src/traffic_control/get.rs b/src/traffic_control/get.rs index 01cb262..f6c72f3 100644 --- a/src/traffic_control/get.rs +++ b/src/traffic_control/get.rs @@ -2,7 +2,7 @@ use futures::{ future::{self, Either}, - stream::{StreamExt, TryStream}, + stream::{Stream, StreamExt}, FutureExt, }; use netlink_packet_core::{NetlinkMessage, NLM_F_DUMP, NLM_F_REQUEST}; @@ -27,7 +27,7 @@ impl QDiscGetRequest { } /// Execute the request - pub fn execute(self) -> impl TryStream { + pub fn execute(self) -> impl Stream> { let QDiscGetRequest { mut handle, message, @@ -73,7 +73,7 @@ impl TrafficClassGetRequest { } /// Execute the request - pub fn execute(self) -> impl TryStream { + pub fn execute(self) -> impl Stream> { let TrafficClassGetRequest { mut handle, message, @@ -107,7 +107,7 @@ impl TrafficFilterGetRequest { } /// Execute the request - pub fn execute(self) -> impl TryStream { + pub fn execute(self) -> impl Stream> { let TrafficFilterGetRequest { mut handle, message, @@ -148,7 +148,7 @@ impl TrafficChainGetRequest { } /// Execute the request - pub fn execute(self) -> impl TryStream { + pub fn execute(self) -> impl Stream> { let TrafficChainGetRequest { mut handle, message,