mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-29 23:10:18 +01:00
policy: don't autoconnect disabled modems
Normally, a device disabled via nm_device_interface_set_enabled() will shift into the UNAVAILABLE state. Modems, however, don't do that. Rather, they pretend that they are in the DISCONNECTED state, presumably to make it easier to re-enable them. To avoid accidentally re-enabling and autoconnecting a disabled modem, we need to explicitly make nm_device_interface_get_enabled() == true a prerequisite for autoconnecting.
This commit is contained in:
parent
e2d88f59e6
commit
ac27e33f0c
1 changed files with 11 additions and 0 deletions
|
|
@ -896,6 +896,9 @@ schedule_activate_check (NMPolicy *policy, NMDevice *device, guint delay_seconds
|
|||
if (state < NM_DEVICE_STATE_DISCONNECTED)
|
||||
return;
|
||||
|
||||
if (!nm_device_interface_get_enabled (NM_DEVICE_INTERFACE (device)))
|
||||
return;
|
||||
|
||||
if (!nm_device_autoconnect_allowed (device))
|
||||
return;
|
||||
|
||||
|
|
@ -1054,6 +1057,12 @@ nsps_changed (NMDeviceWimax *device, NMWimaxNsp *nsp, gpointer user_data)
|
|||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
modem_enabled_changed (NMDeviceModem *device, gpointer user_data)
|
||||
{
|
||||
schedule_activate_check ((NMPolicy *) (user_data), NM_DEVICE (device), 0);
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
gulong id;
|
||||
NMDevice *device;
|
||||
|
|
@ -1088,6 +1097,8 @@ device_added (NMManager *manager, NMDevice *device, gpointer user_data)
|
|||
_connect_device_signal (policy, device, "nsp-added", nsps_changed);
|
||||
_connect_device_signal (policy, device, "nsp-removed", nsps_changed);
|
||||
#endif
|
||||
} else if (NM_IS_DEVICE_MODEM (device)) {
|
||||
_connect_device_signal (policy, device, NM_DEVICE_MODEM_ENABLE_CHANGED, modem_enabled_changed);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue