diff --git a/src/modem-manager/nm-modem-cdma.c b/src/modem-manager/nm-modem-cdma.c index 7000c5de82..57fc7d310c 100644 --- a/src/modem-manager/nm-modem-cdma.c +++ b/src/modem-manager/nm-modem-cdma.c @@ -341,7 +341,7 @@ real_get_setting_name (NMModem *modem) } static void -real_deactivate_quickly (NMModem *modem, NMDevice *device) +real_deactivate (NMModem *modem, NMDevice *device) { NMModemCdmaPrivate *priv = NM_MODEM_CDMA_GET_PRIVATE (modem); @@ -353,7 +353,7 @@ real_deactivate_quickly (NMModem *modem, NMDevice *device) priv->call = NULL; } - NM_MODEM_CLASS (nm_modem_cdma_parent_class)->deactivate_quickly (modem, device); + NM_MODEM_CLASS (nm_modem_cdma_parent_class)->deactivate (modem, device); } /*****************************************************************************/ @@ -391,7 +391,7 @@ nm_modem_cdma_class_init (NMModemCdmaClass *klass) modem_class->check_connection_compatible = real_check_connection_compatible; modem_class->complete_connection = real_complete_connection; modem_class->act_stage1_prepare = real_act_stage1_prepare; - modem_class->deactivate_quickly = real_deactivate_quickly; + modem_class->deactivate = real_deactivate; dbus_g_error_domain_register (NM_CDMA_ERROR, NULL, NM_TYPE_CDMA_ERROR); } diff --git a/src/modem-manager/nm-modem-gsm.c b/src/modem-manager/nm-modem-gsm.c index 525aa55b05..e3fa912f69 100644 --- a/src/modem-manager/nm-modem-gsm.c +++ b/src/modem-manager/nm-modem-gsm.c @@ -544,7 +544,7 @@ real_get_setting_name (NMModem *modem) } static void -real_deactivate_quickly (NMModem *modem, NMDevice *device) +real_deactivate (NMModem *modem, NMDevice *device) { NMModemGsmPrivate *priv = NM_MODEM_GSM_GET_PRIVATE (modem); @@ -558,7 +558,7 @@ real_deactivate_quickly (NMModem *modem, NMDevice *device) priv->pin_tries = 0; - NM_MODEM_CLASS (nm_modem_gsm_parent_class)->deactivate_quickly (modem, device); + NM_MODEM_CLASS (nm_modem_gsm_parent_class)->deactivate (modem, device); } @@ -597,7 +597,7 @@ nm_modem_gsm_class_init (NMModemGsmClass *klass) modem_class->check_connection_compatible = real_check_connection_compatible; modem_class->complete_connection = real_complete_connection; modem_class->act_stage1_prepare = real_act_stage1_prepare; - modem_class->deactivate_quickly = real_deactivate_quickly; + modem_class->deactivate = real_deactivate; dbus_g_error_domain_register (NM_GSM_ERROR, NULL, NM_TYPE_GSM_ERROR); } diff --git a/src/modem-manager/nm-modem.c b/src/modem-manager/nm-modem.c index 44937eedcc..17f78b452b 100644 --- a/src/modem-manager/nm-modem.c +++ b/src/modem-manager/nm-modem.c @@ -636,7 +636,7 @@ nm_modem_complete_connection (NMModem *self, } static void -real_deactivate_quickly (NMModem *self, NMDevice *device) +real_deactivate (NMModem *self, NMDevice *device) { NMModemPrivate *priv; const char *iface; @@ -690,9 +690,9 @@ real_deactivate_quickly (NMModem *self, NMDevice *device) } void -nm_modem_deactivate_quickly (NMModem *self, NMDevice *device) +nm_modem_deactivate (NMModem *self, NMDevice *device) { - NM_MODEM_GET_CLASS (self)->deactivate_quickly (self, device); + NM_MODEM_GET_CLASS (self)->deactivate (self, device); } static void @@ -1082,7 +1082,7 @@ nm_modem_class_init (NMModemClass *klass) object_class->finalize = finalize; klass->act_stage1_prepare = real_act_stage1_prepare; - klass->deactivate_quickly = real_deactivate_quickly; + klass->deactivate = real_deactivate; /* Properties */ g_object_class_install_property diff --git a/src/modem-manager/nm-modem.h b/src/modem-manager/nm-modem.h index f4f7be7985..177cde6dc9 100644 --- a/src/modem-manager/nm-modem.h +++ b/src/modem-manager/nm-modem.h @@ -82,7 +82,7 @@ typedef struct { const char **out_setting_name, NMDeviceStateReason *reason); - void (*deactivate_quickly) (NMModem *self, NMDevice *device); + void (*deactivate) (NMModem *self, NMDevice *device); /* Signals */ void (*ppp_stats) (NMModem *self, guint32 in_bytes, guint32 out_bytes); @@ -141,7 +141,7 @@ gboolean nm_modem_get_secrets (NMModem *modem, gboolean request_new, const char *hint); -void nm_modem_deactivate_quickly (NMModem *modem, NMDevice *device); +void nm_modem_deactivate (NMModem *modem, NMDevice *device); void nm_modem_device_state_changed (NMModem *modem, NMDeviceState new_state, diff --git a/src/nm-device-bt.c b/src/nm-device-bt.c index 8c8545b4bd..e6e09c51f0 100644 --- a/src/nm-device-bt.c +++ b/src/nm-device-bt.c @@ -962,7 +962,7 @@ real_act_stage4_get_ip4_config (NMDevice *device, } static void -real_deactivate_quickly (NMDevice *device) +real_deactivate (NMDevice *device) { NMDeviceBtPrivate *priv = NM_DEVICE_BT_GET_PRIVATE (device); @@ -972,7 +972,7 @@ real_deactivate_quickly (NMDevice *device) if (priv->bt_type == NM_BT_CAPABILITY_DUN) { if (priv->modem) { - nm_modem_deactivate_quickly (priv->modem, device); + nm_modem_deactivate (priv->modem, device); /* Since we're killing the Modem object before it'll get the * state change signal, simulate the state change here. @@ -1021,8 +1021,8 @@ real_deactivate_quickly (NMDevice *device) g_free (priv->rfcomm_iface); priv->rfcomm_iface = NULL; - if (NM_DEVICE_CLASS (nm_device_bt_parent_class)->deactivate_quickly) - NM_DEVICE_CLASS (nm_device_bt_parent_class)->deactivate_quickly (device); + if (NM_DEVICE_CLASS (nm_device_bt_parent_class)->deactivate) + NM_DEVICE_CLASS (nm_device_bt_parent_class)->deactivate (device); } /*****************************************************************************/ @@ -1150,7 +1150,7 @@ nm_device_bt_class_init (NMDeviceBtClass *klass) device_class->get_best_auto_connection = real_get_best_auto_connection; device_class->get_generic_capabilities = real_get_generic_capabilities; - device_class->deactivate_quickly = real_deactivate_quickly; + device_class->deactivate = real_deactivate; device_class->act_stage2_config = real_act_stage2_config; device_class->act_stage3_ip4_config_start = real_act_stage3_ip4_config_start; device_class->act_stage4_get_ip4_config = real_act_stage4_get_ip4_config; diff --git a/src/nm-device-ethernet.c b/src/nm-device-ethernet.c index 079d9cf1fe..e847fba5c1 100644 --- a/src/nm-device-ethernet.c +++ b/src/nm-device-ethernet.c @@ -1571,7 +1571,7 @@ real_act_stage4_get_ip4_config (NMDevice *device, } static void -real_deactivate_quickly (NMDevice *device) +real_deactivate (NMDevice *device) { NMDeviceEthernet *self = NM_DEVICE_ETHERNET (device); NMDeviceEthernetPrivate *priv = NM_DEVICE_ETHERNET_GET_PRIVATE (self); @@ -2031,7 +2031,7 @@ nm_device_ethernet_class_init (NMDeviceEthernetClass *klass) parent_class->act_stage2_config = real_act_stage2_config; parent_class->act_stage3_ip4_config_start = real_act_stage3_ip4_config_start; parent_class->act_stage4_get_ip4_config = real_act_stage4_get_ip4_config; - parent_class->deactivate_quickly = real_deactivate_quickly; + parent_class->deactivate = real_deactivate; parent_class->spec_match_list = spec_match_list; parent_class->connection_match_config = connection_match_config; diff --git a/src/nm-device-modem.c b/src/nm-device-modem.c index 362ff8575c..86870244fe 100644 --- a/src/nm-device-modem.c +++ b/src/nm-device-modem.c @@ -245,9 +245,9 @@ real_hw_bring_up (NMDevice *device, gboolean *no_firmware) } static void -real_deactivate_quickly (NMDevice *device) +real_deactivate (NMDevice *device) { - nm_modem_deactivate_quickly (NM_DEVICE_MODEM_GET_PRIVATE (device)->modem, device); + nm_modem_deactivate (NM_DEVICE_MODEM_GET_PRIVATE (device)->modem, device); } static NMActStageReturn @@ -416,7 +416,7 @@ nm_device_modem_class_init (NMDeviceModemClass *mclass) device_class->complete_connection = real_complete_connection; device_class->hw_is_up = real_hw_is_up; device_class->hw_bring_up = real_hw_bring_up; - device_class->deactivate_quickly = real_deactivate_quickly; + device_class->deactivate = real_deactivate; device_class->act_stage1_prepare = real_act_stage1_prepare; device_class->act_stage2_config = real_act_stage2_config; device_class->act_stage3_ip4_config_start = real_act_stage3_ip4_config_start; diff --git a/src/nm-device-wifi.c b/src/nm-device-wifi.c index c9eb620d69..cb04c06296 100644 --- a/src/nm-device-wifi.c +++ b/src/nm-device-wifi.c @@ -1250,7 +1250,7 @@ real_take_down (NMDevice *dev) } static void -real_deactivate_quickly (NMDevice *dev) +real_deactivate (NMDevice *dev) { NMDeviceWifi *self = NM_DEVICE_WIFI (dev); NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self); @@ -1286,16 +1286,11 @@ real_deactivate_quickly (NMDevice *dev) /* Reset MAC address back to initial address */ _set_hw_addr (self, priv->initial_hw_addr, "reset"); -} - -static void -real_deactivate (NMDevice *dev) -{ - NMDeviceWifi *self = NM_DEVICE_WIFI (dev); + /* Ensure we're in infrastructure mode after deactivation; some devices + * (usually older ones) don't scan well in adhoc mode. + */ nm_device_wifi_set_mode (self, NM_802_11_MODE_INFRA); - /* FIXME: Should we reset the scan interval here? */ -/* nm_device_wifi_set_scan_interval (app_data, self, NM_WIRELESS_SCAN_INTERVAL_ACTIVE); */ } static gboolean @@ -3828,7 +3823,6 @@ nm_device_wifi_class_init (NMDeviceWifiClass *klass) parent_class->act_stage4_ip4_config_timeout = real_act_stage4_ip4_config_timeout; parent_class->act_stage4_ip6_config_timeout = real_act_stage4_ip6_config_timeout; parent_class->deactivate = real_deactivate; - parent_class->deactivate_quickly = real_deactivate_quickly; parent_class->can_interrupt_activation = real_can_interrupt_activation; parent_class->spec_match_list = spec_match_list; diff --git a/src/nm-device.c b/src/nm-device.c index c2b1adaf01..0aaee1c7a4 100644 --- a/src/nm-device.c +++ b/src/nm-device.c @@ -2813,21 +2813,27 @@ dnsmasq_cleanup (NMDevice *self) } /* - * nm_device_deactivate_quickly + * nm_device_deactivate * - * Quickly deactivate a device, for things like sleep, etc. Doesn't - * clean much stuff up, and nm_device_deactivate() should be called - * on the device eventually. + * Remove a device's routing table entries and IP address. * */ -gboolean -nm_device_deactivate_quickly (NMDevice *self) +static void +nm_device_deactivate (NMDeviceInterface *device, NMDeviceStateReason reason) { - NMDevicePrivate *priv; + NMDevice *self = NM_DEVICE (device); + NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self); + NMDeviceStateReason ignored = NM_DEVICE_STATE_REASON_NONE; + gboolean tried_ipv6 = FALSE; - g_return_val_if_fail (NM_IS_DEVICE (self), FALSE); + g_return_if_fail (self != NULL); - priv = NM_DEVICE_GET_PRIVATE (self); + nm_log_info (LOGD_DEVICE, "(%s): deactivating device (reason: %d).", + nm_device_get_iface (self), reason); + + /* Save whether or not we tried IPv6 for later */ + if (NM_DEVICE_GET_PRIVATE (self)->ip6_manager) + tried_ipv6 = TRUE; /* Break the activation chain */ activation_source_clear (self, TRUE, AF_INET); @@ -2849,39 +2855,12 @@ nm_device_deactivate_quickly (NMDevice *self) nm_utils_do_sysctl (priv->ip6_accept_ra_path, "0\n"); /* Call device type-specific deactivation */ - if (NM_DEVICE_GET_CLASS (self)->deactivate_quickly) - NM_DEVICE_GET_CLASS (self)->deactivate_quickly (self); + if (NM_DEVICE_GET_CLASS (self)->deactivate) + NM_DEVICE_GET_CLASS (self)->deactivate (self); /* Tear down an existing activation request */ clear_act_request (self); - return TRUE; -} - -/* - * nm_device_deactivate - * - * Remove a device's routing table entries and IP address. - * - */ -static void -nm_device_deactivate (NMDeviceInterface *device, NMDeviceStateReason reason) -{ - NMDevice *self = NM_DEVICE (device); - NMDeviceStateReason ignored = NM_DEVICE_STATE_REASON_NONE; - gboolean tried_ipv6 = FALSE; - - g_return_if_fail (self != NULL); - - nm_log_info (LOGD_DEVICE, "(%s): deactivating device (reason: %d).", - nm_device_get_iface (self), reason); - - /* Check this before deactivate_quickly is run */ - if (NM_DEVICE_GET_PRIVATE (self)->ip6_manager) - tried_ipv6 = TRUE; - - nm_device_deactivate_quickly (self); - /* Take out any entries in the routing table and any IP address the device had. */ nm_system_device_flush_routes (self, tried_ipv6 ? AF_UNSPEC : AF_INET); nm_system_device_flush_addresses (self, tried_ipv6 ? AF_UNSPEC : AF_INET); @@ -2890,10 +2869,6 @@ nm_device_deactivate (NMDeviceInterface *device, NMDeviceStateReason reason) /* Clean up nameservers and addresses */ nm_device_set_ip4_config (self, NULL, FALSE, &ignored); nm_device_set_ip6_config (self, NULL, FALSE, &ignored); - - /* Call device type-specific deactivation */ - if (NM_DEVICE_GET_CLASS (self)->deactivate) - NM_DEVICE_GET_CLASS (self)->deactivate (self); } static gboolean diff --git a/src/nm-device.h b/src/nm-device.h index 94c8510be3..1d080eda50 100644 --- a/src/nm-device.h +++ b/src/nm-device.h @@ -115,7 +115,6 @@ typedef struct { NMIP6Config **config, NMDeviceStateReason *reason); void (* deactivate) (NMDevice *self); - void (* deactivate_quickly) (NMDevice *self); gboolean (* can_interrupt_activation) (NMDevice *self); @@ -175,7 +174,6 @@ void nm_device_activate_schedule_stage4_ip4_config_get (NMDevice *device); void nm_device_activate_schedule_stage4_ip4_config_timeout (NMDevice *device); void nm_device_activate_schedule_stage4_ip6_config_get (NMDevice *device); void nm_device_activate_schedule_stage4_ip6_config_timeout (NMDevice *device); -gboolean nm_device_deactivate_quickly (NMDevice *dev); gboolean nm_device_is_activating (NMDevice *dev); gboolean nm_device_can_interrupt_activation (NMDevice *self); gboolean nm_device_autoconnect_allowed (NMDevice *self); diff --git a/src/wimax/nm-device-wimax.c b/src/wimax/nm-device-wimax.c index 4b35a1cf45..a3f0b08dfc 100644 --- a/src/wimax/nm-device-wimax.c +++ b/src/wimax/nm-device-wimax.c @@ -804,7 +804,7 @@ force_disconnect (NMDeviceWimax *self, struct wmxsdk *sdk) } static void -real_deactivate_quickly (NMDevice *device) +real_deactivate (NMDevice *device) { NMDeviceWimax *self = NM_DEVICE_WIMAX (device); NMDeviceWimaxPrivate *priv = NM_DEVICE_WIMAX_GET_PRIVATE (self); @@ -1469,7 +1469,7 @@ nm_device_wimax_class_init (NMDeviceWimaxClass *klass) device_class->is_available = real_is_available; device_class->act_stage1_prepare = real_act_stage1_prepare; device_class->act_stage2_config = real_act_stage2_config; - device_class->deactivate_quickly = real_deactivate_quickly; + device_class->deactivate = real_deactivate; /* Properties */ g_object_class_install_property