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;
|
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);
|
NMConnection * (*connection_match_config) (NMDeviceInterface *device, const GSList *specs);
|
||||||
|
|
||||||
|
void (*set_enabled) (NMDeviceInterface *device, gboolean enabled);
|
||||||
|
|
||||||
/* Signals */
|
/* Signals */
|
||||||
void (*state_changed) (NMDeviceInterface *device,
|
void (*state_changed) (NMDeviceInterface *device,
|
||||||
NMDeviceState new_state,
|
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);
|
gboolean nm_device_interface_can_assume_connection (NMDeviceInterface *device);
|
||||||
|
|
||||||
|
void nm_device_interface_set_enabled (NMDeviceInterface *device, gboolean enabled);
|
||||||
|
|
||||||
#endif /* NM_DEVICE_INTERFACE_H */
|
#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"
|
#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))
|
#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;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
nm_device_wifi_set_enabled (NMDeviceWifi *self, gboolean enabled)
|
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;
|
NMDeviceState state;
|
||||||
|
|
||||||
g_return_if_fail (NM_IS_DEVICE_WIFI (self));
|
|
||||||
|
|
||||||
priv = NM_DEVICE_WIFI_GET_PRIVATE (self);
|
|
||||||
if (priv->enabled == enabled)
|
if (priv->enabled == enabled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -3490,6 +3490,12 @@ nm_device_wifi_new (const char *udi,
|
|||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
device_interface_init (NMDeviceInterface *iface_class)
|
||||||
|
{
|
||||||
|
iface_class->set_enabled = real_set_enabled;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
nm_device_wifi_init (NMDeviceWifi * self)
|
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);
|
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);
|
guint32 nm_device_wifi_get_ifindex (NMDeviceWifi *self);
|
||||||
|
|
||||||
RfKillState nm_device_wifi_get_ipw_rfkill_state (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 */
|
/* enable/disable wireless devices as required */
|
||||||
for (iter = priv->devices; iter; iter = iter->next) {
|
for (iter = priv->devices; iter; iter = iter->next) {
|
||||||
if (NM_IS_DEVICE_WIFI (iter->data))
|
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.
|
* then set this device's rfkill state based on the global state.
|
||||||
*/
|
*/
|
||||||
nm_manager_rfkill_update (self);
|
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);
|
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.
|
* to killswitch changes during sleep.
|
||||||
*/
|
*/
|
||||||
if (NM_IS_DEVICE_WIFI (iter->data))
|
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);
|
nm_device_clear_autoconnect_inhibit (device);
|
||||||
if (nm_device_interface_spec_match_list (NM_DEVICE_INTERFACE (device), unmanaged_specs))
|
if (nm_device_interface_spec_match_list (NM_DEVICE_INTERFACE (device), unmanaged_specs))
|
||||||
|
Reference in New Issue
Block a user