diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2022-10-31 17:21:24 +0100 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2022-10-31 17:24:23 +0100 |
commit | f8c67ae1ebc86f068e9bb16e0a89f5e15d3ec2c8 (patch) | |
tree | 635f9cd6b0500f6207785fef5a3e0f65614c0db0 | |
parent | 1cd3fc2be8baa6b84896cb6731a102539f2e66b9 (diff) |
implement filtering for all v4/v6
-rw-r--r-- | src/lib.rs | 24 | ||||
-rw-r--r-- | tests/main.rs | 33 |
2 files changed, 24 insertions, 33 deletions
@@ -80,6 +80,30 @@ pub fn all_addresses() -> Result<Vec<IpAddr>> { rt.block_on(internal_addresses(None)) } +pub fn all_ipv4_addresses() -> Result<Vec<Ipv4Addr>> { + let addrs = all_addresses()? + .iter() + .filter_map(|addr| match addr { + IpAddr::V4(addr) => Some(*addr), + IpAddr::V6(_) => None, + }) + .collect(); + + Ok(addrs) +} + +pub fn all_ipv6_addresses() -> Result<Vec<Ipv6Addr>> { + let addrs = all_addresses()? + .iter() + .filter_map(|addr| match addr { + IpAddr::V4(_) => None, + IpAddr::V6(addr) => Some(*addr), + }) + .collect(); + + Ok(addrs) +} + async fn internal_addresses(filter: Option<String>) -> Result<Vec<IpAddr>> { let (connection, handle, _) = new_connection()?; tokio::spawn(connection); diff --git a/tests/main.rs b/tests/main.rs deleted file mode 100644 index 491f4f2..0000000 --- a/tests/main.rs +++ /dev/null @@ -1,33 +0,0 @@ -use linkaddrs::Result; - -#[test] -fn test_addresses() -> Result<()> { - let addrs = linkaddrs::addresses(String::from("lo"))?; - println!("{:?}", addrs); - - Ok(()) -} - -#[test] -fn test_ipv4_addresses() -> Result<()> { - let addrs = linkaddrs::ipv4_addresses(String::from("lo"))?; - println!("{:?}", addrs); - - Ok(()) -} - -#[test] -fn test_ipv6_addresses() -> Result<()> { - let addrs = linkaddrs::ipv6_addresses(String::from("lo"))?; - println!("{:?}", addrs); - - Ok(()) -} - -#[test] -fn test_all_addresses() -> Result<()> { - let addrs = linkaddrs::all_addresses()?; - println!("{:?}", addrs); - - Ok(()) -} |