From: Jukka Rissanen Date: Mon, 12 Nov 2012 12:07:52 +0000 (+0200) Subject: vpnd: Add function that quits vpnd if no VPN configurations are found X-Git-Tag: 1.10~155 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4b68388a8c617c88e28ab7c3fa7c7fca9b439c68;p=platform%2Fupstream%2Fconnman.git vpnd: Add function that quits vpnd if no VPN configurations are found --- diff --git a/vpn/vpn-provider.c b/vpn/vpn-provider.c index 27783bc..a69b458 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(""); diff --git a/vpn/vpn.h b/vpn/vpn.h index 598c86d..2b36b30 100644 --- a/vpn/vpn.h +++ b/vpn/vpn.h @@ -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);