From 610e4158859d01ed84413ae41dee785ea9adb5b7 Mon Sep 17 00:00:00 2001 From: Bruce Guenter Date: Wed, 7 Jun 2023 11:38:43 -0600 Subject: [PATCH 1/4] chore: Fix a few `const fn` functions --- src/sinks/prometheus/exporter.rs | 6 ++---- src/sinks/statsd/config.rs | 2 +- src/sinks/util/service/net/udp.rs | 11 ++--------- src/sinks/util/udp.rs | 2 +- 4 files changed, 6 insertions(+), 15 deletions(-) diff --git a/src/sinks/prometheus/exporter.rs b/src/sinks/prometheus/exporter.rs index 98bc9a504c014..80a33f95b938a 100644 --- a/src/sinks/prometheus/exporter.rs +++ b/src/sinks/prometheus/exporter.rs @@ -2,7 +2,7 @@ use std::{ convert::Infallible, hash::Hash, mem::{discriminant, Discriminant}, - net::SocketAddr, + net::{IpAddr, Ipv4Addr, SocketAddr}, sync::{Arc, RwLock}, time::{Duration, Instant}, }; @@ -164,9 +164,7 @@ impl Default for PrometheusExporterConfig { } } -fn default_address() -> SocketAddr { - use std::net::{IpAddr, Ipv4Addr}; - +const fn default_address() -> SocketAddr { SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)), 9598) } diff --git a/src/sinks/statsd/config.rs b/src/sinks/statsd/config.rs index 5e1052d59a8bd..bb631a2ee22df 100644 --- a/src/sinks/statsd/config.rs +++ b/src/sinks/statsd/config.rs @@ -99,7 +99,7 @@ impl Mode { } } -fn default_address() -> SocketAddr { +const fn default_address() -> SocketAddr { SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8125) } diff --git a/src/sinks/util/service/net/udp.rs b/src/sinks/util/service/net/udp.rs index d2655a409b008..86a4ceaab7f53 100644 --- a/src/sinks/util/service/net/udp.rs +++ b/src/sinks/util/service/net/udp.rs @@ -1,4 +1,4 @@ -use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr}; +use std::net::SocketAddr; use snafu::ResultExt; use tokio::net::UdpSocket; @@ -59,7 +59,7 @@ impl UdpConnector { .ok_or(NetError::NoAddresses)?; let addr = SocketAddr::new(ip, self.address.port); - let bind_address = find_bind_address(&addr); + let bind_address = crate::sinks::util::udp::find_bind_address(&addr); let socket = UdpSocket::bind(bind_address).await.context(FailedToBind)?; @@ -74,10 +74,3 @@ impl UdpConnector { Ok(socket) } } - -fn find_bind_address(remote_addr: &SocketAddr) -> SocketAddr { - match remote_addr { - SocketAddr::V4(_) => SocketAddr::new(IpAddr::V4(Ipv4Addr::UNSPECIFIED), 0), - SocketAddr::V6(_) => SocketAddr::new(IpAddr::V6(Ipv6Addr::UNSPECIFIED), 0), - } -} diff --git a/src/sinks/util/udp.rs b/src/sinks/util/udp.rs index 890f2f10d0154..4afc14871a979 100644 --- a/src/sinks/util/udp.rs +++ b/src/sinks/util/udp.rs @@ -248,7 +248,7 @@ async fn udp_send(socket: &mut UdpSocket, buf: &[u8]) -> tokio::io::Result<()> { Ok(()) } -fn find_bind_address(remote_addr: &SocketAddr) -> SocketAddr { +pub(super) const fn find_bind_address(remote_addr: &SocketAddr) -> SocketAddr { match remote_addr { SocketAddr::V4(_) => SocketAddr::new(IpAddr::V4(Ipv4Addr::UNSPECIFIED), 0), SocketAddr::V6(_) => SocketAddr::new(IpAddr::V6(Ipv6Addr::UNSPECIFIED), 0), From bb78d1816aaf758928bedbe2636ffdb164ec2f77 Mon Sep 17 00:00:00 2001 From: Bruce Guenter Date: Wed, 7 Jun 2023 14:26:44 -0600 Subject: [PATCH 2/4] Use `Ipv#Addr` constants instead of hard-coded addresses --- lib/vector-config/tests/integration/smoke.rs | 5 +---- src/config/api.rs | 8 ++++---- src/enrichment_tables/geoip.rs | 2 +- src/sinks/prometheus/exporter.rs | 2 +- src/sinks/statsd/config.rs | 2 +- src/sources/splunk_hec/mod.rs | 2 +- src/sources/statsd/mod.rs | 2 +- src/test_util/mod.rs | 4 ++-- 8 files changed, 12 insertions(+), 15 deletions(-) diff --git a/lib/vector-config/tests/integration/smoke.rs b/lib/vector-config/tests/integration/smoke.rs index 6129b2e7581f9..35398ba47cb08 100644 --- a/lib/vector-config/tests/integration/smoke.rs +++ b/lib/vector-config/tests/integration/smoke.rs @@ -349,10 +349,7 @@ const fn default_simple_source_timeout() -> Duration { } fn default_simple_source_listen_addr() -> SocketListenAddr { - SocketListenAddr::SocketAddr(SocketAddr::V4(SocketAddrV4::new( - Ipv4Addr::new(127, 0, 0, 1), - 9200, - ))) + SocketListenAddr::SocketAddr(SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::LOCALHOST, 9200))) } /// A sink for sending events to the `simple` service. diff --git a/src/config/api.rs b/src/config/api.rs index 7024b08ee8586..c102e93104a64 100644 --- a/src/config/api.rs +++ b/src/config/api.rs @@ -38,7 +38,7 @@ const fn default_enabled() -> bool { /// `vector top` will use it to determine which to connect to by default, if no URL /// override is provided. pub fn default_address() -> Option { - Some(SocketAddr::new(Ipv4Addr::new(127, 0, 0, 1).into(), 8686)) + Some(SocketAddr::new(Ipv4Addr::LOCALHOST.into(), 8686)) } const fn default_playground() -> bool { @@ -99,7 +99,7 @@ fn bool_merge() { #[test] fn bind_merge() { - let address = SocketAddr::new(Ipv4Addr::new(127, 0, 0, 1).into(), 9000); + let address = SocketAddr::new(Ipv4Addr::LOCALHOST.into(), 9000); let mut a = Options { enabled: true, address: Some(address), @@ -121,12 +121,12 @@ fn bind_merge() { #[test] fn bind_conflict() { let mut a = Options { - address: Some(SocketAddr::new(Ipv4Addr::new(127, 0, 0, 1).into(), 9000)), + address: Some(SocketAddr::new(Ipv4Addr::LOCALHOST.into(), 9000)), ..Options::default() }; let b = Options { - address: Some(SocketAddr::new(Ipv4Addr::new(127, 0, 0, 1).into(), 9001)), + address: Some(SocketAddr::new(Ipv4Addr::LOCALHOST.into(), 9001)), ..Options::default() }; diff --git a/src/enrichment_tables/geoip.rs b/src/enrichment_tables/geoip.rs index 569fc124600af..3a46bf17d8fac 100644 --- a/src/enrichment_tables/geoip.rs +++ b/src/enrichment_tables/geoip.rs @@ -114,7 +114,7 @@ impl Geoip { let dbkind = DatabaseKind::from(dbreader.metadata.database_type.as_str()); // Check if we can read database with dummy Ip. - let ip = IpAddr::V4(std::net::Ipv4Addr::new(0, 0, 0, 0)); + let ip = IpAddr::V4(std::net::Ipv4Addr::UNSPECIFIED); let result = match dbkind { DatabaseKind::Asn | DatabaseKind::Isp => dbreader.lookup::(ip).map(|_| ()), DatabaseKind::ConnectionType => dbreader.lookup::(ip).map(|_| ()), diff --git a/src/sinks/prometheus/exporter.rs b/src/sinks/prometheus/exporter.rs index 80a33f95b938a..2c6af1095674a 100644 --- a/src/sinks/prometheus/exporter.rs +++ b/src/sinks/prometheus/exporter.rs @@ -165,7 +165,7 @@ impl Default for PrometheusExporterConfig { } const fn default_address() -> SocketAddr { - SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)), 9598) + SocketAddr::new(IpAddr::V4(Ipv4Addr::UNSPECIFIED), 9598) } const fn default_distributions_as_summaries() -> bool { diff --git a/src/sinks/statsd/config.rs b/src/sinks/statsd/config.rs index bb631a2ee22df..19452ee74b928 100644 --- a/src/sinks/statsd/config.rs +++ b/src/sinks/statsd/config.rs @@ -100,7 +100,7 @@ impl Mode { } const fn default_address() -> SocketAddr { - SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8125) + SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), 8125) } impl GenerateConfig for StatsdSinkConfig { diff --git a/src/sources/splunk_hec/mod.rs b/src/sources/splunk_hec/mod.rs index 0c465ffaef97e..3839c5ea52f10 100644 --- a/src/sources/splunk_hec/mod.rs +++ b/src/sources/splunk_hec/mod.rs @@ -119,7 +119,7 @@ impl Default for SplunkConfig { } fn default_socket_address() -> SocketAddr { - SocketAddr::new(Ipv4Addr::new(0, 0, 0, 0).into(), 8088) + SocketAddr::new(Ipv4Addr::UNSPECIFIED.into(), 8088) } #[async_trait::async_trait] diff --git a/src/sources/statsd/mod.rs b/src/sources/statsd/mod.rs index 4f18e1d14be1b..ec4860146e619 100644 --- a/src/sources/statsd/mod.rs +++ b/src/sources/statsd/mod.rs @@ -133,7 +133,7 @@ impl GenerateConfig for StatsdConfig { fn generate_config() -> toml::Value { toml::Value::try_from(Self::Udp(UdpConfig::from_address( SocketListenAddr::SocketAddr(SocketAddr::V4(SocketAddrV4::new( - Ipv4Addr::new(127, 0, 0, 1), + Ipv4Addr::LOCALHOST, 8125, ))), ))) diff --git a/src/test_util/mod.rs b/src/test_util/mod.rs index 99f9f1b51badb..5b6bf17d03774 100644 --- a/src/test_util/mod.rs +++ b/src/test_util/mod.rs @@ -113,11 +113,11 @@ pub fn next_addr_for_ip(ip: IpAddr) -> SocketAddr { } pub fn next_addr() -> SocketAddr { - next_addr_for_ip(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1))) + next_addr_for_ip(IpAddr::V4(Ipv4Addr::LOCALHOST)) } pub fn next_addr_v6() -> SocketAddr { - next_addr_for_ip(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1))) + next_addr_for_ip(IpAddr::V6(Ipv6Addr::UNSPECIFIED)) } pub fn trace_init() { From 52dd0b83a71abd61188c0622f54d1bf8f19e51a4 Mon Sep 17 00:00:00 2001 From: Bruce Guenter Date: Thu, 8 Jun 2023 09:37:57 -0600 Subject: [PATCH 3/4] Fix IPv6 unspecified => localhost typo --- src/test_util/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test_util/mod.rs b/src/test_util/mod.rs index 5b6bf17d03774..25deef0af7be2 100644 --- a/src/test_util/mod.rs +++ b/src/test_util/mod.rs @@ -117,7 +117,7 @@ pub fn next_addr() -> SocketAddr { } pub fn next_addr_v6() -> SocketAddr { - next_addr_for_ip(IpAddr::V6(Ipv6Addr::UNSPECIFIED)) + next_addr_for_ip(IpAddr::V6(Ipv6Addr::LOCALHOST)) } pub fn trace_init() { From 96f8e127d19333748aec97a9a83b6d4b0f260423 Mon Sep 17 00:00:00 2001 From: Bruce Guenter Date: Thu, 8 Jun 2023 10:50:00 -0600 Subject: [PATCH 4/4] Reflect change to MSRV --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 21f5146478246..d55d300168992 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ publish = false default-run = "vector" autobenches = false # our benchmarks are not runnable on their own either way # Minimum supported rust version -rust-version = "1.66.0" +rust-version = "1.69.0" [[bin]] name = "vector"