From d8dd859092e2c279894e3f9933a69907df9b03d0 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Sat, 6 Oct 2007 04:26:33 +0000 Subject: [PATCH] 2007-10-06 Dan Williams * src/NetworkManagerPolicy.c - (connection_removed): deactivate removed connections git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2941 4912f4e0-d625-0410-9fb7-b9a5a253dbdc --- ChangeLog | 5 +++++ src/NetworkManagerPolicy.c | 19 +++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4d83fec9c..19a534650 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-10-06 Dan Williams + + * src/NetworkManagerPolicy.c + - (connection_removed): deactivate removed connections + 2007-10-06 Dan Williams * libnm-util/nm-connection.c diff --git a/src/NetworkManagerPolicy.c b/src/NetworkManagerPolicy.c index bd66dff9b..ebcf6adf6 100644 --- a/src/NetworkManagerPolicy.c +++ b/src/NetworkManagerPolicy.c @@ -476,7 +476,7 @@ state_changed (NMManager *manager, NMState state, gpointer user_data) static void connection_added (NMManager *manager, NMConnection *connection, - NMConnectionType connection_type, + NMConnectionType connection_type, gpointer user_data) { NMPolicy *policy = (NMPolicy *) user_data; @@ -487,10 +487,25 @@ connection_added (NMManager *manager, static void connection_removed (NMManager *manager, NMConnection *connection, - NMConnectionType connection_type, + NMConnectionType connection_type, gpointer user_data) { NMPolicy *policy = (NMPolicy *) user_data; + GSList *iter; + + /* If the connection just removed was active, deactive it */ + for (iter = nm_manager_get_devices (manager); iter; iter = g_slist_next (iter)) { + NMDevice *device = (NMDevice *) iter->data; + NMActRequest *req = nm_device_get_act_request (device); + NMConnection *dev_connection; + + if (!req) + continue; + + dev_connection = nm_act_request_get_connection (req); + if (dev_connection == connection) + nm_device_interface_deactivate (NM_DEVICE_INTERFACE (device)); + } schedule_change_check (policy); }