diff --git a/.NetworkManager.metadata b/.NetworkManager.metadata index b6da699..5bc454a 100644 --- a/.NetworkManager.metadata +++ b/.NetworkManager.metadata @@ -1 +1 @@ -61e13a5d63e3b1205791618c25ee421750e2953c SOURCES/NetworkManager-1.25.2.tar.xz +985cd602a89a10c4014a745e5f17e5b849242e06 SOURCES/NetworkManager-1.25.91.tar.xz diff --git a/.gitignore b/.gitignore index 2be7810..a6e6c34 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/NetworkManager-1.25.2.tar.xz +SOURCES/NetworkManager-1.25.91.tar.xz diff --git a/SOURCES/1000-device-restart-DHCP-only-active-rh1852612.patch b/SOURCES/1000-device-restart-DHCP-only-active-rh1852612.patch new file mode 100644 index 0000000..46abacd --- /dev/null +++ b/SOURCES/1000-device-restart-DHCP-only-active-rh1852612.patch @@ -0,0 +1,37 @@ +From 007679685bef312bac8b5fe9ffffb6e9b60ddd25 Mon Sep 17 00:00:00 2001 +From: Beniamino Galvani +Date: Thu, 2 Jul 2020 17:38:10 +0200 +Subject: [PATCH] device: restart DHCP only for devices that are active or + activating + +do_sleep_wake() tries to restart DHCP for all devices, even ones that +are disconnecting. When a device is disconnecting, it still has a DHCP +client instance but we shouldn't restart it because it makes no sense; +and especially, the device could be already removed. + +https://bugzilla.redhat.com/show_bug.cgi?id=1852612 +https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/561 +(cherry picked from commit 2c50438987527a30d99c07601b8f1d1c9557cdaf) +(cherry picked from commit 53214901800ebcd1e1fabf98442983939af979bc) +--- + src/devices/nm-device.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c +index 90178b68f..a6c3e6680 100644 +--- a/src/devices/nm-device.c ++++ b/src/devices/nm-device.c +@@ -3822,6 +3822,10 @@ nm_device_update_dynamic_ip_setup (NMDevice *self) + + priv = NM_DEVICE_GET_PRIVATE (self); + ++ if ( priv->state < NM_DEVICE_STATE_IP_CONFIG ++ || priv->state > NM_DEVICE_STATE_ACTIVATED) ++ return; ++ + g_hash_table_remove_all (priv->ip6_saved_properties); + + if (priv->dhcp_data_4.client) { +-- +2.26.2 + diff --git a/SOURCES/1001-initrd-fix-BOOTIF-generation-rh1853277.patch b/SOURCES/1001-initrd-fix-BOOTIF-generation-rh1853277.patch new file mode 100644 index 0000000..2eba4bc --- /dev/null +++ b/SOURCES/1001-initrd-fix-BOOTIF-generation-rh1853277.patch @@ -0,0 +1,106 @@ +From 84cd78aee89120953e703dde308d850ddaadbfc4 Mon Sep 17 00:00:00 2001 +From: Beniamino Galvani +Date: Fri, 3 Jul 2020 15:26:28 +0200 +Subject: [PATCH] initrd: fix generating default BOOTIF= connection + +There is a bug when parsing a BOOTIF= without any existing +connection. The generated connection doesn't have wired setting and +later we try to access it: + + # nm-initrd-generator --stdout -- BOOTIF=01-50-50-00-9f-21-21 + (nm-initrd-generator:1546): libnm-CRITICAL **: ((libnm-core/nm-setting-wired.c:205)): assertion '' failed + (nm-initrd-generator:1546): GLib-GObject-CRITICAL **: g_object_set: assertion 'G_IS_OBJECT (object)' failed + +Fix this. + +https://bugzilla.redhat.com/show_bug.cgi?id=1853277 + +Fixes: 25a2b6e14ff5 ('initrd: rework command line parsing') +(cherry picked from commit 3023c70e4e1e50ddf5e7dae727fc3d67bfa18b32) +(cherry picked from commit b8246ea367a0041cb1527a08f47247877a4c07bd) +--- + src/initrd/nmi-cmdline-reader.c | 1 + + src/initrd/tests/test-cmdline-reader.c | 41 ++++++++++++++++++++++++-- + 2 files changed, 40 insertions(+), 2 deletions(-) + +diff --git a/src/initrd/nmi-cmdline-reader.c b/src/initrd/nmi-cmdline-reader.c +index 69e5e56d0..418e837d8 100644 +--- a/src/initrd/nmi-cmdline-reader.c ++++ b/src/initrd/nmi-cmdline-reader.c +@@ -132,6 +132,7 @@ reader_get_default_connection (Reader *reader) + NULL, + NM_SETTING_WIRED_SETTING_NAME, + NM_CONNECTION_MULTI_CONNECT_MULTIPLE); ++ nm_connection_add_setting (con, nm_setting_wired_new ()); + reader->default_connection = con; + } + return reader->default_connection; +diff --git a/src/initrd/tests/test-cmdline-reader.c b/src/initrd/tests/test-cmdline-reader.c +index 110770554..b25f49e22 100644 +--- a/src/initrd/tests/test-cmdline-reader.c ++++ b/src/initrd/tests/test-cmdline-reader.c +@@ -1064,7 +1064,7 @@ test_rd_znet_no_ip (void) + } + + static void +-test_bootif (void) ++test_bootif_ip (void) + { + gs_unref_hashtable GHashTable *connections = NULL; + const char *const*ARGV = NM_MAKE_STRV ("BOOTIF=00:53:AB:cd:02:03", +@@ -1101,6 +1101,42 @@ test_bootif (void) + g_assert (!nm_setting_ip_config_get_ignore_auto_dns (s_ip6)); + } + ++static void ++test_bootif_no_ip (void) ++{ ++ gs_unref_hashtable GHashTable *connections = NULL; ++ const char *const*ARGV = NM_MAKE_STRV ("BOOTIF=00:53:AB:cd:02:03"); ++ NMConnection *connection; ++ NMSettingWired *s_wired; ++ NMSettingIPConfig *s_ip4; ++ NMSettingIPConfig *s_ip6; ++ gs_free char *hostname = NULL; ++ ++ connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname); ++ g_assert (connections); ++ g_assert_cmpint (g_hash_table_size (connections), ==, 1); ++ g_assert_cmpstr (hostname, ==, NULL); ++ ++ connection = g_hash_table_lookup (connections, "default_connection"); ++ g_assert (connection); ++ nmtst_assert_connection_verifies_without_normalization (connection); ++ g_assert_cmpstr (nm_connection_get_id (connection), ==, "Wired Connection"); ++ ++ s_wired = nm_connection_get_setting_wired (connection); ++ g_assert_cmpstr (nm_setting_wired_get_mac_address (s_wired), ==, "00:53:AB:CD:02:03"); ++ g_assert (s_wired); ++ ++ s_ip4 = nm_connection_get_setting_ip4_config (connection); ++ g_assert (s_ip4); ++ g_assert_cmpstr (nm_setting_ip_config_get_method (s_ip4), ==, NM_SETTING_IP4_CONFIG_METHOD_AUTO); ++ g_assert (nm_setting_ip_config_get_may_fail (s_ip4)); ++ ++ s_ip6 = nm_connection_get_setting_ip6_config (connection); ++ g_assert (s_ip6); ++ g_assert_cmpstr (nm_setting_ip_config_get_method (s_ip6), ==, NM_SETTING_IP6_CONFIG_METHOD_AUTO); ++ g_assert (nm_setting_ip_config_get_may_fail (s_ip6)); ++} ++ + static void + test_bootif_hwtype (void) + { +@@ -1255,7 +1291,8 @@ int main (int argc, char **argv) + g_test_add_func ("/initrd/cmdline/rd_znet", test_rd_znet); + g_test_add_func ("/initrd/cmdline/rd_znet/legacy", test_rd_znet_legacy); + g_test_add_func ("/initrd/cmdline/rd_znet/no_ip", test_rd_znet_no_ip); +- g_test_add_func ("/initrd/cmdline/bootif", test_bootif); ++ g_test_add_func ("/initrd/cmdline/bootif/ip", test_bootif_ip); ++ g_test_add_func ("/initrd/cmdline/bootif/no_ip", test_bootif_no_ip); + g_test_add_func ("/initrd/cmdline/bootif/hwtype", test_bootif_hwtype); + g_test_add_func ("/initrd/cmdline/bootif/off", test_bootif_off); + +-- +2.26.2 + diff --git a/SOURCES/1002-ovs-fix-setting-mac-rh1852106.patch b/SOURCES/1002-ovs-fix-setting-mac-rh1852106.patch new file mode 100644 index 0000000..defcbc0 --- /dev/null +++ b/SOURCES/1002-ovs-fix-setting-mac-rh1852106.patch @@ -0,0 +1,363 @@ +From 3b29cd7eee7ba07f0f4750382819a9a53502124c Mon Sep 17 00:00:00 2001 +From: Beniamino Galvani +Date: Wed, 1 Jul 2020 10:55:01 +0200 +Subject: [PATCH 1/3] ovs: set MAC address on the bridge for local interfaces + +When a user creates a ovs-interface with the same name of the parent +ovs-bridge, openvswitch considers the interface as the "local +interface" [1] and assigns the MAC address of the bridge to the +interface [2]. + +This is confusing for users, as the cloned MAC property is ignored in +some cases, depending on the ovs-interface name. + +Instead, detect when the interface is local and set the MAC from the +ovs-interface connection in the bridge table. + +[1] https://github.com/openvswitch/ovs/blob/v2.13.0/vswitchd/vswitch.xml#L2546 +[2] https://github.com/openvswitch/ovs/blob/v2.13.0/vswitchd/bridge.c#L4744 + +(cherry picked from commit 5d4c8521a38c166a9a0aafe5be2bd0545084e154) +(cherry picked from commit 7548c29a89e12349fdfe196e96d65a6abae74cb5) +--- + src/devices/ovs/nm-ovsdb.c | 114 +++++++++++++++++++++++++------------ + 1 file changed, 77 insertions(+), 37 deletions(-) + +diff --git a/src/devices/ovs/nm-ovsdb.c b/src/devices/ovs/nm-ovsdb.c +index e1865f9de..0b3fa3fdb 100644 +--- a/src/devices/ovs/nm-ovsdb.c ++++ b/src/devices/ovs/nm-ovsdb.c +@@ -310,6 +310,18 @@ _set_bridge_ports (json_t *params, const char *ifname, json_t *new_ports) + ); + } + ++static void ++_set_bridge_mac (json_t *params, const char *ifname, const char *mac) ++{ ++ json_array_append_new (params, ++ json_pack ("{s:s, s:s, s:{s:[s, [[s, s]]]}, s:[[s, s, s]]}", ++ "op", "update", "table", "Bridge", ++ "row", "other_config", "map", ++ "hwaddr", mac, ++ "where", "name", "==", ifname) ++ ); ++} ++ + /** + * _expect_port_interfaces: + * +@@ -353,15 +365,16 @@ _set_port_interfaces (json_t *params, const char *ifname, json_t *new_interfaces + * Returns an commands that adds new interface from a given connection. + */ + static void +-_insert_interface (json_t *params, NMConnection *interface, NMDevice *interface_device) ++_insert_interface (json_t *params, ++ NMConnection *interface, ++ NMDevice *interface_device, ++ const char *cloned_mac) + { + const char *type = NULL; + NMSettingOvsInterface *s_ovs_iface; + NMSettingOvsDpdk *s_ovs_dpdk; + NMSettingOvsPatch *s_ovs_patch; + json_t *options = json_array (); +- gs_free char *cloned_mac = NULL; +- gs_free_error GError *error = NULL; + json_t *row; + guint32 mtu = 0; + +@@ -377,18 +390,6 @@ _insert_interface (json_t *params, NMConnection *interface, NMDevice *interface_ + mtu = nm_setting_wired_get_mtu (s_wired); + } + +- if (!nm_device_hw_addr_get_cloned (interface_device, +- interface, +- FALSE, +- &cloned_mac, +- NULL, +- &error)) { +- _LOGW ("Cannot determine cloned mac for OVS %s '%s': %s", +- "interface", +- nm_connection_get_interface_name (interface), +- error->message); +- } +- + json_array_append_new (options, json_string ("map")); + + s_ovs_dpdk = (NMSettingOvsDpdk *) nm_connection_get_setting (interface, +@@ -490,7 +491,11 @@ _insert_port (json_t *params, NMConnection *port, json_t *new_interfaces) + * Returns an commands that adds new bridge from a given connection. + */ + static void +-_insert_bridge (json_t *params, NMConnection *bridge, NMDevice *bridge_device, json_t *new_ports) ++_insert_bridge (json_t *params, ++ NMConnection *bridge, ++ NMDevice *bridge_device, ++ json_t *new_ports, ++ const char *cloned_mac) + { + NMSettingOvsBridge *s_ovs_bridge; + const char *fail_mode = NULL; +@@ -499,23 +504,9 @@ _insert_bridge (json_t *params, NMConnection *bridge, NMDevice *bridge_device, j + gboolean stp_enable = FALSE; + const char *datapath_type = NULL; + json_t *row; +- gs_free_error GError *error = NULL; +- gs_free char *cloned_mac = NULL; + + s_ovs_bridge = nm_connection_get_setting_ovs_bridge (bridge); + +- if (!nm_device_hw_addr_get_cloned (bridge_device, +- bridge, +- FALSE, +- &cloned_mac, +- NULL, +- &error)) { +- _LOGW ("Cannot determine cloned mac for OVS %s '%s': %s", +- "bridge", +- nm_connection_get_interface_name (bridge), +- error->message); +- } +- + row = json_object (); + + if (s_ovs_bridge) { +@@ -586,6 +577,9 @@ _add_interface (NMOvsdb *self, json_t *params, + const char *bridge_uuid; + const char *port_uuid; + const char *interface_uuid; ++ const char *bridge_name; ++ const char *port_name; ++ const char *interface_name; + OpenvswitchBridge *ovs_bridge = NULL; + OpenvswitchPort *ovs_port = NULL; + OpenvswitchInterface *ovs_interface = NULL; +@@ -596,6 +590,10 @@ _add_interface (NMOvsdb *self, json_t *params, + nm_auto_decref_json json_t *interfaces = NULL; + nm_auto_decref_json json_t *new_interfaces = NULL; + gboolean has_interface = FALSE; ++ gboolean interface_is_internal; ++ gs_free char *bridge_cloned_mac = NULL; ++ gs_free char *interface_cloned_mac = NULL; ++ GError *error = NULL; + int pi; + int ii; + +@@ -606,11 +604,51 @@ _add_interface (NMOvsdb *self, json_t *params, + new_ports = json_array (); + new_interfaces = json_array (); + ++ bridge_name = nm_connection_get_interface_name (bridge); ++ port_name = nm_connection_get_interface_name (port); ++ interface_name = nm_connection_get_interface_name (interface); ++ interface_is_internal = nm_streq0 (bridge_name, interface_name); ++ ++ /* Determine cloned MAC addresses */ ++ if (!nm_device_hw_addr_get_cloned (bridge_device, ++ bridge, ++ FALSE, ++ &bridge_cloned_mac, ++ NULL, ++ &error)) { ++ _LOGW ("Cannot determine cloned mac for OVS %s '%s': %s", ++ "bridge", ++ bridge_name, ++ error->message); ++ g_clear_error (&error); ++ } ++ ++ if (!nm_device_hw_addr_get_cloned (interface_device, ++ interface, ++ FALSE, ++ &interface_cloned_mac, ++ NULL, ++ &error)) { ++ _LOGW ("Cannot determine cloned mac for OVS %s '%s': %s", ++ "interface", ++ interface_name, ++ error->message); ++ g_clear_error (&error); ++ } ++ ++ if ( interface_is_internal ++ && !bridge_cloned_mac ++ && interface_cloned_mac) { ++ _LOGT ("'%s' is a local ovs-interface, the MAC will be set on ovs-bridge '%s'", ++ interface_name, bridge_name); ++ bridge_cloned_mac = g_steal_pointer (&interface_cloned_mac); ++ } ++ + g_hash_table_iter_init (&iter, priv->bridges); + while (g_hash_table_iter_next (&iter, (gpointer) &bridge_uuid, (gpointer) &ovs_bridge)) { + json_array_append_new (bridges, json_pack ("[s, s]", "uuid", bridge_uuid)); + +- if ( g_strcmp0 (ovs_bridge->name, nm_connection_get_interface_name (bridge)) != 0 ++ if ( g_strcmp0 (ovs_bridge->name, bridge_name) != 0 + || g_strcmp0 (ovs_bridge->connection_uuid, nm_connection_get_uuid (bridge)) != 0) + continue; + +@@ -624,7 +662,7 @@ _add_interface (NMOvsdb *self, json_t *params, + /* This would be a violation of ovsdb's reference integrity (a bug). */ + _LOGW ("Unknown port '%s' in bridge '%s'", port_uuid, bridge_uuid); + continue; +- } else if ( strcmp (ovs_port->name, nm_connection_get_interface_name (port)) != 0 ++ } else if ( strcmp (ovs_port->name, port_name) != 0 + || g_strcmp0 (ovs_port->connection_uuid, nm_connection_get_uuid (port)) != 0) { + continue; + } +@@ -638,7 +676,7 @@ _add_interface (NMOvsdb *self, json_t *params, + if (!ovs_interface) { + /* This would be a violation of ovsdb's reference integrity (a bug). */ + _LOGW ("Unknown interface '%s' in port '%s'", interface_uuid, port_uuid); +- } else if ( strcmp (ovs_interface->name, nm_connection_get_interface_name (interface)) == 0 ++ } else if ( strcmp (ovs_interface->name, interface_name) == 0 + && g_strcmp0 (ovs_interface->connection_uuid, nm_connection_get_uuid (interface)) == 0) { + has_interface = TRUE; + } +@@ -661,12 +699,14 @@ _add_interface (NMOvsdb *self, json_t *params, + _expect_ovs_bridges (params, priv->db_uuid, bridges); + json_array_append_new (new_bridges, json_pack ("[s, s]", "named-uuid", "rowBridge")); + _set_ovs_bridges (params, priv->db_uuid, new_bridges); +- _insert_bridge (params, bridge, bridge_device, new_ports); ++ _insert_bridge (params, bridge, bridge_device, new_ports, bridge_cloned_mac); + } else { + /* Bridge already exists. */ + g_return_if_fail (ovs_bridge); + _expect_bridge_ports (params, ovs_bridge->name, ports); +- _set_bridge_ports (params, nm_connection_get_interface_name (bridge), new_ports); ++ _set_bridge_ports (params, bridge_name, new_ports); ++ if (bridge_cloned_mac && interface_is_internal) ++ _set_bridge_mac (params, bridge_name, bridge_cloned_mac); + } + + json_array_append_new (new_ports, json_pack ("[s, s]", "named-uuid", "rowPort")); +@@ -675,11 +715,11 @@ _add_interface (NMOvsdb *self, json_t *params, + /* Port already exists */ + g_return_if_fail (ovs_port); + _expect_port_interfaces (params, ovs_port->name, interfaces); +- _set_port_interfaces (params, nm_connection_get_interface_name (port), new_interfaces); ++ _set_port_interfaces (params, port_name, new_interfaces); + } + + if (!has_interface) { +- _insert_interface (params, interface, interface_device); ++ _insert_interface (params, interface, interface_device, interface_cloned_mac); + json_array_append_new (new_interfaces, json_pack ("[s, s]", "named-uuid", "rowInterface")); + } + } +-- +2.26.2 + +From 3df555a42166f0f1ec50e6bdb38f1719d1fe2eef Mon Sep 17 00:00:00 2001 +From: Beniamino Galvani +Date: Wed, 1 Jul 2020 09:01:10 +0200 +Subject: [PATCH 2/3] ovs: also set cloned MAC address via netlink + +We already set the MAC of OVS interfaces in the ovsdb. Unfortunately, +vswitchd doesn't create the interface with the given MAC from the +beginning, but first creates it with a random MAC and then changes it. + +This causes a race condition: as soon as NM sees the new link, it +starts IP configuration on it and (possibly later) vswitchd will +change the MAC. + +To avoid this, also set the desired MAC via netlink before starting IP +configuration. + +https://bugzilla.redhat.com/show_bug.cgi?id=1852106 +https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/483 +(cherry picked from commit 47ec3d14d49eb9e9db956b3efd495d5d696da996) +(cherry picked from commit 60d10b146d57290f146536705d744e67925de90e) +--- + src/devices/ovs/nm-device-ovs-interface.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +diff --git a/src/devices/ovs/nm-device-ovs-interface.c b/src/devices/ovs/nm-device-ovs-interface.c +index 10f9fa943..83954cf07 100644 +--- a/src/devices/ovs/nm-device-ovs-interface.c ++++ b/src/devices/ovs/nm-device-ovs-interface.c +@@ -104,6 +104,14 @@ link_changed (NMDevice *device, + priv->waiting_for_interface = FALSE; + + if (nm_device_get_state (device) == NM_DEVICE_STATE_IP_CONFIG) { ++ if (!nm_device_hw_addr_set_cloned (device, ++ nm_device_get_applied_connection (device), ++ FALSE)) { ++ nm_device_state_changed (device, ++ NM_DEVICE_STATE_FAILED, ++ NM_DEVICE_STATE_REASON_CONFIG_FAILED); ++ return; ++ } + nm_device_bring_up (device, TRUE, NULL); + nm_device_activate_schedule_stage3_ip_config_start (device); + } +@@ -176,6 +184,13 @@ act_stage3_ip_config_start (NMDevice *device, + return NM_ACT_STAGE_RETURN_POSTPONE; + } + ++ if (!nm_device_hw_addr_set_cloned (device, ++ nm_device_get_applied_connection (device), ++ FALSE)) { ++ *out_failure_reason = NM_DEVICE_STATE_REASON_CONFIG_FAILED; ++ return NM_ACT_STAGE_RETURN_FAILURE; ++ } ++ + return NM_DEVICE_CLASS (nm_device_ovs_interface_parent_class)->act_stage3_ip_config_start (device, addr_family, out_config, out_failure_reason); + } + +-- +2.26.2 + +From 73a99046f02f82705b0cf7da8c06ce53ddcbedba Mon Sep 17 00:00:00 2001 +From: Beniamino Galvani +Date: Thu, 2 Jul 2020 13:47:22 +0200 +Subject: [PATCH 3/3] device: don't reset the MAC without ifindex + +nm_device_cleanup() can be called when the device no longer has an +ifindex. In such case, don't try to reset the MAC address as that +would lead to an assertion failure. + +(cherry picked from commit 77b6ce7d04f6c88e78fb7f1972549956e00e1f4b) +(cherry picked from commit 791a888cad3d260675781c0ed30acf13cc1194f7) +--- + src/devices/nm-device.c | 24 +++++++++++++----------- + 1 file changed, 13 insertions(+), 11 deletions(-) + +diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c +index a6c3e6680..980cd3a06 100644 +--- a/src/devices/nm-device.c ++++ b/src/devices/nm-device.c +@@ -15606,17 +15606,19 @@ nm_device_cleanup (NMDevice *self, NMDeviceStateReason reason, CleanupType clean + + nm_device_update_metered (self); + +- /* during device cleanup, we want to reset the MAC address of the device +- * to the initial state. +- * +- * We certainly want to do that when reaching the UNMANAGED state... */ +- if (nm_device_get_state (self) <= NM_DEVICE_STATE_UNMANAGED) +- nm_device_hw_addr_reset (self, "unmanage"); +- else { +- /* for other device states (UNAVAILABLE, DISCONNECTED), allow the +- * device to overwrite the reset behavior, so that Wi-Fi can set +- * a randomized MAC address used during scanning. */ +- NM_DEVICE_GET_CLASS (self)->deactivate_reset_hw_addr (self); ++ if (ifindex > 0) { ++ /* during device cleanup, we want to reset the MAC address of the device ++ * to the initial state. ++ * ++ * We certainly want to do that when reaching the UNMANAGED state... */ ++ if (nm_device_get_state (self) <= NM_DEVICE_STATE_UNMANAGED) ++ nm_device_hw_addr_reset (self, "unmanage"); ++ else { ++ /* for other device states (UNAVAILABLE, DISCONNECTED), allow the ++ * device to overwrite the reset behavior, so that Wi-Fi can set ++ * a randomized MAC address used during scanning. */ ++ NM_DEVICE_GET_CLASS (self)->deactivate_reset_hw_addr (self); ++ } + } + + priv->mtu_source = NM_DEVICE_MTU_SOURCE_NONE; +-- +2.26.2 + diff --git a/SPECS/NetworkManager.spec b/SPECS/NetworkManager.spec index e22499e..ea9d9ac 100644 --- a/SPECS/NetworkManager.spec +++ b/SPECS/NetworkManager.spec @@ -5,9 +5,9 @@ %global glib2_version %(pkg-config --modversion glib-2.0 2>/dev/null || echo bad) %global epoch_version 1 -%global rpm_version 1.25.2 -%global real_version 1.25.2 -%global release_version 1 +%global rpm_version 1.26.0 +%global real_version 1.25.91 +%global release_version 0.2.1 %global snapshot %{nil} %global git_sha %{nil} @@ -149,7 +149,9 @@ Source6: 70-nm-connectivity.conf Patch1: 0001-cloud-setup-systemd-unit-rh1791758.patch # Bugfixes that are only relevant until next rebase of the package. -#Patch1000: 1000-some-patch.patch +Patch1000: 1000-device-restart-DHCP-only-active-rh1852612.patch +Patch1001: 1001-initrd-fix-BOOTIF-generation-rh1853277.patch +Patch1002: 1002-ovs-fix-setting-mac-rh1852106.patch # The pregenerated docs contain default values and paths that depend # on the configure options when creating the source tarball. @@ -631,7 +633,7 @@ This tool is still experimental. -Dfirewalld_zone=true \ %else -Dfirewalld_zone=false \ -%endif +%endif -Ddist_version=%{version}-%{release} \ -Dconfig_plugins_default=%{config_plugins_default} \ -Dconfig_dns_rc_manager_default=%{dns_rc_manager_default} \ @@ -769,7 +771,7 @@ intltoolize --automake --copy --force --enable-firewalld-zone \ %else --disable-firewalld-zone \ -%endif +%endif --with-dist-version=%{version}-%{release} \ --with-config-plugins-default=%{config_plugins_default} \ --with-config-dns-rc-manager-default=%{dns_rc_manager_default} \ @@ -1097,6 +1099,25 @@ fi %changelog +* Mon Jul 6 2020 Beniamino Galvani - 1:1.26.0-0.2.1 +- device: restart DHCP only for devices that are active or activating (rh #1852612) +- initrd: fix generating default BOOTIF= connection (rh #1853277) +- ovs: fix race condition when setting MAC address for ovs interfaces (rh #1852106) + +* Sun Jun 28 2020 Beniamino Galvani - 1:1.26.0-0.2 +- update to 1.26-rc2 (1.25.91) +- initrd: set ipv6.method=auto when using IPv4 static configuration (rh #1848943) +- cloud-setup: add support for Google Cloud load-balancing routes (rh #1821787) + +* Mon Jun 15 2020 Thomas Haller - 1:1.26.0-0.1 +- update to 1.26-rc1 (1.25.90) +- core: support more tc qdiscs (tbf and sfq) (rh #1546802) +- core: support match devices for connection profile by PCI address (ID_PATH) (rh #1673321) +- ovs: fix peer property for OVS patch interface (rh #1845216) +- doc: add manual pages nm-settings-dbus and nm-settings-nmcli (rh #1614726) +- wifi: don't block autoconnect for profiles that never succeeded to connect (rh #1781253) +- dbus,nmcli: highlight externally managed devices (rh #1816202) + * Fri May 29 2020 Beniamino Galvani - 1:1.25.2-1 - update to 1.25.2 (development) - support ethtool coalesce and ring options (rh #1614700)