diff options
author | Jukka Rissanen <jukka.rissanen@linux.intel.com> | 2012-11-12 14:07:52 +0200 |
---|---|---|
committer | Patrik Flykt <patrik.flykt@linux.intel.com> | 2012-11-23 12:58:52 +0200 |
commit | 4b68388a8c617c88e28ab7c3fa7c7fca9b439c68 (patch) | |
tree | 3137067a48a48c70326a0fa79f09902fe8f57018 | |
parent | 64308ada36e2d65610a2431e67b67d2ad7abe98c (diff) | |
download | connman-4b68388a8c617c88e28ab7c3fa7c7fca9b439c68.tar.gz connman-4b68388a8c617c88e28ab7c3fa7c7fca9b439c68.tar.bz2 connman-4b68388a8c617c88e28ab7c3fa7c7fca9b439c68.zip |
vpnd: Add function that quits vpnd if no VPN configurations are found
-rw-r--r-- | vpn/vpn-provider.c | 22 | ||||
-rw-r--r-- | vpn/vpn.h | 1 |
2 files changed, 23 insertions, 0 deletions
diff --git a/vpn/vpn-provider.c b/vpn/vpn-provider.c index 27783bc2..a69b458e 100644 --- a/vpn/vpn-provider.c +++ b/vpn/vpn-provider.c @@ -2109,6 +2109,28 @@ void vpn_provider_driver_unregister(struct vpn_provider_driver *driver) driver_list = g_slist_remove(driver_list, driver); } +static gboolean check_vpn_count(gpointer data) +{ + if (configuration_count == 0) { + connman_info("No VPN configurations found, quitting."); + raise(SIGTERM); + } + + return FALSE; +} + +void __vpn_provider_check_connections(void) +{ + /* + * If we were started when there is no providers configured, + * then just quit. This happens when connman starts and its + * vpn plugin asks connman-vpnd if it has any connections + * configured. If there are none, then we can stop the vpn + * daemon. + */ + g_timeout_add(1000, check_vpn_count, NULL); +} + int __vpn_provider_init(gboolean do_routes) { DBG(""); @@ -87,6 +87,7 @@ int __vpn_provider_connect(struct vpn_provider *provider); int __vpn_provider_connect_path(const char *path); int __vpn_provider_disconnect(struct vpn_provider *provider); int __vpn_provider_remove(const char *path); +void __vpn_provider_check_connections(void); void __vpn_provider_cleanup(void); int __vpn_provider_init(gboolean handle_routes); |