From 3b61adec74227dbe2cc57d6b4e050e1ee43fc2e6 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Thu, 24 Feb 2011 11:27:42 -0600 Subject: [PATCH] core: consolidate deactivation methods deactivate_quickly is misnamed these days; it was originally used for quickly tearing down a device for sleep and such. But these days it's used for the bulk of device deactivation. Only the wifi class used the actual deactivate method. So combine the two and make device implementations less complicated. --- src/modem-manager/nm-modem-cdma.c | 6 ++-- src/modem-manager/nm-modem-gsm.c | 6 ++-- src/modem-manager/nm-modem.c | 8 ++--- src/modem-manager/nm-modem.h | 4 +-- src/nm-device-bt.c | 10 +++--- src/nm-device-ethernet.c | 4 +-- src/nm-device-modem.c | 6 ++-- src/nm-device-wifi.c | 14 +++----- src/nm-device.c | 59 +++++++++---------------------- src/nm-device.h | 2 -- src/wimax/nm-device-wimax.c | 4 +-- 11 files changed, 45 insertions(+), 78 deletions(-) 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