about summary refs log tree commit diff
path: root/debian
diff options
context:
space:
mode:
Diffstat (limited to 'debian')
-rw-r--r--debian/changelog37
-rw-r--r--debian/gbp.conf3
-rw-r--r--debian/libnm0.symbols18
-rw-r--r--debian/patches/Disable-core-with-expect.patch9
-rw-r--r--debian/patches/Don-t-setup-Sleep-Monitor-if-not-booted-with-systemd.patch6
-rw-r--r--debian/patches/Force-online-state-with-unmanaged-devices.patch18
-rw-r--r--debian/patches/Update-dnsmasq-parameters.patch38
-rw-r--r--debian/patches/dhcp-nettools-handle-retracted-event-as-expired.patch36
-rw-r--r--debian/patches/libnm-Check-self-still-NMManager-or-not.patch33
-rw-r--r--debian/patches/n-dhcp4-allow-calling-listen-on-already-listening-connect.patch29
-rw-r--r--debian/patches/n-dhcp4-restart-the-transaction-after-a-NAK.patch70
-rw-r--r--debian/patches/series5
-rwxr-xr-xdebian/rules1
13 files changed, 231 insertions, 72 deletions
diff --git a/debian/changelog b/debian/changelog
index b6cf6804..97081a58 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,40 @@
+network-manager (1.22.2-2ubuntu1) UNRELEASED; urgency=medium
+
+  * New upstream version, merged from Debian
+  * debian/patches/libnm-Check-self-still-NMManager-or-not.patch:
+    - removed undocumented change that doesn't apply after refactoring
+
+ -- Sebastien Bacher <seb128@ubuntu.com>  Mon, 13 Jan 2020 16:10:02 +0100
+
+network-manager (1.22.2-2) unstable; urgency=medium
+
+  * More nettools DHCP fixes (Closes: #947613)
+
+ -- Michael Biebl <biebl@debian.org>  Thu, 09 Jan 2020 22:26:29 +0100
+
+network-manager (1.22.2-1) unstable; urgency=medium
+
+  * New upstream version 1.22.2
+  * Rebase patches
+  * Update symbols file for libnm0
+
+ -- Michael Biebl <biebl@debian.org>  Thu, 26 Dec 2019 07:17:58 +0100
+
+network-manager (1.22.0-2) unstable; urgency=medium
+
+  * dhcp: nettools: fix parsing of search domains option (Closes: #947003)
+
+ -- Michael Biebl <biebl@debian.org>  Mon, 23 Dec 2019 18:04:05 +0100
+
+network-manager (1.22.0-1) unstable; urgency=medium
+
+  * New upstream version 1.22.0
+  * Rebase patches
+  * Explicitly disable (experimental) nm-cloud-setup tool
+  * Update symbols file for linm0
+
+ -- Michael Biebl <biebl@debian.org>  Wed, 18 Dec 2019 19:05:33 +0100
+
 network-manager (1.20.8-1ubuntu2) focal; urgency=medium
 
   * debian/rules:
diff --git a/debian/gbp.conf b/debian/gbp.conf
index bd290ea2..b8723043 100644
--- a/debian/gbp.conf
+++ b/debian/gbp.conf
@@ -1,5 +1,6 @@
 [DEFAULT]
 pristine-tar = True
 patch-numbers = False
-debian-branch = master
+debian-branch = ubuntu/master
 debian-tag = ubuntu/%(version)s
+upstream-branch = upstream/latest
diff --git a/debian/libnm0.symbols b/debian/libnm0.symbols
index a31ac003..9cd0d45e 100644
--- a/debian/libnm0.symbols
+++ b/debian/libnm0.symbols
@@ -13,6 +13,8 @@ libnm.so.0 libnm0 #MINVER#
  libnm_1_18_0@libnm_1_18_0 1.18.0
  libnm_1_20_0@libnm_1_20_0 1.19.90
  libnm_1_20_6@libnm_1_20_6 1.20.6
+ libnm_1_22_0@libnm_1_22_0 1.22.0
+ libnm_1_22_2@libnm_1_22_2 1.22.2
  libnm_1_2_0@libnm_1_2_0 1.1.90
  libnm_1_2_4@libnm_1_2_4 1.2.4
  libnm_1_4_0@libnm_1_4_0 1.4.0
@@ -113,12 +115,16 @@ libnm.so.0 libnm0 #MINVER#
  nm_client_get_activating_connection@libnm_1_0_0 1.0.0
  nm_client_get_active_connections@libnm_1_0_0 1.0.0
  nm_client_get_all_devices@libnm_1_2_0 1.1.90
+ nm_client_get_capabilities@libnm_1_22_2 1.22.2
  nm_client_get_checkpoints@libnm_1_12_0 1.11.3
  nm_client_get_connection_by_id@libnm_1_0_0 1.0.0
  nm_client_get_connection_by_path@libnm_1_0_0 1.0.0
  nm_client_get_connection_by_uuid@libnm_1_0_0 1.0.0
  nm_client_get_connections@libnm_1_0_0 1.0.0
  nm_client_get_connectivity@libnm_1_0_0 1.0.0
+ nm_client_get_context_busy_watcher@libnm_1_22_0 1.22.0
+ nm_client_get_dbus_connection@libnm_1_22_0 1.22.0
+ nm_client_get_dbus_name_owner@libnm_1_22_0 1.22.0
  nm_client_get_device_by_iface@libnm_1_0_0 1.0.0
  nm_client_get_device_by_path@libnm_1_0_0 1.0.0
  nm_client_get_devices@libnm_1_0_0 1.0.0
@@ -126,6 +132,8 @@ libnm.so.0 libnm0 #MINVER#
  nm_client_get_dns_mode@libnm_1_6_0 1.5.90
  nm_client_get_dns_rc_manager@libnm_1_6_0 1.5.90
  nm_client_get_logging@libnm_1_0_0 1.0.0
+ nm_client_get_main_context@libnm_1_22_0 1.22.0
+ nm_client_get_metered@libnm_1_22_0 1.22.0
  nm_client_get_nm_running@libnm_1_0_0 1.0.0
  nm_client_get_permission_result@libnm_1_0_0 1.0.0
  nm_client_get_primary_connection@libnm_1_0_0 1.0.0
@@ -143,9 +151,11 @@ libnm.so.0 libnm0 #MINVER#
  nm_client_new_finish@libnm_1_0_0 1.0.0
  nm_client_permission_get_type@libnm_1_0_0 1.0.0
  nm_client_permission_result_get_type@libnm_1_0_0 1.0.0
+ nm_client_reload@libnm_1_22_0 1.22.0
  nm_client_reload_connections@libnm_1_0_0 1.0.0
  nm_client_reload_connections_async@libnm_1_0_0 1.0.0
  nm_client_reload_connections_finish@libnm_1_0_0 1.0.0
+ nm_client_reload_finish@libnm_1_22_0 1.22.0
  nm_client_save_hostname@libnm_1_0_0 1.0.0
  nm_client_save_hostname_async@libnm_1_0_0 1.0.0
  nm_client_save_hostname_finish@libnm_1_0_0 1.0.0
@@ -290,6 +300,7 @@ libnm.so.0 libnm0 #MINVER#
  nm_device_get_firmware_version@libnm_1_0_0 1.0.0
  nm_device_get_hw_address@libnm_1_0_0 1.0.0
  nm_device_get_iface@libnm_1_0_0 1.0.0
+ nm_device_get_interface_flags@libnm_1_22_0 1.22.0
  nm_device_get_ip4_config@libnm_1_0_0 1.0.0
  nm_device_get_ip6_config@libnm_1_0_0 1.0.0
  nm_device_get_ip_iface@libnm_1_0_0 1.0.0
@@ -311,6 +322,7 @@ libnm.so.0 libnm0 #MINVER#
  nm_device_infiniband_get_carrier@libnm_1_0_0 1.0.0
  nm_device_infiniband_get_hw_address@libnm_1_0_0 1.0.0
  nm_device_infiniband_get_type@libnm_1_0_0 1.0.0
+ nm_device_interface_flags_get_type@libnm_1_22_0 1.22.0
  nm_device_ip_tunnel_get_encapsulation_limit@libnm_1_2_0 1.1.90
  nm_device_ip_tunnel_get_flags@libnm_1_12_0 1.11.3
  nm_device_ip_tunnel_get_flow_label@libnm_1_2_0 1.1.90
@@ -450,6 +462,7 @@ libnm.so.0 libnm0 #MINVER#
  nm_dhcp_config_get_one_option@libnm_1_0_0 1.0.0
  nm_dhcp_config_get_options@libnm_1_0_0 1.0.0
  nm_dhcp_config_get_type@libnm_1_0_0 1.0.0
+ nm_dhcp_hostname_flags_get_type@libnm_1_22_0 1.22.0
  nm_dns_entry_get_domains@libnm_1_6_0 1.5.90
  nm_dns_entry_get_interface@libnm_1_6_0 1.5.90
  nm_dns_entry_get_nameservers@libnm_1_6_0 1.5.90
@@ -458,6 +471,8 @@ libnm.so.0 libnm0 #MINVER#
  nm_dns_entry_get_vpn@libnm_1_6_0 1.5.90
  nm_dns_entry_unref@libnm_1_6_0 1.5.90
  nm_ethtool_optname_is_feature@libnm_1_14_8 1.19.90
+ nm_ip_address_cmp_flags_get_type@libnm_1_22_0 1.22.0
+ nm_ip_address_cmp_full@libnm_1_22_0 1.22.0
  nm_ip_address_equal@libnm_1_0_0 1.0.0
  nm_ip_address_get_address@libnm_1_0_0 1.0.0
  nm_ip_address_get_address_binary@libnm_1_0_0 1.0.0
@@ -567,6 +582,7 @@ libnm.so.0 libnm0 #MINVER#
  nm_lldp_neighbor_unref@libnm_1_2_0 1.1.90
  nm_manager_error_get_type@libnm_1_0_0 1.0.0
  nm_manager_error_quark@libnm_1_0_0 1.0.0
+ nm_manager_reload_flags_get_type@libnm_1_22_0 1.22.0
  nm_metered_get_type@libnm_1_0_6 1.0.6
  nm_metered_get_type@libnm_1_2_0 1.1.90
  nm_object_get_path@libnm_1_0_0 1.0.0
@@ -848,6 +864,7 @@ libnm.so.0 libnm0 #MINVER#
  nm_setting_get_secret_flags@libnm_1_0_0 1.0.0
  nm_setting_get_type@libnm_1_0_0 1.0.0
  nm_setting_gsm_get_apn@libnm_1_0_0 1.0.0
+ nm_setting_gsm_get_auto_config@libnm_1_22_0 1.22.0
  nm_setting_gsm_get_device_id@libnm_1_2_0 1.1.90
  nm_setting_gsm_get_home_only@libnm_1_0_0 1.0.0
  nm_setting_gsm_get_mtu@libnm_1_8_0 1.8.0
@@ -897,6 +914,7 @@ libnm.so.0 libnm0 #MINVER#
  nm_setting_ip_config_get_address@libnm_1_0_0 1.0.0
  nm_setting_ip_config_get_dad_timeout@libnm_1_2_0 1.1.91
  nm_setting_ip_config_get_dhcp_hostname@libnm_1_0_0 1.0.0
+ nm_setting_ip_config_get_dhcp_hostname_flags@libnm_1_22_0 1.22.0
  nm_setting_ip_config_get_dhcp_send_hostname@libnm_1_0_0 1.0.0
  nm_setting_ip_config_get_dhcp_timeout@libnm_1_2_0 1.1.91
  nm_setting_ip_config_get_dns@libnm_1_0_0 1.0.0
diff --git a/debian/patches/Disable-core-with-expect.patch b/debian/patches/Disable-core-with-expect.patch
index b30319f6..8c9c46ed 100644
--- a/debian/patches/Disable-core-with-expect.patch
+++ b/debian/patches/Disable-core-with-expect.patch
@@ -7,11 +7,11 @@ which tends to fail on ppc64el and arm64
  Makefile.am | 1 -
  1 file changed, 1 deletion(-)
 
-Index: network-manager-1.18.0/Makefile.am
+Index: network-manager-1.22.2/Makefile.am
 ===================================================================
---- network-manager-1.18.0.orig/Makefile.am
-+++ network-manager-1.18.0/Makefile.am
-@@ -3785,7 +3785,6 @@
+--- network-manager-1.22.2.orig/Makefile.am
++++ network-manager-1.22.2/Makefile.am
+@@ -3932,7 +3932,6 @@ src_tests_ldadd = \
  
  check_programs += \
  	src/tests/test-core \
@@ -19,4 +19,3 @@ Index: network-manager-1.18.0/Makefile.am
  	src/tests/test-ip4-config \
  	src/tests/test-ip6-config \
  	src/tests/test-dcb \
-
diff --git a/debian/patches/Don-t-setup-Sleep-Monitor-if-not-booted-with-systemd.patch b/debian/patches/Don-t-setup-Sleep-Monitor-if-not-booted-with-systemd.patch
index 7252cb85..098e89d7 100644
--- a/debian/patches/Don-t-setup-Sleep-Monitor-if-not-booted-with-systemd.patch
+++ b/debian/patches/Don-t-setup-Sleep-Monitor-if-not-booted-with-systemd.patch
@@ -16,10 +16,10 @@ Closes: #742933
  1 file changed, 5 insertions(+)
 
 diff --git a/src/nm-sleep-monitor.c b/src/nm-sleep-monitor.c
-index c97f6f7..5ea0a64 100644
+index c16dc07..cb2ca21 100644
 --- a/src/nm-sleep-monitor.c
 +++ b/src/nm-sleep-monitor.c
-@@ -22,6 +22,7 @@
+@@ -10,6 +10,7 @@
  
  #include <sys/stat.h>
  #include <gio/gunixfdlist.h>
@@ -27,7 +27,7 @@ index c97f6f7..5ea0a64 100644
  
  #include "nm-core-internal.h"
  #include "NetworkManagerUtils.h"
-@@ -341,6 +342,10 @@ on_proxy_acquired (GObject *object,
+@@ -329,6 +330,10 @@ on_proxy_acquired (GObject *object,
  static void
  nm_sleep_monitor_init (NMSleepMonitor *self)
  {
diff --git a/debian/patches/Force-online-state-with-unmanaged-devices.patch b/debian/patches/Force-online-state-with-unmanaged-devices.patch
index 78f89c1a..40c5217a 100644
--- a/debian/patches/Force-online-state-with-unmanaged-devices.patch
+++ b/debian/patches/Force-online-state-with-unmanaged-devices.patch
@@ -12,10 +12,10 @@ Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=512286
  1 file changed, 115 insertions(+)
 
 diff --git a/src/nm-manager.c b/src/nm-manager.c
-index d112fcf..267a5a8 100644
+index 3696c78..abd71c4 100644
 --- a/src/nm-manager.c
 +++ b/src/nm-manager.c
-@@ -60,6 +60,8 @@
+@@ -50,6 +50,8 @@
  #include "nm-dispatcher.h"
  #include "NetworkManagerUtils.h"
  
@@ -24,7 +24,7 @@ index d112fcf..267a5a8 100644
  /*****************************************************************************/
  
  typedef struct {
-@@ -198,6 +200,10 @@ typedef struct {
+@@ -188,6 +190,10 @@ typedef struct {
  	GFileMonitor *fw_monitor;
  	guint fw_changed_id;
  
@@ -35,7 +35,7 @@ index d112fcf..267a5a8 100644
  	guint timestamp_update_id;
  
  	guint devices_inited_id;
-@@ -1436,6 +1442,27 @@ find_best_device_state (NMManager *manager)
+@@ -1426,6 +1432,27 @@ find_best_device_state (NMManager *manager)
  	return best_state;
  }
  
@@ -63,7 +63,7 @@ index d112fcf..267a5a8 100644
  static void
  nm_manager_update_metered (NMManager *self)
  {
-@@ -1482,6 +1509,9 @@ nm_manager_update_state (NMManager *self)
+@@ -1472,6 +1499,9 @@ nm_manager_update_state (NMManager *self)
  	else
  		new_state = find_best_device_state (self);
  
@@ -73,7 +73,7 @@ index d112fcf..267a5a8 100644
  	if (   new_state >= NM_STATE_CONNECTED_LOCAL
  	    && priv->connectivity_state == NM_CONNECTIVITY_FULL) {
  		new_state = NM_STATE_CONNECTED_GLOBAL;
-@@ -6491,6 +6521,62 @@ impl_manager_check_connectivity (NMDBusObject *obj,
+@@ -6536,6 +6566,62 @@ impl_manager_check_connectivity (NMDBusObject *obj,
  	nm_auth_chain_add_call (chain, NM_AUTH_PERMISSION_NETWORK_CONTROL, TRUE);
  }
  
@@ -136,7 +136,7 @@ index d112fcf..267a5a8 100644
  static void
  start_factory (NMDeviceFactory *factory, gpointer user_data)
  {
-@@ -6664,6 +6750,9 @@ nm_manager_start (NMManager *self, GError **error)
+@@ -6709,6 +6795,9 @@ nm_manager_start (NMManager *self, GError **error)
  	nm_clear_g_source (&priv->devices_inited_id);
  	priv->devices_inited_id = g_idle_add_full (G_PRIORITY_LOW + 10, devices_inited_cb, self, NULL);
  
@@ -146,7 +146,7 @@ index d112fcf..267a5a8 100644
  	return TRUE;
  }
  
-@@ -7512,6 +7601,22 @@ nm_manager_init (NMManager *self)
+@@ -7557,6 +7646,22 @@ nm_manager_init (NMManager *self)
  		       KERNEL_FIRMWARE_DIR);
  	}
  
@@ -169,7 +169,7 @@ index d112fcf..267a5a8 100644
  	/* Update timestamps in active connections */
  	priv->timestamp_update_id = g_timeout_add_seconds (300, (GSourceFunc) periodic_update_active_connection_timestamps, self);
  
-@@ -7794,6 +7899,16 @@ dispose (GObject *object)
+@@ -7839,6 +7944,16 @@ dispose (GObject *object)
  		g_clear_object (&priv->fw_monitor);
  	}
  
diff --git a/debian/patches/Update-dnsmasq-parameters.patch b/debian/patches/Update-dnsmasq-parameters.patch
index d22d0a28..9787e983 100644
--- a/debian/patches/Update-dnsmasq-parameters.patch
+++ b/debian/patches/Update-dnsmasq-parameters.patch
@@ -10,26 +10,26 @@ See also: https://blueprints.launchpad.net/ubuntu/+spec/foundations-p-dns-resolv
  src/dns/nm-dns-manager.c | 6 +++---
  2 files changed, 5 insertions(+), 5 deletions(-)
 
-Index: network-manager-1.20.0/src/dns/nm-dns-dnsmasq.c
+Index: network-manager-1.22.2/src/dns/nm-dns-dnsmasq.c
 ===================================================================
---- network-manager-1.20.0.orig/src/dns/nm-dns-dnsmasq.c
-+++ network-manager-1.20.0/src/dns/nm-dns-dnsmasq.c
-@@ -336,8 +336,8 @@ start_dnsmasq (NMDnsDnsmasq *self)
- 	argv[idx++] = "--no-hosts"; /* don't use /etc/hosts to resolve */
- 	argv[idx++] = "--bind-interfaces";
- 	argv[idx++] = "--pid-file=" PIDFILE;
--	argv[idx++] = "--listen-address=127.0.0.1"; /* Should work for both 4 and 6 */
--	argv[idx++] = "--cache-size=400";
-+	argv[idx++] = "--listen-address=127.0.1.1"; /* Should work for both 4 and 6 */
-+	argv[idx++] = "--cache-size=0";
- 	argv[idx++] = "--clear-on-reload"; /* clear cache when dns server changes */
- 	argv[idx++] = "--conf-file=/dev/null"; /* avoid loading /etc/dnsmasq.conf */
- 	argv[idx++] = "--proxy-dnssec"; /* Allow DNSSEC to pass through */
-Index: network-manager-1.20.0/src/dns/nm-dns-manager.c
+--- network-manager-1.22.2.orig/src/dns/nm-dns-dnsmasq.c
++++ network-manager-1.22.2/src/dns/nm-dns-dnsmasq.c
+@@ -494,8 +494,8 @@ _gl_pid_spawn_next_step (void)
+ 	argv[argv_idx++] = "--no-hosts"; /* don't use /etc/hosts to resolve */
+ 	argv[argv_idx++] = "--bind-interfaces";
+ 	argv[argv_idx++] = "--pid-file=" PIDFILE;
+-	argv[argv_idx++] = "--listen-address=127.0.0.1"; /* Should work for both 4 and 6 */
+-	argv[argv_idx++] = "--cache-size=400";
++	argv[argv_idx++] = "--listen-address=127.0.1.1"; /* Should work for both 4 and 6 */
++	argv[argv_idx++] = "--cache-size=0";
+ 	argv[argv_idx++] = "--clear-on-reload"; /* clear cache when dns server changes */
+ 	argv[argv_idx++] = "--conf-file=/dev/null"; /* avoid loading /etc/dnsmasq.conf */
+ 	argv[argv_idx++] = "--proxy-dnssec"; /* Allow DNSSEC to pass through */
+Index: network-manager-1.22.2/src/dns/nm-dns-manager.c
 ===================================================================
---- network-manager-1.20.0.orig/src/dns/nm-dns-manager.c
-+++ network-manager-1.20.0/src/dns/nm-dns-manager.c
-@@ -1485,12 +1485,12 @@ update_dns (NMDnsManager *self,
+--- network-manager-1.22.2.orig/src/dns/nm-dns-manager.c
++++ network-manager-1.22.2/src/dns/nm-dns-manager.c
+@@ -1469,12 +1469,12 @@ update_dns (NMDnsManager *self,
  	                            NM_CAST_STRV_CC (nameservers),
  	                            NM_CAST_STRV_CC (options));
  
@@ -44,7 +44,7 @@ Index: network-manager-1.20.0/src/dns/nm-dns-manager.c
  
  		if (NM_IS_DNS_SYSTEMD_RESOLVED (priv->plugin)) {
  			/* systemd-resolved uses a different link-local address */
-@@ -1832,7 +1832,7 @@ nm_dns_manager_stop (NMDnsManager *self)
+@@ -1757,7 +1757,7 @@ nm_dns_manager_stop (NMDnsManager *self)
  	_LOGT ("stopping...");
  
  	/* If we're quitting, leave a valid resolv.conf in place, not one
diff --git a/debian/patches/dhcp-nettools-handle-retracted-event-as-expired.patch b/debian/patches/dhcp-nettools-handle-retracted-event-as-expired.patch
new file mode 100644
index 00000000..23378ce5
--- /dev/null
+++ b/debian/patches/dhcp-nettools-handle-retracted-event-as-expired.patch
@@ -0,0 +1,36 @@
+From: Beniamino Galvani <bgalvani@redhat.com>
+Date: Tue, 7 Jan 2020 12:03:21 +0100
+Subject: dhcp: nettools: handle 'retracted' event as 'expired'
+
+The 'retracted' event is emitted when the client receives a NAK in the
+rebooting, requesting, renewing or rebinding state, while 'expired'
+means that the client wasn't able to renew the lease before expiry.
+
+In both cases the old lease is no longer valid and n-dhcp4 keep trying
+to get a lease, so the two events should be handlded in the same way.
+
+Note that the systemd client doesn't have a 'retracted' event and
+considers all NAKs as 'expired' events.
+
+(cherry picked from commit 2523000b36b113fd7b94ae6b7178f6fd33908ef9)
+(cherry picked from commit 92b382e2f85b0870b553358cec0209a0a0e3ce31)
+---
+ 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 1f76c64..b4c0a45 100644
+--- a/src/dhcp/nm-dhcp-nettools.c
++++ b/src/dhcp/nm-dhcp-nettools.c
+@@ -1028,10 +1028,10 @@ dhcp4_event_handle (NMDhcpNettools *self,
+ 			_LOGW ("selecting lease failed: %d", r);
+ 		}
+ 		break;
++	case N_DHCP4_CLIENT_EVENT_RETRACTED:
+ 	case N_DHCP4_CLIENT_EVENT_EXPIRED:
+ 		nm_dhcp_client_set_state (NM_DHCP_CLIENT (self), NM_DHCP_STATE_EXPIRE, NULL, NULL);
+ 		break;
+-	case N_DHCP4_CLIENT_EVENT_RETRACTED:
+ 	case N_DHCP4_CLIENT_EVENT_CANCELLED:
+ 		nm_dhcp_client_set_state (NM_DHCP_CLIENT (self), NM_DHCP_STATE_FAIL, NULL, NULL);
+ 		break;
diff --git a/debian/patches/libnm-Check-self-still-NMManager-or-not.patch b/debian/patches/libnm-Check-self-still-NMManager-or-not.patch
deleted file mode 100644
index 061a8a7f..00000000
--- a/debian/patches/libnm-Check-self-still-NMManager-or-not.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From: "Shih-Yuan Lee (FourDollars)" <sylee@canonical.com>
-Date: Tue, 17 May 2016 17:26:06 +0800
-Subject: libnm: Check self still NMManager or not
-
-Return if self is not NMManager or it will crash.
----
- libnm/nm-manager.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-Index: network-manager-1.20.0/libnm/nm-manager.c
-===================================================================
---- network-manager-1.20.0.orig/libnm/nm-manager.c
-+++ network-manager-1.20.0/libnm/nm-manager.c
-@@ -967,7 +967,7 @@ find_active_connection_by_path (NMManage
- static void
- recheck_pending_activations (NMManager *self)
- {
--	NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
-+	NMManagerPrivate *priv;
- 	CList *iter, *safe;
- 	NMActiveConnection *candidate;
- 	const GPtrArray *devices;
-@@ -977,6 +977,10 @@ recheck_pending_activations (NMManager *
- 
- 	object_manager = _nm_object_get_dbus_object_manager (NM_OBJECT (self));
- 
-+	g_return_if_fail (NM_IS_MANAGER (self));
-+
-+	priv = NM_MANAGER_GET_PRIVATE (self);
-+
- 	/* For each pending activation, look for an active connection that has the
- 	 * pending activation's object path, where the active connection and its
- 	 * device have both updated their properties to point to each other, and
diff --git a/debian/patches/n-dhcp4-allow-calling-listen-on-already-listening-connect.patch b/debian/patches/n-dhcp4-allow-calling-listen-on-already-listening-connect.patch
new file mode 100644
index 00000000..d682210b
--- /dev/null
+++ b/debian/patches/n-dhcp4-allow-calling-listen-on-already-listening-connect.patch
@@ -0,0 +1,29 @@
+From: Beniamino Galvani <bgalvani@redhat.com>
+Date: Tue, 7 Jan 2020 12:01:39 +0100
+Subject: n-dhcp4: allow calling listen() on already listening connection
+
+When the client enters the INIT state, it calls listen() on the
+connection connection to create the packet socket. However, if the
+client is coming from the REBOOTING state after a NAK, the connection
+is already in the listening state; do nothing in such case.
+
+(cherry picked from commit 4bcdc3c1ebe3e2e8a967ff067ecb2a8cbfc2f6ab)
+(cherry picked from commit 2e1d3ae572a753f0181760d9fa41558d33849b09)
+---
+ shared/n-dhcp4/src/n-dhcp4-c-connection.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/shared/n-dhcp4/src/n-dhcp4-c-connection.c b/shared/n-dhcp4/src/n-dhcp4-c-connection.c
+index e51a3e3..f3ae44e 100644
+--- a/shared/n-dhcp4/src/n-dhcp4-c-connection.c
++++ b/shared/n-dhcp4/src/n-dhcp4-c-connection.c
+@@ -139,6 +139,9 @@ int n_dhcp4_c_connection_listen(NDhcp4CConnection *connection) {
+         _c_cleanup_(c_closep) int fd_packet = -1;
+         int r;
+ 
++        if (connection->state == N_DHCP4_C_CONNECTION_STATE_PACKET)
++                return 0;
++
+         c_assert(connection->state == N_DHCP4_C_CONNECTION_STATE_INIT ||
+                  connection->state == N_DHCP4_C_CONNECTION_STATE_DRAINING ||
+                  connection->state == N_DHCP4_C_CONNECTION_STATE_UDP);
diff --git a/debian/patches/n-dhcp4-restart-the-transaction-after-a-NAK.patch b/debian/patches/n-dhcp4-restart-the-transaction-after-a-NAK.patch
new file mode 100644
index 00000000..d245597f
--- /dev/null
+++ b/debian/patches/n-dhcp4-restart-the-transaction-after-a-NAK.patch
@@ -0,0 +1,70 @@
+From: Beniamino Galvani <bgalvani@redhat.com>
+Date: Tue, 7 Jan 2020 12:02:55 +0100
+Subject: n-dhcp4: restart the transaction after a NAK
+
+It is not enough to set the INIT state after a NAK; a timeout
+(ns_deferred) must be set so that it is added to the event fd. The
+client retries immediately the first time, so that in the successful
+case it gets an address quickly. To avoid flooding the network in case
+of servers always replying with NAKs, next attempts are done with
+intervals from 2 seconds to 5 minutes using exponential backoff. See
+also systemd commit [1].
+
+[1] https://github.com/systemd/systemd/commit/1d1a3e0afb85478cda43670b8ed92a6db6c83f3e
+
+https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/325
+(cherry picked from commit 218782a9a3c326f5c8cc3ea40dc0cd039060b188)
+(cherry picked from commit ae5b9343d2e52917546f228b7a4d3c7fc4fa98ec)
+---
+ shared/n-dhcp4/src/n-dhcp4-c-probe.c | 10 ++++++----
+ shared/n-dhcp4/src/n-dhcp4-private.h |  1 +
+ 2 files changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/shared/n-dhcp4/src/n-dhcp4-c-probe.c b/shared/n-dhcp4/src/n-dhcp4-c-probe.c
+index 4fb7d38..82a089e 100644
+--- a/shared/n-dhcp4/src/n-dhcp4-c-probe.c
++++ b/shared/n-dhcp4/src/n-dhcp4-c-probe.c
+@@ -946,7 +946,7 @@ static int n_dhcp4_client_probe_transition_ack(NDhcp4ClientProbe *probe, NDhcp4I
+                 n_dhcp4_client_lease_unref(probe->current_lease);
+                 probe->current_lease = n_dhcp4_client_lease_ref(lease);
+                 probe->state = N_DHCP4_CLIENT_PROBE_STATE_BOUND;
+-
++                probe->ns_nak_restart_delay = 0;
+                 break;
+ 
+         case N_DHCP4_CLIENT_PROBE_STATE_REQUESTING:
+@@ -969,7 +969,7 @@ static int n_dhcp4_client_probe_transition_ack(NDhcp4ClientProbe *probe, NDhcp4I
+                 node->event.granted.lease = n_dhcp4_client_lease_ref(lease);
+                 probe->current_lease = n_dhcp4_client_lease_ref(lease);
+                 probe->state = N_DHCP4_CLIENT_PROBE_STATE_GRANTED;
+-
++                probe->ns_nak_restart_delay = 0;
+                 break;
+ 
+         case N_DHCP4_CLIENT_PROBE_STATE_INIT:
+@@ -1004,9 +1004,11 @@ static int n_dhcp4_client_probe_transition_nak(NDhcp4ClientProbe *probe) {
+                         return r;
+ 
+                 probe->state = N_DHCP4_CLIENT_PROBE_STATE_INIT;
+-
++                probe->ns_deferred = n_dhcp4_gettime(CLOCK_BOOTTIME) + probe->ns_nak_restart_delay;
++                probe->ns_nak_restart_delay = c_clamp(probe->ns_nak_restart_delay * 2,
++                                                      UINT64_C(1000000000 * 2),
++                                                      UINT64_C(1000000000 * 300));
+                 break;
+-
+         case N_DHCP4_CLIENT_PROBE_STATE_SELECTING:
+         case N_DHCP4_CLIENT_PROBE_STATE_INIT_REBOOT:
+         case N_DHCP4_CLIENT_PROBE_STATE_INIT:
+diff --git a/shared/n-dhcp4/src/n-dhcp4-private.h b/shared/n-dhcp4/src/n-dhcp4-private.h
+index fcfb0f3..c092ae8 100644
+--- a/shared/n-dhcp4/src/n-dhcp4-private.h
++++ b/shared/n-dhcp4/src/n-dhcp4-private.h
+@@ -352,6 +352,7 @@ struct NDhcp4ClientProbe {
+         unsigned int state;                     /* current probe state */
+         uint64_t ns_deferred;                   /* timeout for deferred action */
+         uint64_t ns_reinit;
++        uint64_t ns_nak_restart_delay;          /* restart delay after a nak */
+         NDhcp4ClientLease *current_lease;       /* current lease */
+ 
+         NDhcp4CConnection connection;           /* client connection wrapper */
diff --git a/debian/patches/series b/debian/patches/series
index 0a749301..91470b4d 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,9 +1,10 @@
 Force-online-state-with-unmanaged-devices.patch
 Don-t-setup-Sleep-Monitor-if-not-booted-with-systemd.patch
+n-dhcp4-allow-calling-listen-on-already-listening-connect.patch
+n-dhcp4-restart-the-transaction-after-a-NAK.patch
+dhcp-nettools-handle-retracted-event-as-expired.patch
 
 # Ubuntu patches
 Provide-access-to-some-of-NM-s-interfaces-to-whoopsie.patch
 Update-dnsmasq-parameters.patch
 Disable-core-with-expect.patch
-libnm-Check-self-still-NMManager-or-not.patch
-
diff --git a/debian/rules b/debian/rules
index 426533e6..86472bf1 100755
--- a/debian/rules
+++ b/debian/rules
@@ -50,6 +50,7 @@ override_dh_auto_configure:
 		--with-libaudit \
 		--with-iwd \
 		--without-dhcpcanon \
+		--without-nm-cloud-setup \
 		--enable-polkit \
 		--enable-polkit-agent \
 		--enable-ppp \