core: generalize interface for enabling/disabling devices
We'll use it for WWAN too.
This commit is contained in:
@@ -355,3 +355,12 @@ nm_device_interface_can_assume_connection (NMDeviceInterface *device)
|
||||
return !!NM_DEVICE_INTERFACE_GET_INTERFACE (device)->connection_match_config;
|
||||
}
|
||||
|
||||
void
|
||||
nm_device_interface_set_enabled (NMDeviceInterface *device, gboolean enabled)
|
||||
{
|
||||
g_return_if_fail (NM_IS_DEVICE_INTERFACE (device));
|
||||
|
||||
if (NM_DEVICE_INTERFACE_GET_INTERFACE (device)->set_enabled)
|
||||
return NM_DEVICE_INTERFACE_GET_INTERFACE (device)->set_enabled (device, enabled);
|
||||
}
|
||||
|
||||
|
@@ -97,6 +97,8 @@ struct _NMDeviceInterface {
|
||||
|
||||
NMConnection * (*connection_match_config) (NMDeviceInterface *device, const GSList *specs);
|
||||
|
||||
void (*set_enabled) (NMDeviceInterface *device, gboolean enabled);
|
||||
|
||||
/* Signals */
|
||||
void (*state_changed) (NMDeviceInterface *device,
|
||||
NMDeviceState new_state,
|
||||
@@ -131,4 +133,6 @@ NMConnection * nm_device_interface_connection_match_config (NMDeviceInterface *d
|
||||
|
||||
gboolean nm_device_interface_can_assume_connection (NMDeviceInterface *device);
|
||||
|
||||
void nm_device_interface_set_enabled (NMDeviceInterface *device, gboolean enabled);
|
||||
|
||||
#endif /* NM_DEVICE_INTERFACE_H */
|
||||
|
@@ -69,8 +69,10 @@ static gboolean impl_device_get_access_points (NMDeviceWifi *device,
|
||||
|
||||
#define WIRELESS_SECRETS_TRIES "wireless-secrets-tries"
|
||||
|
||||
static void device_interface_init (NMDeviceInterface *iface_class);
|
||||
|
||||
G_DEFINE_TYPE (NMDeviceWifi, nm_device_wifi, NM_TYPE_DEVICE)
|
||||
G_DEFINE_TYPE_EXTENDED (NMDeviceWifi, nm_device_wifi, NM_TYPE_DEVICE, 0,
|
||||
G_IMPLEMENT_INTERFACE (NM_TYPE_DEVICE_INTERFACE, device_interface_init))
|
||||
|
||||
#define NM_DEVICE_WIFI_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_WIFI, NMDeviceWifiPrivate))
|
||||
|
||||
@@ -3420,15 +3422,13 @@ nm_device_wifi_get_activation_ap (NMDeviceWifi *self)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void
|
||||
nm_device_wifi_set_enabled (NMDeviceWifi *self, gboolean enabled)
|
||||
static void
|
||||
real_set_enabled (NMDeviceInterface *device, gboolean enabled)
|
||||
{
|
||||
NMDeviceWifiPrivate *priv;
|
||||
NMDeviceWifi *self = NM_DEVICE_WIFI (device);
|
||||
NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self);
|
||||
NMDeviceState state;
|
||||
|
||||
g_return_if_fail (NM_IS_DEVICE_WIFI (self));
|
||||
|
||||
priv = NM_DEVICE_WIFI_GET_PRIVATE (self);
|
||||
if (priv->enabled == enabled)
|
||||
return;
|
||||
|
||||
@@ -3490,6 +3490,12 @@ nm_device_wifi_new (const char *udi,
|
||||
NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
device_interface_init (NMDeviceInterface *iface_class)
|
||||
{
|
||||
iface_class->set_enabled = real_set_enabled;
|
||||
}
|
||||
|
||||
static void
|
||||
nm_device_wifi_init (NMDeviceWifi * self)
|
||||
{
|
||||
|
@@ -102,8 +102,6 @@ NM80211Mode nm_device_wifi_get_mode (NMDeviceWifi *self);
|
||||
|
||||
NMAccessPoint * nm_device_wifi_get_activation_ap (NMDeviceWifi *self);
|
||||
|
||||
void nm_device_wifi_set_enabled (NMDeviceWifi *self, gboolean enabled);
|
||||
|
||||
guint32 nm_device_wifi_get_ifindex (NMDeviceWifi *self);
|
||||
|
||||
RfKillState nm_device_wifi_get_ipw_rfkill_state (NMDeviceWifi *self);
|
||||
|
@@ -1184,7 +1184,7 @@ manager_set_wireless_enabled (NMManager *manager, gboolean enabled)
|
||||
/* enable/disable wireless devices as required */
|
||||
for (iter = priv->devices; iter; iter = iter->next) {
|
||||
if (NM_IS_DEVICE_WIFI (iter->data))
|
||||
nm_device_wifi_set_enabled (NM_DEVICE_WIFI (iter->data), enabled);
|
||||
nm_device_interface_set_enabled (NM_DEVICE_INTERFACE (iter->data), enabled);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1371,7 +1371,7 @@ add_device (NMManager *self, NMDevice *device)
|
||||
* then set this device's rfkill state based on the global state.
|
||||
*/
|
||||
nm_manager_rfkill_update (self);
|
||||
nm_device_wifi_set_enabled (NM_DEVICE_WIFI (device), priv->wireless_enabled);
|
||||
nm_device_interface_set_enabled (NM_DEVICE_INTERFACE (device), priv->wireless_enabled);
|
||||
}
|
||||
|
||||
type_desc = nm_device_get_type_desc (device);
|
||||
@@ -2562,7 +2562,7 @@ impl_manager_sleep (NMManager *self, gboolean sleep, GError **error)
|
||||
* to killswitch changes during sleep.
|
||||
*/
|
||||
if (NM_IS_DEVICE_WIFI (iter->data))
|
||||
nm_device_wifi_set_enabled (NM_DEVICE_WIFI (iter->data), wifi_enabled);
|
||||
nm_device_interface_set_enabled (NM_DEVICE_INTERFACE (iter->data), wifi_enabled);
|
||||
|
||||
nm_device_clear_autoconnect_inhibit (device);
|
||||
if (nm_device_interface_spec_match_list (NM_DEVICE_INTERFACE (device), unmanaged_specs))
|
||||
|
Reference in New Issue
Block a user