diff options
-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(()) -} |