diff --git a/NetworkManager/src/nm-manager.c b/NetworkManager/src/nm-manager.c index e5ebdb2..ba5f10f 100644 --- a/NetworkManager/src/nm-manager.c +++ b/NetworkManager/src/nm-manager.c @@ -23,6 +23,8 @@ #include #include #include +#include +#include #include "nm-manager.h" #include "nm-utils.h" @@ -386,6 +388,19 @@ nm_manager_update_state (NMManager *manager) } } + /*not set to disconndcted when there are routes*/ + { + FILE* routes_pipe; + char routes_char[4],*dummy; + int routes_int; + routes_pipe = popen( "/sbin/ip route | wc -l", "r"); + dummy = fgets( routes_char, 3, routes_pipe ); + routes_int = atoi(routes_char); + if( new_state == NM_STATE_DISCONNECTED && routes_int ) + new_state = NM_STATE_CONNECTED; + pclose(routes_pipe); + } + if (priv->state != new_state) { priv->state = new_state; g_object_notify (G_OBJECT (manager), NM_MANAGER_STATE);