From e9658e42ed45fff9a64f773a54455eb309570d9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= Date: Wed, 18 Oct 2023 16:13:05 +0200 Subject: [PATCH] Fix l3cd comparison Resolves: RHEL-8423 --- 1010-fix-l3cd-comparison-rhel-8423.patch | 90 ++++++++++++++++++++++++ NetworkManager.spec | 6 +- 2 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 1010-fix-l3cd-comparison-rhel-8423.patch diff --git a/1010-fix-l3cd-comparison-rhel-8423.patch b/1010-fix-l3cd-comparison-rhel-8423.patch new file mode 100644 index 0000000..e4c9326 --- /dev/null +++ b/1010-fix-l3cd-comparison-rhel-8423.patch @@ -0,0 +1,90 @@ +From a7005248bbd8d563962c6a68ed7f1ead58e9df26 Mon Sep 17 00:00:00 2001 +From: Beniamino Galvani +Date: Tue, 28 Mar 2023 09:32:13 +0200 +Subject: [PATCH] core: fix l3cd comparison + +NM_CMP_SELF(a, b) returns immediately if the objects are the same. + +Fixes: cb29244552af ('core: support compare flags in nm_l3_config_data_cmp_full()') +Fixes-test: @dracut_NM_iSCSI_ibft_table + +https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1583 +(cherry picked from commit 0a02995175e06e62924705393121a1c5efc3822d) +(cherry picked from commit 5d95c20787077a91d684259d67f2e0ff3a1d7a1a) +(cherry picked from commit 1395171326e84eafbf2f372c232bf27a4ed79481) +--- + src/core/nm-l3-config-data.c | 55 ++++++++++++++++++------------------ + 1 file changed, 28 insertions(+), 27 deletions(-) + +diff --git a/src/core/nm-l3-config-data.c b/src/core/nm-l3-config-data.c +index d4c7f0c5fb..afdd53920d 100644 +--- a/src/core/nm-l3-config-data.c ++++ b/src/core/nm-l3-config-data.c +@@ -2278,36 +2278,37 @@ nm_l3_config_data_cmp_full(const NML3ConfigData *a, + const NMPObject *def_route_a = a->best_default_route_x[IS_IPv4]; + const NMPObject *def_route_b = b->best_default_route_x[IS_IPv4]; + +- NM_CMP_SELF(def_route_a, def_route_b); +- +- if (NM_FLAGS_HAS(flags, NM_L3_CONFIG_CMP_FLAGS_ROUTES)) { +- NM_CMP_RETURN(nmp_object_cmp_full(def_route_a, +- def_route_b, +- NM_FLAGS_HAS(flags, NM_L3_CONFIG_CMP_FLAGS_IFINDEX) +- ? NMP_OBJECT_CMP_FLAGS_NONE +- : NMP_OBJECT_CMP_FLAGS_IGNORE_IFINDEX)); +- } else if (NM_FLAGS_HAS(flags, NM_L3_CONFIG_CMP_FLAGS_ROUTES_ID)) { +- if (NM_FLAGS_HAS(flags, NM_L3_CONFIG_CMP_FLAGS_IFINDEX)) { +- NM_CMP_DIRECT(def_route_a->obj_with_ifindex.ifindex, +- def_route_b->obj_with_ifindex.ifindex); +- } ++ if (def_route_a != def_route_b) { ++ if (NM_FLAGS_HAS(flags, NM_L3_CONFIG_CMP_FLAGS_ROUTES)) { ++ NM_CMP_RETURN( ++ nmp_object_cmp_full(def_route_a, ++ def_route_b, ++ NM_FLAGS_HAS(flags, NM_L3_CONFIG_CMP_FLAGS_IFINDEX) ++ ? NMP_OBJECT_CMP_FLAGS_NONE ++ : NMP_OBJECT_CMP_FLAGS_IGNORE_IFINDEX)); ++ } else if (NM_FLAGS_HAS(flags, NM_L3_CONFIG_CMP_FLAGS_ROUTES_ID)) { ++ if (NM_FLAGS_HAS(flags, NM_L3_CONFIG_CMP_FLAGS_IFINDEX)) { ++ NM_CMP_DIRECT(def_route_a->obj_with_ifindex.ifindex, ++ def_route_b->obj_with_ifindex.ifindex); ++ } + +- if (IS_IPv4) { +- NMPlatformIP4Route ra = def_route_a->ip4_route; +- NMPlatformIP4Route rb = def_route_b->ip4_route; ++ if (IS_IPv4) { ++ NMPlatformIP4Route ra = def_route_a->ip4_route; ++ NMPlatformIP4Route rb = def_route_b->ip4_route; + +- NM_CMP_DIRECT(ra.metric, rb.metric); +- NM_CMP_DIRECT(ra.plen, rb.plen); +- NM_CMP_RETURN_DIRECT( +- nm_utils_ip4_address_same_prefix_cmp(ra.network, rb.network, ra.plen)); +- } else { +- NMPlatformIP6Route ra = def_route_a->ip6_route; +- NMPlatformIP6Route rb = def_route_b->ip6_route; ++ NM_CMP_DIRECT(ra.metric, rb.metric); ++ NM_CMP_DIRECT(ra.plen, rb.plen); ++ NM_CMP_RETURN_DIRECT( ++ nm_utils_ip4_address_same_prefix_cmp(ra.network, rb.network, ra.plen)); ++ } else { ++ NMPlatformIP6Route ra = def_route_a->ip6_route; ++ NMPlatformIP6Route rb = def_route_b->ip6_route; + +- NM_CMP_DIRECT(ra.metric, rb.metric); +- NM_CMP_DIRECT(ra.plen, rb.plen); +- NM_CMP_RETURN_DIRECT( +- nm_utils_ip6_address_same_prefix_cmp(&ra.network, &rb.network, ra.plen)); ++ NM_CMP_DIRECT(ra.metric, rb.metric); ++ NM_CMP_DIRECT(ra.plen, rb.plen); ++ NM_CMP_RETURN_DIRECT( ++ nm_utils_ip6_address_same_prefix_cmp(&ra.network, &rb.network, ra.plen)); ++ } + } + } + +-- +2.41.0 + diff --git a/NetworkManager.spec b/NetworkManager.spec index 0a1a9b3..d4ed2e8 100644 --- a/NetworkManager.spec +++ b/NetworkManager.spec @@ -6,7 +6,7 @@ %global epoch_version 1 %global real_version 1.40.16 %global rpm_version %{real_version} -%global release_version 10 +%global release_version 11 %global snapshot %{nil} %global git_sha %{nil} %global bcond_default_debug 0 @@ -205,6 +205,7 @@ Patch1006: 1006-fix-read-infiniband-from-ifcfg-rh2209164.patch Patch1007: 1007-unblock-autoconnect-on-reapply-rh2207690.patch Patch1008: 1008-cloud-setup-fix-terminating-in-reconfig-rh2221903.patch Patch1009: 1009-manager-allow-controller-activation-if-device-is-dea-rhel-5119.patch +Patch1010: 1010-fix-l3cd-comparison-rhel-8423.patch Requires(post): systemd %if 0%{?fedora} || 0%{?rhel} >= 8 @@ -1240,6 +1241,9 @@ fi %changelog +* Wed Oct 18 2023 Íñigo Huguet - 1:1.40.16-11 +- Correctly update DNS changes retrieved from DHCPv4 (RHEL-8423) + * Wed Oct 04 2023 Fernando Fernandez Mancera - 1:1.40.16-10 - manager: allow controller activation if device is deactivating (RHEL-5119)