about summary refs log tree commit diff
path: root/debian
diff options
context:
space:
mode:
Diffstat (limited to 'debian')
-rw-r--r--debian/changelog97
-rw-r--r--debian/control6
-rw-r--r--debian/libnm0.symbols8
-rw-r--r--debian/patches/Force-online-state-with-unmanaged-devices.patch258
-rw-r--r--debian/patches/Update-dnsmasq-parameters.patch76
-rw-r--r--debian/patches/series3
-rw-r--r--debian/patches/systemd-basic-missing_syscall-fix-syscall-numbers-for-x32.patch124
7 files changed, 400 insertions, 172 deletions
diff --git a/debian/changelog b/debian/changelog
index 3e75014e..58dde59f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,100 @@
+network-manager (1.28.0-2ubuntu1) UNRELEASED; urgency=medium
+
+  * Resynchronize on Debian, remaining changes:
+    - Use systemd-resolved instead of dnsmasq
+    - debian/control:
+      + Depend on isc-dhcp-client instead of recommends
+      + Recommend network-manager-pptp
+      + Suggest avahi-autoipd for IPv4LL support
+    - debian/rules, debian/network-manager.postinst:
+      + Don't restart NetworkManager on upgrade but recommend restarting
+        the computer
+    - debian/rules, debian/network-manager.postinst:
+      + Don't install sysvinit scripts or migrate from sysvinit
+    - debian/network-manager.postinst:
+      + Don't add the netdev group.
+      + drop in an empty override file for NetworkManager to manage all
+        devices for upgrade from any version, as long as there is no
+        netplan configuration yet.
+    - debian/default-wifi-powersave-on.conf, debian/rules:
+      + Install a config file to enable WiFi powersave
+    - Enable build tests
+    - Add autopkgtests
+    - debian/source_network-manager.py, debian/network-manager.install,
+      debian/network-manager.links: Add apport hook
+    - Add network-manager-config-connectivity-ubuntu package
+    - NetworkManager.conf: disable MAC randomization feature. There is no
+      easy way for desktop users to disable this feature yet. And there are
+      reports that it doesn't work well with some systems.
+    - Update Vcs links to point to Ubuntu branch
+    - Add patches. See patch descriptions for more details:
+      + Provide-access-to-some-of-NM-s-interfaces-to-whoopsie.patch
+      + Update-dnsmasq-parameters.patch
+      + Disable-general-with-expect.patch
+      + libnm-Check-self-still-NMManager-or-not.patch
+      + dns-manager-don-t-merge-split-DNS-search-domains.patch (but disabled)
+      + Read-system-connections-from-run.patch
+    - debian/tests/urfkill-integration - don't stop/start network manager
+
+ -- Sebastien Bacher <seb128@ubuntu.com>  Mon, 11 Jan 2021 18:10:30 +0100
+
+network-manager (1.28.0-2) unstable; urgency=medium
+
+  * Demote libpam-systemd to Recommends.
+    This allows users to use and experiment with other init systems. Such a
+    setup is neither tested nor fully supported and users need to be aware
+    that some functionality might be broken. (Closes: #921012)
+  * Recommend wireless-regdb instead of crda.
+    CRDA is no longer needed as of Linux kernel v4.15. (Closes: #973241)
+  * Bump Standards-Version to 4.5.1
+
+ -- Michael Biebl <biebl@debian.org>  Thu, 31 Dec 2020 21:38:43 +0100
+
+network-manager (1.28.0-1) unstable; urgency=medium
+
+  * New upstream version 1.28.0
+  * Rebase patches
+
+ -- Michael Biebl <biebl@debian.org>  Sun, 06 Dec 2020 22:48:28 +0100
+
+network-manager (1.27.91-2) unstable; urgency=medium
+
+  * Revert "dns: change default DNS priority of VPNs to -50" (Closes: #972688)
+
+ -- Michael Biebl <biebl@debian.org>  Wed, 25 Nov 2020 14:59:00 +0100
+
+network-manager (1.27.91-1) unstable; urgency=medium
+
+  * New upstream version 1.27.91 (1.28 rc2)
+  * Rebase patches
+
+ -- Michael Biebl <biebl@debian.org>  Tue, 20 Oct 2020 22:36:31 +0200
+
+network-manager (1.27.90-3) unstable; urgency=medium
+
+  [ Thorsten Glaser ]
+  * Adjust syscall numbers for x32 vs. amd64, fixes FTBFS on x32
+
+ -- Michael Biebl <biebl@debian.org>  Fri, 09 Oct 2020 16:03:16 +0200
+
+network-manager (1.27.90-2) unstable; urgency=medium
+
+  * Cherry-pick a couple of upstream patches.
+    Hopefully fixes the build and test-suite failures on some of the more
+    exotic architectures.
+
+ -- Michael Biebl <biebl@debian.org>  Thu, 08 Oct 2020 11:34:31 +0200
+
+network-manager (1.27.90-1) unstable; urgency=medium
+
+  * New upstream version 1.27.90 (1.28 rc1)
+    - Fix generated XML syntax in tools/generate-docs-nm-settings-docs-gir.py
+      (Closes: #971144)
+  * Rebase patches
+  * Update symbols file for libnm0
+
+ -- Michael Biebl <biebl@debian.org>  Mon, 05 Oct 2020 23:34:33 +0200
+
 network-manager (1.26.2-1ubuntu1) groovy; urgency=medium
 
   * Update to the current stable version
diff --git a/debian/control b/debian/control
index 8fcc6d53..60b45daa 100644
--- a/debian/control
+++ b/debian/control
@@ -40,7 +40,7 @@ Build-Depends: debhelper-compat (= 13),
                valac (>= 0.17.1.24),
                dbus <!nocheck>,
                python3-dbus <!nocheck>
-Standards-Version: 4.5.0
+Standards-Version: 4.5.1
 Rules-Requires-Root: no
 XS-Debian-Vcs-Git: https://salsa.debian.org/utopia-team/network-manager.git
 XS-Debian-Vcs-Browser: https://salsa.debian.org/utopia-team/network-manager
@@ -58,14 +58,14 @@ Depends: ${shlibs:Depends},
          dbus,
          udev,
          adduser,
-         libpam-systemd,
          policykit-1
 Recommends: ppp,
             dnsmasq-base,
             iptables,
             modemmanager,
             network-manager-pptp,
-            crda,
+            wireless-regdb,
+            libpam-systemd,
 Suggests: avahi-autoipd,
           libteam-utils,
           isc-dhcp-client,
diff --git a/debian/libnm0.symbols b/debian/libnm0.symbols
index bec7e850..3073b2c8 100644
--- a/debian/libnm0.symbols
+++ b/debian/libnm0.symbols
@@ -19,6 +19,8 @@ libnm.so.0 libnm0 #MINVER#
  libnm_1_22_8@libnm_1_22_8 1.22.8
  libnm_1_24_0@libnm_1_24_0 1.23.90
  libnm_1_26_0@libnm_1_26_0 1.25.90
+ libnm_1_26_4@libnm_1_26_4 1.27.90
+ libnm_1_28_0@libnm_1_28_0 1.27.90
  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
@@ -932,6 +934,7 @@ libnm.so.0 libnm0 #MINVER#
  nm_setting_infiniband_new@libnm_1_0_0 1.0.0
  nm_setting_ip4_config_get_dhcp_client_id@libnm_1_0_0 1.0.0
  nm_setting_ip4_config_get_dhcp_fqdn@libnm_1_2_0 1.1.90
+ nm_setting_ip4_config_get_dhcp_vendor_class_identifier@libnm_1_26_4 1.27.90
  nm_setting_ip4_config_get_type@libnm_1_0_0 1.0.0
  nm_setting_ip4_config_new@libnm_1_0_0 1.0.0
  nm_setting_ip6_config_addr_gen_mode_get_type@libnm_1_2_0 1.1.90
@@ -944,12 +947,14 @@ libnm.so.0 libnm0 #MINVER#
  nm_setting_ip6_config_new@libnm_1_0_0 1.0.0
  nm_setting_ip6_config_privacy_get_type@libnm_1_0_0 1.0.0
  nm_setting_ip_config_add_address@libnm_1_0_0 1.0.0
+ nm_setting_ip_config_add_dhcp_reject_server@libnm_1_28_0 1.27.90
  nm_setting_ip_config_add_dns@libnm_1_0_0 1.0.0
  nm_setting_ip_config_add_dns_option@libnm_1_2_0 1.1.90
  nm_setting_ip_config_add_dns_search@libnm_1_0_0 1.0.0
  nm_setting_ip_config_add_route@libnm_1_0_0 1.0.0
  nm_setting_ip_config_add_routing_rule@libnm_1_18_0 1.18.0
  nm_setting_ip_config_clear_addresses@libnm_1_0_0 1.0.0
+ nm_setting_ip_config_clear_dhcp_reject_servers@libnm_1_28_0 1.27.90
  nm_setting_ip_config_clear_dns@libnm_1_0_0 1.0.0
  nm_setting_ip_config_clear_dns_options@libnm_1_2_0 1.1.90
  nm_setting_ip_config_clear_dns_searches@libnm_1_0_0 1.0.0
@@ -959,6 +964,7 @@ libnm.so.0 libnm0 #MINVER#
  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_reject_servers@libnm_1_28_0 1.27.90
  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
@@ -986,6 +992,7 @@ libnm.so.0 libnm0 #MINVER#
  nm_setting_ip_config_has_dns_options@libnm_1_2_0 1.1.90
  nm_setting_ip_config_remove_address@libnm_1_0_0 1.0.0
  nm_setting_ip_config_remove_address_by_value@libnm_1_0_0 1.0.0
+ nm_setting_ip_config_remove_dhcp_reject_server@libnm_1_28_0 1.27.90
  nm_setting_ip_config_remove_dns@libnm_1_0_0 1.0.0
  nm_setting_ip_config_remove_dns_by_value@libnm_1_0_0 1.0.0
  nm_setting_ip_config_remove_dns_option@libnm_1_2_0 1.1.90
@@ -1335,6 +1342,7 @@ libnm.so.0 libnm0 #MINVER#
  nm_setting_wireless_add_seen_bssid@libnm_1_0_0 1.0.0
  nm_setting_wireless_ap_security_compatible@libnm_1_0_0 1.0.0
  nm_setting_wireless_clear_mac_blacklist_items@libnm_1_0_0 1.0.0
+ nm_setting_wireless_get_ap_isolation@libnm_1_28_0 1.27.90
  nm_setting_wireless_get_band@libnm_1_0_0 1.0.0
  nm_setting_wireless_get_bssid@libnm_1_0_0 1.0.0
  nm_setting_wireless_get_channel@libnm_1_0_0 1.0.0
diff --git a/debian/patches/Force-online-state-with-unmanaged-devices.patch b/debian/patches/Force-online-state-with-unmanaged-devices.patch
index 8c031b1c..f8bc3398 100644
--- a/debian/patches/Force-online-state-with-unmanaged-devices.patch
+++ b/debian/patches/Force-online-state-with-unmanaged-devices.patch
@@ -12,7 +12,7 @@ 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 778e3b9..d0cc527 100644
+index 46f81c7..3465be4 100644
 --- a/src/nm-manager.c
 +++ b/src/nm-manager.c
 @@ -52,6 +52,8 @@
@@ -24,165 +24,165 @@ index 778e3b9..d0cc527 100644
  /*****************************************************************************/
  
  typedef struct {
-@@ -187,6 +189,10 @@ typedef struct {
- 	GFileMonitor *fw_monitor;
- 	guint fw_changed_id;
+@@ -186,6 +188,10 @@ typedef struct {
+     GFileMonitor *fw_monitor;
+     guint         fw_changed_id;
  
-+	/* ifupdown state file monitor */
-+	GFileMonitor *ifstate_monitor;
-+	gboolean ifstate_force_online;
++    /* ifupdown state file monitor */
++    GFileMonitor *ifstate_monitor;
++    gboolean      ifstate_force_online;
 +
- 	guint timestamp_update_id;
+     guint timestamp_update_id;
  
- 	guint devices_inited_id;
-@@ -1430,6 +1436,27 @@ find_best_device_state (NMManager *manager)
- 	return best_state;
+     guint devices_inited_id;
+@@ -1433,6 +1439,27 @@ find_best_device_state(NMManager *manager)
+     return best_state;
  }
  
 +static NMState
-+find_unmanaged_state (NMManager *self, NMState current_state)
++find_unmanaged_state(NMManager *self, NMState current_state)
 +{
-+	NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
-+	NMState new_state = current_state;
-+	NMDevice *device;
-+
-+	c_list_for_each_entry (device, &priv->devices_lst_head, devices_lst) {
-+		NMDeviceState state = nm_device_get_state (device);
-+
-+		if (state == NM_DEVICE_STATE_UNMANAGED) {
-+			const char *iface = nm_device_get_ip_iface (device);
-+			if (priv->ifstate_force_online) {
-+				new_state = NM_STATE_CONNECTED_GLOBAL;
-+				nm_log_dbg (LOGD_CORE, "Unmanaged device found: %s; state CONNECTED forced.", iface);
-+			}
-+		}
-+	}
-+	return new_state;
++    NMManagerPrivate *priv      = NM_MANAGER_GET_PRIVATE(self);
++    NMState           new_state = current_state;
++    NMDevice         *device;
++
++    c_list_for_each_entry(device, &priv->devices_lst_head, devices_lst) {
++        NMDeviceState state = nm_device_get_state(device);
++
++        if (state == NM_DEVICE_STATE_UNMANAGED) {
++            const char *iface = nm_device_get_ip_iface(device);
++            if (priv->ifstate_force_online) {
++                new_state = NM_STATE_CONNECTED_GLOBAL;
++                nm_log_dbg(LOGD_CORE, "Unmanaged device found: %s; state CONNECTED forced.", iface);
++            }
++        }
++    }
++    return new_state;
 +}
 +
  static void
- nm_manager_update_metered (NMManager *self)
+ nm_manager_update_metered(NMManager *self)
  {
-@@ -1476,6 +1503,9 @@ nm_manager_update_state (NMManager *self)
- 	else
- 		new_state = find_best_device_state (self);
+@@ -1479,6 +1506,9 @@ nm_manager_update_state(NMManager *self)
+     else
+         new_state = find_best_device_state(self);
  
-+	if (new_state != NM_STATE_CONNECTED_GLOBAL)
-+		new_state = find_unmanaged_state (self, new_state);
-+
- 	if (   new_state >= NM_STATE_CONNECTED_LOCAL
- 	    && priv->connectivity_state == NM_CONNECTIVITY_FULL) {
- 		new_state = NM_STATE_CONNECTED_GLOBAL;
-@@ -6566,6 +6596,62 @@ impl_manager_check_connectivity (NMDBusObject *obj,
- 	nm_auth_chain_add_call (chain, NM_AUTH_PERMISSION_NETWORK_CONTROL, TRUE);
++    if (new_state != NM_STATE_CONNECTED_GLOBAL)
++        new_state = find_unmanaged_state(self, new_state);
++
+     if (new_state >= NM_STATE_CONNECTED_LOCAL && priv->connectivity_state == NM_CONNECTIVITY_FULL) {
+         new_state = NM_STATE_CONNECTED_GLOBAL;
+     }
+@@ -6587,6 +6617,62 @@ impl_manager_set_logging(NMDBusObject *                     obj,
+         g_dbus_method_invocation_return_value(invocation, NULL);
  }
  
 +static void
-+check_ifstate_file (gpointer user_data)
++check_ifstate_file(gpointer user_data)
 +{
-+	NMManager *self = NM_MANAGER (user_data);
-+	NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self);
-+	GIOChannel *channel;
-+	gchar *line;
-+	gboolean online = FALSE;
-+
-+	channel = g_io_channel_new_file (IFUPDOWN_STATE_FILE, "r", NULL);
-+	if (!channel) {
-+		nm_log_warn (LOGD_CORE, "Error: failed to open %s", IFUPDOWN_STATE_FILE);
-+		return;
-+	}
-+
-+	while (g_io_channel_read_line (channel, &line, NULL, NULL, NULL)
-+	       != G_IO_STATUS_EOF && !online) {
-+		g_strstrip (line);
-+		if (strlen (line) > 0 && g_strcmp0 (line, "lo=lo") != 0) {
-+			online = TRUE;
-+		}
-+		g_free (line);
-+	}
-+
-+	g_io_channel_shutdown (channel, FALSE, NULL);
-+	g_io_channel_unref (channel);
-+
-+	if (priv->ifstate_force_online != online) {
-+		priv->ifstate_force_online = online;
-+		nm_manager_update_state (self);
-+	}
++    NMManager        *self   = NM_MANAGER(user_data);
++    NMManagerPrivate *priv   = NM_MANAGER_GET_PRIVATE(self);
++    GIOChannel       *channel;
++    gchar            *line;
++    gboolean          online = FALSE;
++
++    channel = g_io_channel_new_file(IFUPDOWN_STATE_FILE, "r", NULL);
++    if (!channel) {
++        nm_log_warn(LOGD_CORE, "Error: failed to open %s", IFUPDOWN_STATE_FILE);
++        return;
++    }
++
++    while (g_io_channel_read_line(channel, &line, NULL, NULL, NULL)
++           != G_IO_STATUS_EOF && !online) {
++        g_strstrip(line);
++        if (strlen(line) > 0 && g_strcmp0(line, "lo=lo") != 0) {
++            online = TRUE;
++        }
++        g_free(line);
++    }
++
++    g_io_channel_shutdown(channel, FALSE, NULL);
++    g_io_channel_unref(channel);
++
++    if (priv->ifstate_force_online != online) {
++        priv->ifstate_force_online = online;
++        nm_manager_update_state(self);
++    }
 +}
 +
 +static void
-+ifstate_file_changed (GFileMonitor *monitor,
-+                      GFile *file,
-+                      GFile *other_file,
-+                      GFileMonitorEvent event_type,
-+                      gpointer user_data)
++ifstate_file_changed(GFileMonitor      *monitor,
++                     GFile             *file,
++                     GFile             *other_file,
++                     GFileMonitorEvent  event_type,
++                     gpointer           user_data)
 +{
-+	switch (event_type) {
-+//	case G_FILE_MONITOR_EVENT_CREATED:
++    switch (event_type) {
++//  case G_FILE_MONITOR_EVENT_CREATED:
 +//#if GLIB_CHECK_VERSION(2,23,4)
-+//	case G_FILE_MONITOR_EVENT_MOVED:
++//  case G_FILE_MONITOR_EVENT_MOVED:
 +//#endif
-+//	case G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED:
-+	case G_FILE_MONITOR_EVENT_CHANGED:
-+	case G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT:
-+		nm_log_dbg (LOGD_CORE, "ifupdown state file %s was changed", IFUPDOWN_STATE_FILE);
-+		check_ifstate_file (user_data);
-+		break;
-+	default:
-+		break;
-+	}
++//  case G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED:
++    case G_FILE_MONITOR_EVENT_CHANGED:
++    case G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT:
++        nm_log_dbg(LOGD_CORE, "ifupdown state file %s was changed", IFUPDOWN_STATE_FILE);
++        check_ifstate_file(user_data);
++        break;
++    default:
++        break;
++    }
 +}
 +
  static void
- start_factory (NMDeviceFactory *factory, gpointer user_data)
- {
-@@ -6749,6 +6835,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);
+ impl_manager_get_logging(NMDBusObject *                     obj,
+                          const NMDBusInterfaceInfoExtended *interface_info,
+@@ -6916,6 +7002,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);
  
-+	/* Trigger ifupdown state file check */
-+	check_ifstate_file (self);
++    /* Trigger ifupdown state file check */
++    check_ifstate_file(self);
 +
- 	return TRUE;
+     return TRUE;
  }
  
-@@ -7603,6 +7692,22 @@ nm_manager_init (NMManager *self)
- 		       KERNEL_FIRMWARE_DIR);
- 	}
- 
-+	/* Monitor the ifupdown state file */
-+	file = g_file_new_for_path (IFUPDOWN_STATE_FILE);
-+	priv->ifstate_monitor = g_file_monitor_file (file, G_FILE_MONITOR_NONE, NULL, NULL);
-+	g_object_unref (file);
-+
-+	if (priv->ifstate_monitor) {
-+		g_signal_connect (priv->ifstate_monitor, "changed",
-+		                  G_CALLBACK (ifstate_file_changed),
-+		                  self);
-+		nm_log_info (LOGD_CORE, "monitoring ifupdown state file '%s'.",
-+		             IFUPDOWN_STATE_FILE);
-+	} else {
-+		nm_log_warn (LOGD_CORE, "failed to monitor ifupdown state file '%s'.",
-+		             IFUPDOWN_STATE_FILE);
-+	}
-+
- 	/* Update timestamps in active connections */
- 	priv->timestamp_update_id = g_timeout_add_seconds (300, (GSourceFunc) periodic_update_active_connection_timestamps, self);
+@@ -7795,6 +7884,22 @@ nm_manager_init(NMManager *self)
+         _LOGW(LOGD_CORE, "failed to monitor kernel firmware directory '%s'.", KERNEL_FIRMWARE_DIR);
+     }
  
-@@ -7882,6 +7987,16 @@ dispose (GObject *object)
- 		g_clear_object (&priv->fw_monitor);
- 	}
++    /* Monitor the ifupdown state file */
++    file = g_file_new_for_path(IFUPDOWN_STATE_FILE);
++    priv->ifstate_monitor = g_file_monitor_file(file, G_FILE_MONITOR_NONE, NULL, NULL);
++    g_object_unref(file);
++
++    if (priv->ifstate_monitor) {
++        g_signal_connect(priv->ifstate_monitor, "changed",
++                         G_CALLBACK(ifstate_file_changed),
++                         self);
++        nm_log_info(LOGD_CORE, "monitoring ifupdown state file '%s'.",
++                    IFUPDOWN_STATE_FILE);
++    } else {
++        nm_log_warn(LOGD_CORE, "failed to monitor ifupdown state file '%s'.",
++                    IFUPDOWN_STATE_FILE);
++    }
++
+     /* Update timestamps in active connections */
+     priv->timestamp_update_id =
+         g_timeout_add_seconds(300,
+@@ -8078,6 +8183,16 @@ dispose(GObject *object)
+         g_clear_object(&priv->fw_monitor);
+     }
  
-+	if (priv->ifstate_monitor) {
-+		g_signal_handlers_disconnect_by_func (priv->ifstate_monitor, ifstate_file_changed, self);
++    if (priv->ifstate_monitor) {
++        g_signal_handlers_disconnect_by_func(priv->ifstate_monitor, ifstate_file_changed, self);
 +
-+		if (priv->ifstate_force_online)
-+			g_source_remove (priv->ifstate_force_online);
++        if (priv->ifstate_force_online)
++            g_source_remove(priv->ifstate_force_online);
 +
-+		g_file_monitor_cancel (priv->ifstate_monitor);
-+		g_clear_object (&priv->ifstate_monitor);
-+	}
++        g_file_monitor_cancel(priv->ifstate_monitor);
++        g_clear_object(&priv->ifstate_monitor);
++    }
 +
- 	if (priv->rfkill_mgr) {
- 		g_signal_handlers_disconnect_by_func (priv->rfkill_mgr, rfkill_manager_rfkill_changed_cb, self);
- 		g_clear_object (&priv->rfkill_mgr);
+     if (priv->rfkill_mgr) {
+         g_signal_handlers_disconnect_by_func(priv->rfkill_mgr,
+                                              rfkill_manager_rfkill_changed_cb,
diff --git a/debian/patches/Update-dnsmasq-parameters.patch b/debian/patches/Update-dnsmasq-parameters.patch
index c0f97963..e0b89aa6 100644
--- a/debian/patches/Update-dnsmasq-parameters.patch
+++ b/debian/patches/Update-dnsmasq-parameters.patch
@@ -10,46 +10,46 @@ 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.24.0/src/dns/nm-dns-dnsmasq.c
+Index: network-manager/src/dns/nm-dns-dnsmasq.c
 ===================================================================
---- network-manager-1.24.0.orig/src/dns/nm-dns-dnsmasq.c
-+++ network-manager-1.24.0/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.24.0/src/dns/nm-dns-manager.c
+--- network-manager.orig/src/dns/nm-dns-dnsmasq.c
++++ network-manager/src/dns/nm-dns-dnsmasq.c
+@@ -523,8 +523,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/src/dns/nm-dns-manager.c
 ===================================================================
---- network-manager-1.24.0.orig/src/dns/nm-dns-manager.c
-+++ network-manager-1.24.0/src/dns/nm-dns-manager.c
-@@ -1526,12 +1526,12 @@ plugin_skip:
- 	                            NM_CAST_STRV_CC (nameservers),
- 	                            NM_CAST_STRV_CC (options));
+--- network-manager.orig/src/dns/nm-dns-manager.c
++++ network-manager/src/dns/nm-dns-manager.c
+@@ -1696,12 +1696,12 @@ plugin_skip:;
+                                NM_CAST_STRV_CC(nameservers),
+                                NM_CAST_STRV_CC(options));
  
--	/* If caching was successful, we only send 127.0.0.1 to /etc/resolv.conf
-+	/* If caching was successful, we only send 127.0.1.1 to /etc/resolv.conf
- 	 * to ensure that the glibc resolver doesn't try to round-robin nameservers,
- 	 * but only uses the local caching nameserver.
- 	 */
- 	if (caching) {
--		const char *lladdr = "127.0.0.1";
-+		const char *lladdr = "127.0.1.1";
+-    /* If caching was successful, we only send 127.0.0.1 to /etc/resolv.conf
++    /* If caching was successful, we only send 127.0.1.1 to /etc/resolv.conf
+      * to ensure that the glibc resolver doesn't try to round-robin nameservers,
+      * but only uses the local caching nameserver.
+      */
+     if (caching) {
+-        const char *lladdr = "127.0.0.1";
++        const char *lladdr = "127.0.1.1";
  
- 		if (NM_IS_DNS_SYSTEMD_RESOLVED (priv->plugin)) {
- 			/* systemd-resolved uses a different link-local address */
-@@ -1825,7 +1825,7 @@ nm_dns_manager_stop (NMDnsManager *self)
- 	_LOGT ("stopping...");
+         if (NM_IS_DNS_SYSTEMD_RESOLVED(priv->plugin)) {
+             /* systemd-resolved uses a different link-local address */
+@@ -1982,7 +1982,7 @@ nm_dns_manager_stop(NMDnsManager *self)
+     _LOGT("stopping...");
  
- 	/* If we're quitting, leave a valid resolv.conf in place, not one
--	 * pointing to 127.0.0.1 if dnsmasq was active.  But if we haven't
-+	 * pointing to 127.0.1.1 if dnsmasq was active.  But if we haven't
- 	 * done any DNS updates yet, there's no reason to touch resolv.conf
- 	 * on shutdown.
- 	 */
+     /* If we're quitting, leave a valid resolv.conf in place, not one
+-     * pointing to 127.0.0.1 if dnsmasq was active.  But if we haven't
++     * pointing to 127.0.1.1 if dnsmasq was active.  But if we haven't
+      * done any DNS updates yet, there's no reason to touch resolv.conf
+      * on shutdown.
+      */
diff --git a/debian/patches/series b/debian/patches/series
index c25f5936..0980b69a 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,6 +1,5 @@
 Force-online-state-with-unmanaged-devices.patch
-
 # Ubuntu patches
 Provide-access-to-some-of-NM-s-interfaces-to-whoopsie.patch
 Update-dnsmasq-parameters.patch
-
+systemd-basic-missing_syscall-fix-syscall-numbers-for-x32.patch
diff --git a/debian/patches/systemd-basic-missing_syscall-fix-syscall-numbers-for-x32.patch b/debian/patches/systemd-basic-missing_syscall-fix-syscall-numbers-for-x32.patch
new file mode 100644
index 00000000..75b2fd2b
--- /dev/null
+++ b/debian/patches/systemd-basic-missing_syscall-fix-syscall-numbers-for-x32.patch
@@ -0,0 +1,124 @@
+From: mirabilos <tg@debian.org>
+Date: Fri, 9 Oct 2020 15:58:48 +0200
+Subject: fixup syscall numbers for x32 vs. amd64
+
+---
+ shared/systemd/src/basic/missing_syscall.h | 28 +++++++++++++++++-----------
+ 1 file changed, 17 insertions(+), 11 deletions(-)
+
+diff --git a/shared/systemd/src/basic/missing_syscall.h b/shared/systemd/src/basic/missing_syscall.h
+index d11a77d..82daa68 100644
+--- a/shared/systemd/src/basic/missing_syscall.h
++++ b/shared/systemd/src/basic/missing_syscall.h
+@@ -15,6 +15,12 @@
+ #include <asm/sgidefs.h>
+ #endif
+ 
++#if defined(__x86_64__) && defined(__ILP32__)
++#define systemd_SC_arch_bias(x) ((x) | /* __X32_SYSCALL_BIT */ 0x40000000)
++#else
++#define systemd_SC_arch_bias(x) (x)
++#endif
++
+ #include "missing_keyctl.h"
+ #include "missing_stat.h"
+ 
+@@ -36,7 +42,7 @@ static inline int missing_pivot_root(const char *new_root, const char *put_old)
+ /* ======================================================================= */
+ 
+ #if defined __x86_64__
+-#  define systemd_NR_memfd_create 319
++#  define systemd_NR_memfd_create systemd_SC_arch_bias(319)
+ #elif defined __arm__
+ #  define systemd_NR_memfd_create 385
+ #elif defined __aarch64__
+@@ -93,7 +99,7 @@ static inline int missing_memfd_create(const char *name, unsigned int flags) {
+ /* ======================================================================= */
+ 
+ #if defined __x86_64__
+-#  define systemd_NR_getrandom 318
++#  define systemd_NR_getrandom systemd_SC_arch_bias(318)
+ #elif defined(__i386__)
+ #  define systemd_NR_getrandom 355
+ #elif defined(__arm__)
+@@ -169,7 +175,7 @@ static inline pid_t missing_gettid(void) {
+ /* ======================================================================= */
+ 
+ #if defined(__x86_64__)
+-#  define systemd_NR_name_to_handle_at 303
++#  define systemd_NR_name_to_handle_at systemd_SC_arch_bias(303)
+ #elif defined(__i386__)
+ #  define systemd_NR_name_to_handle_at 341
+ #elif defined(__arm__)
+@@ -226,7 +232,7 @@ static inline int missing_name_to_handle_at(int fd, const char *name, struct fil
+ #elif defined __arm__
+ #  define systemd_NR_setns 375
+ #elif defined(__x86_64__)
+-#  define systemd_NR_setns 308
++#  define systemd_NR_setns systemd_SC_arch_bias(308)
+ #elif defined(__i386__)
+ #  define systemd_NR_setns 346
+ #elif defined(__powerpc__)
+@@ -279,7 +285,7 @@ static inline pid_t raw_getpid(void) {
+ /* ======================================================================= */
+ 
+ #if defined __x86_64__
+-#  define systemd_NR_renameat2 316
++#  define systemd_NR_renameat2 systemd_SC_arch_bias(316)
+ #elif defined __arm__
+ #  define systemd_NR_renameat2 382
+ #elif defined __aarch64__
+@@ -388,7 +394,7 @@ static inline key_serial_t missing_request_key(const char *type, const char *des
+ /* ======================================================================= */
+ 
+ #if defined(__x86_64__)
+-#  define systemd_NR_copy_file_range 326
++#  define systemd_NR_copy_file_range systemd_SC_arch_bias(326)
+ #elif defined(__i386__)
+ #  define systemd_NR_copy_file_range 377
+ #elif defined __s390__
+@@ -440,7 +446,7 @@ static inline ssize_t missing_copy_file_range(int fd_in, loff_t *off_in,
+ #if defined __i386__
+ #  define systemd_NR_bpf 357
+ #elif defined __x86_64__
+-#  define systemd_NR_bpf 321
++#  define systemd_NR_bpf systemd_SC_arch_bias(321)
+ #elif defined __aarch64__
+ #  define systemd_NR_bpf 280
+ #elif defined __arm__
+@@ -492,7 +498,7 @@ static inline int missing_bpf(int cmd, union bpf_attr *attr, size_t size) {
+ #  if defined __i386__
+ #    define systemd_NR_pkey_mprotect 380
+ #  elif defined __x86_64__
+-#    define systemd_NR_pkey_mprotect 329
++#    define systemd_NR_pkey_mprotect systemd_SC_arch_bias(329)
+ #  elif defined __aarch64__
+ #    define systemd_NR_pkey_mprotect 288
+ #  elif defined __arm__
+@@ -545,7 +551,7 @@ assert_cc(__NR_pkey_mprotect == systemd_NR_pkey_mprotect);
+ #elif defined __sparc__
+ #  define systemd_NR_statx 360
+ #elif defined __x86_64__
+-#  define systemd_NR_statx 332
++#  define systemd_NR_statx systemd_SC_arch_bias(332)
+ #else
+ #  warning "statx() syscall number unknown for your architecture"
+ #endif
+@@ -647,7 +653,7 @@ static inline long missing_get_mempolicy(int *mode, unsigned long *nodemask,
+ #elif defined __ia64__
+ #  define systemd_NR_pidfd_send_signal (424 + 1024)
+ #else
+-#  define systemd_NR_pidfd_send_signal 424
++#  define systemd_NR_pidfd_send_signal systemd_SC_arch_bias(424)
+ #endif
+ 
+ /* may be (invalid) negative number due to libseccomp, see PR 13319 */
+@@ -691,7 +697,7 @@ static inline int missing_pidfd_send_signal(int fd, int sig, siginfo_t *info, un
+ #elif defined __ia64__
+ #  define systemd_NR_pidfd_open (434 + 1024)
+ #else
+-#  define systemd_NR_pidfd_open 434
++#  define systemd_NR_pidfd_open systemd_SC_arch_bias(434)
+ #endif
+ 
+ /* may be (invalid) negative number due to libseccomp, see PR 13319 */