From b14bdb8ea78a0598f1436dec391f70abafb9ec3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Ciarcin=CC=81ski?= Date: Sat, 18 Jan 2025 22:00:13 +0100 Subject: [PATCH] Fix FreeBSD build --- Cargo.lock | 39 +++++++++++++++++++++++---------------- src/netlink.rs | 1 + src/wgapi_freebsd.rs | 26 +++++++++++--------------- 3 files changed, 35 insertions(+), 31 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b2adf12..9ed189f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -52,11 +52,12 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "3.0.6" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", + "once_cell", "windows-sys", ] @@ -80,9 +81,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" [[package]] name = "byteorder" @@ -166,7 +167,7 @@ dependencies = [ "nix", "serde", "serde_test", - "thiserror 2.0.9", + "thiserror 2.0.11", "x25519-dalek", ] @@ -230,9 +231,9 @@ checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "log" -version = "0.4.22" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" [[package]] name = "memchr" @@ -337,6 +338,12 @@ dependencies = [ "memoffset", ] +[[package]] +name = "once_cell" +version = "1.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + [[package]] name = "paste" version = "1.0.15" @@ -345,9 +352,9 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "proc-macro2" -version = "1.0.92" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" dependencies = [ "unicode-ident", ] @@ -451,9 +458,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.95" +version = "2.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46f71c0377baf4ef1cc3e3402ded576dccc315800fbc62dfc7fe04b009773b4a" +checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80" dependencies = [ "proc-macro2", "quote", @@ -471,11 +478,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.9" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" dependencies = [ - "thiserror-impl 2.0.9", + "thiserror-impl 2.0.11", ] [[package]] @@ -491,9 +498,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.9" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" dependencies = [ "proc-macro2", "quote", diff --git a/src/netlink.rs b/src/netlink.rs index 9533673..30a1803 100644 --- a/src/netlink.rs +++ b/src/netlink.rs @@ -225,6 +225,7 @@ where } /// Create WireGuard interface. +/// Note: maximum 15 characters for `ifname`. pub(crate) fn create_interface(ifname: &str) -> NetlinkResult<()> { let mut message = LinkMessage::default(); message.header.flags = LinkFlags::Up; diff --git a/src/wgapi_freebsd.rs b/src/wgapi_freebsd.rs index 9f46d9b..fa76e22 100644 --- a/src/wgapi_freebsd.rs +++ b/src/wgapi_freebsd.rs @@ -1,4 +1,4 @@ -use std::{net::IpAddr, str::FromStr}; +use std::net::IpAddr; use crate::{ bsd, @@ -14,7 +14,7 @@ use crate::{ impl WireguardInterfaceApi for WGApi { /// Creates a WireGuard network interface. fn create_interface(&self) -> Result<(), WireguardInterfaceError> { - bsd::load_wireguard_kernel_module(); + let _ = bsd::load_wireguard_kernel_module(); debug!("Creating interface {}", &self.ifname); bsd::create_interface(&self.ifname)?; debug!("Interface {} created successfully", &self.ifname); @@ -64,17 +64,11 @@ impl WireguardInterfaceApi for WGApi { self.ifname ); - // assign IP address to interface - debug!( - "Parsing address {} for interface {}", - config.address, self.ifname - ); - let address = IpAddrMask::from_str(&config.address)?; - debug!( - "Address {} parsed successfully for interface {}", - config.address, self.ifname - ); - self.assign_address(&address)?; + // Assign IP address to the interface. + for address in &config.addresses { + self.assign_address(address)?; + } + // configure interface debug!( "Applying the WireGuard host configuration for interface {}", @@ -99,13 +93,15 @@ impl WireguardInterfaceApi for WGApi { } info!( - "Interface {} has been successfully configured. It has been assigned the following address: {}", - self.ifname, address + "Interface {} has been successfully configured. \ + It has been assigned the following addresses: {:?}", + self.ifname, config.addresses ); debug!( "Interface {} configured with config: {config:?}", self.ifname ); + Ok(()) }