From 93815aa72b977807c284a97c2aa7b444dd2c391e Mon Sep 17 00:00:00 2001 From: MaxHearnden Date: Sun, 17 Nov 2024 14:03:54 +0000 Subject: [PATCH] Allow the user to specify their own socket This is useful when dealing with multiple network/user namespaces. Requires https://github.com/rust-netlink/netlink-proto/pull/25 --- src/connection.rs | 16 ++++++++++++++++ src/lib.rs | 1 + 2 files changed, 17 insertions(+) diff --git a/src/connection.rs b/src/connection.rs index 097b8ba..c5230d4 100644 --- a/src/connection.rs +++ b/src/connection.rs @@ -33,3 +33,19 @@ where netlink_proto::new_connection_with_socket(NETLINK_ROUTE)?; Ok((conn, Handle::new(handle), messages)) } + +#[allow(clippy::type_complexity)] +pub fn from_socket( + socket: S, +) -> ( + Connection, + Handle, + UnboundedReceiver<(NetlinkMessage, SocketAddr)>, +) +where + S: AsyncSocket, +{ + let (conn, handle, messages) = + netlink_proto::from_socket_with_codec(socket); + (conn, Handle::new(handle), messages) +} diff --git a/src/lib.rs b/src/lib.rs index 5d830dc..8b3b562 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -29,6 +29,7 @@ mod traffic_control; pub use crate::addr::{ AddressAddRequest, AddressDelRequest, AddressGetRequest, AddressHandle, }; +pub use crate::connection::from_socket; #[cfg(feature = "tokio_socket")] pub use crate::connection::new_connection; pub use crate::connection::new_connection_with_socket;