From 68e52cd175ab3f27ea0d2369a341ae93b435138e Mon Sep 17 00:00:00 2001 From: eabdullin Date: Tue, 5 Aug 2025 06:43:22 +0000 Subject: [PATCH] import UBI nmstate-2.2.48-2.el10_0 --- .gitignore | 4 +- 1001-dont-add-dns-to-down-iface.patch | 430 ++++++++++++++++++++++++++ nmstate-2.2.43.tar.gz.asc | 16 - nmstate-2.2.48.tar.gz.asc | 16 + nmstate.gpg | 30 ++ nmstate.spec | 16 +- sources | 4 +- 7 files changed, 494 insertions(+), 22 deletions(-) create mode 100644 1001-dont-add-dns-to-down-iface.patch delete mode 100644 nmstate-2.2.43.tar.gz.asc create mode 100644 nmstate-2.2.48.tar.gz.asc diff --git a/.gitignore b/.gitignore index a340b38..b23c7f1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -nmstate-2.2.43.tar.gz -nmstate-vendor-2.2.43.tar.xz +nmstate-2.2.48.tar.gz +nmstate-vendor-2.2.48.tar.xz diff --git a/1001-dont-add-dns-to-down-iface.patch b/1001-dont-add-dns-to-down-iface.patch new file mode 100644 index 0000000..00124bb --- /dev/null +++ b/1001-dont-add-dns-to-down-iface.patch @@ -0,0 +1,430 @@ +From 1577e1073593d19cdaa7de2eadfc893978cab255 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= +Date: Fri, 18 Jul 2025 14:22:41 +0200 +Subject: [PATCH 1/5] Fix interface state detection when NM device is + "unavailable" +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +A device that is not ready to connect may have the NetworkManager's state +"unavailable" in some circumstances. Consider this as `state: down`, as +we do for the "disconnected" state. + +Fixes https://github.com/nmstate/nmstate/issues/2798 + +Signed-off-by: Íñigo Huguet +--- + rust/src/lib/nm/show.rs | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/rust/src/lib/nm/show.rs b/rust/src/lib/nm/show.rs +index 78ff66a1..d4dd575f 100644 +--- a/rust/src/lib/nm/show.rs ++++ b/rust/src/lib/nm/show.rs +@@ -285,7 +285,9 @@ fn nm_dev_to_nm_iface(nm_dev: &NmDevice) -> Option { + base_iface.state = InterfaceState::Ignore; + } + } +- NmDeviceState::Disconnected => base_iface.state = InterfaceState::Down, ++ NmDeviceState::Disconnected | NmDeviceState::Unavailable => { ++ base_iface.state = InterfaceState::Down ++ } + _ => base_iface.state = InterfaceState::Up, + } + base_iface.iface_type = nm_dev_iface_type_to_nmstate(nm_dev); +-- +2.49.0 + + +From f09fc1a5efc589b5740922cdfcc68ba29b94406e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= +Date: Fri, 18 Jul 2025 16:12:18 +0200 +Subject: [PATCH 2/5] Fix interface state detection in kernel mode +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Any device with administrative state UP was being considered as `state: +up` in kernel mode. This is not correct because if the operational state +is not Up, for example because of the cable being disconnected, nobody +would think that the device is **really** up. + +Fix it by ignoring the administrative state and consider only the +operational state. + +Fixes https://github.com/nmstate/nmstate/issues/2798 + +Signed-off-by: Íñigo Huguet +--- + rust/src/lib/nispor/base_iface.rs | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/rust/src/lib/nispor/base_iface.rs b/rust/src/lib/nispor/base_iface.rs +index f7f3e507..4b04abdb 100644 +--- a/rust/src/lib/nispor/base_iface.rs ++++ b/rust/src/lib/nispor/base_iface.rs +@@ -37,8 +37,11 @@ fn np_iface_type_to_nmstate( + impl From<(&nispor::IfaceState, &[nispor::IfaceFlag])> for InterfaceState { + fn from(tuple: (&nispor::IfaceState, &[nispor::IfaceFlag])) -> Self { + let (state, flags) = tuple; ++ // nispor::IfaceState::Up means operational up. ++ // Check also the Running flag with, according to [1], means operational ++ // state Up or Unknown. ++ // [1] https://www.kernel.org/doc/Documentation/networking/operstates.txt + if *state == nispor::IfaceState::Up +- || flags.contains(&nispor::IfaceFlag::Up) + || flags.contains(&nispor::IfaceFlag::Running) + { + InterfaceState::Up +-- +2.49.0 + + +From 6f7692f9900499d75548eda250487d09f59c357c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= +Date: Fri, 18 Jul 2025 09:38:32 +0200 +Subject: [PATCH 3/5] dns: don't add DNS search and/or options to down NM + connection +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When configuring only search and/or options in dns-resolver we add them +to a NM connection and not to NM's global config, but nmstate may choose +a down interface, which results on errors at apply time or even on the +configurations being accepted but stay unused by NetworkManager. + +Fix that by always checking that the interface is valid for DNS, and by +adding the requirement of the interface being up. + +Signed-off-by: Íñigo Huguet +--- + rust/src/lib/dns.rs | 3 ++ + rust/src/lib/nm/dns.rs | 120 ++++++++++++++++++++++------------------- + 2 files changed, 67 insertions(+), 56 deletions(-) + +diff --git a/rust/src/lib/dns.rs b/rust/src/lib/dns.rs +index 1aae91ff..e3025ed3 100644 +--- a/rust/src/lib/dns.rs ++++ b/rust/src/lib/dns.rs +@@ -382,6 +382,9 @@ pub(crate) fn parse_dns_ipv6_link_local_srv( + impl MergedInterface { + // IP stack is merged with current at this point. + pub(crate) fn is_iface_valid_for_dns(&self, is_ipv6: bool) -> bool { ++ if !self.merged.is_up() { ++ return false; ++ } + if is_ipv6 { + self.merged.base_iface().ipv6.as_ref().map(|ip_conf| { + ip_conf.enabled && (ip_conf.is_static() || (ip_conf.is_auto())) +diff --git a/rust/src/lib/nm/dns.rs b/rust/src/lib/nm/dns.rs +index a180178a..3c45f78b 100644 +--- a/rust/src/lib/nm/dns.rs ++++ b/rust/src/lib/nm/dns.rs +@@ -693,13 +693,14 @@ fn store_dns_search_or_options_to_auto_iface( + Some(i) => i, + None => continue, + }; +- if iface +- .merged +- .base_iface() +- .ipv6 +- .as_ref() +- .map(|i| i.is_auto()) +- .unwrap_or_default() ++ if iface.is_iface_valid_for_dns(true) ++ && iface ++ .merged ++ .base_iface() ++ .ipv6 ++ .as_ref() ++ .map(|i| i.is_auto()) ++ .unwrap_or_default() + { + return set_iface_dns_search_or_option( + iface, +@@ -708,13 +709,14 @@ fn store_dns_search_or_options_to_auto_iface( + true, + ); + } +- if iface +- .merged +- .base_iface() +- .ipv4 +- .as_ref() +- .map(|i| i.is_auto()) +- .unwrap_or_default() ++ if iface.is_iface_valid_for_dns(false) ++ && iface ++ .merged ++ .base_iface() ++ .ipv4 ++ .as_ref() ++ .map(|i| i.is_auto()) ++ .unwrap_or_default() + { + return set_iface_dns_search_or_option( + iface, +@@ -754,13 +756,14 @@ fn store_dns_search_or_options_to_auto_iface( + Some(i) => i, + None => continue, + }; +- if iface +- .merged +- .base_iface() +- .ipv6 +- .as_ref() +- .map(|i| i.is_auto()) +- .unwrap_or_default() ++ if iface.is_iface_valid_for_dns(true) ++ && iface ++ .merged ++ .base_iface() ++ .ipv6 ++ .as_ref() ++ .map(|i| i.is_auto()) ++ .unwrap_or_default() + { + return set_iface_dns_search_or_option( + iface, +@@ -769,13 +772,14 @@ fn store_dns_search_or_options_to_auto_iface( + true, + ); + } +- if iface +- .merged +- .base_iface() +- .ipv4 +- .as_ref() +- .map(|i| i.is_auto()) +- .unwrap_or_default() ++ if iface.is_iface_valid_for_dns(false) ++ && iface ++ .merged ++ .base_iface() ++ .ipv4 ++ .as_ref() ++ .map(|i| i.is_auto()) ++ .unwrap_or_default() + { + return set_iface_dns_search_or_option( + iface, +@@ -821,13 +825,14 @@ fn store_dns_search_or_options_to_ip_enabled_iface( + Some(i) => i, + None => continue, + }; +- if iface +- .merged +- .base_iface() +- .ipv6 +- .as_ref() +- .map(|i| i.enabled) +- .unwrap_or_default() ++ if iface.is_iface_valid_for_dns(true) ++ && iface ++ .merged ++ .base_iface() ++ .ipv6 ++ .as_ref() ++ .map(|i| i.enabled) ++ .unwrap_or_default() + { + return set_iface_dns_search_or_option( + iface, +@@ -836,13 +841,14 @@ fn store_dns_search_or_options_to_ip_enabled_iface( + true, + ); + } +- if iface +- .merged +- .base_iface() +- .ipv4 +- .as_ref() +- .map(|i| i.enabled) +- .unwrap_or_default() ++ if iface.is_iface_valid_for_dns(false) ++ && iface ++ .merged ++ .base_iface() ++ .ipv4 ++ .as_ref() ++ .map(|i| i.enabled) ++ .unwrap_or_default() + { + return set_iface_dns_search_or_option( + iface, +@@ -882,13 +888,14 @@ fn store_dns_search_or_options_to_ip_enabled_iface( + Some(i) => i, + None => continue, + }; +- if iface +- .merged +- .base_iface() +- .ipv6 +- .as_ref() +- .map(|i| i.enabled) +- .unwrap_or_default() ++ if iface.is_iface_valid_for_dns(true) ++ && iface ++ .merged ++ .base_iface() ++ .ipv6 ++ .as_ref() ++ .map(|i| i.enabled) ++ .unwrap_or_default() + { + return set_iface_dns_search_or_option( + iface, +@@ -897,13 +904,14 @@ fn store_dns_search_or_options_to_ip_enabled_iface( + true, + ); + } +- if iface +- .merged +- .base_iface() +- .ipv4 +- .as_ref() +- .map(|i| i.enabled) +- .unwrap_or_default() ++ if iface.is_iface_valid_for_dns(false) ++ && iface ++ .merged ++ .base_iface() ++ .ipv4 ++ .as_ref() ++ .map(|i| i.enabled) ++ .unwrap_or_default() + { + return set_iface_dns_search_or_option( + iface, +-- +2.49.0 + + +From ea08a8dc2b5f6d39f9199e6484a289e2621b0b40 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= +Date: Wed, 23 Jul 2025 16:18:27 +0200 +Subject: [PATCH 4/5] nm dns: purge ifaces before saving new config +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +In store_dns_config_to_iface we correctly purge the current DNS +configurations from NM profiles before saving the new config, ensuring +that no old leftover configs remain afterwards. + +Do the same in store_dns_search_or_option_to_iface so the DNS config is +correctly applied when only DNS searches or options are defined too. + +Without this fix, the configuration fails in the following scenario: +- A deactivated NM profile/device contains a dns-search +- A desired state with only DNS searches or options is applied +- The new state is saved to an activated interface, but the dns-search + from the deactivated one is not removed as expected. + +$ nmcli c show downiface | grep dns-search +ipv4.dns-search: example.com +ipv6.dns-search: -- +$ nmcli c show upiface | grep dns-search +ipv4.dns-search: -- +ipv6.dns-search: -- +$ cat desired.yml +dns-resolver: + config: + search: ["example2.com"] + server: [] +$ nmstatectl apply desired.yml +... +Retrying on: VerificationError: Failed to apply DNS config: desire searches 'example2.com', got 'example.com example2.com' +... +$ nmstate apply --no-verify desired.yml +... +$ nmcli c show downiface | grep dns-search +ipv4.dns-search: example.com <-- NOT PURGED! +ipv6.dns-search: -- +$ nmcli c show upiface | grep dns-search +ipv4.dns-search: -- +ipv6.dns-search: example2.com + +Signed-off-by: Íñigo Huguet +--- + rust/src/lib/nm/dns.rs | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/rust/src/lib/nm/dns.rs b/rust/src/lib/nm/dns.rs +index 3c45f78b..7e125579 100644 +--- a/rust/src/lib/nm/dns.rs ++++ b/rust/src/lib/nm/dns.rs +@@ -579,6 +579,10 @@ pub(crate) fn store_dns_search_or_option_to_iface( + let (cur_v4_ifaces, cur_v6_ifaces) = + get_cur_dns_ifaces(&merged_state.interfaces); + ++ // First purge existing configs ++ purge_dns_config(false, &cur_v4_ifaces, merged_state)?; ++ purge_dns_config(true, &cur_v6_ifaces, merged_state)?; ++ + // Use current DNS interface if they are desired + for iface_name in cur_v6_ifaces { + if let Some(iface) = +-- +2.49.0 + + +From 66c6aff0d4fe4873515a898f3f58b752b054fdd2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= +Date: Thu, 24 Jul 2025 10:26:49 +0200 +Subject: [PATCH 5/5] test: nm dns: add test for DNS searches in down iface +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Íñigo Huguet +--- + tests/integration/nm/dns_test.py | 33 ++++++++++++++++++++++++++++++++ + 1 file changed, 33 insertions(+) + +diff --git a/tests/integration/nm/dns_test.py b/tests/integration/nm/dns_test.py +index 57a5e1d5..2062b27f 100644 +--- a/tests/integration/nm/dns_test.py ++++ b/tests/integration/nm/dns_test.py +@@ -328,3 +328,36 @@ def test_write_both_global_dns_and_iface_dns(eth1_up): + assert cmdlib.exec_cmd( + "nmcli -g ipv4.dns c show eth1".split(), check=True + )[1].strip() == ",".join(TEST_DNS_SRVS) ++ ++ ++# https://issues.redhat.com/browse/RHEL-102333 ++def test_set_dns_search_only_in_down_iface(auto_eth1, eth2_up): ++ # Add a DNS search domain to a down interface ++ cmdlib.exec_cmd("nmcli device down eth2".split(), check=True) ++ cmdlib.exec_cmd("nmcli c modify eth2 ipv4.method auto".split(), check=True) ++ cmdlib.exec_cmd( ++ "nmcli c modify eth2 ipv4.dns-search 'example.com'".split(), ++ check=True, ++ ) ++ ++ # Assert that the DNS searches configuration can change correctly ++ libnmstate.apply( ++ { ++ DNS.KEY: {DNS.CONFIG: {DNS.SEARCH: ["example2.com"]}}, ++ } ++ ) ++ ++ # Assert that the old configuration has been purged from the down interface ++ # and the new one hasn't been added to it. ++ _r, search4, _e = cmdlib.exec_cmd( ++ "nmcli -g ipv4.dns-search c show eth2".split(), check=True ++ ) ++ _r, search6, _e = cmdlib.exec_cmd( ++ "nmcli -g ipv6.dns-search c show eth2".split(), check=True ++ ) ++ assert "example.com" not in search4 and "example.com" not in search6 ++ assert "example2.com" not in search4 and "example2.com" not in search6 ++ ++ # It is not possible to assert that the new configuration has been put into ++ # eth1 because, if there are more interfaces in the host, it might be in ++ # any of them +-- +2.49.0 + diff --git a/nmstate-2.2.43.tar.gz.asc b/nmstate-2.2.43.tar.gz.asc deleted file mode 100644 index 65c5166..0000000 --- a/nmstate-2.2.43.tar.gz.asc +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQIzBAABCAAdFiEESP1vrlFad7SENoIch4lWe4cVzrwFAmfirpIACgkQh4lWe4cV -zrzxyBAApDm8cvjj79NKwqGowT4xzbupomHXx9uvgQZSsI7Ih/F/TU/f6nj+mJ6E -NOqj5YVggG1lxg4NxY64r3tkmns+ANNqWeUO0yj3BTAjD38SIX1TpSU3lhOspRyv -OwtVIrXNgGuHpMc/HLcpx5GAr7PgLasqzMPdUZMM5uCVgqqPyVlTSW0pUti2EUmj -ziuIZEVC3IiMjOdEUgfy/daQulIOKLRSDmaDlWq39ywJEmsngVJfSxpgyJxpm9HK -wRVM/jTmK31EIUHiREDVLP7lL9JyutNRwKvo4gcct3UANRC5mQyN3AGzAL2iIxMa -n7S3xry5qacR6iyKa8K36PGMj1vuBZhKHZPyWJrWQikmzTo7Fiwu+JB6JeM89XNQ -HrCRk9z6mApuG//AP0zy94LS7A9jcNB2teIQTQgePAK0OcuXm9pcTQ6/i7BKT+gd -ceCJqpWNzfggCdaTWW6kgOyswGrlkKBT+77pJ0mjZaofgdCldNuyu7UOXpLAR3Xb -lJs4gX5YjtJikvG0raG6oCXb1mObGp86ANLoByCwbhVD+raTCA8gzgT9mC6egSr4 -0G/RoQ1ao+bCJFrLGqUes4RhARhmAYzgdrYd4kzdtGoEX+Lcc+JhNcMyIumYB41b -VmQmEXQPlYIm6VSOZaVqUWUJYa3Y5EN15nm+Qd7CJq03Tq8o4YI= -=H9pQ ------END PGP SIGNATURE----- diff --git a/nmstate-2.2.48.tar.gz.asc b/nmstate-2.2.48.tar.gz.asc new file mode 100644 index 0000000..582b75b --- /dev/null +++ b/nmstate-2.2.48.tar.gz.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEESP1vrlFad7SENoIch4lWe4cVzrwFAmhxMKUACgkQh4lWe4cV +zrz+7hAA3+qdS5bZWrYlbRCvwih73Kx5An4OjBzMvLdqJ0Hakb05fMvJ001sSMAw +xTCAXXFq3pKIEzXOj0tfTkZlj0iD0Yboq35HZuVQEr6pYieyF9udyn954oAvwqZX +QakHXVTy9Xm0QJF6VNW0l18jGcRlEjl53KUK8W3H3Ls5l4iXQpxxTnVIM5twPC7e +V7uv6fuWBXR729jli43JHvWOdNdROP1n2UfRqX07GnWrrEPZp2P+nETlnD2A+/Nm +znp0XBp9ZHcZqNWmDD7Z8tgINcJWtpYz/zd2SERluqJ1DE8LyRyCqYVMl5T9Sj1s +xpuoyPMc/qwHkC0HTNL3VSMay53lcyVVrA4LRj7qlJJ1adsaS69myaJHtGaOy1Qj +oluBIq9I+6yzbj8kJczjXDAvKpUdj+J0wu5wPyl2hLhPVekz70ZFZRtbilhYQT1o +dSAD1U9pvdWI1ors11i3ctiAtefj6KEx4eDC1gs5rneAm+nR5G+oGijnIe2NOBis +cdmDG7JOnxKS7x6RJHmaQIDtnbtSeQvsUcreWuu9MJNfmj3ZVN3ob/WhD5E1yXM9 +VabJEsHJGPtR6Cw5hCq51b/vXWLV7D3nTTLdApwTsXZtVmL0HfUAGzCduofLNd1S +LdBDU6lSkWYD/EZA12Hc7jooAQMqK400cSXEaoZ9F7UjCZrxK6c= +=kM1B +-----END PGP SIGNATURE----- diff --git a/nmstate.gpg b/nmstate.gpg index 05ff659..de81f0f 100644 --- a/nmstate.gpg +++ b/nmstate.gpg @@ -144,3 +144,33 @@ ZeP/UJCKbOTk0P4b6X+bn5KEBGAQkLN5d6adkqdaKNveyoxGURnzOBGUB79ykqPL KfYnetRPLeXiMqWKTUaImA== =a0yN -----END PGP PUBLIC KEY BLOCK----- +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQENBGC54gsBCACtCdyHeyKmLLyrS7K60vBA/ZzBjdNWo2gVzbp3uuXMYmYaVo4E +pIFxfkgtflefM8lZU//pFgCbj4l9uCyNrcMv5SDwR6T0JFoUyQgNVP2tc3d3Zzks +ktHOBxLyI0HSusKVXcYUSORcMLgW1QfpWWE01zND+Kur+9EQcKhkSVeh/APcDKh3 +3OhiqKoo1zRQw/GyiXB8NY+/+zYmJc/Ag4ZL4zwTYfCcFYk2bUD3XWgYICqoY647 +wlb398PdyJfKN3SNQdRUZ0zvMBxh6L5uN/CT92W5gey/m6UKfSiwmyzUcxtKvktA +g6DbWlIhjBhNssx/yJM/WWW8FE3piYpXhOQrABEBAAG0I8ONw7FpZ28gSHVndWV0 +IDxpaHVndWV0QHJlZGhhdC5jb20+iQFOBBMBCAA4FiEEB/muyGFEOG2VdiELZqRH +gbTrwtAFAmC54gsCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQZqRHgbTr +wtCGSQf+K/yt1oxk85ehjjmT/O+4PhMxPLDTTIbPWwJpSQ7paRkOa53VeA1gmI+m +miDK4CllrO90ZD6ZvzXjbXQP/MA1PDUNNOnCbXX+Tk9uZEx4GdWmkRbdEAOuBK8b +Vg7sH/2a/mtwAW/AYY/K8rcRGTDsNJAcNNfcXl61wGYWHuqyeNXmMB+Y3dXGUxKR +iJOcA0sO8d6DMCDMyeyAdREThbKT2pUfnXN9HdASBU8HHTmf2nyDAD6u/8EEMDfu +2Yb4VtCZ0k92mp/043JRbwJ56AUxdLbWFbBmYgrIeKAtyHaACv06PQXZpQ2dz+WP +S3URA/n5JvntMbIkarU7ftLuYTkn/LkBDQRgueILAQgAvm9vMG73bYZ5dp/TDKMk +y6E6mxi0TXVILfQV8bO2H1S2k19wNOIavqGtbH15QzsL6B2OuwHeAPkUkwQwV8Tz +NCbUFeQb8z5jWjdFVBi42JXwBQmQcYHKYjaOu/7kW+v/5pyfFRLPLfimYCF+YbhY +vTqSMrW4sInUXhUOL1mg0yxWEoZ6Qv3AlUsVc91Ok2j5f1UzjFg+7T4BEYc/pE+d +oP5y/mvYoUt+o6Ma6ENcBgsJ8JFRJTb1OTrXmzebCAW7Md+6rdXGz5mMeqW0QFGV +LgHS1euGza0Vm9wfjA6l3LMxW5jrmxLWsEiugbm4QPIxBR2u8HFVk/G6kBYxsNwd +3QARAQABiQE2BBgBCAAgFiEEB/muyGFEOG2VdiELZqRHgbTrwtAFAmC54gsCGwwA +CgkQZqRHgbTrwtD33wf+ORu+FgSV6m/5M8bsLNA2uh6jp3lFNT6CZy3yza/8Uxqt +RsucUc0qlWmnHbQmwCjAoHpapEtQNvisDgYGAo8ICw+Ij12psxOyFgh0inF7p2ms +86g1Km7DHzFE6B8gwakkVhN6QR+wzr3msJMfj+gfKCbmbuD7PQLjgJL4ITRbMj0u +XUuxEMD5z7mtWDDVscCna0bgaxX0KZC71ViWsPx7Wp1v6+kUzL4KLK1R/7xt6kim +2nJubv+VVuNkx8THxh6chgux1ev8z8fOKiPWcyYZ+wWhbr1Bt98Z24IV4BYY2Ee8 +fOao91QN8xXpO4C1MljjqaWb3DWqvdBsTx/nUBPOlw== +=hJlJ +-----END PGP PUBLIC KEY BLOCK----- diff --git a/nmstate.spec b/nmstate.spec index d741e08..6f75f92 100644 --- a/nmstate.spec +++ b/nmstate.spec @@ -2,7 +2,7 @@ ## (rpmautospec version 0.6.5) ## RPMAUTOSPEC: autorelease, autochangelog %define autorelease(e:s:pb:n) %{?-p:0.}%{lua: - release_number = 1; + release_number = 2; base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); print(release_number + base_release_number - 1); }%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} @@ -12,7 +12,7 @@ %define libname libnmstate Name: nmstate -Version: 2.2.43 +Version: 2.2.48 Release: %autorelease Summary: Declarative network manager API License: Apache-2.0 AND LGPL-2.1-or-later @@ -29,6 +29,10 @@ BuildRequires: systemd-devel BuildRequires: systemd-rpm-macros BuildRequires: rust-toolset +# Patches to be removed in next rebase +Patch1001: 1001-dont-add-dns-to-down-iface.patch + + %description Nmstate is a library with an accompanying command line tool that manages host networking settings in a declarative manner and aimed to satisfy enterprise @@ -161,6 +165,14 @@ popd %changelog ## START: Generated by rpmautospec +* Thu Jul 24 2025 Íñigo Huguet - 2.2.48-2 +- Fix DNS settings with search or option only being saved to down NM + connection + +* Sat Jul 12 2025 Gris Ge - 2.2.48-1 +- Upgrade to 2.2.48 +- Apply dispatch changes first. RHEL-101743 + * Wed Apr 02 2025 Wen Liang - 2.2.43-1 - Upgrade to 2.2.43 - Support ethtool Forward Error Correction (FEC). RHEL-85673 diff --git a/sources b/sources index 5f5b629..4c3df92 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (nmstate-2.2.43.tar.gz) = da463868331ec8416154906b49138de8bca1f84d1a2a6700d0daa1d34f85ed69ba2724efad07b600e444a960cddb622f2c2454337f84459ac3ae6b2a00697042 -SHA512 (nmstate-vendor-2.2.43.tar.xz) = 202574a39010164766983fd315ca50a85b55ded54e253b6cd6e3970834f5107ce648646287bad0ce044ec21b8fca4fc64226183177147187a8bb3d1230e06ddb +SHA512 (nmstate-2.2.48.tar.gz) = 56b6810abb9ebbc1d98b8428f85367fc24748551d78963c4fab48a896e1cc656927c0eee102a218a519f4eb557e2e435a50a9745c393d8b2644d7a88fca5606e +SHA512 (nmstate-vendor-2.2.48.tar.xz) = f646d16b757694f561084a9161562fe36aee34b9f08f15da884ab588030b6f77c157310194d98f21a31c94d1ac037a54aa597307577dcd94948e84ad9ff2a4b3