aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2023-11-14 19:02:43 +0100
committerHimbeerserverDE <himbeerserverde@gmail.com>2023-11-14 19:02:43 +0100
commitec284b5f1543e54c64ac4c812370c35c1ce345d5 (patch)
tree4f9b1019a38907ec24c74d21f993fd88784e9c92
parent64702d5bb846660a3df6556192828daee286cb1b (diff)
allow granular control of functionality using features
-rw-r--r--Cargo.toml6
-rw-r--r--src/blocking.rs10
-rw-r--r--src/lib.rs4
-rw-r--r--src/link.rs4
4 files changed, 23 insertions, 1 deletions
diff --git a/Cargo.toml b/Cargo.toml
index eedf5f4..2e81902 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -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;
diff --git a/src/lib.rs b/src/lib.rs
index ea23a46..bea9dc2 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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);