From 898940fd2137c3031e93726840546b58851ced37 Mon Sep 17 00:00:00 2001 From: Gris Ge Date: Mon, 5 Jun 2023 16:25:38 +0800 Subject: [PATCH] New gpg public key and remove unused patches Signed-off-by: Gris Ge --- 0002-fix_nix_deps.patch | 124 ------------------ ...n-DHCP-with-auto-IP-address-on-STP-e.patch | 67 ---------- nmstate.spec | 3 - sources | 2 +- 4 files changed, 1 insertion(+), 195 deletions(-) delete mode 100644 0002-fix_nix_deps.patch delete mode 100644 0003-Fix-error-when-DHCP-with-auto-IP-address-on-STP-e.patch diff --git a/0002-fix_nix_deps.patch b/0002-fix_nix_deps.patch deleted file mode 100644 index e9dfd1d..0000000 --- a/0002-fix_nix_deps.patch +++ /dev/null @@ -1,124 +0,0 @@ -From 4fc0b3e09ad892e2b2da975b6786998729511ac6 Mon Sep 17 00:00:00 2001 -From: Gris Ge -Date: Sun, 23 Apr 2023 17:37:00 +0800 -Subject: [PATCH 1/2] dep: Upgrade to nix 0.26.2 - -Signed-off-by: Gris Ge ---- - rust/src/lib/Cargo.toml | 2 +- - rust/src/lib/nispor/hostname.rs | 15 ++++++++------- - 2 files changed, 9 insertions(+), 8 deletions(-) - -diff --git a/rust/src/lib/Cargo.toml b/rust/src/lib/Cargo.toml -index 29fe4c34..1a4e96c4 100644 ---- a/rust/src/lib/Cargo.toml -+++ b/rust/src/lib/Cargo.toml -@@ -55,7 +55,7 @@ default-features = false - features = ["derive"] - - [dependencies.nix] --version = "0.24.1" -+version = "0.26.2" - optional = true - default-features = false - features = ["feature", "hostname"] -diff --git a/rust/src/lib/nispor/hostname.rs b/rust/src/lib/nispor/hostname.rs -index 517bf7c7..b96fb3f3 100644 ---- a/rust/src/lib/nispor/hostname.rs -+++ b/rust/src/lib/nispor/hostname.rs -@@ -1,3 +1,5 @@ -+// SPDX-License-Identifier: Apache-2.0 -+ - use std::io::Read; - - use crate::{ErrorKind, HostNameState, NmstateError}; -@@ -5,17 +7,16 @@ use crate::{ErrorKind, HostNameState, NmstateError}; - const HOST_NAME_MAX: usize = 64; - - pub(crate) fn get_hostname_state() -> Option { -- let mut buffer = [0u8; HOST_NAME_MAX]; -- let running = match nix::unistd::gethostname(&mut buffer) { -- Ok(hostname_cstr) => match hostname_cstr.to_str() { -- Ok(h) => Some(h.to_string()), -- Err(e) => { -- log::error!("Failed to convert hostname to String: {}", e); -+ let running = match nix::unistd::gethostname() { -+ Ok(hostname_cstr) => match hostname_cstr.into_string() { -+ Ok(h) => Some(h), -+ Err(s) => { -+ log::error!("Failed to convert hostname to String: {:?}", s); - None - } - }, - Err(e) => { -- log::error!("Failed to get hostname: {}", e); -+ log::error!("Failed to get hostname {}", e); - None - } - }; --- -2.40.0 - - -From c9fd1e80d3c87e1f844edcd86e9d36ae499ce717 Mon Sep 17 00:00:00 2001 -From: Gris Ge -Date: Sun, 23 Apr 2023 16:01:29 +0800 -Subject: [PATCH 2/2] cli: Do nothing for `persist-nic-names` when got - `net.ifnames=0` - -When `net.ifnames=0` is defined in kernel argument, systemd will disable -the predicable network interface name which make no sense for nmstate to -pin the interface names. Hence we do nothing in `persist-nic-names` in -that case. - -Manually tested in CentOS stream 9 VM. - -Signed-off-by: Gris Ge ---- - rust/src/cli/persist_nic.rs | 19 +++++++++++++++++++ - 1 file changed, 19 insertions(+) - -diff --git a/rust/src/cli/persist_nic.rs b/rust/src/cli/persist_nic.rs -index 6b126d58..61b07dbb 100644 ---- a/rust/src/cli/persist_nic.rs -+++ b/rust/src/cli/persist_nic.rs -@@ -7,6 +7,8 @@ - //! - //! The logic currently is: - //! -+//! - Do nothing if kernel argument contains `net.ifnames=0` which disabled the -+//! predicable network interface name, hence not fit our use case here. - //! - Iterate over all active NICs - //! - Pin every ethernet interface to its MAC address (prefer permanent MAC - //! address) -@@ -70,6 +72,14 @@ pub(crate) fn run_persist_immediately( - PersistAction::CleanUpDryRun => return clean_up(root, true), - }; - -+ if is_prediable_ifname_disabled() { -+ log::info!( -+ "Systemd predicable network interface name is disabled \ -+ by kernel argument `net.ifnames=0`, will do nothing" -+ ); -+ return Ok("".to_string()); -+ } -+ - let stamp_path = Path::new(root) - .join(SYSTEMD_NETWORK_LINK_FOLDER) - .join(NMSTATE_PERSIST_STAMP); -@@ -317,3 +327,12 @@ fn is_nmstate_generated_systemd_link_file(file_path: &PathBuf) -> bool { - .map(|_| buff == PERSIST_GENERATED_BY.as_bytes()) - .unwrap_or_default() - } -+ -+const KERNEL_CMDLINE_FILE: &str = "/proc/cmdline"; -+ -+fn is_prediable_ifname_disabled() -> bool { -+ std::fs::read(KERNEL_CMDLINE_FILE) -+ .map(|v| String::from_utf8(v).unwrap_or_default()) -+ .map(|c| c.contains("net.ifnames=0")) -+ .unwrap_or_default() -+} --- -2.40.0 - diff --git a/0003-Fix-error-when-DHCP-with-auto-IP-address-on-STP-e.patch b/0003-Fix-error-when-DHCP-with-auto-IP-address-on-STP-e.patch deleted file mode 100644 index 9424326..0000000 --- a/0003-Fix-error-when-DHCP-with-auto-IP-address-on-STP-e.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 333e82445c048812e3e85fb9f3cb7558dc3f2aeb Mon Sep 17 00:00:00 2001 -From: Gris Ge -Date: Tue, 25 Apr 2023 14:10:34 +0800 -Subject: [PATCH] ip: Fix error when DHCP with auto IP address on STP enabled - bridge - -When DHCP enabled with auto IP address on STP enabled bridge, nmstate -will fail with verification error: - - Verification failure: br0.interface.ipv4.address desire '[]', - current 'null' - -The root cause is STP suspended the DHCP action which cause current -state shows null IP address. And nmstate incorrectly treat [] != null -for IP address. - -Fixed in `sanitize_current_for_verify()` to set empty array if None. - -To reproduce this problem, we just enable DHCP with auto IP address -where no DHCP server exists. Integration test case included. - -Signed-off-by: Gris Ge ---- - rust/src/lib/query_apply/ip.rs | 13 ++++++++++--- - 1 file changed, 10 insertions(+), 3 deletions(-) - -diff --git a/rust/src/lib/query_apply/ip.rs b/rust/src/lib/query_apply/ip.rs -index b2d6ac49..a6df740b 100644 ---- a/rust/src/lib/query_apply/ip.rs -+++ b/rust/src/lib/query_apply/ip.rs -@@ -12,6 +12,11 @@ impl InterfaceIpv4 { - if self.dhcp_custom_hostname.is_none() { - self.dhcp_custom_hostname = Some(String::new()); - } -+ -+ // No IP address means empty. -+ if self.enabled && self.addresses.is_none() { -+ self.addresses = Some(Vec::new()); -+ } - } - - // Sort addresses and dedup -@@ -89,6 +94,11 @@ impl InterfaceIpv6 { - if self.dhcp_custom_hostname.is_none() { - self.dhcp_custom_hostname = Some(String::new()); - } -+ -+ // No IP address means empty. -+ if self.enabled && self.addresses.is_none() { -+ self.addresses = Some(Vec::new()); -+ } - } - - // Sort addresses and dedup -@@ -96,9 +106,6 @@ impl InterfaceIpv6 { - if let Some(addrs) = self.addresses.as_mut() { - addrs.sort_unstable(); - addrs.dedup(); -- if addrs.is_empty() { -- self.addresses = None; -- } - } - } - pub(crate) fn update(&mut self, other: &Self) { --- -2.40.0 - diff --git a/nmstate.spec b/nmstate.spec index 91ae9e0..f079da0 100644 --- a/nmstate.spec +++ b/nmstate.spec @@ -15,9 +15,6 @@ Source3: %{url}/releases/download/v%{version}/%{srcname}-vendor-%{version # https://bugzilla.redhat.com/show_bug.cgi?id=2161128 # but list Requires manually Patch1: 0001-Workaround-for-Fedora-rust-packaging.patch -Patch2: 0002-fix_nix_deps.patch -# https://github.com/coreos/fedora-coreos-tracker/issues/1480 -Patch3: 0003-Fix-error-when-DHCP-with-auto-IP-address-on-STP-e.patch BuildRequires: patchelf BuildRequires: python3-devel BuildRequires: python3-setuptools diff --git a/sources b/sources index fd7b9a0..4b6da29 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ SHA512 (nmstate-2.2.12.tar.gz) = ed4b786242a2273877d58be1495fd24c9a171b814e1b9de0363c6cd52d92cea8836ce9be81c2c5371d9f846e7192f83a53d0a0b7a2c85bf63b3a20035c9b8db3 SHA512 (nmstate-2.2.12.tar.gz.asc) = 915228c73fb69c43cf53cd89547dcfa750d67a06e722c3664d0c6421bad2a9db38b02825042649a1cd3c20a48c2c5fb119eb8dfbfe36ba32115d1b387023a5b6 -SHA512 (nmstate.gpg) = 8c0188d64660757030772096b3e836f354dbf1f3591bebd1b588aa8abef9c2e37996904e6edb8ee8797afb57237f29dd942a2ceffd24dac50af9e898c0b48c97 +SHA512 (nmstate.gpg) = bfbf3620045f3c1f15eaf6877fd7407834a75d2650976f2327abd02ddb910aa34500f07a774dd17023c43dcba42a0ffc66f23cd6816fd9694acad2c5eed9e8d3 SHA512 (nmstate-vendor-2.2.12.tar.xz) = 2dfae50d1ea44896570cd778615c165f0345e74f7ed07128364b82396db630a8811d9fd034f4d632bcafdb64b09345e35c5f3ecb48c997946a716a2c4498f0fe