aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2022-10-31 18:44:36 +0100
committerHimbeerserverDE <himbeerserverde@gmail.com>2022-10-31 18:44:36 +0100
commit678ce2a074a396bf550ffe5de24e372adb5319a0 (patch)
tree8369149826a9fcbbfa64d8e243592d8a8917abc5
parent651a896f3b9e709d1c41e45a6b70f495e9fda784 (diff)
doc comments
-rw-r--r--src/lib.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 41507c4..3cae419 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -9,6 +9,7 @@ use netlink_packet_route::rtnl::constants::{AF_INET, AF_INET6};
use rtnetlink::new_connection;
use tokio::runtime::Runtime;
+/// The errors that can occur when interacting with rtnetlink.
#[derive(Debug)]
pub enum Error {
RtNetlink(rtnetlink::Error),
@@ -43,14 +44,18 @@ impl From<std::io::Error> for Error {
}
}
+/// An alias for `std::result::Result` that uses `Error`
+/// as its error type.
pub type Result<T> = std::result::Result<T, Error>;
+/// Get all IP addresses of an interface.
pub fn addresses(link: String) -> Result<Vec<IpNet>> {
let rt = Runtime::new()?;
rt.block_on(internal_addresses(Some(link)))
}
+/// Get the IPv4 addresses of an interface.
pub fn ipv4_addresses(link: String) -> Result<Vec<Ipv4Net>> {
let addrs = addresses(link)?
.iter()
@@ -63,6 +68,7 @@ pub fn ipv4_addresses(link: String) -> Result<Vec<Ipv4Net>> {
Ok(addrs)
}
+/// Get the IPv6 addresses of an interface.
pub fn ipv6_addresses(link: String) -> Result<Vec<Ipv6Net>> {
let addrs = addresses(link)?
.iter()
@@ -75,12 +81,14 @@ pub fn ipv6_addresses(link: String) -> Result<Vec<Ipv6Net>> {
Ok(addrs)
}
+/// Get all IP addresses of this host.
pub fn all_addresses() -> Result<Vec<IpNet>> {
let rt = Runtime::new()?;
rt.block_on(internal_addresses(None))
}
+/// Get the IPv4 addresses of this host.
pub fn all_ipv4_addresses() -> Result<Vec<Ipv4Net>> {
let addrs = all_addresses()?
.iter()
@@ -93,6 +101,7 @@ pub fn all_ipv4_addresses() -> Result<Vec<Ipv4Net>> {
Ok(addrs)
}
+/// Get the IPv6 addresses of this host.
pub fn all_ipv6_addresses() -> Result<Vec<Ipv6Net>> {
let addrs = all_addresses()?
.iter()
@@ -105,6 +114,8 @@ pub fn all_ipv6_addresses() -> Result<Vec<Ipv6Net>> {
Ok(addrs)
}
+/// Get the IP addresses. If filter is Some, limit the search
+/// to that interface.
async fn internal_addresses(filter: Option<String>) -> Result<Vec<IpNet>> {
let (connection, handle, _) = new_connection()?;
tokio::spawn(connection);