aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/plugins/android_log/android_log_plugin.c
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2012-02-16 18:17:09 +0100
committerTobias Brunner <tobias@strongswan.org>2012-08-08 15:07:43 +0200
commit162621ed573b73daa63f77c30c283bd5dcac9b2f (patch)
tree961077442f97dad168dba451e193f05b5fb7b545 /src/libcharon/plugins/android_log/android_log_plugin.c
parent657a3ba60907bffa943320621ecff7b45c89c156 (diff)
downloadstrongswan-162621ed573b73daa63f77c30c283bd5dcac9b2f.tar.bz2
strongswan-162621ed573b73daa63f77c30c283bd5dcac9b2f.tar.xz
Moved Android specific logger to separate plugin.
This is mainly because the other parts of the existing android plugin can not be built in the NDK (access to keystore and system properties are not part of the stable NDK libraries).
Diffstat (limited to 'src/libcharon/plugins/android_log/android_log_plugin.c')
-rw-r--r--src/libcharon/plugins/android_log/android_log_plugin.c76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/libcharon/plugins/android_log/android_log_plugin.c b/src/libcharon/plugins/android_log/android_log_plugin.c
new file mode 100644
index 000000000..6757c2210
--- /dev/null
+++ b/src/libcharon/plugins/android_log/android_log_plugin.c
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2012 Tobias Brunner
+ * Hochschule fuer Technik Rapperswil
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ */
+
+#include "android_log_plugin.h"
+#include "android_log_logger.h"
+
+#include <daemon.h>
+
+typedef struct private_android_log_plugin_t private_android_log_plugin_t;
+
+/**
+ * Private data of an android_log_plugin_t object.
+ */
+struct private_android_log_plugin_t {
+
+ /**
+ * Public android_log_plugin_t interface.
+ */
+ android_log_plugin_t public;
+
+ /**
+ * Android specific logger
+ */
+ android_log_logger_t *logger;
+
+};
+
+METHOD(plugin_t, get_name, char*,
+ private_android_log_plugin_t *this)
+{
+ return "android-log";
+}
+
+METHOD(plugin_t, destroy, void,
+ private_android_log_plugin_t *this)
+{
+ charon->bus->remove_logger(charon->bus, &this->logger->logger);
+ this->logger->destroy(this->logger);
+ free(this);
+}
+
+/**
+ * See header
+ */
+plugin_t *android_log_plugin_create()
+{
+ private_android_log_plugin_t *this;
+
+ INIT(this,
+ .public = {
+ .plugin = {
+ .get_name = _get_name,
+ .reload = (void*)return_false,
+ .destroy = _destroy,
+ },
+ },
+ .logger = android_log_logger_create(),
+ );
+
+ charon->bus->add_logger(charon->bus, &this->logger->logger);
+
+ return &this->public.plugin;
+}
+