aboutsummaryrefslogtreecommitdiffstats
path: root/src/frontends/android/jni/libandroidbridge/charonservice.c
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2013-04-16 14:40:19 +0200
committerTobias Brunner <tobias@strongswan.org>2013-05-03 15:11:20 +0200
commit18dab76bfa35afe6e6da5b1c945632c52a4b5de0 (patch)
treef34079c21691e3ab5debe0e8ae1d07ec242ca571 /src/frontends/android/jni/libandroidbridge/charonservice.c
parent37873f9994a8c5e470969c6c906669df1cbdddf6 (diff)
downloadstrongswan-18dab76bfa35afe6e6da5b1c945632c52a4b5de0.tar.bz2
strongswan-18dab76bfa35afe6e6da5b1c945632c52a4b5de0.tar.xz
android: Repurpose android-net to simply handle connectivity events
Using the events by NetworkManager/ConnectivityManager to trigger roam events instead of the events generated by the kernel-netlink plugin the noise level is much lower.
Diffstat (limited to 'src/frontends/android/jni/libandroidbridge/charonservice.c')
-rw-r--r--src/frontends/android/jni/libandroidbridge/charonservice.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/frontends/android/jni/libandroidbridge/charonservice.c b/src/frontends/android/jni/libandroidbridge/charonservice.c
index 4b2e58b25..9afedf616 100644
--- a/src/frontends/android/jni/libandroidbridge/charonservice.c
+++ b/src/frontends/android/jni/libandroidbridge/charonservice.c
@@ -1,7 +1,7 @@
/*
+ * Copyright (C) 2012-2013 Tobias Brunner
* Copyright (C) 2012 Giuliano Grassi
* Copyright (C) 2012 Ralf Sager
- * Copyright (C) 2012 Tobias Brunner
* Hochschule fuer Technik Rapperswil
*
* This program is free software; you can redistribute it and/or modify it
@@ -79,6 +79,11 @@ struct private_charonservice_t {
network_manager_t *network_manager;
/**
+ * Handle network events
+ */
+ android_net_t *net_handler;
+
+ /**
* CharonVpnService reference
*/
jobject vpn_service;
@@ -358,12 +363,14 @@ static bool charonservice_register(void *plugin, plugin_feature_t *feature,
private_charonservice_t *this = (private_charonservice_t*)charonservice;
if (reg)
{
+ this->net_handler = android_net_create();
lib->credmgr->add_set(lib->credmgr, &this->creds->set);
hydra->attributes->add_handler(hydra->attributes,
&this->attr->handler);
}
else
{
+ this->net_handler->destroy(this->net_handler);
lib->credmgr->remove_set(lib->credmgr, &this->creds->set);
hydra->attributes->remove_handler(hydra->attributes,
&this->attr->handler);
@@ -413,6 +420,10 @@ static void set_options(char *logfile)
/* don't install virtual IPs via kernel-netlink */
lib->settings->set_bool(lib->settings,
"charon.install_virtual_ip", FALSE);
+ /* kernel-netlink should not trigger roam events, we use Android's
+ * ConnectivityManager for that, much less noise */
+ lib->settings->set_bool(lib->settings,
+ "charon.plugins.kernel-netlink.roam_events", FALSE);
/* ignore tun devices (it's mostly tun0 but it may already be taken, ignore
* some others too) */
lib->settings->set_str(lib->settings,