aboutsummaryrefslogtreecommitdiff
path: root/src/link.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/link.rs')
-rw-r--r--src/link.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/link.rs b/src/link.rs
index 209b8a6..ffbaa99 100644
--- a/src/link.rs
+++ b/src/link.rs
@@ -147,3 +147,20 @@ pub async fn wait_exists(link: String) -> Result<()> {
Ok(())
}
+
+/// Returns the index of an interface.
+pub async fn index(link: String) -> Result<u32> {
+ let (conn, handle, _) = rtnetlink::new_connection()?;
+ tokio::spawn(conn);
+
+ let link = handle
+ .link()
+ .get()
+ .match_name(link.clone())
+ .execute()
+ .try_next()
+ .await?
+ .ok_or(Error::LinkNotFound(link))?;
+
+ Ok(link.header.index)
+}