diff options
Diffstat (limited to 'src/core/devices')
| -rw-r--r-- | src/core/devices/nm-device-ethernet.c | 10 | ||||
| -rw-r--r-- | src/core/devices/nm-device.c | 9 | ||||
| -rw-r--r-- | src/core/devices/wwan/nm-modem-ofono.c | 11 |
3 files changed, 19 insertions, 11 deletions
diff --git a/src/core/devices/nm-device-ethernet.c b/src/core/devices/nm-device-ethernet.c index 40c6d208..4788cdc6 100644 --- a/src/core/devices/nm-device-ethernet.c +++ b/src/core/devices/nm-device-ethernet.c @@ -1354,6 +1354,11 @@ wake_on_lan_enable(NMDevice *device) if (s_wired) { wol = nm_setting_wired_get_wake_on_lan(s_wired); password = nm_setting_wired_get_wake_on_lan_password(s_wired); + + /* NMSettingWired does not reject invalid flags. Filter them out here. */ + wol = (wol + & (NM_SETTING_WIRED_WAKE_ON_LAN_ALL | NM_SETTING_WIRED_WAKE_ON_LAN_EXCLUSIVE_FLAGS)); + if (wol != NM_SETTING_WIRED_WAKE_ON_LAN_DEFAULT) goto found; } @@ -1370,9 +1375,14 @@ wake_on_lan_enable(NMDevice *device) nm_log_dbg(LOGD_ETHER, "invalid default value %u for wake-on-lan", (guint) wol); wol = NM_SETTING_WIRED_WAKE_ON_LAN_DEFAULT; } + + wol = wol & (NM_SETTING_WIRED_WAKE_ON_LAN_ALL | NM_SETTING_WIRED_WAKE_ON_LAN_EXCLUSIVE_FLAGS); + if (wol != NM_SETTING_WIRED_WAKE_ON_LAN_DEFAULT) goto found; + wol = NM_SETTING_WIRED_WAKE_ON_LAN_IGNORE; + found: return nm_platform_ethtool_set_wake_on_lan(nm_device_get_platform(device), nm_device_get_ifindex(device), diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c index 6be9bc7c..2cda9b0d 100644 --- a/src/core/devices/nm-device.c +++ b/src/core/devices/nm-device.c @@ -6657,7 +6657,6 @@ device_link_changed(gpointer user_data) NMDeviceClass *klass = NM_DEVICE_GET_CLASS(self); NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE(self); gboolean ip_ifname_changed = FALSE; - gboolean hw_addr_changed; nm_auto_nmpobj const NMPObject *pllink_keep_alive = NULL; const NMPlatformLink *pllink; const char *str; @@ -6704,9 +6703,9 @@ device_link_changed(gpointer user_data) if (ifindex == nm_device_get_ip_ifindex(self)) _stats_update_counters_from_pllink(self, pllink); - had_hw_addr = (priv->hw_addr != NULL); - hw_addr_changed = nm_device_update_hw_address(self); - got_hw_addr = (!had_hw_addr && priv->hw_addr); + had_hw_addr = (priv->hw_addr != NULL); + nm_device_update_hw_address(self); + got_hw_addr = (!had_hw_addr && priv->hw_addr); nm_device_update_permanent_hw_address(self, FALSE); if (pllink->name[0] && !nm_streq(priv->iface, pllink->name)) { @@ -6757,8 +6756,6 @@ device_link_changed(gpointer user_data) /* Update DHCP, etc, if needed */ if (ip_ifname_changed) nm_device_update_dynamic_ip_setup(self, "IP interface changed"); - else if (hw_addr_changed) - nm_device_update_dynamic_ip_setup(self, "hw-address changed"); was_up = priv->up; priv->up = NM_FLAGS_HAS(pllink->n_ifi_flags, IFF_UP); diff --git a/src/core/devices/wwan/nm-modem-ofono.c b/src/core/devices/wwan/nm-modem-ofono.c index c003880e..fc27c3fd 100644 --- a/src/core/devices/wwan/nm-modem-ofono.c +++ b/src/core/devices/wwan/nm-modem-ofono.c @@ -739,7 +739,7 @@ handle_settings(GVariant *v_dict, gpointer user_data) gboolean ret = FALSE; const char *interface; const char *s; - const char **array; + gs_free const char **array = NULL; guint32 address_network, gateway_network; int ifindex; GError *error = NULL; @@ -838,15 +838,16 @@ handle_settings(GVariant *v_dict, gpointer user_data) } if (array) { gboolean any_good = FALSE; + gsize i; - for (; array[0]; array++) { - if (!nm_utils_parse_inaddr_bin(AF_INET, *array, NULL, &address_network) + for (i = 0; array[i]; i++) { + if (!nm_utils_parse_inaddr_bin(AF_INET, array[i], NULL, &address_network) || !address_network) { - _LOGW("invalid NameServer: %s", *array); + _LOGW("invalid NameServer: %s", array[i]); continue; } any_good = TRUE; - _LOGI("DNS: %s", *array); + _LOGI("DNS: %s", array[i]); nm_l3_config_data_add_nameserver(priv->l3cd_4, AF_INET, &address_network); } if (!any_good) { |