rtnetlink/
connection.rs

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