Fix error when DHCP enabled with auto ip on STP bridge
Resolves: RHBZ#2177733 Signed-off-by: Gris Ge <fge@redhat.com>
This commit is contained in:
parent
a3995d2ed8
commit
7abd8c6e38
@ -0,0 +1,67 @@
|
|||||||
|
From 333e82445c048812e3e85fb9f3cb7558dc3f2aeb Mon Sep 17 00:00:00 2001
|
||||||
|
From: Gris Ge <fge@redhat.com>
|
||||||
|
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 <fge@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
Name: nmstate
|
Name: nmstate
|
||||||
Version: 2.2.10
|
Version: 2.2.10
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
Summary: Declarative network manager API
|
Summary: Declarative network manager API
|
||||||
License: LGPLv2+
|
License: LGPLv2+
|
||||||
URL: https://github.com/%{srcname}/%{srcname}
|
URL: https://github.com/%{srcname}/%{srcname}
|
||||||
@ -13,6 +13,7 @@ Source1: https://github.com/nmstate/nmstate/releases/download/v%{version}
|
|||||||
Source2: https://nmstate.io/nmstate.gpg
|
Source2: https://nmstate.io/nmstate.gpg
|
||||||
Source3: https://github.com/nmstate/nmstate/releases/download/v%{version}/nmstate-vendor-%{version}.tar.xz
|
Source3: https://github.com/nmstate/nmstate/releases/download/v%{version}/nmstate-vendor-%{version}.tar.xz
|
||||||
Patch1: BZ_2182769-skip_if_ifnetifnames_0.patch
|
Patch1: BZ_2182769-skip_if_ifnetifnames_0.patch
|
||||||
|
Patch2: 0002-Fix-error-when-DHCP-with-auto-IP-address-on-STP-enabled.patch
|
||||||
BuildRequires: python3-devel
|
BuildRequires: python3-devel
|
||||||
BuildRequires: python3-setuptools
|
BuildRequires: python3-setuptools
|
||||||
BuildRequires: gnupg2
|
BuildRequires: gnupg2
|
||||||
@ -151,6 +152,9 @@ popd
|
|||||||
/sbin/ldconfig
|
/sbin/ldconfig
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Apr 25 2023 Gris Ge <fge@redhat.com> - 2.2.10-3
|
||||||
|
- Fix error when DHCP enabled with auto ip on STP bridge
|
||||||
|
|
||||||
* Sun Apr 23 2023 Gris Ge <fge@redhat.com> - 2.2.10-2
|
* Sun Apr 23 2023 Gris Ge <fge@redhat.com> - 2.2.10-2
|
||||||
- Do not pin NIC if `net.ifnames=0`
|
- Do not pin NIC if `net.ifnames=0`
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user