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.
This commit is contained in:
Dan Williams 2011-02-24 11:27:42 -06:00
parent 07b9660263
commit 3b61adec74
11 changed files with 45 additions and 78 deletions

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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

View file

@ -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,

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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

View file

@ -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);

View file

@ -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