From ac27e33f0c948cad916305ff9e32d1ac59cfb27e Mon Sep 17 00:00:00 2001 From: Daniel Gnoutcheff Date: Tue, 2 Aug 2011 15:48:24 -0400 Subject: [PATCH] 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. --- src/nm-policy.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/nm-policy.c b/src/nm-policy.c index 20729fdc94..a42a0fa9bc 100644 --- a/src/nm-policy.c +++ b/src/nm-policy.c @@ -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); } }