1use std::io;
4
5use futures::channel::mpsc::UnboundedReceiver;
6use netlink_packet_core::NetlinkMessage;
7use netlink_packet_route::RtnlMessage;
8use netlink_proto::Connection;
9use netlink_sys::{protocols::NETLINK_ROUTE, AsyncSocket, SocketAddr};
10
11use crate::Handle;
12
13#[cfg(feature = "tokio_socket")]
14#[allow(clippy::type_complexity)]
15pub fn new_connection() -> io::Result<(
16 Connection<RtnlMessage>,
17 Handle,
18 UnboundedReceiver<(NetlinkMessage<RtnlMessage>, SocketAddr)>,
19)> {
20 new_connection_with_socket()
21}
22
23#[allow(clippy::type_complexity)]
24pub fn new_connection_with_socket<S>() -> io::Result<(
25 Connection<RtnlMessage, S>,
26 Handle,
27 UnboundedReceiver<(NetlinkMessage<RtnlMessage>, SocketAddr)>,
28)>
29where
30 S: AsyncSocket,
31{
32 let (conn, handle, messages) =
33 netlink_proto::new_connection_with_socket(NETLINK_ROUTE)?;
34 Ok((conn, Handle::new(handle), messages))
35}