1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#![cfg(any(feature = "audit", feature = "rtnetlink"))]
#[macro_use]
extern crate futures;
#[macro_use]
extern crate lazy_static;
#[macro_use]
extern crate log;
mod codecs;
pub use crate::codecs::*;
mod framed;
pub use crate::framed::*;
mod connection;
pub use crate::connection::*;
mod errors;
pub use crate::errors::*;
mod handle;
pub use crate::handle::*;
mod request;
pub(crate) use crate::request::Request;
use netlink_packet::NetlinkMessage;
pub use netlink_sys::{Protocol, SocketAddr};
use futures::sync::mpsc::{unbounded, UnboundedReceiver};
use std::io;
pub fn new_connection(
protocol: Protocol,
) -> io::Result<(
Connection,
ConnectionHandle,
UnboundedReceiver<NetlinkMessage>,
)> {
let (requests_tx, requests_rx) = unbounded::<Request>();
let (messages_tx, messages_rx) = unbounded::<NetlinkMessage>();
Ok((
Connection::new(requests_rx, messages_tx, protocol)?,
ConnectionHandle::new(requests_tx),
messages_rx,
))
}