aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2022-10-31 17:21:24 +0100
committerHimbeerserverDE <himbeerserverde@gmail.com>2022-10-31 17:24:23 +0100
commitf8c67ae1ebc86f068e9bb16e0a89f5e15d3ec2c8 (patch)
tree635f9cd6b0500f6207785fef5a3e0f65614c0db0
parent1cd3fc2be8baa6b84896cb6731a102539f2e66b9 (diff)
implement filtering for all v4/v6
-rw-r--r--src/lib.rs24
-rw-r--r--tests/main.rs33
2 files changed, 24 insertions, 33 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 2b94f24..fd9446f 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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(())
-}