From: Kevin P. Fleming Date: Sun, 6 Jul 2025 15:46:28 +0000 (-0400) Subject: Improve make_addr_port by letting SocketAddrV4/V6 format themselves. X-Git-Tag: rec-5.3.0-alpha2~1^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=348e847c0f3d1f4f3c7a8063fecca9aef462dadc;p=thirdparty%2Fpdns.git Improve make_addr_port by letting SocketAddrV4/V6 format themselves. --- diff --git a/contrib/pblogger-rs/src/display.rs b/contrib/pblogger-rs/src/display.rs index d85f0ca62e..c8fb08d20a 100644 --- a/contrib/pblogger-rs/src/display.rs +++ b/contrib/pblogger-rs/src/display.rs @@ -2,7 +2,7 @@ use crate::pdns::{PbdnsMessage, pbdns_message}; use byteorder::{ByteOrder, NetworkEndian}; use chrono::DateTime; use std::fmt; -use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr}; +use std::net::{Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4, SocketAddrV6}; pub struct ClientMessage { pub client_addr: SocketAddr, @@ -30,25 +30,30 @@ fn make_addr_port( if let Some(family) = msg_family && let Some(addr) = msg_addr { - let fromaddr = match pbdns_message::SocketFamily::try_from(family) { - Ok(pbdns_message::SocketFamily::Inet) => { + match (pbdns_message::SocketFamily::try_from(family), msg_port) { + (Ok(pbdns_message::SocketFamily::Inet), Some(port)) => SocketAddrV4::new( + Ipv4Addr::from_bits(NetworkEndian::read_u32(&addr[0..4])), + u16::try_from(port).unwrap(), + ) + .to_string(), + (Ok(pbdns_message::SocketFamily::Inet6), Some(port)) => SocketAddrV6::new( + Ipv6Addr::from_bits(NetworkEndian::read_u128(&addr[0..16])), + u16::try_from(port).unwrap(), + 0, + 0, + ) + .to_string(), + (Ok(pbdns_message::SocketFamily::Inet), None) => { Ipv4Addr::from_bits(NetworkEndian::read_u32(&addr[0..4])).to_string() } - Ok(pbdns_message::SocketFamily::Inet6) => { - format!( - "[{}]", - Ipv6Addr::from_bits(NetworkEndian::read_u128(&addr[0..16])) - ) + (Ok(pbdns_message::SocketFamily::Inet6), None) => { + Ipv6Addr::from_bits(NetworkEndian::read_u128(&addr[0..16])).to_string() } - Err(_) => "unsupported".into(), - }; - if let Some(port) = msg_port { - return format!("{fromaddr}:{port}"); + (Err(_), _) => "unsupported".into(), } - return fromaddr; + } else { + "unknown".into() } - - "unknown".into() } #[allow(clippy::too_many_lines)]