aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main.rs22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/main.rs b/src/main.rs
index fae9f94..ceec7bd 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -513,17 +513,23 @@ fn file_entry(
let (host, addr) = if Name::from_str("in-addr.arpa.").unwrap().zone_of(hostname)
&& hostname.iter().len() <= 6
{
- let (host, addr) = hosts.iter().find(|(_, addr)| {
- IpNet::new(**addr, 32).unwrap()
- == hostname.parse_arpa_name().expect("can't parse arpa name")
- })?;
+ let (host, addr) = hosts
+ .iter()
+ .filter(|(_, addr)| addr.is_ipv4())
+ .find(|(_, addr)| {
+ IpNet::new(**addr, 32).unwrap()
+ == hostname.parse_arpa_name().expect("can't parse arpa name")
+ })?;
(host.clone(), *addr)
} else if Name::from_str("ip6.arpa.").unwrap().zone_of(hostname) && hostname.iter().len() <= 34
{
- let (host, addr) = hosts.iter().find(|(_, addr)| {
- IpNet::new(**addr, 128).unwrap()
- == hostname.parse_arpa_name().expect("can't parse arpa name")
- })?;
+ let (host, addr) = hosts
+ .iter()
+ .filter(|(_, addr)| addr.is_ipv6())
+ .find(|(_, addr)| {
+ IpNet::new(**addr, 128).unwrap()
+ == hostname.parse_arpa_name().expect("can't parse arpa name")
+ })?;
(host.clone(), *addr)
} else {
let hostname_utf8 = hostname.to_utf8();