Compare commits
No commits in common. "c8" and "c8-beta" have entirely different histories.
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,2 +1,2 @@
|
||||
SOURCES/nmstate-1.4.6.tar.gz
|
||||
SOURCES/nmstate-vendor-1.4.6.tar.xz
|
||||
SOURCES/nmstate-1.4.4.tar.gz
|
||||
SOURCES/nmstate-vendor-1.4.4.tar.xz
|
||||
|
@ -1,2 +1,2 @@
|
||||
2c5d46ae03fe2d836e165aa3562f03386d215fdf SOURCES/nmstate-1.4.6.tar.gz
|
||||
4735ef08c31684624a7844832cc2ba20e67983f6 SOURCES/nmstate-vendor-1.4.6.tar.xz
|
||||
17340fe66e024e69e4c051e6a1bbd3d1974ca4ed SOURCES/nmstate-1.4.4.tar.gz
|
||||
91a01d73ca8db5e882defaabc7529e97f4dd596a SOURCES/nmstate-vendor-1.4.4.tar.xz
|
||||
|
@ -1,60 +0,0 @@
|
||||
From 0b530d4c8e75f60015d13c225b1c634389fbe798 Mon Sep 17 00:00:00 2001
|
||||
From: Gris Ge <fge@redhat.com>
|
||||
Date: Fri, 17 May 2024 13:12:14 +0800
|
||||
Subject: [PATCH] clib: Use build.rs to fix SONAME
|
||||
|
||||
Use [`cargo:rustc-cdylib-link-arg`][1] to `build.rs` to fix the SONAME issue
|
||||
of cargo.
|
||||
|
||||
Removed workarounds in rpm spec and `.cargo/config.toml`.
|
||||
|
||||
Changed Makefile to place `-lnmstate` after the source file to fix
|
||||
compile issue on ubuntu 20.04 old gcc.
|
||||
|
||||
[1]: https://doc.rust-lang.org/cargo/reference/build-scripts.html#rustc-cdylib-link-arg
|
||||
|
||||
Signed-off-by: Gris Ge <fge@redhat.com>
|
||||
---
|
||||
rust/.cargo/config.toml | 3 ---
|
||||
rust/src/clib/Cargo.toml | 1 +
|
||||
rust/src/clib/build.rs | 6 ++++++
|
||||
3 files changed, 7 insertions(+), 3 deletions(-)
|
||||
create mode 100644 rust/src/clib/build.rs
|
||||
|
||||
diff --git a/rust/.cargo/config.toml b/rust/.cargo/config.toml
|
||||
index 018e59d4..ca6c72f7 100644
|
||||
--- a/rust/.cargo/config.toml
|
||||
+++ b/rust/.cargo/config.toml
|
||||
@@ -1,5 +1,2 @@
|
||||
-[build]
|
||||
-rustflags = "-Clink-arg=-Wl,-soname=libnmstate.so.1"
|
||||
-
|
||||
[target.x86_64-unknown-linux-gnu]
|
||||
runner = 'sudo -E'
|
||||
diff --git a/rust/src/clib/Cargo.toml b/rust/src/clib/Cargo.toml
|
||||
index 462757ca..0eb00922 100644
|
||||
--- a/rust/src/clib/Cargo.toml
|
||||
+++ b/rust/src/clib/Cargo.toml
|
||||
@@ -6,6 +6,7 @@ authors = ["Gris Ge <fge@redhat.com>"]
|
||||
license = "Apache-2.0"
|
||||
edition = "2018"
|
||||
rust-version = "1.58"
|
||||
+build = "build.rs"
|
||||
|
||||
[lib]
|
||||
name = "nmstate"
|
||||
diff --git a/rust/src/clib/build.rs b/rust/src/clib/build.rs
|
||||
new file mode 100644
|
||||
index 00000000..74ad7e48
|
||||
--- /dev/null
|
||||
+++ b/rust/src/clib/build.rs
|
||||
@@ -0,0 +1,6 @@
|
||||
+// SPDX-License-Identifier: Apache-2.0
|
||||
+
|
||||
+fn main() {
|
||||
+ #[cfg(target_os = "linux")]
|
||||
+ println!("cargo:rustc-cdylib-link-arg=-Wl,-soname=libnmstate.so.1");
|
||||
+}
|
||||
--
|
||||
2.45.1
|
||||
|
183
SOURCES/BZ_2203277-ip-Support-static-route-with-auto-ip.patch
Normal file
183
SOURCES/BZ_2203277-ip-Support-static-route-with-auto-ip.patch
Normal file
@ -0,0 +1,183 @@
|
||||
0001-covscan-Remove-dead-code.patch
|
||||
0002-Run-cargo-clippy.patch
|
||||
0003-ip-Support-static-route-with-auto-ip.patch
|
||||
0004-test-Refresh-the-expired-CA-keys.patch
|
||||
From 6ea4790a368260b43c207d19f20c728698ac2184 Mon Sep 17 00:00:00 2001
|
||||
From: Gris Ge <fge@redhat.com>
|
||||
Date: Tue, 25 Apr 2023 14:52:59 +0800
|
||||
Subject: [PATCH 1/4] covscan: Remove dead code
|
||||
|
||||
Removing the dead code found by covscan.
|
||||
|
||||
Signed-off-by: Gris Ge <fge@redhat.com>
|
||||
---
|
||||
libnmstate/dns.py | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/libnmstate/dns.py b/libnmstate/dns.py
|
||||
index 853ece80..043c74a5 100644
|
||||
--- a/libnmstate/dns.py
|
||||
+++ b/libnmstate/dns.py
|
||||
@@ -173,7 +173,6 @@ class DnsState:
|
||||
},
|
||||
},
|
||||
}
|
||||
- return {}
|
||||
|
||||
def _find_ifaces_for_name_servers(
|
||||
self, ifaces, route_state, ignored_dns_ifaces
|
||||
--
|
||||
2.40.1
|
||||
|
||||
|
||||
From 0329b87b7856e244a4a2d34864a6e6eefa49b226 Mon Sep 17 00:00:00 2001
|
||||
From: Gris Ge <fge@redhat.com>
|
||||
Date: Fri, 19 May 2023 17:57:51 +0800
|
||||
Subject: [PATCH 2/4] Run cargo clippy
|
||||
|
||||
Signed-off-by: Gris Ge <fge@redhat.com>
|
||||
---
|
||||
rust/src/lib/nispor/linux_bridge.rs | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/rust/src/lib/nispor/linux_bridge.rs b/rust/src/lib/nispor/linux_bridge.rs
|
||||
index c03f03d6..c4cd104b 100644
|
||||
--- a/rust/src/lib/nispor/linux_bridge.rs
|
||||
+++ b/rust/src/lib/nispor/linux_bridge.rs
|
||||
@@ -63,7 +63,7 @@ pub(crate) fn append_bridge_port_config(
|
||||
port_confs.push(port_conf);
|
||||
}
|
||||
|
||||
- if let Some(mut br_conf) = br_iface.bridge.as_mut() {
|
||||
+ if let Some(br_conf) = br_iface.bridge.as_mut() {
|
||||
br_conf.port = Some(port_confs);
|
||||
}
|
||||
}
|
||||
--
|
||||
2.40.1
|
||||
|
||||
|
||||
From 7c80a3acdb67eb09c3dcbeee7138315b3f855c7f Mon Sep 17 00:00:00 2001
|
||||
From: Gris Ge <fge@redhat.com>
|
||||
Date: Fri, 19 May 2023 18:12:54 +0800
|
||||
Subject: [PATCH 3/4] ip: Support static route with auto ip
|
||||
|
||||
Supporting assigning static route to interface with auto ip. For
|
||||
example:
|
||||
|
||||
```yml
|
||||
---
|
||||
interfaces:
|
||||
- name: eth1
|
||||
type: ethernet
|
||||
state: up
|
||||
ipv4:
|
||||
dhcp: true
|
||||
enabled: true
|
||||
ipv6:
|
||||
dhcp: true
|
||||
autoconf: true
|
||||
enabled: true
|
||||
routes:
|
||||
config:
|
||||
- destination: 198.51.100.0/24
|
||||
metric: 150
|
||||
next-hop-address: 192.0.2.1
|
||||
next-hop-interface: eth1
|
||||
table-id: 254
|
||||
- destination: 2001:db8:2::/64
|
||||
metric: 151
|
||||
next-hop-address: 2001:db8:1::2
|
||||
next-hop-interface: eth1
|
||||
```
|
||||
|
||||
Integration test case included and been marked as tier1.
|
||||
|
||||
Signed-off-by: Gris Ge <fge@redhat.com>
|
||||
---
|
||||
libnmstate/route.py | 52 ++++++-------
|
||||
tests/integration/dynamic_ip_test.py | 105 +++++++++++++++++++--------
|
||||
tests/lib/route_test.py | 28 +------
|
||||
3 files changed, 105 insertions(+), 80 deletions(-)
|
||||
|
||||
diff --git a/libnmstate/route.py b/libnmstate/route.py
|
||||
index d3734279..c92cbbb6 100644
|
||||
--- a/libnmstate/route.py
|
||||
+++ b/libnmstate/route.py
|
||||
@@ -1,21 +1,4 @@
|
||||
-#
|
||||
-# Copyright (c) 2020 Red Hat, Inc.
|
||||
-#
|
||||
-# This file is part of nmstate
|
||||
-#
|
||||
-# This program is free software: you can redistribute it and/or modify
|
||||
-# it under the terms of the GNU Lesser General Public License as published by
|
||||
-# the Free Software Foundation, either version 2.1 of the License, or
|
||||
-# (at your option) any later version.
|
||||
-#
|
||||
-# This program is distributed in the hope that it will be useful,
|
||||
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
-# GNU Lesser General Public License for more details.
|
||||
-#
|
||||
-# You should have received a copy of the GNU Lesser General Public License
|
||||
-# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
-#
|
||||
+# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
from collections import defaultdict
|
||||
import logging
|
||||
@@ -146,13 +129,6 @@ class RouteEntry(StateEntry):
|
||||
f"Route {self.to_dict()} next hop to down/absent interface"
|
||||
)
|
||||
return False
|
||||
- if iface.is_dynamic(
|
||||
- Interface.IPV6 if self.is_ipv6 else Interface.IPV4
|
||||
- ):
|
||||
- self._invalid_reason = (
|
||||
- f"Route {self.to_dict()} next hop to interface with dynamic IP"
|
||||
- )
|
||||
- return False
|
||||
if self.is_ipv6:
|
||||
if not iface.is_ipv6_enabled():
|
||||
self._invalid_reason = (
|
||||
@@ -194,7 +170,10 @@ class RouteState:
|
||||
rt = RouteEntry(entry)
|
||||
self._cur_routes[rt.next_hop_interface].add(rt)
|
||||
if not ifaces or rt.is_valid(ifaces):
|
||||
- self._routes[rt.next_hop_interface].add(rt)
|
||||
+ # When user converting static IP to auto IP, we should
|
||||
+ # not merge current static routes besides desired ones.
|
||||
+ if not iface_switch_from_static_to_auto_ip(ifaces, rt):
|
||||
+ self._routes[rt.next_hop_interface].add(rt)
|
||||
else:
|
||||
logging.debug(
|
||||
f"The current route {entry} has been discarded due"
|
||||
@@ -299,3 +278,24 @@ class RouteState:
|
||||
{Route.KEY: {Route.CONFIG: cur_routes_info}},
|
||||
)
|
||||
)
|
||||
+
|
||||
+
|
||||
+def iface_switch_from_static_to_auto_ip(ifaces, rt):
|
||||
+ iface_name = rt.next_hop_interface
|
||||
+ if not iface_name or not ifaces:
|
||||
+ return False
|
||||
+
|
||||
+ if is_ipv6_address(rt.destination):
|
||||
+ family = Interface.IPV6
|
||||
+ else:
|
||||
+ family = Interface.IPV4
|
||||
+
|
||||
+ cur_iface = ifaces.get_cur_iface(iface_name, None)
|
||||
+ des_iface = ifaces.get_iface(iface_name, None)
|
||||
+ if (
|
||||
+ cur_iface
|
||||
+ and des_iface
|
||||
+ and not cur_iface.is_dynamic(family)
|
||||
+ and des_iface.is_dynamic(family)
|
||||
+ ):
|
||||
+ return True
|
||||
--
|
||||
2.40.1
|
||||
|
@ -1,184 +0,0 @@
|
||||
From daf5e4e2282312a80ade85ac5728babf8b9af8b5 Mon Sep 17 00:00:00 2001
|
||||
From: Lubomir Rintel <lkundrak@v3.sk>
|
||||
Date: Mon, 17 Jun 2024 19:25:07 +0200
|
||||
Subject: [PATCH] nm: don't clear connection DNS if global DNS is not specified
|
||||
|
||||
If the global DNS state is not specified, let's not overwrite it in
|
||||
Networkmanager profiles while doing unrelated changes.
|
||||
|
||||
This is consistent with mainline (Rust) version of nmstate.
|
||||
|
||||
Resolves: https://issues.redhat.com/browse/RHEL-31095
|
||||
Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
|
||||
Signed-off-by: Gris Ge <fge@redhat.com>
|
||||
---
|
||||
libnmstate/dns.py | 2 +-
|
||||
libnmstate/nm/connection.py | 10 +++++++---
|
||||
libnmstate/nm/ipv4.py | 11 ++++++-----
|
||||
libnmstate/nm/ipv6.py | 11 ++++++-----
|
||||
libnmstate/nm/profile.py | 8 +++++---
|
||||
libnmstate/nm/profiles.py | 7 ++++++-
|
||||
6 files changed, 31 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/libnmstate/dns.py b/libnmstate/dns.py
|
||||
index 5bb512e8..f50b9bfd 100644
|
||||
--- a/libnmstate/dns.py
|
||||
+++ b/libnmstate/dns.py
|
||||
@@ -51,7 +51,7 @@ class DnsState:
|
||||
self._config_changed = False
|
||||
self._cur_dns_state = deepcopy(cur_dns_state) if cur_dns_state else {}
|
||||
self._dns_state = merge_dns(des_dns_state, cur_dns_state or {})
|
||||
- if self._dns_state == REMOVE_DNS_CONFIG:
|
||||
+ if des_dns_state is not None and self._dns_state == REMOVE_DNS_CONFIG:
|
||||
self._config_changed = True
|
||||
elif des_dns_state and des_dns_state.get(DNS.CONFIG):
|
||||
if cur_dns_state:
|
||||
diff --git a/libnmstate/nm/connection.py b/libnmstate/nm/connection.py
|
||||
index 6448e372..a6aac82c 100644
|
||||
--- a/libnmstate/nm/connection.py
|
||||
+++ b/libnmstate/nm/connection.py
|
||||
@@ -104,11 +104,15 @@ class _ConnectionSetting:
|
||||
return self._setting
|
||||
|
||||
|
||||
-def create_new_nm_simple_conn(iface, nm_profile):
|
||||
+def create_new_nm_simple_conn(iface, nm_profile, clear_dns=False):
|
||||
nm_iface_type = Api2Nm.get_iface_type(iface.type)
|
||||
iface_info = iface.to_dict()
|
||||
- ipv4_set = create_ipv4_setting(iface_info.get(Interface.IPV4), nm_profile)
|
||||
- ipv6_set = create_ipv6_setting(iface_info.get(Interface.IPV6), nm_profile)
|
||||
+ ipv4_set = create_ipv4_setting(
|
||||
+ iface_info.get(Interface.IPV4), nm_profile, clear_dns
|
||||
+ )
|
||||
+ ipv6_set = create_ipv6_setting(
|
||||
+ iface_info.get(Interface.IPV6), nm_profile, clear_dns
|
||||
+ )
|
||||
set_wait_ip(ipv4_set, ipv6_set, iface_info.get(Interface.WAIT_IP))
|
||||
settings = [ipv4_set, ipv6_set]
|
||||
con_setting = _ConnectionSetting()
|
||||
diff --git a/libnmstate/nm/ipv4.py b/libnmstate/nm/ipv4.py
|
||||
index 32b3428e..3f4de059 100644
|
||||
--- a/libnmstate/nm/ipv4.py
|
||||
+++ b/libnmstate/nm/ipv4.py
|
||||
@@ -13,7 +13,7 @@ from .common import NM
|
||||
INT32_MAX = 2**31 - 1
|
||||
|
||||
|
||||
-def create_setting(config, base_con_profile):
|
||||
+def create_setting(config, base_con_profile, clear_dns=True):
|
||||
setting_ipv4 = None
|
||||
if base_con_profile and config and config.get(InterfaceIPv4.ENABLED):
|
||||
setting_ipv4 = base_con_profile.get_setting_ip4_config()
|
||||
@@ -28,10 +28,11 @@ def create_setting(config, base_con_profile):
|
||||
setting_ipv4.props.route_metric = Route.USE_DEFAULT_METRIC
|
||||
setting_ipv4.clear_routes()
|
||||
setting_ipv4.clear_routing_rules()
|
||||
- setting_ipv4.clear_dns()
|
||||
- setting_ipv4.clear_dns_searches()
|
||||
- setting_ipv4.clear_dns_options(False)
|
||||
- setting_ipv4.props.dns_priority = nm_dns.DEFAULT_DNS_PRIORITY
|
||||
+ if clear_dns:
|
||||
+ setting_ipv4.clear_dns()
|
||||
+ setting_ipv4.clear_dns_searches()
|
||||
+ setting_ipv4.clear_dns_options(False)
|
||||
+ setting_ipv4.props.dns_priority = nm_dns.DEFAULT_DNS_PRIORITY
|
||||
|
||||
if not setting_ipv4:
|
||||
setting_ipv4 = NM.SettingIP4Config.new()
|
||||
diff --git a/libnmstate/nm/ipv6.py b/libnmstate/nm/ipv6.py
|
||||
index f84d895c..fb3cdcf0 100644
|
||||
--- a/libnmstate/nm/ipv6.py
|
||||
+++ b/libnmstate/nm/ipv6.py
|
||||
@@ -67,7 +67,7 @@ def get_info(active_connection, applied_config):
|
||||
return info
|
||||
|
||||
|
||||
-def create_setting(config, base_con_profile):
|
||||
+def create_setting(config, base_con_profile, clear_dns=True):
|
||||
setting_ip = None
|
||||
if base_con_profile and config and config.get(InterfaceIPv6.ENABLED):
|
||||
setting_ip = base_con_profile.get_setting_ip6_config()
|
||||
@@ -82,10 +82,11 @@ def create_setting(config, base_con_profile):
|
||||
setting_ip.props.gateway = None
|
||||
setting_ip.props.route_table = Route.USE_DEFAULT_ROUTE_TABLE
|
||||
setting_ip.props.route_metric = Route.USE_DEFAULT_METRIC
|
||||
- setting_ip.clear_dns()
|
||||
- setting_ip.clear_dns_searches()
|
||||
- setting_ip.clear_dns_options(False)
|
||||
- setting_ip.props.dns_priority = nm_dns.DEFAULT_DNS_PRIORITY
|
||||
+ if clear_dns:
|
||||
+ setting_ip.clear_dns()
|
||||
+ setting_ip.clear_dns_searches()
|
||||
+ setting_ip.clear_dns_options(False)
|
||||
+ setting_ip.props.dns_priority = nm_dns.DEFAULT_DNS_PRIORITY
|
||||
|
||||
if not setting_ip:
|
||||
setting_ip = NM.SettingIP6Config.new()
|
||||
diff --git a/libnmstate/nm/profile.py b/libnmstate/nm/profile.py
|
||||
index a0b1c8f8..acb849b6 100644
|
||||
--- a/libnmstate/nm/profile.py
|
||||
+++ b/libnmstate/nm/profile.py
|
||||
@@ -273,7 +273,9 @@ class NmProfile:
|
||||
self._iface.type == InterfaceType.ETHERNET and self._iface.is_peer
|
||||
)
|
||||
|
||||
- def prepare_config(self, save_to_disk, gen_conf_mode=False):
|
||||
+ def prepare_config(
|
||||
+ self, save_to_disk, gen_conf_mode=False, clear_dns=True
|
||||
+ ):
|
||||
if self._iface.is_absent or (
|
||||
self._iface.is_down
|
||||
and not gen_conf_mode
|
||||
@@ -307,7 +309,7 @@ class NmProfile:
|
||||
# of nmstate should provide full/merged configure.
|
||||
if self._iface.is_changed or self._iface.is_desired:
|
||||
self._nm_simple_conn = create_new_nm_simple_conn(
|
||||
- self._iface, self._nm_profile
|
||||
+ self._iface, self._nm_profile, clear_dns
|
||||
)
|
||||
elif self._nm_profile:
|
||||
self._nm_simple_conn = NM.SimpleConnection.new_clone(
|
||||
@@ -316,7 +318,7 @@ class NmProfile:
|
||||
else:
|
||||
try:
|
||||
self._nm_simple_conn = create_new_nm_simple_conn(
|
||||
- self._iface, self._nm_profile
|
||||
+ self._iface, self._nm_profile, clear_dns
|
||||
)
|
||||
# No error for undesired interface
|
||||
except NmstateError:
|
||||
diff --git a/libnmstate/nm/profiles.py b/libnmstate/nm/profiles.py
|
||||
index e68efdf3..9ce21938 100644
|
||||
--- a/libnmstate/nm/profiles.py
|
||||
+++ b/libnmstate/nm/profiles.py
|
||||
@@ -52,6 +52,7 @@ class NmProfiles:
|
||||
|
||||
def apply_config(self, net_state, save_to_disk):
|
||||
if net_state.dns.config_changed:
|
||||
+ clear_profile_dns = True
|
||||
if net_state.use_global_dns:
|
||||
apply_global_dns(
|
||||
net_state.dns.config_servers,
|
||||
@@ -60,6 +61,8 @@ class NmProfiles:
|
||||
)
|
||||
else:
|
||||
apply_global_dns([], [], [])
|
||||
+ else:
|
||||
+ clear_profile_dns = False
|
||||
|
||||
self._prepare_state_for_profiles(net_state)
|
||||
# The activation order on bridge/bond ports determins their controler's
|
||||
@@ -74,7 +77,9 @@ class NmProfiles:
|
||||
|
||||
for profile in all_profiles:
|
||||
profile.import_current()
|
||||
- profile.prepare_config(save_to_disk, gen_conf_mode=False)
|
||||
+ profile.prepare_config(
|
||||
+ save_to_disk, gen_conf_mode=False, clear_dns=clear_profile_dns
|
||||
+ )
|
||||
_use_uuid_as_controller_and_parent(all_profiles)
|
||||
|
||||
changed_ovs_bridges_and_ifaces = {}
|
||||
--
|
||||
2.45.2
|
||||
|
@ -1,70 +0,0 @@
|
||||
From 364842c0c09f9799a2c48a1bc3ce4debb1a3ddc2 Mon Sep 17 00:00:00 2001
|
||||
From: Gris Ge <fge@redhat.com>
|
||||
Date: Tue, 18 Jun 2024 13:44:55 +0800
|
||||
Subject: [PATCH] dns: Do not touch iface DNS when apply identical DNS state
|
||||
|
||||
When applying the same DNS only desire state again, nmstate incorrectly
|
||||
purged interface DNS.
|
||||
|
||||
The root cause is we only set `self.use_global_dns` to True when
|
||||
DNS changed. The fix is set `self.use_global_dns` to True always unless
|
||||
iface DNS is required.
|
||||
|
||||
Signed-off-by: Gris Ge <fge@redhat.com>
|
||||
---
|
||||
libnmstate/net_state.py | 12 +++++-------
|
||||
1 file changed, 5 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/libnmstate/net_state.py b/libnmstate/net_state.py
|
||||
index 7b208daa..fe6fc31d 100644
|
||||
--- a/libnmstate/net_state.py
|
||||
+++ b/libnmstate/net_state.py
|
||||
@@ -32,7 +32,7 @@ class NetState:
|
||||
gen_conf_mode=False,
|
||||
ignored_dns_ifaces=None,
|
||||
):
|
||||
- self.use_global_dns = False
|
||||
+ self.use_global_dns = True
|
||||
if current_state is None:
|
||||
current_state = {}
|
||||
self._ifaces = Ifaces(
|
||||
@@ -76,17 +76,17 @@ class NetState:
|
||||
"interface profile, using global DNS"
|
||||
)
|
||||
logging.warning(
|
||||
- "Storing DNS to NetworkManager via global dns API, "
|
||||
- "this will cause __all__ interface level DNS settings "
|
||||
- "been ignored"
|
||||
+ "Storing DNS to NetworkManager via global DNS "
|
||||
+ "API, this will cause __all__ interface level "
|
||||
+ "DNS settings been ignored"
|
||||
)
|
||||
- self.use_global_dns = True
|
||||
else:
|
||||
if self.dns.is_purge() or self._is_iface_dns_prefered():
|
||||
try:
|
||||
self._ifaces.gen_dns_metadata(
|
||||
self._dns, self._route, ignored_dns_ifaces
|
||||
)
|
||||
+ self.use_global_dns = False
|
||||
except NmstateValueError as e:
|
||||
if (
|
||||
gen_conf_mode
|
||||
@@ -99,14 +99,12 @@ class NetState:
|
||||
"API, this will cause __all__ interface level "
|
||||
"DNS settings been ignored"
|
||||
)
|
||||
- self.use_global_dns = True
|
||||
elif self.dns.config_changed:
|
||||
logging.warning(
|
||||
"Storing DNS to NetworkManager via global DNS "
|
||||
"API, this will cause __all__ interface level "
|
||||
"DNS settings been ignored"
|
||||
)
|
||||
- self.use_global_dns = True
|
||||
|
||||
self._ifaces.gen_route_metadata(self._route)
|
||||
self._ifaces.gen_route_rule_metadata(self._route_rule, self._route)
|
||||
--
|
||||
2.45.2
|
||||
|
16
SOURCES/nmstate-1.4.4.tar.gz.asc
Normal file
16
SOURCES/nmstate-1.4.4.tar.gz.asc
Normal file
@ -0,0 +1,16 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEESP1vrlFad7SENoIch4lWe4cVzrwFAmRE940ACgkQh4lWe4cV
|
||||
zrzJjxAA6hjRclf2YAkIrrdCyoU3TDElpADOjrTRMGe9K0kp5FEFPrzl9mJnDSNR
|
||||
S0UL7Kwn0OBe9Pw8/0OMUPAHhiFy524yd1dRrb2X5RpH6Fem51ExCYHxYXWyRuxK
|
||||
ll7JsTImeUxf0M+wetojLWaDOBT2Og1H6aRW62Jm8oa90l3Yjk4KZMNOslmY410V
|
||||
H8QzfHa/R75ZpH6wH9RzyX7CNvCaglMEeBkMApvjSAppllolh7AkbjCCSEMiSnK/
|
||||
3HjSftvyGGDCn4VBP8hh05amz84ielK4RTqtz2fvzARudxxhQ+f9DJ/2fVFSv3RL
|
||||
YxCQL3nYMnCqEK0LZ4hw5xdZcVGeuBBj5ubzWxzahy0dC87Lifvgy6/l1Tp5GBKt
|
||||
wVSEA2dest55Punng784pNnYGnks/wKTK1TVnhLmTRe0IUJtUbz0cYse4JOfhxe+
|
||||
SYyVtSmrwaS3Lo/h2PtMua3aF92z9RP6dkNKin0c5WlBpmothwiEsCD6cZR148zB
|
||||
y8hitadVZ9nysWFgT0EGVHMkzGTKaCVNJ1s3UsJUYiTUEMa3StzJX704NKEitnFX
|
||||
SkC2qHMlV04BMtB6Nb+86LOOPBSh5u7vzqU0M7BAD4SmVkKH27asYaSqdG3kLez6
|
||||
XRW8eeQkS6LVAACm6Wrb37XecTAGPF9pE5P9Wmg0YKZpQM6t9NM=
|
||||
=3XHy
|
||||
-----END PGP SIGNATURE-----
|
@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEESP1vrlFad7SENoIch4lWe4cVzrwFAmZFuTcACgkQh4lWe4cV
|
||||
zrx0Jg/9FaBh+ine42rKdD+vSITPnGMB2pNSgU8RMdb35fpypVE6Fx4zavvlN14r
|
||||
rqO+DA57n2NAQ0Cj+n1HOaCxzbfYG2hAX8NwuFN3iY/KadqUdjdPx9G8vEzZDOFu
|
||||
MCRZxUVIyrHBB9eoTLbhF6hd0XqWminHK43xaLZFBXZAe7DO9QEz+VxM77qsZaE5
|
||||
EhxASs2mUERvjuY61h9lJb41DOxGLZBM5950S9lDM8cE9ZOi7H/8Q/8fhBPdHh5T
|
||||
ubPZxsgEBQPEBPz6lE5g4Wcc8ggiCROEuUqRmOTpkb6smgFDsLtCBTakv1Z2U5Q0
|
||||
YKdnDBfw7T9EV3dhkHR/AHvrLDUZ/bTwe6vO0GQBaSLG/WhvcftzuiDKTcqpAVOm
|
||||
yUdxla1tinB0cDXohGb50VV9aHd9gFisoLGsPE7BJTqSKhCoQL2zToLHNaMnxNtz
|
||||
/fJTOyGq1bBtchjbXjaoQO8sa/cxrllWlBYVjaTH7vqwgActrznos/N1sASrMfTw
|
||||
H1VCKRgwurnomWoIbFNKxPnXNW0Lo31paWhW9wVD78J7Kf9xHrfYiOK2siYgSP7x
|
||||
nVMuMHZ/j9/EOgHZAPZN3Aod0LWK0/WNwTyFB4IQcLWLaBYVhqlFhShtPo8MeIsJ
|
||||
Wy7UQmGhtnP8Mt1DQTsfWCH8lQnWpIb84xHYXSEs+2e39GRDCq8=
|
||||
=lwjx
|
||||
-----END PGP SIGNATURE-----
|
@ -47,53 +47,5 @@ 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
|
||||
i2QY7dEEs/uMRtq8C8kSWg==
|
||||
=259x
|
||||
=PdCG
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
@ -3,8 +3,8 @@
|
||||
%define libname libnmstate
|
||||
|
||||
Name: nmstate
|
||||
Version: 1.4.6
|
||||
Release: 4%{?dist}
|
||||
Version: 1.4.4
|
||||
Release: 3%{?dist}
|
||||
Summary: Declarative network manager API
|
||||
License: LGPLv2+
|
||||
URL: https://github.com/%{srcname}/%{srcname}
|
||||
@ -14,9 +14,7 @@ Source2: https://www.nmstate.io/nmstate.gpg
|
||||
Source3: %{url}/releases/download/v%{version}/%{srcname}-vendor-%{version}.tar.xz
|
||||
# Patches 0X are reserved to downstream only
|
||||
Patch0: BZ_2132570-nm-reverse-IPv6-order-before-adding-them-to-setting.patch
|
||||
Patch10: 0001-clib-Use-build.rs-to-fix-SONAME.patch
|
||||
Patch11: RHEL-44623-fix-global-dns.patch
|
||||
Patch12: RHEL-31095-do-not-clear-iface-dns-when-not-desired.patch
|
||||
Patch1: BZ_2203277-ip-Support-static-route-with-auto-ip.patch
|
||||
BuildRequires: python3-devel
|
||||
BuildRequires: python3-setuptools
|
||||
BuildRequires: gnupg2
|
||||
@ -86,15 +84,22 @@ gpgv2 --keyring ./gpgkey-mantainers.gpg %{SOURCE1} %{SOURCE0}
|
||||
pushd rust
|
||||
# Source3 is vendored dependencies
|
||||
%cargo_prep -V 3
|
||||
|
||||
# The cargo_prep will create `.cargo/config` which take precedence over
|
||||
# `.cargo/config.toml` shipped by upstream which fix the SONAME of cdylib.
|
||||
# To workaround that, merge upstream rustflags into cargo_prep created one.
|
||||
_FLAGS=`sed -ne 's/rustflags = "\(.\+\)"/\1/p' .cargo/config.toml`
|
||||
sed -i -e "s/rustflags = \[\(.\+\), \]$/rustflags = [\1, \"$_FLAGS\"]/" \
|
||||
.cargo/config
|
||||
rm .cargo/config.toml
|
||||
|
||||
popd
|
||||
|
||||
%build
|
||||
%py3_build
|
||||
|
||||
pushd rust
|
||||
# It is safe to ignore minimum rust version. The main blocker on MSRV is
|
||||
# toml which just increase their MSRV by a robot for no hard reason.
|
||||
%cargo_build --ignore-rust-version
|
||||
make
|
||||
popd
|
||||
|
||||
%install
|
||||
@ -144,30 +149,6 @@ popd
|
||||
/sbin/ldconfig
|
||||
|
||||
%changelog
|
||||
* Sun Jul 14 2024 Gris Ge <fge@redhat.com> - 1.4.6-4
|
||||
- Do not clear iface DNS if not desired. RHEL-31095
|
||||
|
||||
* Wed Jun 26 2024 Gris Ge <fge@redhat.com> - 1.4.6-3
|
||||
- Fix global DNS on second apply. RHEL-44623
|
||||
|
||||
* Fri May 17 2024 Gris Ge <fge@redhat.com> - 1.4.6-2
|
||||
- Fix clib SONAME. RHEL-32218
|
||||
|
||||
* Thu May 16 2024 Gris Ge <fge@redhat.com> - 1.4.6-1
|
||||
- Do not touch interface DNS if global DNS is used. RHEL-32218
|
||||
|
||||
* Wed Nov 15 2023 Gris Ge <fge@redhat.com> - 1.4.5-2
|
||||
- Fix use case on purging DNS option. RHEL-13936
|
||||
|
||||
* Thu Nov 02 2023 Gris Ge <fge@redhat.com> - 1.4.5-1
|
||||
- Support DNS option. RHEL-13936
|
||||
|
||||
* Wed Oct 04 2023 Wen Liang <wenliang@redhat.com> - 1.4.4-5
|
||||
- Support treating string as int for address prefix-length. RHEL-3358
|
||||
|
||||
* Wed Aug 30 2023 Fernando Fernandez Mancera <ferferna@redhat.com> - 1.4.4-4
|
||||
- Fix issue with ovs-bridge and ovs-interface with same name. RHBZ#2231843
|
||||
|
||||
* Tue May 30 2023 Fernando Fernandez Mancera <ferferna@redhat.com> - 1.4.4-3
|
||||
- Support static route with auto-ip. RHBZ#2203277
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user