mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-10-14 12:05:03 +00:00
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:
parent
07b9660263
commit
3b61adec74
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue