diff options
| author | Sebastien Bacher <seb128@ubuntu.com> | 2021-02-25 11:35:01 +0100 |
|---|---|---|
| committer | Sebastien Bacher <seb128@ubuntu.com> | 2021-02-25 11:49:48 +0100 |
| commit | 77dea84aa6e816f66dc622cec8ae2668eba3c068 (patch) | |
| tree | 755536a0ed1fb36c2899e9bff9e092c4008a25c4 /debian/patches | |
| parent | 47f08826b44eed651b44dc8bacb5b46bc4c52067 (diff) | |
| parent | fd80297a396cc4dd7da4da20208fb360aa369aa7 (diff) | |
Merge branch 'debian/master' into ubuntu/master
Diffstat (limited to 'debian/patches')
9 files changed, 34 insertions, 717 deletions
diff --git a/debian/patches/Force-online-state-with-unmanaged-devices.patch b/debian/patches/Force-online-state-with-unmanaged-devices.patch index f8bc3398..a639e11a 100644 --- a/debian/patches/Force-online-state-with-unmanaged-devices.patch +++ b/debian/patches/Force-online-state-with-unmanaged-devices.patch @@ -8,13 +8,13 @@ online state to CONNECTED. Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=512286 --- - src/nm-manager.c | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/core/nm-manager.c | 115 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) -diff --git a/src/nm-manager.c b/src/nm-manager.c -index 46f81c7..3465be4 100644 ---- a/src/nm-manager.c -+++ b/src/nm-manager.c +diff --git a/src/core/nm-manager.c b/src/core/nm-manager.c +index 5a6e05a..4c56b77 100644 +--- a/src/core/nm-manager.c ++++ b/src/core/nm-manager.c @@ -52,6 +52,8 @@ #define DEVICE_STATE_PRUNE_RATELIMIT_MAX 100u @@ -24,7 +24,7 @@ index 46f81c7..3465be4 100644 /*****************************************************************************/ typedef struct { -@@ -186,6 +188,10 @@ typedef struct { +@@ -187,6 +189,10 @@ typedef struct { GFileMonitor *fw_monitor; guint fw_changed_id; @@ -35,7 +35,7 @@ index 46f81c7..3465be4 100644 guint timestamp_update_id; guint devices_inited_id; -@@ -1433,6 +1439,27 @@ find_best_device_state(NMManager *manager) +@@ -1463,6 +1469,27 @@ find_best_device_state(NMManager *manager) return best_state; } @@ -63,7 +63,7 @@ index 46f81c7..3465be4 100644 static void nm_manager_update_metered(NMManager *self) { -@@ -1479,6 +1506,9 @@ nm_manager_update_state(NMManager *self) +@@ -1509,6 +1536,9 @@ nm_manager_update_state(NMManager *self) else new_state = find_best_device_state(self); @@ -73,7 +73,7 @@ index 46f81c7..3465be4 100644 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, +@@ -6603,6 +6633,62 @@ impl_manager_set_logging(NMDBusObject * obj, g_dbus_method_invocation_return_value(invocation, NULL); } @@ -136,7 +136,7 @@ index 46f81c7..3465be4 100644 static void impl_manager_get_logging(NMDBusObject * obj, const NMDBusInterfaceInfoExtended *interface_info, -@@ -6916,6 +7002,9 @@ nm_manager_start(NMManager *self, GError **error) +@@ -6932,6 +7018,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 46f81c7..3465be4 100644 return TRUE; } -@@ -7795,6 +7884,22 @@ nm_manager_init(NMManager *self) +@@ -7826,6 +7915,22 @@ nm_manager_init(NMManager *self) _LOGW(LOGD_CORE, "failed to monitor kernel firmware directory '%s'.", KERNEL_FIRMWARE_DIR); } @@ -169,7 +169,7 @@ index 46f81c7..3465be4 100644 /* Update timestamps in active connections */ priv->timestamp_update_id = g_timeout_add_seconds(300, -@@ -8078,6 +8183,16 @@ dispose(GObject *object) +@@ -8111,6 +8216,16 @@ dispose(GObject *object) g_clear_object(&priv->fw_monitor); } diff --git a/debian/patches/Import-some-missing-WoWLAN-patches.patch b/debian/patches/Import-some-missing-WoWLAN-patches.patch deleted file mode 100644 index bd453be8..00000000 --- a/debian/patches/Import-some-missing-WoWLAN-patches.patch +++ /dev/null @@ -1,355 +0,0 @@ -From: =?utf-8?q?Alfonso_S=C3=A1nchez-Beato?= - <alfonso.sanchez-beato@canonical.com> -Date: Wed, 5 Dec 2018 17:28:15 +0100 -Subject: Import some missing WoWLAN patches from 1.14: - -ac1302793 platform: add methods to retrieve current WoWLAN state -c6e40215e devices: restore past WoWLAN when disconnecting wifi -a3289400d wifi: ensure wake-on-wlan restore only acts once ---- - src/devices/wifi/nm-device-wifi.c | 48 +++++++++++++++++++++++--- - src/platform/nm-linux-platform.c | 8 +++++ - src/platform/nm-platform.c | 10 ++++++ - src/platform/nm-platform.h | 2 ++ - src/platform/wifi/wifi-utils-nl80211.c | 62 ++++++++++++++++++++++++++++++++-- - src/platform/wifi/wifi-utils-private.h | 3 ++ - src/platform/wifi/wifi-utils.c | 10 ++++++ - src/platform/wifi/wifi-utils.h | 2 ++ - 8 files changed, 137 insertions(+), 8 deletions(-) - -diff --git a/src/devices/wifi/nm-device-wifi.c b/src/devices/wifi/nm-device-wifi.c -index 0dd6fa7..3008ada 100644 ---- a/src/devices/wifi/nm-device-wifi.c -+++ b/src/devices/wifi/nm-device-wifi.c -@@ -121,6 +121,8 @@ typedef struct { - gint32 hw_addr_scan_expire; - - guint wps_timeout_id; -+ -+ NMSettingWirelessWakeOnWLan wowlan_restore; - } NMDeviceWifiPrivate; - - struct _NMDeviceWifi -@@ -508,6 +510,22 @@ remove_all_aps (NMDeviceWifi *self) - nm_device_recheck_available_connections (NM_DEVICE (self)); - } - -+static gboolean -+wake_on_wlan_restore (NMDeviceWifi *self) -+{ -+ NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self); -+ NMSettingWirelessWakeOnWLan w; -+ -+ w = priv->wowlan_restore; -+ if (w == NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE) -+ return TRUE; -+ -+ priv->wowlan_restore = NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE; -+ return nm_platform_wifi_set_wake_on_wlan (NM_PLATFORM_GET, -+ nm_device_get_ifindex (NM_DEVICE (self)), -+ w); -+} -+ - static void - deactivate (NMDevice *device) - { -@@ -524,6 +542,9 @@ deactivate (NMDevice *device) - - set_current_ap (self, NULL, TRUE); - -+ if (!wake_on_wlan_restore (self)) -+ _LOGW (LOGD_DEVICE | LOGD_WIFI, "Cannot unconfigure WoWLAN."); -+ - /* Clear any critical protocol notification in the Wi-Fi stack */ - nm_platform_wifi_indicate_addressing_running (nm_device_get_platform (device), ifindex, FALSE); - -@@ -2426,6 +2447,7 @@ error: - static gboolean - wake_on_wlan_enable (NMDeviceWifi *self) - { -+ NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self); - NMSettingWirelessWakeOnWLan wowl; - NMSettingWireless *s_wireless; - gs_free char *value = NULL; -@@ -2461,8 +2483,19 @@ wake_on_wlan_enable (NMDeviceWifi *self) - goto found; - } - wowl = NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE; -+ - found: -- return nm_platform_wifi_set_wake_on_wlan (NM_PLATFORM_GET, nm_device_get_ifindex (NM_DEVICE (self)), wowl); -+ if (wowl == NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE) { -+ priv->wowlan_restore = wowl; -+ return TRUE; -+ } -+ -+ priv->wowlan_restore = nm_platform_wifi_get_wake_on_wlan (NM_PLATFORM_GET, -+ nm_device_get_ifindex (NM_DEVICE (self))); -+ -+ return nm_platform_wifi_set_wake_on_wlan (NM_PLATFORM_GET, -+ nm_device_get_ifindex (NM_DEVICE (self)), -+ wowl); - } - - static NMActStageReturn -@@ -2659,8 +2692,6 @@ act_stage2_config (NMDevice *device, NMDeviceStateReason *out_failure_reason) - s_wireless = nm_connection_get_setting_wireless (connection); - g_assert (s_wireless); - -- wake_on_wlan_enable (self); -- - /* If we need secrets, get them */ - setting_name = nm_connection_need_secrets (connection, NULL); - if (setting_name) { -@@ -2677,6 +2708,9 @@ act_stage2_config (NMDevice *device, NMDeviceStateReason *out_failure_reason) - goto out; - } - -+ if (!wake_on_wlan_enable (self)) -+ _LOGW (LOGD_DEVICE | LOGD_WIFI, "Cannot configure WoWLAN."); -+ - /* have secrets, or no secrets required */ - if (nm_connection_get_setting_wireless_security (connection)) { - _LOGI (LOGD_DEVICE | LOGD_WIFI, -@@ -2727,8 +2761,10 @@ act_stage2_config (NMDevice *device, NMDeviceStateReason *out_failure_reason) - ret = NM_ACT_STAGE_RETURN_POSTPONE; - - out: -- if (ret == NM_ACT_STAGE_RETURN_FAILURE) -+ if (ret == NM_ACT_STAGE_RETURN_FAILURE) { - cleanup_association_attempt (self, TRUE); -+ wake_on_wlan_restore (self); -+ } - - if (config) { - /* Supplicant interface object refs the config; we no longer care about -@@ -3134,7 +3170,8 @@ reapply_connection (NMDevice *device, NMConnection *con_old, NMConnection *con_n - - _LOGD (LOGD_DEVICE, "reapplying wireless settings"); - -- wake_on_wlan_enable (self); -+ if (!wake_on_wlan_enable (self)) -+ _LOGW (LOGD_DEVICE | LOGD_WIFI, "Cannot configure WoWLAN."); - } - - /*****************************************************************************/ -@@ -3207,6 +3244,7 @@ nm_device_wifi_init (NMDeviceWifi *self) - c_list_init (&priv->aps_lst_head); - - priv->mode = NM_802_11_MODE_INFRA; -+ priv->wowlan_restore = NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE; - } - - static void -diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c -index 9bd662a..33a05ab 100644 ---- a/src/platform/nm-linux-platform.c -+++ b/src/platform/nm-linux-platform.c -@@ -6092,6 +6092,13 @@ wifi_indicate_addressing_running (NMPlatform *platform, int ifindex, gboolean ru - wifi_utils_indicate_addressing_running (wifi_data, running); - } - -+static NMSettingWirelessWakeOnWLan -+wifi_get_wake_on_wlan (NMPlatform *platform, int ifindex) -+{ -+ WIFI_GET_WIFI_DATA_NETNS (wifi_data, platform, ifindex, FALSE); -+ return wifi_utils_get_wake_on_wlan (wifi_data); -+} -+ - static gboolean - wifi_set_wake_on_wlan (NMPlatform *platform, int ifindex, - NMSettingWirelessWakeOnWLan wowl) -@@ -7238,6 +7245,7 @@ nm_linux_platform_class_init (NMLinuxPlatformClass *klass) - platform_class->wifi_set_powersave = wifi_set_powersave; - platform_class->wifi_find_frequency = wifi_find_frequency; - platform_class->wifi_indicate_addressing_running = wifi_indicate_addressing_running; -+ platform_class->wifi_get_wake_on_wlan = wifi_get_wake_on_wlan; - platform_class->wifi_set_wake_on_wlan = wifi_set_wake_on_wlan; - - platform_class->mesh_get_channel = mesh_get_channel; -diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c -index f75019e..96bb292 100644 ---- a/src/platform/nm-platform.c -+++ b/src/platform/nm-platform.c -@@ -2888,6 +2888,16 @@ nm_platform_wifi_indicate_addressing_running (NMPlatform *self, int ifindex, gbo - klass->wifi_indicate_addressing_running (self, ifindex, running); - } - -+NMSettingWirelessWakeOnWLan -+nm_platform_wifi_get_wake_on_wlan (NMPlatform *self, int ifindex) -+{ -+ _CHECK_SELF (self, klass, FALSE); -+ -+ g_return_val_if_fail (ifindex > 0, FALSE); -+ -+ return klass->wifi_get_wake_on_wlan (self, ifindex); -+} -+ - gboolean - nm_platform_wifi_set_wake_on_wlan (NMPlatform *self, int ifindex, NMSettingWirelessWakeOnWLan wowl) - { -diff --git a/src/platform/nm-platform.h b/src/platform/nm-platform.h -index 866df73..84d10d2 100644 ---- a/src/platform/nm-platform.h -+++ b/src/platform/nm-platform.h -@@ -868,6 +868,7 @@ typedef struct { - void (*wifi_set_powersave) (NMPlatform *, int ifindex, guint32 powersave); - guint32 (*wifi_find_frequency) (NMPlatform *, int ifindex, const guint32 *freqs); - void (*wifi_indicate_addressing_running) (NMPlatform *, int ifindex, gboolean running); -+ NMSettingWirelessWakeOnWLan (*wifi_get_wake_on_wlan) (NMPlatform *, int ifindex); - gboolean (*wifi_set_wake_on_wlan) (NMPlatform *, int ifindex, NMSettingWirelessWakeOnWLan wowl); - - guint32 (*mesh_get_channel) (NMPlatform *, int ifindex); -@@ -1247,6 +1248,7 @@ void nm_platform_wifi_set_mode (NMPlatform *self, int ifindex, NM - void nm_platform_wifi_set_powersave (NMPlatform *self, int ifindex, guint32 powersave); - guint32 nm_platform_wifi_find_frequency (NMPlatform *self, int ifindex, const guint32 *freqs); - void nm_platform_wifi_indicate_addressing_running (NMPlatform *self, int ifindex, gboolean running); -+NMSettingWirelessWakeOnWLan nm_platform_wifi_get_wake_on_wlan (NMPlatform *self, int ifindex); - gboolean nm_platform_wifi_set_wake_on_wlan (NMPlatform *self, int ifindex, NMSettingWirelessWakeOnWLan wowl); - - guint32 nm_platform_mesh_get_channel (NMPlatform *self, int ifindex); -diff --git a/src/platform/wifi/wifi-utils-nl80211.c b/src/platform/wifi/wifi-utils-nl80211.c -index 6c2ff3f..518e39c 100644 ---- a/src/platform/wifi/wifi-utils-nl80211.c -+++ b/src/platform/wifi/wifi-utils-nl80211.c -@@ -271,6 +271,60 @@ nla_put_failure: - return FALSE; - } - -+static int -+nl80211_get_wake_on_wlan_handler (struct nl_msg *msg, void *arg) -+{ -+ NMSettingWirelessWakeOnWLan *wowl = arg; -+ struct nlattr *attrs[NL80211_ATTR_MAX + 1]; -+ struct nlattr *trig[NUM_NL80211_WOWLAN_TRIG]; -+ struct genlmsghdr *gnlh = nlmsg_data (nlmsg_hdr (msg)); -+ -+ nla_parse (attrs, NL80211_ATTR_MAX, genlmsg_attrdata(gnlh, 0), -+ genlmsg_attrlen(gnlh, 0), NULL); -+ -+ if (!attrs[NL80211_ATTR_WOWLAN_TRIGGERS]) -+ return NL_SKIP; -+ -+ nla_parse (trig, MAX_NL80211_WOWLAN_TRIG, -+ nla_data (attrs[NL80211_ATTR_WOWLAN_TRIGGERS]), -+ nla_len (attrs[NL80211_ATTR_WOWLAN_TRIGGERS]), -+ NULL); -+ -+ *wowl = NM_SETTING_WIRELESS_WAKE_ON_WLAN_NONE; -+ if (trig[NL80211_WOWLAN_TRIG_ANY]) -+ *wowl |= NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY; -+ if (trig[NL80211_WOWLAN_TRIG_DISCONNECT]) -+ *wowl |= NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT; -+ if (trig[NL80211_WOWLAN_TRIG_MAGIC_PKT]) -+ *wowl |= NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC; -+ if (trig[NL80211_WOWLAN_TRIG_GTK_REKEY_FAILURE]) -+ *wowl |= NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE; -+ if (trig[NL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST]) -+ *wowl |= NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST; -+ if (trig[NL80211_WOWLAN_TRIG_4WAY_HANDSHAKE]) -+ *wowl |= NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE; -+ if (trig[NL80211_WOWLAN_TRIG_RFKILL_RELEASE]) -+ *wowl |= NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE; -+ if (trig[NL80211_WOWLAN_TRIG_TCP_CONNECTION]) -+ *wowl |= NM_SETTING_WIRELESS_WAKE_ON_WLAN_TCP; -+ -+ return NL_SKIP; -+} -+ -+static NMSettingWirelessWakeOnWLan -+wifi_nl80211_get_wake_on_wlan (WifiData *data) -+{ -+ WifiDataNl80211 *nl80211 = (WifiDataNl80211 *) data; -+ NMSettingWirelessWakeOnWLan wowl = NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE; -+ nm_auto_nlmsg struct nl_msg *msg = NULL; -+ -+ msg = nl80211_alloc_msg (nl80211, NL80211_CMD_GET_WOWLAN, 0); -+ -+ nl80211_send_and_recv (nl80211, msg, nl80211_get_wake_on_wlan_handler, &wowl); -+ -+ return wowl; -+} -+ - static gboolean - wifi_nl80211_set_wake_on_wlan (WifiData *data, NMSettingWirelessWakeOnWLan wowl) - { -@@ -282,11 +336,11 @@ wifi_nl80211_set_wake_on_wlan (WifiData *data, NMSettingWirelessWakeOnWLan wowl) - if (wowl == NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE) - return TRUE; - -- msg = nl80211_alloc_msg(nl80211, NL80211_CMD_SET_WOWLAN, 0); -+ msg = nl80211_alloc_msg (nl80211, NL80211_CMD_SET_WOWLAN, 0); - if (!msg) - return FALSE; - -- triggers = nla_nest_start(msg, NL80211_ATTR_WOWLAN_TRIGGERS); -+ triggers = nla_nest_start (msg, NL80211_ATTR_WOWLAN_TRIGGERS); - - if (NM_FLAGS_HAS (wowl, NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY)) - NLA_PUT_FLAG (msg, NL80211_WOWLAN_TRIG_ANY); -@@ -306,7 +360,8 @@ wifi_nl80211_set_wake_on_wlan (WifiData *data, NMSettingWirelessWakeOnWLan wowl) - nla_nest_end(msg, triggers); - - err = nl80211_send_and_recv (nl80211, msg, NULL, NULL); -- return err ? FALSE : TRUE; -+ -+ return err >= 0; - - nla_put_failure: - return FALSE; -@@ -887,6 +942,7 @@ wifi_nl80211_init (int ifindex) - .get_mode = wifi_nl80211_get_mode, - .set_mode = wifi_nl80211_set_mode, - .set_powersave = wifi_nl80211_set_powersave, -+ .get_wake_on_wlan = wifi_nl80211_get_wake_on_wlan, - .set_wake_on_wlan = wifi_nl80211_set_wake_on_wlan, - .get_freq = wifi_nl80211_get_freq, - .find_freq = wifi_nl80211_find_freq, -diff --git a/src/platform/wifi/wifi-utils-private.h b/src/platform/wifi/wifi-utils-private.h -index 627108c..dc5dec0 100644 ---- a/src/platform/wifi/wifi-utils-private.h -+++ b/src/platform/wifi/wifi-utils-private.h -@@ -34,6 +34,9 @@ typedef struct { - /* Set power saving mode on an interface */ - gboolean (*set_powersave) (WifiData *data, guint32 powersave); - -+ /* Get WakeOnWLAN configuration on an interface */ -+ NMSettingWirelessWakeOnWLan (*get_wake_on_wlan) (WifiData *data); -+ - /* Set WakeOnWLAN mode on an interface */ - gboolean (*set_wake_on_wlan) (WifiData *data, NMSettingWirelessWakeOnWLan wowl); - -diff --git a/src/platform/wifi/wifi-utils.c b/src/platform/wifi/wifi-utils.c -index b3dd92b..b704be1 100644 ---- a/src/platform/wifi/wifi-utils.c -+++ b/src/platform/wifi/wifi-utils.c -@@ -112,6 +112,16 @@ wifi_utils_set_powersave (WifiData *data, guint32 powersave) - return data->klass->set_powersave ? data->klass->set_powersave (data, powersave) : TRUE; - } - -+NMSettingWirelessWakeOnWLan -+wifi_utils_get_wake_on_wlan (WifiData *data) -+{ -+ g_return_val_if_fail (data != NULL, FALSE); -+ -+ return data->klass->get_wake_on_wlan -+ ? data->klass->get_wake_on_wlan (data) -+ : NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE; -+} -+ - gboolean - wifi_utils_set_wake_on_wlan (WifiData *data, NMSettingWirelessWakeOnWLan wowl) - { -diff --git a/src/platform/wifi/wifi-utils.h b/src/platform/wifi/wifi-utils.h -index c69561d..e454b71 100644 ---- a/src/platform/wifi/wifi-utils.h -+++ b/src/platform/wifi/wifi-utils.h -@@ -67,6 +67,8 @@ gboolean wifi_utils_get_wowlan (WifiData *data); - - gboolean wifi_utils_set_powersave (WifiData *data, guint32 powersave); - -+NMSettingWirelessWakeOnWLan wifi_utils_get_wake_on_wlan (WifiData *data); -+ - gboolean wifi_utils_set_wake_on_wlan (WifiData *data, NMSettingWirelessWakeOnWLan wowl); - - /* OLPC Mesh-only functions */ diff --git a/debian/patches/Provide-access-to-some-of-NM-s-interfaces-to-whoopsie.patch b/debian/patches/Provide-access-to-some-of-NM-s-interfaces-to-whoopsie.patch index d68739a3..36f76e90 100644 --- a/debian/patches/Provide-access-to-some-of-NM-s-interfaces-to-whoopsie.patch +++ b/debian/patches/Provide-access-to-some-of-NM-s-interfaces-to-whoopsie.patch @@ -9,10 +9,10 @@ when connected to 3G or other systems that are potentially billable. src/org.freedesktop.NetworkManager.conf | 13 +++++++++++++ 1 file changed, 13 insertions(+) -diff --git a/src/org.freedesktop.NetworkManager.conf b/src/org.freedesktop.NetworkManager.conf -index 6be1feb..3dd2350 100644 ---- a/src/org.freedesktop.NetworkManager.conf -+++ b/src/org.freedesktop.NetworkManager.conf +Index: network-manager/src/core/org.freedesktop.NetworkManager.conf +=================================================================== +--- network-manager.orig/src/core/org.freedesktop.NetworkManager.conf ++++ network-manager/src/core/org.freedesktop.NetworkManager.conf @@ -37,6 +37,19 @@ <allow own="org.freedesktop.NetworkManager.dnsmasq"/> <allow send_destination="org.freedesktop.NetworkManager.dnsmasq"/> diff --git a/debian/patches/Update-dnsmasq-parameters.patch b/debian/patches/Update-dnsmasq-parameters.patch index e0b89aa6..be5ecc08 100644 --- a/debian/patches/Update-dnsmasq-parameters.patch +++ b/debian/patches/Update-dnsmasq-parameters.patch @@ -6,14 +6,14 @@ Disable caching since it's a potential security issue (local dns cache poisoning See also: https://blueprints.launchpad.net/ubuntu/+spec/foundations-p-dns-resolving --- - src/dns/nm-dns-dnsmasq.c | 4 ++-- - src/dns/nm-dns-manager.c | 6 +++--- + src/core/dns/nm-dns-dnsmasq.c | 4 ++-- + src/core/dns/nm-dns-manager.c | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) -Index: network-manager/src/dns/nm-dns-dnsmasq.c +Index: network-manager/src/core/dns/nm-dns-dnsmasq.c =================================================================== ---- network-manager.orig/src/dns/nm-dns-dnsmasq.c -+++ network-manager/src/dns/nm-dns-dnsmasq.c +--- network-manager.orig/src/core/dns/nm-dns-dnsmasq.c ++++ network-manager/src/core/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"; @@ -25,11 +25,11 @@ Index: network-manager/src/dns/nm-dns-dnsmasq.c 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 +Index: network-manager/src/core/dns/nm-dns-manager.c =================================================================== ---- network-manager.orig/src/dns/nm-dns-manager.c -+++ network-manager/src/dns/nm-dns-manager.c -@@ -1696,12 +1696,12 @@ plugin_skip:; +--- network-manager.orig/src/core/dns/nm-dns-manager.c ++++ network-manager/src/core/dns/nm-dns-manager.c +@@ -1726,12 +1726,12 @@ plugin_skip:; NM_CAST_STRV_CC(nameservers), NM_CAST_STRV_CC(options)); @@ -41,10 +41,10 @@ Index: network-manager/src/dns/nm-dns-manager.c if (caching) { - const char *lladdr = "127.0.0.1"; + const char *lladdr = "127.0.1.1"; + gboolean need_edns0; + gboolean need_trust; - 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) +@@ -2031,7 +2031,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/dns-manager-don-t-merge-split-DNS-search-domains.patch b/debian/patches/dns-manager-don-t-merge-split-DNS-search-domains.patch deleted file mode 100644 index bc313505..00000000 --- a/debian/patches/dns-manager-don-t-merge-split-DNS-search-domains.patch +++ /dev/null @@ -1,88 +0,0 @@ -From: Mathieu Trudel-Lapierre <mathieu.trudel-lapierre@canonical.com> -Date: Wed, 15 Jun 2016 16:07:27 +0300 -Subject: dns-manager: don't merge split-DNS search domains - -Signed-off-by: Mathieu Trudel-Lapierre <mathieu.trudel-lapierre@canonical.com> -Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/1592721 ---- - src/dns/nm-dns-manager.c | 36 ++++++++++++++++++++---------------- - 1 file changed, 20 insertions(+), 16 deletions(-) - -Index: b/src/dns/nm-dns-manager.c -=================================================================== ---- a/src/dns/nm-dns-manager.c -+++ b/src/dns/nm-dns-manager.c -@@ -295,7 +295,7 @@ - } - - static void --merge_one_ip4_config (NMResolvConfData *rc, NMIP4Config *src) -+merge_one_ip4_config (NMResolvConfData *rc, NMIP4Config *src, gboolean never_default) - { - guint32 num, num_domains, num_searches, i; - -@@ -308,13 +308,14 @@ - num_domains = nm_ip4_config_get_num_domains (src); - num_searches = nm_ip4_config_get_num_searches (src); - -- for (i = 0; i < num_searches; i++) { -- const char *search; -- -- search = nm_ip4_config_get_search (src, i); -- if (!domain_is_valid (search, FALSE)) -- continue; -- add_string_item (rc->searches, search); -+ if (!never_default) { -+ for (i = 0; i < num_searches; i++) { -+ const char *search; -+ search = nm_ip4_config_get_search (src, i); -+ if (!domain_is_valid (search, FALSE)) -+ continue; -+ add_string_item (rc->searches, search); -+ } - } - - if (num_domains > 1 || !num_searches) { -@@ -351,7 +352,7 @@ - } - - static void --merge_one_ip6_config (NMResolvConfData *rc, NMIP6Config *src, const char *iface) -+merge_one_ip6_config (NMResolvConfData *rc, NMIP6Config *src, const char *iface, gboolean never_default) - { - guint32 num, num_domains, num_searches, i; - -@@ -378,13 +379,14 @@ - num_domains = nm_ip6_config_get_num_domains (src); - num_searches = nm_ip6_config_get_num_searches (src); - -- for (i = 0; i < num_searches; i++) { -- const char *search; -- -- search = nm_ip6_config_get_search (src, i); -- if (!domain_is_valid (search, FALSE)) -- continue; -- add_string_item (rc->searches, search); -+ if (!never_default) { -+ for (i = 0; i < num_searches; i++) { -+ const char *search; -+ search = nm_ip6_config_get_search (src, i); -+ if (!domain_is_valid (search, FALSE)) -+ continue; -+ add_string_item (rc->searches, search); -+ } - } - - if (num_domains > 1 || !num_searches) { -@@ -412,9 +414,9 @@ - NMDnsIPConfigData *data) - { - if (NM_IS_IP4_CONFIG (data->config)) -- merge_one_ip4_config (rc, (NMIP4Config *) data->config); -+ merge_one_ip4_config (rc, (NMIP4Config *) data->config, nm_ip4_config_get_never_default (data->config)); - else if (NM_IS_IP6_CONFIG (data->config)) -- merge_one_ip6_config (rc, (NMIP6Config *) data->config, data->iface); -+ merge_one_ip6_config (rc, (NMIP6Config *) data->config, data->iface, nm_ip4_config_get_never_default (data->config)); - else - g_return_if_reached (); - } diff --git a/debian/patches/gitlab_connection_ready.patch b/debian/patches/gitlab_connection_ready.patch deleted file mode 100644 index 7c25058a..00000000 --- a/debian/patches/gitlab_connection_ready.patch +++ /dev/null @@ -1,115 +0,0 @@ - -From 1043189ef6bd12475304bbe87f4f8daaf67402ec Mon Sep 17 00:00:00 2001 -From: Thomas Haller <thaller@redhat.com> -Date: Fri, 31 Jan 2020 00:54:46 +0100 -Subject: [PATCH 2/2] libnm: hide NMActiveConnection until NMRemoteConnection - is ready - -Generally, libnm's NMClient cache only wants to expose NMObjects that -are fully initalized. Most objects don't require anything special, -except NMRemoteConnection waits for the GetSettings() call to complete. - -NMObjects reference each other. For example, NMActiveConnection -references NMDevice and NMRemoteConnection. There is a desire that an -object is only ready, if the objects that it references are ready too. -In practice that is not done, because usually every objects references -other objects, that means all objects would be declared as non-ready -until they are all ready at the same time. Only NMRemoteConnection -implements is_ready() function. All other objects are declared ready -as they appear. This is also done this way, to cope with cycles where -objects reference each other. In practice, such cycles should not be -exposed by NetworkManager. However, libnm should be robust against that. - -This has the undesired effect that when you call AddAndActivate(), then -the NMActiveConnection might already be ready while its -NMRemoteConnection isn't. That means, ac.get_connection() will -initially return NULL, until the remote connection becomes ready. -Also add a special handling that NMActiveConnection waits for their -NMRemoteConnection to be ready, before being ready itself. ---- - libnm/nm-active-connection.c | 29 +++++++++++++++++++++++++++++ - libnm/nm-client.c | 8 ++++++++ - libnm/nm-libnm-utils.h | 2 ++ - 3 files changed, 39 insertions(+) - -diff --git a/libnm/nm-active-connection.c b/libnm/nm-active-connection.c -index aa8504e61d..ade2edbe73 100644 ---- a/libnm/nm-active-connection.c -+++ b/libnm/nm-active-connection.c -@@ -425,6 +425,33 @@ _nm_active_connection_state_changed_commit (NMActiveConnection *self, - _notify_event_state_changed, - g_object_ref (self)); - } -+/*****************************************************************************/ -+ -+static gboolean -+is_ready (NMObject *nmobj) -+{ -+ NMActiveConnectionPrivate *priv = NM_ACTIVE_CONNECTION_GET_PRIVATE (nmobj); -+ -+ /* Usually, we don't want to expose our NMObject instances until they are fully initialized. -+ * For NMRemoteSetting this means to wait until GetSettings() returns. -+ * -+ * Note that most object types reference each other (directly or indirectly). E.g. the -+ * NMActiveConnection refers to the NMRemoteConnection and the NMDevice instance. So, -+ * we don't want to hide them too long, otherwise basically the entire set of objects -+ * will be hidden until they are all initialized. So, usually, when a NMObject references -+ * objects that are not yet initialized, that reference will just be NULL but the object -+ * will be considered ready already. -+ * -+ * For NMActiveConnection referencing a NMRemoteConnection don't do that. Here we wait for the -+ * NMRemoteConnection to be ready as well. This is somewhat arbitrary special casing, but -+ * the effect is that when nm_client_add_and_activate*() returns, the NMActiveConnection already -+ * references a initialized NMRemoteConnection. -+ */ -+ if (!nml_dbus_property_o_is_ready_fully (&priv->property_o[PROPERTY_O_IDX_CONNECTION])) -+ return FALSE; -+ -+ return NM_OBJECT_CLASS (nm_active_connection_parent_class)->is_ready (nmobj); -+} - - /*****************************************************************************/ - -@@ -550,6 +577,8 @@ nm_active_connection_class_init (NMActiveConnectionClass *klass) - object_class->get_property = get_property; - object_class->finalize = finalize; - -+ nm_object_class->is_ready = is_ready; -+ - _NM_OBJECT_CLASS_INIT_PRIV_PTR_INDIRECT (nm_object_class, NMActiveConnection); - - _NM_OBJECT_CLASS_INIT_PROPERTY_O_FIELDS_N (nm_object_class, NMActiveConnectionPrivate, property_o); -diff --git a/libnm/nm-client.c b/libnm/nm-client.c -index 154ad1c992..a93a81c353 100644 ---- a/libnm/nm-client.c -+++ b/libnm/nm-client.c -@@ -1594,6 +1594,14 @@ nml_dbus_property_o_is_ready (const NMLDBusPropertyO *pr_o) - || !pr_o->owner_dbobj; - } - -+gboolean -+nml_dbus_property_o_is_ready_fully (const NMLDBusPropertyO *pr_o) -+{ -+ return !pr_o->owner_dbobj -+ || !pr_o->obj_watcher -+ || pr_o->nmobj; -+} -+ - static void - nml_dbus_property_o_notify_changed (NMLDBusPropertyO *pr_o, - NMClient *self) -diff --git a/libnm/nm-libnm-utils.h b/libnm/nm-libnm-utils.h -index f2affc5f62..28c9c1164c 100644 ---- a/libnm/nm-libnm-utils.h -+++ b/libnm/nm-libnm-utils.h -@@ -260,6 +260,8 @@ gpointer nml_dbus_property_o_get_obj (NMLDBusPropertyO *pr_o); - - gboolean nml_dbus_property_o_is_ready (const NMLDBusPropertyO *pr_o); - -+gboolean nml_dbus_property_o_is_ready_fully (const NMLDBusPropertyO *pr_o); -+ - void nml_dbus_property_o_clear (NMLDBusPropertyO *pr_o, - NMClient *client); - --- -2.24.1 diff --git a/debian/patches/series b/debian/patches/series index 6e85d4f0..31a4dd70 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -2,5 +2,4 @@ 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 ubuntu_revert_systemd.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 deleted file mode 100644 index 75b2fd2b..00000000 --- a/debian/patches/systemd-basic-missing_syscall-fix-syscall-numbers-for-x32.patch +++ /dev/null @@ -1,124 +0,0 @@ -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 */ diff --git a/debian/patches/ubuntu_revert_systemd.patch b/debian/patches/ubuntu_revert_systemd.patch index e6482f5b..2f5740cd 100644 --- a/debian/patches/ubuntu_revert_systemd.patch +++ b/debian/patches/ubuntu_revert_systemd.patch @@ -1,8 +1,8 @@ -diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c -index b377c85e..ab4f8305 100644 ---- a/src/platform/nm-linux-platform.c -+++ b/src/platform/nm-linux-platform.c -@@ -26,7 +26,6 @@ +Index: network-manager/src/core/platform/nm-linux-platform.c +=================================================================== +--- network-manager.orig/src/core/platform/nm-linux-platform.c ++++ network-manager/src/core/platform/nm-linux-platform.c +@@ -29,7 +29,6 @@ #include <poll.h> #include <sys/ioctl.h> #include <sys/socket.h> @@ -10,7 +10,7 @@ index b377c85e..ab4f8305 100644 #include <unistd.h> #include "nm-std-aux/unaligned.h" -@@ -9528,34 +9527,12 @@ constructed(GObject *_object) +@@ -9515,34 +9514,12 @@ constructed(GObject *_object) } } |