diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-11-14 19:02:43 +0100 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-11-14 19:02:43 +0100 |
commit | ec284b5f1543e54c64ac4c812370c35c1ce345d5 (patch) | |
tree | 4f9b1019a38907ec24c74d21f993fd88784e9c92 | |
parent | 64702d5bb846660a3df6556192828daee286cb1b (diff) |
allow granular control of functionality using features
-rw-r--r-- | Cargo.toml | 6 | ||||
-rw-r--r-- | src/blocking.rs | 10 | ||||
-rw-r--r-- | src/lib.rs | 4 | ||||
-rw-r--r-- | src/link.rs | 4 |
4 files changed, 23 insertions, 1 deletions
@@ -14,4 +14,10 @@ thiserror = "1.0" tokio = { version = "1.0", features = ["time"] } [features] +default = ["addr", "link", "route"] +addr = [] +link = ["status"] +route = [] +tunnel = [] +status = [] blocking = ["tokio/rt-multi-thread"] diff --git a/src/blocking.rs b/src/blocking.rs index 3a54ac4..3429153 100644 --- a/src/blocking.rs +++ b/src/blocking.rs @@ -1,3 +1,4 @@ +#[cfg(feature = "tunnel")] pub use crate::tunnel; macro_rules! blockify { @@ -18,6 +19,7 @@ macro_rules! blockify { }; } +#[cfg(feature = "addr")] pub mod addr { use crate::addr; @@ -31,18 +33,24 @@ pub mod addr { blockify!(add_link_local, addr::add_link_local, link: String, addr: IpAddr, prefix_len: u8); } +#[cfg(feature = "status")] pub mod link { use crate::link::{self, LinkState}; + #[cfg(feature = "link")] blockify!(set, link::set, link: String, state: LinkState); - blockify!(is_up -> bool, link::is_up, link: String); + #[cfg(feature = "link")] blockify!(set_mtu, link::set_mtu, link: String, mtu: u32); + #[cfg(feature = "link")] blockify!(add_vlan, link::add_vlan, link: String, parent: String, vlan_id: u16); + + blockify!(is_up -> bool, link::is_up, link: String); blockify!(wait_up, link::wait_up, link: String); blockify!(exists -> bool, link::exists, link: String); blockify!(wait_exists, link::wait_exists, link: String); } +#[cfg(feature = "route")] pub mod route { use crate::route; @@ -1,9 +1,13 @@ mod error; pub use error::*; +#[cfg(feature = "addr")] pub mod addr; +#[cfg(feature = "status")] pub mod link; +#[cfg(feature = "route")] pub mod route; +#[cfg(feature = "tunnel")] pub mod tunnel; #[cfg(feature = "blocking")] diff --git a/src/link.rs b/src/link.rs index 20c319e..a881527 100644 --- a/src/link.rs +++ b/src/link.rs @@ -7,12 +7,14 @@ use tokio::time::sleep; use futures::TryStreamExt; use netlink_packet_route::rtnl::IFF_UP; +#[cfg(feature = "link")] #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] pub enum LinkState { Up, Down, } +#[cfg(feature = "link")] pub async fn set(link: String, state: LinkState) -> Result<()> { let (conn, handle, _) = rtnetlink::new_connection()?; tokio::spawn(conn); @@ -55,6 +57,7 @@ pub async fn is_up(link: String) -> Result<bool> { Ok(is_up) } +#[cfg(feature = "link")] pub async fn set_mtu(link: String, mtu: u32) -> Result<()> { let (conn, handle, _) = rtnetlink::new_connection()?; tokio::spawn(conn); @@ -74,6 +77,7 @@ pub async fn set_mtu(link: String, mtu: u32) -> Result<()> { Ok(()) } +#[cfg(feature = "link")] pub async fn add_vlan(link: String, parent: String, vlan_id: u16) -> Result<()> { let (conn, handle, _) = rtnetlink::new_connection()?; tokio::spawn(conn); |