diff --git a/.NetworkManager.metadata b/.NetworkManager.metadata
index c158ea3..0c0ea0a 100644
--- a/.NetworkManager.metadata
+++ b/.NetworkManager.metadata
@@ -1 +1 @@
-93b74524dbd01bf62f6885f2cdae6ff15c5bfd7e  SOURCES/NetworkManager-1.22.8.tar.xz
+b1bf81a9c8ff1372757f33e2573ac0bc0462197c SOURCES/NetworkManager-1.25.1.tar.xz
diff --git a/.gitignore b/.gitignore
index 9796ed6..1fc1a2a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/NetworkManager-1.22.8.tar.xz
+SOURCES/NetworkManager-1.25.1.tar.xz
diff --git a/SOURCES/1000-ifcfg-fix-writer-rh1804167.patch b/SOURCES/1000-ifcfg-fix-writer-rh1804167.patch
deleted file mode 100644
index 9c6bffb..0000000
--- a/SOURCES/1000-ifcfg-fix-writer-rh1804167.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From ff9c477f3238aeca9b8ca2e0805d419a449ea4d9 Mon Sep 17 00:00:00 2001
-From: Thomas Haller <thaller@redhat.com>
-Date: Tue, 18 Feb 2020 18:30:19 +0100
-Subject: [PATCH] ifcfg: fix writer when changing OVS slave to clear previous
- settings
-
-We need to reset the OVS_PORT and OVS_PORT_UUID variables.
-Otherwise, clearing the slave type doesn't work.
-
-On master this is solved differently, by automatically clearing all
-variables that are not explicitly set.
-
-Reproducer:
-
-    nmcli con del t-eth1
-    nmcli con add type ethernet autoconnect no ifname eth1 master port0 con-name t-eth1 slave-type ovs-port
-    echo "
-    remove ovs-interface
-    remove connection.master
-    remove connection.slave-type
-    print
-    save
-    quit
-    " | nmcli c edit t-eth1
-    nmcli con show t-eth1 | grep 'ovs\|slave-type'
-
-Fixes: 1440fe6a8804 ('ifcfg: don't forget master of ovs interfaces')
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1804167
-(cherry picked from commit 0c8046574e782ca926d265348d10866f1653aef1)
----
- src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
-index f328cc8f0..90a1a2b8f 100644
---- a/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
-+++ b/src/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
-@@ -1923,6 +1923,8 @@ write_connection_setting (NMSettingConnection *s_con, shvarFile *ifcfg)
- 	svSetValueStr (ifcfg, "BRIDGE", NULL);
- 	svSetValueStr (ifcfg, "TEAM_MASTER_UUID", NULL);
- 	svSetValueStr (ifcfg, "TEAM_MASTER", NULL);
-+	svSetValueStr (ifcfg, "OVS_PORT_UUID", NULL);
-+	svSetValueStr (ifcfg, "OVS_PORT", NULL);
- 
- 	master = nm_setting_connection_get_master (s_con);
- 	if (master) {
--- 
-2.24.1
-
diff --git a/SOURCES/1001-Revert-core-create-virtual-device-on-settings-change-rh1804350.patch b/SOURCES/1001-Revert-core-create-virtual-device-on-settings-change-rh1804350.patch
deleted file mode 100644
index 9762320..0000000
--- a/SOURCES/1001-Revert-core-create-virtual-device-on-settings-change-rh1804350.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-From c6e479eb14779e42bc7eafdcd913cbdf7bd6c312 Mon Sep 17 00:00:00 2001
-From: Beniamino Galvani <bgalvani@redhat.com>
-Date: Tue, 18 Feb 2020 19:09:18 +0100
-Subject: [PATCH] Revert "core: create virtual device on settings changes in
- idle handler"
-
-When AddConnection() or Update() terminate, the (unrealized) virtual
-device should be already be available, otherwise an activation attempt
-of that connection can fail.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1804350
-
-This reverts commit c163207b077a0e66e344b2352ccbe392c76e63ed.
-
-(cherry picked from commit efc04b1285674ba2aea459039f4143b3307b4bcf)
----
- src/nm-manager.c | 51 ++----------------------------------------------
- 1 file changed, 2 insertions(+), 49 deletions(-)
-
-diff --git a/src/nm-manager.c b/src/nm-manager.c
-index 6d3a5ddbf..7f6657fd7 100644
---- a/src/nm-manager.c
-+++ b/src/nm-manager.c
-@@ -168,9 +168,6 @@ typedef struct {
- 
- 	NMSettings *settings;
- 
--	CList connection_changed_on_idle_lst;
--	guint connection_changed_on_idle_id;
--
- 	RadioState radio_states[RFKILL_TYPE_MAX];
- 	NMVpnManager *vpn_manager;
- 
-@@ -2098,7 +2095,6 @@ static void
- connection_changed (NMManager *self,
-                     NMSettingsConnection *sett_conn)
- {
--	NMManagerPrivate *priv;
- 	NMConnection *connection;
- 	NMDevice *device;
- 
-@@ -2106,11 +2102,6 @@ connection_changed (NMManager *self,
- 	                  NM_SETTINGS_CONNECTION_INT_FLAGS_VOLATILE))
- 		return;
- 
--	priv = NM_MANAGER_GET_PRIVATE (self);
--
--	if (!nm_settings_has_connection (priv->settings, sett_conn))
--		return;
--
- 	connection = nm_settings_connection_get_connection (sett_conn);
- 
- 	if (!nm_connection_is_virtual (connection))
-@@ -2126,46 +2117,12 @@ connection_changed (NMManager *self,
- 	retry_connections_for_parent_device (self, device);
- }
- 
--static gboolean
--connection_changed_on_idle_cb (gpointer user_data)
--{
--	NMManager *self = user_data;
--	NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
--	NMCListElem *elem;
--
--	priv->connection_changed_on_idle_id = 0;
--
--	while ((elem = c_list_first_entry (&priv->connection_changed_on_idle_lst, NMCListElem, lst))) {
--		gs_unref_object NMSettingsConnection *sett_conn = NULL;
--
--		sett_conn = nm_c_list_elem_free_steal (elem);
--		connection_changed (self, sett_conn);
--	}
--
--	return G_SOURCE_REMOVE;
--}
--
--static void
--connection_changed_on_idle (NMManager *self,
--                            NMSettingsConnection *sett_conn)
--{
--	NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
--
--	if (priv->connection_changed_on_idle_id == 0)
--		priv->connection_changed_on_idle_id = g_idle_add (connection_changed_on_idle_cb, self);
--
--	if (!nm_c_list_elem_find_first_ptr (&priv->connection_changed_on_idle_lst, sett_conn)) {
--		c_list_link_tail (&priv->connection_changed_on_idle_lst,
--		                  &nm_c_list_elem_new_stale (g_object_ref (sett_conn))->lst);
--	}
--}
--
- static void
- connection_added_cb (NMSettings *settings,
-                      NMSettingsConnection *sett_conn,
-                      NMManager *self)
- {
--	connection_changed_on_idle (self, sett_conn);
-+	connection_changed (self, sett_conn);
- }
- 
- static void
-@@ -2174,7 +2131,7 @@ connection_updated_cb (NMSettings *settings,
-                        guint update_reason_u,
-                        NMManager *self)
- {
--	connection_changed_on_idle (self, sett_conn);
-+	connection_changed (self, sett_conn);
- }
- 
- /*****************************************************************************/
-@@ -7511,7 +7468,6 @@ nm_manager_init (NMManager *self)
- 	c_list_init (&priv->active_connections_lst_head);
- 	c_list_init (&priv->async_op_lst_head);
- 	c_list_init (&priv->delete_volatile_connection_lst_head);
--	c_list_init (&priv->connection_changed_on_idle_lst);
- 
- 	priv->platform = g_object_ref (NM_PLATFORM_GET);
- 
-@@ -7817,9 +7773,6 @@ dispose (GObject *object)
- 		g_clear_object (&priv->policy);
- 	}
- 
--	nm_clear_g_source (&priv->connection_changed_on_idle_id);
--	nm_c_list_elem_free_all (&priv->connection_changed_on_idle_lst, g_object_unref);
--
- 	if (priv->settings) {
- 		g_signal_handlers_disconnect_by_func (priv->settings, settings_startup_complete_changed, self);
- 		g_signal_handlers_disconnect_by_func (priv->settings, system_unmanaged_devices_changed_cb, self);
--- 
-2.24.1
-
diff --git a/SOURCES/1002-device-allow-setting-arp_validate-with-supported-bon-rh1789437.patch b/SOURCES/1002-device-allow-setting-arp_validate-with-supported-bon-rh1789437.patch
deleted file mode 100644
index d61808c..0000000
--- a/SOURCES/1002-device-allow-setting-arp_validate-with-supported-bon-rh1789437.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 517099b8bf6ee6ef801ef7ca9a3d32e80935b71a Mon Sep 17 00:00:00 2001
-From: Thomas Haller <thaller@redhat.com>
-Date: Wed, 19 Feb 2020 10:10:27 +0100
-Subject: [PATCH 1/1] device: allow setting "arp_validate" with supported bond
- modes
-
-arp_validate is allowed for several bonding modes, at least since commit [1].
-
-The validation was too strict. Just use set_bond_attr() directly, that
-already correctly encodes whether to set the value or not.
-
-[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=13ac34a8866e31b31db6237c73aa558aff84d765
-
-(cherry picked from commit d9d51dd42d288501bb1af5ef69736dd8f1687e3b)
-(cherry picked from commit 02ba767496302f516492357a3bd4dc6cee3bd343)
----
- src/devices/nm-device-bond.c | 11 ++---------
- 1 file changed, 2 insertions(+), 9 deletions(-)
-
-diff --git a/src/devices/nm-device-bond.c b/src/devices/nm-device-bond.c
-index c6ecb2e85fb8..36d003283977 100644
---- a/src/devices/nm-device-bond.c
-+++ b/src/devices/nm-device-bond.c
-@@ -214,7 +214,7 @@ apply_bonding_config (NMDeviceBond *self)
- 	 *
- 	 * arp_interval conflicts miimon > 0
- 	 * arp_interval conflicts [ alb, tlb ]
--	 * arp_validate needs [ active-backup ]
-+	 * arp_validate does not work with [ BOND_MODE_8023AD, BOND_MODE_TLB, BOND_MODE_ALB ]
- 	 * downdelay needs miimon
- 	 * updelay needs miimon
- 	 * primary needs [ active-backup, tlb, alb ]
-@@ -266,15 +266,8 @@ apply_bonding_config (NMDeviceBond *self)
- 		 */
- 	}
- 
--	/* ARP validate: value > 0 only valid in active-backup mode */
- 	value = nm_setting_bond_get_option_by_name (s_bond, NM_SETTING_BOND_OPTION_ARP_VALIDATE);
--	if (   value
--	    && !nm_streq (value, "0")
--	    && !nm_streq (value, "none")
--	    && mode == NM_BOND_MODE_ACTIVEBACKUP)
--		set_bond_attr (device, mode, NM_SETTING_BOND_OPTION_ARP_VALIDATE, value);
--	else
--		set_bond_attr (device, mode, NM_SETTING_BOND_OPTION_ARP_VALIDATE, "0");
-+	set_bond_attr (device, mode, NM_SETTING_BOND_OPTION_ARP_VALIDATE, value ?: "0");
- 
- 	/* Primary */
- 	value = nm_setting_bond_get_option_by_name (s_bond, NM_SETTING_BOND_OPTION_PRIMARY);
--- 
-2.24.1
-
diff --git a/SOURCES/1003-dhcp-keep-trying-after-send-failure-rh1806516.patch b/SOURCES/1003-dhcp-keep-trying-after-send-failure-rh1806516.patch
deleted file mode 100644
index 35400f5..0000000
--- a/SOURCES/1003-dhcp-keep-trying-after-send-failure-rh1806516.patch
+++ /dev/null
@@ -1,136 +0,0 @@
-From 95c67b5117499c3a31cdb52b81f1cc9bdb091d88 Mon Sep 17 00:00:00 2001
-From: Beniamino Galvani <bgalvani@redhat.com>
-Date: Tue, 18 Feb 2020 17:04:37 +0100
-Subject: [PATCH 1/2] n-dhcp4: fix logging macro
-
-The level can be a complex expression, don't use it directly in the
-macro.
-
-(cherry picked from commit 910267cf5f0f163a038ec983bec237c8a8cb1abf)
-(cherry picked from commit 84c4920f5d97cc79ca349d035c719ffac3dd5fc3)
----
- shared/n-dhcp4/src/n-dhcp4-private.h | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/shared/n-dhcp4/src/n-dhcp4-private.h b/shared/n-dhcp4/src/n-dhcp4-private.h
-index 436ee8065..f647cb5e2 100644
---- a/shared/n-dhcp4/src/n-dhcp4-private.h
-+++ b/shared/n-dhcp4/src/n-dhcp4-private.h
-@@ -702,10 +702,11 @@ static inline uint64_t n_dhcp4_gettime(clockid_t clock) {
- #define n_dhcp4_c_log(_config, _level, ...)                                    \
-         do {                                                                   \
-                 const NDhcp4ClientConfig *__config = _config;                  \
-+                int __level = _level;                                          \
-                                                                                \
--                if (_level <= __config->log.level && __config->log.func) {     \
-+                if (__level <= __config->log.level && __config->log.func) {    \
-                         if (1) {                                               \
--                                _config->log.func(_level,                      \
-+                                _config->log.func(__level,                     \
-                                                   __config->log.data,          \
-                                                   __VA_ARGS__);                \
-                         } else {                                               \
--- 
-2.24.1
-
-From 539bb87ca200faaba7d1ccb96aae5eaf15349173 Mon Sep 17 00:00:00 2001
-From: Beniamino Galvani <bgalvani@redhat.com>
-Date: Mon, 24 Feb 2020 09:55:13 +0100
-Subject: [PATCH 2/2] n-dhcp4: keep trying after a failure in send()
-
-Currently if an error is encountered during a send() of a message, the
-client fails and there is no possibility of recover, since no timers
-are armed after a failed event dispatch. An easy way to reproduce a
-failure is to add a firewall rule like:
-
-  iptables -A OUTPUT -p udp --dport 67 -j REJECT
-
-which makes the send() fail with EPERM during the renew. In such case,
-the client should continue (failing) until it reaches the rebind phase
-at T2, when it will be able to renew the lease using the packet
-socket.
-
-In general, a failure to send a packet should not cause the failure of
-the client.
-
-https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/419
-https://bugzilla.redhat.com/show_bug.cgi?id=1806516
-(cherry picked from commit 5a7b83ea0a2eb3cb0bb39c8219490c704024b5f5)
-(cherry picked from commit 932b4538aee7da9a1fe75d115358bb943872e3fd)
----
- shared/n-dhcp4/src/n-dhcp4-c-connection.c | 25 ++++++++++++-----------
- 1 file changed, 13 insertions(+), 12 deletions(-)
-
-diff --git a/shared/n-dhcp4/src/n-dhcp4-c-connection.c b/shared/n-dhcp4/src/n-dhcp4-c-connection.c
-index d4354467d..a5c8ea66f 100644
---- a/shared/n-dhcp4/src/n-dhcp4-c-connection.c
-+++ b/shared/n-dhcp4/src/n-dhcp4-c-connection.c
-@@ -1006,6 +1006,7 @@ static int n_dhcp4_c_connection_send_request(NDhcp4CConnection *connection,
-                                              uint64_t timestamp) {
-         char server_addr[INET_ADDRSTRLEN];
-         char client_addr[INET_ADDRSTRLEN];
-+        char error_msg[128];
-         int r;
-         bool broadcast = false;
- 
-@@ -1045,45 +1046,45 @@ static int n_dhcp4_c_connection_send_request(NDhcp4CConnection *connection,
-         case N_DHCP4_C_MESSAGE_REBIND:
-                 broadcast = true;
-                 r = n_dhcp4_c_connection_packet_broadcast(connection, request);
--                if (r)
--                        return r;
-                 break;
-         case N_DHCP4_C_MESSAGE_INFORM:
-                 broadcast = true;
-                 r = n_dhcp4_c_connection_udp_broadcast(connection, request);
--                if (r)
--                        return r;
--
-                 break;
-         case N_DHCP4_C_MESSAGE_RENEW:
-         case N_DHCP4_C_MESSAGE_RELEASE:
-                 r = n_dhcp4_c_connection_udp_send(connection, request);
--                if (r)
--                        return r;
--
-                 break;
-         default:
-                 c_assert(0);
-         }
- 
-+        if (r) {
-+                snprintf(error_msg, sizeof(error_msg), ": error %d", r);
-+        } else {
-+                error_msg[0] = '\0';
-+        }
-+
-         if (request->userdata.client_addr == INADDR_ANY) {
-                 n_dhcp4_c_log(connection->client_config, LOG_INFO,
--                              "sent %s to %s",
-+                              "send %s to %s%s",
-                               message_type_to_str(request->userdata.message_type),
-                               broadcast ?
-                               "255.255.255.255" :
-                               inet_ntop(AF_INET, &connection->server_ip,
--                                        server_addr, sizeof(server_addr)));
-+                                        server_addr, sizeof(server_addr)),
-+                              error_msg);
-         } else {
-                 n_dhcp4_c_log(connection->client_config, LOG_INFO,
--                              "sent %s of %s to %s",
-+                              "send %s of %s to %s%s",
-                               message_type_to_str(request->userdata.message_type),
-                               inet_ntop(AF_INET, &request->userdata.client_addr,
-                                         client_addr, sizeof(client_addr)),
-                               broadcast ?
-                               "255.255.255.255" :
-                               inet_ntop(AF_INET, &connection->server_ip,
--                                        server_addr, sizeof(server_addr)));
-+                                        server_addr, sizeof(server_addr)),
-+                              error_msg);
-         }
- 
-         ++request->userdata.n_send;
--- 
-2.24.1
-
diff --git a/SOURCES/1004-ovs-fail-enslavement-if-no-bridge-rh1797696.patch b/SOURCES/1004-ovs-fail-enslavement-if-no-bridge-rh1797696.patch
deleted file mode 100644
index e5a5469..0000000
--- a/SOURCES/1004-ovs-fail-enslavement-if-no-bridge-rh1797696.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From 717915c1e292953ababf7519b9e34a90a3aaacab Mon Sep 17 00:00:00 2001
-From: Beniamino Galvani <bgalvani@redhat.com>
-Date: Thu, 20 Feb 2020 14:38:30 +0100
-Subject: [PATCH 1/2] ovs: fail port enslavement when the bridge AC is not
- found
-
-The previous code tried to get the bridge active connection and it
-used the port active connection instead in case of failure. This
-doesn't seem right, as in nm-ovsdb.c the bridge AC is used to get the
-bridge settings (including the uuid, interface name, and cloned mac).
-
-In case of failure getting the bridge AC we should just fail.
-
-Fixes: 830a5a14cb29 ('device: add support for OpenVSwitch devices')
-(cherry picked from commit c8b5a3f91a1be7c595be4bc176a75d5beb57047a)
-(cherry picked from commit d8fb95d22b0aaf006eeb6f071a319eb8e2a50ae1)
----
- src/devices/ovs/nm-device-ovs-port.c | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/src/devices/ovs/nm-device-ovs-port.c b/src/devices/ovs/nm-device-ovs-port.c
-index 0955e8a92..66a610530 100644
---- a/src/devices/ovs/nm-device-ovs-port.c
-+++ b/src/devices/ovs/nm-device-ovs-port.c
-@@ -86,6 +86,7 @@ add_iface_cb (GError *error, gpointer user_data)
- static gboolean
- enslave_slave (NMDevice *device, NMDevice *slave, NMConnection *connection, gboolean configure)
- {
-+	NMDeviceOvsPort *self = NM_DEVICE_OVS_PORT (device);
- 	NMActiveConnection *ac_port = NULL;
- 	NMActiveConnection *ac_bridge = NULL;
- 	NMDevice *bridge_device;
-@@ -95,8 +96,11 @@ enslave_slave (NMDevice *device, NMDevice *slave, NMConnection *connection, gboo
- 
- 	ac_port = NM_ACTIVE_CONNECTION (nm_device_get_act_request (device));
- 	ac_bridge = nm_active_connection_get_master (ac_port);
--	if (!ac_bridge)
--		ac_bridge = ac_port;
-+	if (!ac_bridge) {
-+		_LOGW (LOGD_DEVICE, "can't enslave %s: bridge active-connection not found",
-+		       nm_device_get_iface (slave));
-+		return FALSE;
-+	}
- 
- 	bridge_device = nm_active_connection_get_device (ac_bridge);
- 
--- 
-2.24.1
-
-From fb4fbb7bc7569540871b96f930f01b15a6687abd Mon Sep 17 00:00:00 2001
-From: Beniamino Galvani <bgalvani@redhat.com>
-Date: Thu, 20 Feb 2020 14:44:58 +0100
-Subject: [PATCH 2/2] ovs: fail port enslavement when the bridge device is not
- found
-
-Fail the enslavement of the ovs port if the bridge device is not
-found, instead of generating assertions and potentially crash later.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1797696
-
-Fixes: 101e65d2bb19 ('ovs: allow changing mac address of bridges and interfaces')
-(cherry picked from commit c5c49995b10baf043fa57a96c9d8ddf2e99267b4)
-(cherry picked from commit 7494a2e37ab0114d1d3ef93b0dbe47005d3f8741)
----
- src/devices/ovs/nm-device-ovs-port.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/devices/ovs/nm-device-ovs-port.c b/src/devices/ovs/nm-device-ovs-port.c
-index 66a610530..e02163777 100644
---- a/src/devices/ovs/nm-device-ovs-port.c
-+++ b/src/devices/ovs/nm-device-ovs-port.c
-@@ -103,6 +103,11 @@ enslave_slave (NMDevice *device, NMDevice *slave, NMConnection *connection, gboo
- 	}
- 
- 	bridge_device = nm_active_connection_get_device (ac_bridge);
-+	if (!bridge_device) {
-+		_LOGW (LOGD_DEVICE, "can't enslave %s: bridge device not found",
-+		       nm_device_get_iface (slave));
-+		return FALSE;
-+	}
- 
- 	nm_ovsdb_add_interface (nm_ovsdb_get (),
- 	                        nm_active_connection_get_applied_connection (ac_bridge),
--- 
-2.24.1
-
diff --git a/SOURCES/1005-fix-leak-device-state-files-rh1810153.patch b/SOURCES/1005-fix-leak-device-state-files-rh1810153.patch
deleted file mode 100644
index 779f364..0000000
--- a/SOURCES/1005-fix-leak-device-state-files-rh1810153.patch
+++ /dev/null
@@ -1,391 +0,0 @@
-From 457fae22aea770e2bf6553630caba645b6e1796d Mon Sep 17 00:00:00 2001
-From: Thomas Haller <thaller@redhat.com>
-Date: Wed, 4 Mar 2020 13:21:48 +0100
-Subject: [PATCH 1/4] core: cleanup nm_config_device_state_prune_unseen() and
- accept NMPlatform for skipping pruning
-
-(cherry picked from commit ad9e7488167ab25a5915040e813e76a5b669257b)
-(cherry picked from commit 0b4ebda859a3dc1c8ec4d8c887383d04bcd249f9)
----
- src/nm-config.c  | 36 +++++++++++++++++++++++-------------
- src/nm-config.h  |  3 ++-
- src/nm-manager.c |  8 ++++----
- 3 files changed, 29 insertions(+), 18 deletions(-)
-
-diff --git a/src/nm-config.c b/src/nm-config.c
-index a0995cf932b8..0fccca4e22dc 100644
---- a/src/nm-config.c
-+++ b/src/nm-config.c
-@@ -2298,6 +2298,8 @@ _config_device_state_data_new (int ifindex, GKeyFile *kf)
- 	return device_state;
- }
- 
-+#define DEVICE_STATE_FILENAME_LEN_MAX 60
-+
- /**
-  * nm_config_device_state_load:
-  * @ifindex: the ifindex for which the state is to load
-@@ -2309,7 +2311,7 @@ NMConfigDeviceStateData *
- nm_config_device_state_load (int ifindex)
- {
- 	NMConfigDeviceStateData *device_state;
--	char path[NM_STRLEN (NM_CONFIG_DEVICE_STATE_DIR) + 60];
-+	char path[NM_STRLEN (NM_CONFIG_DEVICE_STATE_DIR"/") + DEVICE_STATE_FILENAME_LEN_MAX + 1];
- 	gs_unref_keyfile GKeyFile *kf = NULL;
- 	const char *nm_owned_str;
- 
-@@ -2393,7 +2395,7 @@ nm_config_device_state_write (int ifindex,
-                               const char *next_server,
-                               const char *root_path)
- {
--	char path[NM_STRLEN (NM_CONFIG_DEVICE_STATE_DIR) + 60];
-+	char path[NM_STRLEN (NM_CONFIG_DEVICE_STATE_DIR"/") + DEVICE_STATE_FILENAME_LEN_MAX + 1];
- 	GError *local = NULL;
- 	gs_unref_keyfile GKeyFile *kf = NULL;
- 
-@@ -2476,35 +2478,43 @@ nm_config_device_state_write (int ifindex,
- }
- 
- void
--nm_config_device_state_prune_unseen (GHashTable *seen_ifindexes)
-+nm_config_device_state_prune_unseen (GHashTable *preserve_ifindexes,
-+                                     NMPlatform *preserve_in_platform)
- {
- 	GDir *dir;
- 	const char *fn;
--	int ifindex;
--	gsize fn_len;
--	char buf[NM_STRLEN (NM_CONFIG_DEVICE_STATE_DIR"/") + 30 + 3] = NM_CONFIG_DEVICE_STATE_DIR"/";
-+	char buf[NM_STRLEN (NM_CONFIG_DEVICE_STATE_DIR"/") + DEVICE_STATE_FILENAME_LEN_MAX + 1] = NM_CONFIG_DEVICE_STATE_DIR"/";
- 	char *buf_p = &buf[NM_STRLEN (NM_CONFIG_DEVICE_STATE_DIR"/")];
- 
--	g_return_if_fail (seen_ifindexes);
--
- 	dir = g_dir_open (NM_CONFIG_DEVICE_STATE_DIR, 0, NULL);
- 	if (!dir)
- 		return;
- 
- 	while ((fn = g_dir_read_name (dir))) {
-+		int ifindex;
-+		gsize fn_len;
-+
- 		ifindex = _device_state_parse_filename (fn);
- 		if (ifindex <= 0)
- 			continue;
--		if (g_hash_table_contains (seen_ifindexes, GINT_TO_POINTER (ifindex)))
-+
-+		if (   preserve_ifindexes
-+		    && g_hash_table_contains (preserve_ifindexes, GINT_TO_POINTER (ifindex)))
-+			continue;
-+
-+		if (   preserve_in_platform
-+		    && nm_platform_link_get (preserve_in_platform, ifindex))
- 			continue;
- 
--		fn_len = strlen (fn) + 1;
-+		fn_len = strlen (fn);
-+		nm_assert (fn_len > 0);
- 		nm_assert (&buf_p[fn_len] < &buf[G_N_ELEMENTS (buf)]);
--		memcpy (buf_p, fn, fn_len);
-+		memcpy (buf_p, fn, fn_len + 1u);
- 		nm_assert (({
- 		                char bb[30];
--		                nm_sprintf_buf (bb, "%d", ifindex);
--		                nm_streq0 (bb, buf_p);
-+
-+		                nm_streq0 (nm_sprintf_buf (bb, "%d", ifindex),
-+		                           buf_p);
- 		           }));
- 		_LOGT ("device-state: prune #%d (%s)", ifindex, buf);
- 		(void) unlink (buf);
-diff --git a/src/nm-config.h b/src/nm-config.h
-index d9460ebb46e3..048d64f41f47 100644
---- a/src/nm-config.h
-+++ b/src/nm-config.h
-@@ -258,7 +258,8 @@ gboolean nm_config_device_state_write (int ifindex,
-                                        const char *next_server,
-                                        const char *root_path);
- 
--void nm_config_device_state_prune_unseen (GHashTable *seen_ifindexes);
-+void nm_config_device_state_prune_unseen (GHashTable *preserve_ifindexes,
-+                                          NMPlatform *preserve_in_platform);
- 
- const GHashTable *nm_config_device_state_get_all (NMConfig *self);
- const NMConfigDeviceStateData *nm_config_device_state_get (NMConfig *self,
-diff --git a/src/nm-manager.c b/src/nm-manager.c
-index 7f6657fd70e2..35127fa6cd25 100644
---- a/src/nm-manager.c
-+++ b/src/nm-manager.c
-@@ -6585,19 +6585,19 @@ void
- nm_manager_write_device_state_all (NMManager *self)
- {
- 	NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
--	gs_unref_hashtable GHashTable *seen_ifindexes = NULL;
-+	gs_unref_hashtable GHashTable *preserve_ifindexes = NULL;
- 	NMDevice *device;
- 
--	seen_ifindexes = g_hash_table_new (nm_direct_hash, NULL);
-+	preserve_ifindexes = g_hash_table_new (nm_direct_hash, NULL);
- 
- 	c_list_for_each_entry (device, &priv->devices_lst_head, devices_lst) {
- 		if (nm_manager_write_device_state (self, device)) {
--			g_hash_table_add (seen_ifindexes,
-+			g_hash_table_add (preserve_ifindexes,
- 			                  GINT_TO_POINTER (nm_device_get_ip_ifindex (device)));
- 		}
- 	}
- 
--	nm_config_device_state_prune_unseen (seen_ifindexes);
-+	nm_config_device_state_prune_unseen (preserve_ifindexes, NULL);
- }
- 
- static gboolean
--- 
-2.24.1
-
-
-From af10b35dabc0b542eba8117bb32b3fee3ff207f9 Mon Sep 17 00:00:00 2001
-From: Thomas Haller <thaller@redhat.com>
-Date: Wed, 4 Mar 2020 16:52:57 +0100
-Subject: [PATCH 2/4] core/trivial: rename
- nm_config_device_state_prune_unseen() to nm_config_device_state_prune_stale()
-
-It's just a more fitting name after the previous change.
-
-(cherry picked from commit ecb0210e7a225f2b73149229cc96ac84f93404d1)
-(cherry picked from commit 7fa1e825450ce4b69670b5bfd5a9c705d9c05920)
----
- src/nm-config.c  | 4 ++--
- src/nm-config.h  | 4 ++--
- src/nm-manager.c | 2 +-
- 3 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/src/nm-config.c b/src/nm-config.c
-index 0fccca4e22dc..0a6082d71a63 100644
---- a/src/nm-config.c
-+++ b/src/nm-config.c
-@@ -2478,8 +2478,8 @@ nm_config_device_state_write (int ifindex,
- }
- 
- void
--nm_config_device_state_prune_unseen (GHashTable *preserve_ifindexes,
--                                     NMPlatform *preserve_in_platform)
-+nm_config_device_state_prune_stale (GHashTable *preserve_ifindexes,
-+                                    NMPlatform *preserve_in_platform)
- {
- 	GDir *dir;
- 	const char *fn;
-diff --git a/src/nm-config.h b/src/nm-config.h
-index 048d64f41f47..b4478ceb04af 100644
---- a/src/nm-config.h
-+++ b/src/nm-config.h
-@@ -258,8 +258,8 @@ gboolean nm_config_device_state_write (int ifindex,
-                                        const char *next_server,
-                                        const char *root_path);
- 
--void nm_config_device_state_prune_unseen (GHashTable *preserve_ifindexes,
--                                          NMPlatform *preserve_in_platform);
-+void nm_config_device_state_prune_stale (GHashTable *preserve_ifindexes,
-+                                         NMPlatform *preserve_in_platform);
- 
- const GHashTable *nm_config_device_state_get_all (NMConfig *self);
- const NMConfigDeviceStateData *nm_config_device_state_get (NMConfig *self,
-diff --git a/src/nm-manager.c b/src/nm-manager.c
-index 35127fa6cd25..c9ef20a526d2 100644
---- a/src/nm-manager.c
-+++ b/src/nm-manager.c
-@@ -6597,7 +6597,7 @@ nm_manager_write_device_state_all (NMManager *self)
- 		}
- 	}
- 
--	nm_config_device_state_prune_unseen (preserve_ifindexes, NULL);
-+	nm_config_device_state_prune_stale (preserve_ifindexes, NULL);
- }
- 
- static gboolean
--- 
-2.24.1
-
-
-From 509b555a45b170f843242e3d92b229936457ba75 Mon Sep 17 00:00:00 2001
-From: Thomas Haller <thaller@redhat.com>
-Date: Wed, 4 Mar 2020 13:38:49 +0100
-Subject: [PATCH 3/4] core: return ifindex from nm_manager_write_device_state()
-
-nm_manager_write_device_state() writes the device state to a file. The ifindex
-is here important, because that is the identifier for the device and is also
-used as file name. Return the ifindex that was used, instead of letting the
-caller reimplement the knowledge which ifindex was used.
-
-(cherry picked from commit 5477847eed9654727df5b70767a2a6498da1cb67)
-(cherry picked from commit fb6e14cf3f602a840bee66c27dfcb754872f1525)
----
- src/nm-manager.c | 34 +++++++++++++++++++++-------------
- src/nm-manager.h |  2 +-
- 2 files changed, 22 insertions(+), 14 deletions(-)
-
-diff --git a/src/nm-manager.c b/src/nm-manager.c
-index c9ef20a526d2..74776a24acf2 100644
---- a/src/nm-manager.c
-+++ b/src/nm-manager.c
-@@ -1515,7 +1515,7 @@ manager_device_state_changed (NMDevice *device,
- 	               NM_DEVICE_STATE_UNMANAGED,
- 	               NM_DEVICE_STATE_DISCONNECTED,
- 	               NM_DEVICE_STATE_ACTIVATED))
--		nm_manager_write_device_state (self, device);
-+		nm_manager_write_device_state (self, device, NULL);
- 
- 	if (NM_IN_SET (new_state,
- 	               NM_DEVICE_STATE_UNAVAILABLE,
-@@ -6514,7 +6514,7 @@ start_factory (NMDeviceFactory *factory, gpointer user_data)
- }
- 
- gboolean
--nm_manager_write_device_state (NMManager *self, NMDevice *device)
-+nm_manager_write_device_state (NMManager *self, NMDevice *device, int *out_ifindex)
- {
- 	NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
- 	int ifindex;
-@@ -6530,6 +6530,8 @@ nm_manager_write_device_state (NMManager *self, NMDevice *device)
- 	const char *next_server = NULL;
- 	const char *root_path = NULL;
- 
-+	NM_SET_OUT (out_ifindex, 0);
-+
- 	ifindex = nm_device_get_ip_ifindex (device);
- 	if (ifindex <= 0)
- 		return FALSE;
-@@ -6570,15 +6572,19 @@ nm_manager_write_device_state (NMManager *self, NMDevice *device)
- 		next_server = nm_dhcp4_config_get_option (dhcp4_config, "next_server");
- 	}
- 
--	return nm_config_device_state_write (ifindex,
--	                                     managed_type,
--	                                     perm_hw_addr_fake,
--	                                     uuid,
--	                                     nm_owned,
--	                                     route_metric_default_aspired,
--	                                     route_metric_default_effective,
--	                                     next_server,
--	                                     root_path);
-+	if (!nm_config_device_state_write (ifindex,
-+	                                   managed_type,
-+	                                   perm_hw_addr_fake,
-+	                                   uuid,
-+	                                   nm_owned,
-+	                                   route_metric_default_aspired,
-+	                                   route_metric_default_effective,
-+	                                   next_server,
-+	                                   root_path))
-+		return FALSE;
-+
-+	NM_SET_OUT (out_ifindex, ifindex);
-+	return TRUE;
- }
- 
- void
-@@ -6591,9 +6597,11 @@ nm_manager_write_device_state_all (NMManager *self)
- 	preserve_ifindexes = g_hash_table_new (nm_direct_hash, NULL);
- 
- 	c_list_for_each_entry (device, &priv->devices_lst_head, devices_lst) {
--		if (nm_manager_write_device_state (self, device)) {
-+		int ifindex;
-+
-+		if (nm_manager_write_device_state (self, device, &ifindex)) {
- 			g_hash_table_add (preserve_ifindexes,
--			                  GINT_TO_POINTER (nm_device_get_ip_ifindex (device)));
-+			                  GINT_TO_POINTER (ifindex));
- 		}
- 	}
- 
-diff --git a/src/nm-manager.h b/src/nm-manager.h
-index ad06e318f4dc..5873abd24b8e 100644
---- a/src/nm-manager.h
-+++ b/src/nm-manager.h
-@@ -103,7 +103,7 @@ NMSettingsConnection **nm_manager_get_activatable_connections (NMManager *manage
-                                                                guint *out_len);
- 
- void          nm_manager_write_device_state_all (NMManager *manager);
--gboolean      nm_manager_write_device_state (NMManager *manager, NMDevice *device);
-+gboolean      nm_manager_write_device_state (NMManager *manager, NMDevice *device, int *out_ifindex);
- 
- /* Device handling */
- 
--- 
-2.24.1
-
-
-From d60b888a07d69e155a7bea9dead1376df1a21bfb Mon Sep 17 00:00:00 2001
-From: Thomas Haller <thaller@redhat.com>
-Date: Wed, 4 Mar 2020 15:44:53 +0100
-Subject: [PATCH 4/4] core: periodically cleanup unused device state files from
- /run
-
-Otherwise, we only prune unused files when the service terminates.
-Usually, NetworkManager service doesn't get restarted before shutdown
-of the system (nor should it be). That means, if you create (and
-destroy) a large number of software devices, the state files pile
-up.
-
-From time to time, go through the files on disk and delete those that
-are no longer relevant.
-
-In this case, "from time to time" means after we write/update state
-files 100 times.
-
-(cherry picked from commit 332df7a58e86ce08cfd9331897d8b928ae6d267e)
-(cherry picked from commit d65b5c2e81f69ddc9217159a16f49d23d965da1c)
----
- src/nm-manager.c | 20 +++++++++++++++++++-
- 1 file changed, 19 insertions(+), 1 deletion(-)
-
-diff --git a/src/nm-manager.c b/src/nm-manager.c
-index 74776a24acf2..931d1068f160 100644
---- a/src/nm-manager.c
-+++ b/src/nm-manager.c
-@@ -50,6 +50,8 @@
- #include "nm-dispatcher.h"
- #include "NetworkManagerUtils.h"
- 
-+#define DEVICE_STATE_PRUNE_RATELIMIT_MAX 100u
-+
- /*****************************************************************************/
- 
- typedef struct {
-@@ -191,6 +193,8 @@ typedef struct {
- 
- 	NMConnectivityState connectivity_state;
- 
-+	guint8 device_state_prune_ratelimit_count;
-+
- 	bool startup:1;
- 	bool devices_inited:1;
- 
-@@ -1514,9 +1518,23 @@ manager_device_state_changed (NMDevice *device,
- 	if (NM_IN_SET (new_state,
- 	               NM_DEVICE_STATE_UNMANAGED,
- 	               NM_DEVICE_STATE_DISCONNECTED,
--	               NM_DEVICE_STATE_ACTIVATED))
-+	               NM_DEVICE_STATE_ACTIVATED)) {
- 		nm_manager_write_device_state (self, device, NULL);
- 
-+		G_STATIC_ASSERT_EXPR (DEVICE_STATE_PRUNE_RATELIMIT_MAX < G_MAXUINT8);
-+		if (priv->device_state_prune_ratelimit_count++ > DEVICE_STATE_PRUNE_RATELIMIT_MAX) {
-+			/* We write the device state to /run. The state files are named after the
-+			 * ifindex (which is assumed to be unique and not repeat -- in practice
-+			 * it may repeat). So from time to time, we prune device state files
-+			 * for interfaces that no longer exist.
-+			 *
-+			 * Otherwise, the files might pile up if you create (and destroy) a large
-+			 * number of software devices. */
-+			priv->device_state_prune_ratelimit_count = 0;
-+			nm_config_device_state_prune_stale (NULL, priv->platform);
-+		}
-+	}
-+
- 	if (NM_IN_SET (new_state,
- 	               NM_DEVICE_STATE_UNAVAILABLE,
- 	               NM_DEVICE_STATE_DISCONNECTED))
--- 
-2.24.1
-
diff --git a/SOURCES/1006-dhcp-nettools-clear-source-rh1810188.patch b/SOURCES/1006-dhcp-nettools-clear-source-rh1810188.patch
deleted file mode 100644
index 786e672..0000000
--- a/SOURCES/1006-dhcp-nettools-clear-source-rh1810188.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 6347e939e6210c8f6bc40f8b43f41acec27ea6b8 Mon Sep 17 00:00:00 2001
-From: Beniamino Galvani <bgalvani@redhat.com>
-Date: Sat, 29 Feb 2020 19:14:10 +0100
-Subject: [PATCH 1/2] dhcp: clean source on dispatch failure
-
-Fix the following warning:
-
- NetworkManager[1524461]: Source ID 3844 was not found when attempting to remove it
-
- g_logv (log_domain=0x7f2816fa676e "GLib", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=args@entry=0x7ffe697374d0) at gmessages.c:1391
- g_log (log_domain=log_domain@entry=0x7f2816fa676e "GLib", log_level=log_level@entry=G_LOG_LEVEL_CRITICAL, format=format@entry=0x7f2816fae240 "Source ID %u was not found when attempting to remove it") at gmessages.c:1432
- g_source_remove (tag=519) at gmain.c:2352
- nm_clear_g_source (id=<optimized out>) at ./shared/nm-glib-aux/nm-macros-internal.h:1198
- dispose (object=0x55f7289b1ca0) at src/dhcp/nm-dhcp-nettools.c:1433
- g_object_unref (_object=<optimized out>) at gobject.c:3303
- g_object_unref (_object=0x55f7289b1ca0) at gobject.c:3232
- dhcp4_cleanup (self=self@entry=0x55f728af3b20, cleanup_type=cleanup_type@entry=CLEANUP_TYPE_DECONFIGURE, release=release@entry=0) at src/devices/nm-device.c:7565
- ...
-
-Fixes: 45521b1b3872 ('dhcp: nettools: move to failed state if event dispatch fails')
-(cherry picked from commit 843d696e46d96eb30642d872ba6c1a46c900ca14)
-(cherry picked from commit 7a004ef0bb49717606acbf47326a4c6c753cb09b)
----
- src/dhcp/nm-dhcp-nettools.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/dhcp/nm-dhcp-nettools.c b/src/dhcp/nm-dhcp-nettools.c
-index 45ff46f53fbd..2af73cdc3c3c 100644
---- a/src/dhcp/nm-dhcp-nettools.c
-+++ b/src/dhcp/nm-dhcp-nettools.c
-@@ -1074,6 +1074,7 @@ dhcp4_event_cb (GIOChannel *source,
- 		 */
- 		_LOGE ("error %d dispatching events", r);
- 		nm_dhcp_client_set_state (NM_DHCP_CLIENT (self), NM_DHCP_STATE_FAIL, NULL, NULL);
-+		priv->event_id = 0;
- 		return G_SOURCE_REMOVE;
- 	}
- 
--- 
-2.24.1
-
-
-From b978458c375e06722ae16b332d26b9678c0da455 Mon Sep 17 00:00:00 2001
-From: Thomas Haller <thaller@redhat.com>
-Date: Tue, 3 Mar 2020 09:50:43 +0100
-Subject: [PATCH 2/2] dhcp/nettools: first clear source before emitting event
- in dhcp4_event_cb()
-
-A similar patch was done on master, but here the situation is different.
-
-I feel we should not allow for the possibility where we invoke an event
-that might mess with the source id. In practice there was no problem.
-But it feels cleaner to clear it first.
-
-Fixes: 843d696e46d9 ('dhcp: clean source on dispatch failure')
-(cherry picked from commit 0549351111ccfde9d6a404952c43234612028d13)
-(cherry picked from commit beeb067c71b4b67778badb6eed6ee2dd00a5218f)
----
- src/dhcp/nm-dhcp-nettools.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/dhcp/nm-dhcp-nettools.c b/src/dhcp/nm-dhcp-nettools.c
-index 2af73cdc3c3c..622251a31c27 100644
---- a/src/dhcp/nm-dhcp-nettools.c
-+++ b/src/dhcp/nm-dhcp-nettools.c
-@@ -1073,8 +1073,8 @@ dhcp4_event_cb (GIOChannel *source,
- 		 * a predefined number of times (possibly infinite).
- 		 */
- 		_LOGE ("error %d dispatching events", r);
--		nm_dhcp_client_set_state (NM_DHCP_CLIENT (self), NM_DHCP_STATE_FAIL, NULL, NULL);
- 		priv->event_id = 0;
-+		nm_dhcp_client_set_state (NM_DHCP_CLIENT (self), NM_DHCP_STATE_FAIL, NULL, NULL);
- 		return G_SOURCE_REMOVE;
- 	}
- 
--- 
-2.24.1
-
diff --git a/SOURCES/9999-fix-pregen-doc.patch b/SOURCES/9999-fix-pregen-doc.patch
index fc80b07..369c69b 100644
--- a/SOURCES/9999-fix-pregen-doc.patch
+++ b/SOURCES/9999-fix-pregen-doc.patch
@@ -1,7 +1,7 @@
-From a70e59b64daa78e5f7e801ec3dba99bc34ace51f Mon Sep 17 00:00:00 2001
+From 45d1bf8caf2d75c5728688c5cc0ac738b0078917 Mon Sep 17 00:00:00 2001
 From: Thomas Haller <thaller@redhat.com>
 Date: Tue, 27 Aug 2019 15:47:32 +0200
-Subject: [PATCH] patch documentation with the proper default values
+Subject: [PATCH 1/1] patch documentation with the proper default values
 
 We don't regenerate the documentation for RHEL builds, but
 the docs from the tarball are generated with a certain set
@@ -14,10 +14,10 @@ Patch the man pages with the proper values.
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/docs/api/html/NetworkManager.conf.html b/docs/api/html/NetworkManager.conf.html
-index 04672d9bd998..8486881f2cb3 100644
+index 2778de44e660..fdb772c5d355 100644
 --- a/docs/api/html/NetworkManager.conf.html
 +++ b/docs/api/html/NetworkManager.conf.html
-@@ -572,7 +572,7 @@ unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth
+@@ -574,7 +574,7 @@ unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth
            are "<code class="literal">syslog</code>" and "<code class="literal">journal</code>".
            When NetworkManager is started with "<code class="literal">--debug</code>"
            in addition all messages will be printed to stderr.
@@ -27,10 +27,10 @@ index 04672d9bd998..8486881f2cb3 100644
  </tr>
  <tr>
 diff --git a/man/NetworkManager.conf.5 b/man/NetworkManager.conf.5
-index b2984e0aacce..bc0aa552db99 100644
+index 7f8b20abb0f3..d42437ec0f8e 100644
 --- a/man/NetworkManager.conf.5
 +++ b/man/NetworkManager.conf.5
-@@ -596,7 +596,7 @@ INFO\&.
+@@ -598,7 +598,7 @@ INFO\&.
  .PP
  \fIbackend\fR
  .RS 4
@@ -40,5 +40,5 @@ index b2984e0aacce..bc0aa552db99 100644
  .PP
  \fIaudit\fR
 -- 
-2.23.0
+2.26.2
 
diff --git a/SPECS/NetworkManager.spec b/SPECS/NetworkManager.spec
index 292ace9..b2efad0 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.22.8
-%global real_version 1.22.8
-%global release_version 4
+%global rpm_version 1.25.1
+%global real_version 1.25.1
+%global release_version 1
 %global snapshot %{nil}
 %global git_sha %{nil}
 
@@ -21,10 +21,10 @@
 
 %global _hardened_build 1
 
-%if "x%{?snapshot}" != x
+%if "x%{?snapshot}" != "x"
 %global snapshot_dot .%{snapshot}
 %endif
-%if "x%{?git_sha}" != x
+%if "x%{?git_sha}" != "x"
 %global git_sha_dot .%{git_sha}
 %endif
 
@@ -115,9 +115,9 @@
 # bpf(BPF_MAP_CREATE, ...) randomly fails with EPERM. That might
 # be related to `ulimit -l`. Anyway, this is not usable at the
 # moment.
-%global ebpf_enabled no
+%global ebpf_enabled "no"
 %else
-%global ebpf_enabled no
+%global ebpf_enabled "no"
 %endif
 
 ###############################################################################
@@ -145,13 +145,6 @@ 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-ifcfg-fix-writer-rh1804167.patch
-Patch1001: 1001-Revert-core-create-virtual-device-on-settings-change-rh1804350.patch
-Patch1002: 1002-device-allow-setting-arp_validate-with-supported-bon-rh1789437.patch
-Patch1003: 1003-dhcp-keep-trying-after-send-failure-rh1806516.patch
-Patch1004: 1004-ovs-fail-enslavement-if-no-bridge-rh1797696.patch
-Patch1005: 1005-fix-leak-device-state-files-rh1810153.patch
-Patch1006: 1006-dhcp-nettools-clear-source-rh1810188.patch
 
 # The pregenerated docs contain default values and paths that depend
 # on the configure options when creating the source tarball.
@@ -599,7 +592,6 @@ This tool is still experimental.
 	-Dselinux=true \
 	-Dpolkit=true  \
 	-Dconfig_auth_polkit_default=true \
-	-Dpolkit_agent=true \
 	-Dmodify_system=true \
 	-Dconcheck=true \
 %if 0%{?fedora}
@@ -607,7 +599,7 @@ This tool is still experimental.
 %else
 	-Dlibpsl=false \
 %endif
-%if %{ebpf_enabled} != yes
+%if %{ebpf_enabled} != "yes"
 	-Debpf=false \
 %else
 	-Debpf=true \
@@ -730,7 +722,6 @@ intltoolize --automake --copy --force
 %endif
 	--with-selinux=yes \
 	--enable-polkit=yes \
-	--enable-polkit-agent \
 	--enable-modify-system=yes \
 	--enable-concheck \
 %if 0%{?fedora}
@@ -1075,6 +1066,23 @@ fi
 
 
 %changelog
+* Fri May  8 2020 Thomas Haller <thaller@redhat.com> - 1:1.25.1-1
+- update to 1.25.1 (development)
+- improve documentation (rh #1651594, rh #1819259)
+- vrf: add support (rh #1773908)
+- bond: improve setting default options for miimon and updelay (rh #1805184, rh #1806549)
+- bluetooth: fix crash handling DUN modem (rh #1826635)
+- core: fix potential infinite loop with prefix delegation (rh #1488030)
+- initrd: fixes for running NetworkManager in initrd (rh #1627820, #1710935, #1744935, #1771792)
+- core: prevent multiple attempts to create default wired connection (rh #1687937)
+- bridge: support more options (rh #1755768)
+- libnm,dbus: expose HwAddress for all device types (rh #1786937)
+- core: fix route priority for IPv6 (rh #1814557)
+- core: fix crash during reapply (rh #1816067)
+- core: clear IP address from bridge slave (rh #1816517)
+- ovs: support changing MTU of OVS interfaces (rh #1820052)
+- nm-online: support setting timeout for NetworkManager-wait-online (rh #1828458)
+
 * Fri Mar  6 2020 Thomas Haller <thaller@redhat.com> - 1:1.22.8-4
 - core: fix leaking device state files in /run (rh #1810153)
 - dhcp: fix crash in nettools client when leaking GSource (rh #1810188)