aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2014-01-22 11:50:39 +0100
committerTobias Brunner <tobias@strongswan.org>2014-02-12 14:34:31 +0100
commit34d3bfcf14b31011e7b880f7ad1dfeba27aaeae6 (patch)
tree45d8c0a54e1ac5f7454cf1f00b311aa48f5d705f /src
parent4f8bd6d4049e2c1ce9aa33dd61522414fb078ec0 (diff)
downloadstrongswan-34d3bfcf14b31011e7b880f7ad1dfeba27aaeae6.tar.bz2
strongswan-34d3bfcf14b31011e7b880f7ad1dfeba27aaeae6.tar.xz
lib: Add global config namespace
Diffstat (limited to 'src')
-rw-r--r--src/_copyright/_copyright.c2
-rw-r--r--src/charon-cmd/charon-cmd.c2
-rw-r--r--src/charon-nm/charon-nm.c2
-rw-r--r--src/charon-tkm/src/charon-tkm.c2
-rw-r--r--src/charon/charon.c2
-rw-r--r--src/checksum/checksum_builder.c2
-rw-r--r--src/conftest/conftest.c2
-rw-r--r--src/dumm/ext/dumm.c2
-rw-r--r--src/dumm/main.c2
-rw-r--r--src/frontends/android/jni/libandroidbridge/charonservice.c2
-rw-r--r--src/frontends/osx/charon-xpc/charon-xpc.c2
-rw-r--r--src/libimcv/imcv.c2
-rw-r--r--src/libimcv/imv/imv_policy_manager.c2
-rw-r--r--src/libimcv/plugins/imv_os/pacman.c4
-rw-r--r--src/libpts/plugins/imv_attestation/attest.c2
-rw-r--r--src/libstrongswan/library.c4
-rw-r--r--src/libstrongswan/library.h16
-rw-r--r--src/libstrongswan/tests/test_runner.c4
-rw-r--r--src/manager/main.c2
-rw-r--r--src/medsrv/main.c2
-rw-r--r--src/openac/openac.c2
-rw-r--r--src/pki/pki.c2
-rw-r--r--src/pool/pool.c2
-rw-r--r--src/pt-tls-client/pt-tls-client.c2
-rw-r--r--src/scepclient/scepclient.c2
-rw-r--r--src/starter/starter.c2
-rw-r--r--src/stroke/stroke.c2
27 files changed, 44 insertions, 30 deletions
diff --git a/src/_copyright/_copyright.c b/src/_copyright/_copyright.c
index f9f0a859d..806f78062 100644
--- a/src/_copyright/_copyright.c
+++ b/src/_copyright/_copyright.c
@@ -76,7 +76,7 @@ main(int argc, char *argv[])
const char **notice = copyright;
const char **co;
- library_init(NULL);
+ library_init(NULL, "_copyright");
atexit(library_deinit);
while ((opt = getopt_long(argc, argv, "", opts, NULL)) != EOF)
diff --git a/src/charon-cmd/charon-cmd.c b/src/charon-cmd/charon-cmd.c
index 0c24fd146..13f97856f 100644
--- a/src/charon-cmd/charon-cmd.c
+++ b/src/charon-cmd/charon-cmd.c
@@ -322,7 +322,7 @@ int main(int argc, char *argv[])
dbg = dbg_stderr;
atexit(library_deinit);
- if (!library_init(NULL))
+ if (!library_init(NULL, "charon-cmd"))
{
exit(SS_RC_LIBSTRONGSWAN_INTEGRITY);
}
diff --git a/src/charon-nm/charon-nm.c b/src/charon-nm/charon-nm.c
index 9ce6dbaeb..12667ab19 100644
--- a/src/charon-nm/charon-nm.c
+++ b/src/charon-nm/charon-nm.c
@@ -161,7 +161,7 @@ int main(int argc, char *argv[])
dbg = dbg_syslog;
/* initialize library */
- if (!library_init(NULL))
+ if (!library_init(NULL, "charon-nm"))
{
library_deinit();
exit(SS_RC_LIBSTRONGSWAN_INTEGRITY);
diff --git a/src/charon-tkm/src/charon-tkm.c b/src/charon-tkm/src/charon-tkm.c
index 3db06743d..1e9fecd2d 100644
--- a/src/charon-tkm/src/charon-tkm.c
+++ b/src/charon-tkm/src/charon-tkm.c
@@ -250,7 +250,7 @@ int main(int argc, char *argv[])
dbg = dbg_syslog;
/* initialize library */
- if (!library_init(NULL))
+ if (!library_init(NULL, dmn_name))
{
library_deinit();
exit(status);
diff --git a/src/charon/charon.c b/src/charon/charon.c
index 340f852cd..d79969125 100644
--- a/src/charon/charon.c
+++ b/src/charon/charon.c
@@ -289,7 +289,7 @@ int main(int argc, char *argv[])
dbg = dbg_stderr;
/* initialize library */
- if (!library_init(NULL))
+ if (!library_init(NULL, "charon"))
{
library_deinit();
exit(SS_RC_LIBSTRONGSWAN_INTEGRITY);
diff --git a/src/checksum/checksum_builder.c b/src/checksum/checksum_builder.c
index ae9ba93b6..cc8185ecd 100644
--- a/src/checksum/checksum_builder.c
+++ b/src/checksum/checksum_builder.c
@@ -136,7 +136,7 @@ int main(int argc, char* argv[])
/* avoid confusing leak reports in build process */
setenv("LEAK_DETECTIVE_DISABLE", "1", 0);
/* don't use a strongswan.conf, forces integrity check to disabled */
- library_init("");
+ library_init("", "checksum_builder");
atexit(library_deinit);
integrity = integrity_checker_create(NULL);
diff --git a/src/conftest/conftest.c b/src/conftest/conftest.c
index faf9df91f..d935058cb 100644
--- a/src/conftest/conftest.c
+++ b/src/conftest/conftest.c
@@ -435,7 +435,7 @@ int main(int argc, char *argv[])
char *suite_file = "suite.conf", *test_file = NULL, *preload, *plugins;
file_logger_t *logger;
- if (!library_init(NULL))
+ if (!library_init(NULL, "conftest"))
{
library_deinit();
return SS_RC_LIBSTRONGSWAN_INTEGRITY;
diff --git a/src/dumm/ext/dumm.c b/src/dumm/ext/dumm.c
index 5acda3a9c..03ecbe40d 100644
--- a/src/dumm/ext/dumm.c
+++ b/src/dumm/ext/dumm.c
@@ -774,7 +774,7 @@ void Init_dumm()
/* there are too many to report, rubyruby... */
setenv("LEAK_DETECTIVE_DISABLE", "1", 1);
- library_init(NULL);
+ library_init(NULL, "dumm");
dumm = dumm_create(NULL);
diff --git a/src/dumm/main.c b/src/dumm/main.c
index 4cdf4682f..a53e1f67c 100644
--- a/src/dumm/main.c
+++ b/src/dumm/main.c
@@ -479,7 +479,7 @@ int main(int argc, char *argv[])
enumerator_t *enumerator;
guest_t *guest;
- library_init(NULL);
+ library_init(NULL, "dumm");
gtk_init(&argc, &argv);
pages = linked_list_create();
diff --git a/src/frontends/android/jni/libandroidbridge/charonservice.c b/src/frontends/android/jni/libandroidbridge/charonservice.c
index 60485b66f..d5a68bbc1 100644
--- a/src/frontends/android/jni/libandroidbridge/charonservice.c
+++ b/src/frontends/android/jni/libandroidbridge/charonservice.c
@@ -600,7 +600,7 @@ JNI_METHOD(CharonVpnService, initializeCharon, jboolean,
dbg = dbg_android;
/* initialize library */
- if (!library_init(NULL))
+ if (!library_init(NULL, "charon"))
{
library_deinit();
return FALSE;
diff --git a/src/frontends/osx/charon-xpc/charon-xpc.c b/src/frontends/osx/charon-xpc/charon-xpc.c
index 0a30ff866..74ad2140b 100644
--- a/src/frontends/osx/charon-xpc/charon-xpc.c
+++ b/src/frontends/osx/charon-xpc/charon-xpc.c
@@ -133,7 +133,7 @@ int main(int argc, char *argv[])
dbg = dbg_stderr;
atexit(library_deinit);
- if (!library_init(NULL))
+ if (!library_init(NULL, "charon-xpc"))
{
exit(SS_RC_LIBSTRONGSWAN_INTEGRITY);
}
diff --git a/src/libimcv/imcv.c b/src/libimcv/imcv.c
index b5862daee..aa55746fc 100644
--- a/src/libimcv/imcv.c
+++ b/src/libimcv/imcv.c
@@ -109,7 +109,7 @@ bool libimcv_init(bool is_imv)
else
{
/* we are the first to initialize libstrongswan */
- if (!library_init(NULL))
+ if (!library_init(NULL, "libimcv"))
{
return FALSE;
}
diff --git a/src/libimcv/imv/imv_policy_manager.c b/src/libimcv/imv/imv_policy_manager.c
index 61e0cd05b..15d291adf 100644
--- a/src/libimcv/imv/imv_policy_manager.c
+++ b/src/libimcv/imv/imv_policy_manager.c
@@ -288,7 +288,7 @@ int main(int argc, char *argv[])
atexit(library_deinit);
/* initialize library */
- if (!library_init(NULL))
+ if (!library_init(NULL, "imv_policy_manager"))
{
exit(SS_RC_LIBSTRONGSWAN_INTEGRITY);
}
diff --git a/src/libimcv/plugins/imv_os/pacman.c b/src/libimcv/plugins/imv_os/pacman.c
index 57cc62a08..019e2adb8 100644
--- a/src/libimcv/plugins/imv_os/pacman.c
+++ b/src/libimcv/plugins/imv_os/pacman.c
@@ -466,12 +466,12 @@ int main(int argc, char *argv[])
atexit(cleanup);
/* initialize library */
- if (!library_init(NULL))
+ if (!library_init(NULL, "pacman"))
{
exit(SS_RC_LIBSTRONGSWAN_INTEGRITY);
}
if (!lib->plugins->load(lib->plugins,
- lib->settings->get_str(lib->settings, "attest.load", "sqlite")))
+ lib->settings->get_str(lib->settings, "pacman.load", "sqlite")))
{
exit(SS_RC_INITIALIZATION_FAILED);
}
diff --git a/src/libpts/plugins/imv_attestation/attest.c b/src/libpts/plugins/imv_attestation/attest.c
index 4d25df3f4..6e63c2653 100644
--- a/src/libpts/plugins/imv_attestation/attest.c
+++ b/src/libpts/plugins/imv_attestation/attest.c
@@ -439,7 +439,7 @@ int main(int argc, char *argv[])
atexit(library_deinit);
/* initialize library */
- if (!library_init(NULL))
+ if (!library_init(NULL, "attest"))
{
exit(SS_RC_LIBSTRONGSWAN_INTEGRITY);
}
diff --git a/src/libstrongswan/library.c b/src/libstrongswan/library.c
index 72fc2fa44..e0876ef9f 100644
--- a/src/libstrongswan/library.c
+++ b/src/libstrongswan/library.c
@@ -145,6 +145,7 @@ void library_deinit()
threads_deinit();
backtrace_deinit();
+ free((void*)this->public.ns);
free(this);
lib = NULL;
}
@@ -234,7 +235,7 @@ static bool check_memwipe()
/*
* see header file
*/
-bool library_init(char *settings)
+bool library_init(char *settings, const char *namespace)
{
private_library_t *this;
printf_hook_t *pfh;
@@ -250,6 +251,7 @@ bool library_init(char *settings)
.public = {
.get = _get,
.set = _set,
+ .ns = strdup(namespace ?: "libstrongswan"),
},
.ref = 1,
);
diff --git a/src/libstrongswan/library.h b/src/libstrongswan/library.h
index e53cf09e2..4125328b7 100644
--- a/src/libstrongswan/library.h
+++ b/src/libstrongswan/library.h
@@ -1,4 +1,5 @@
/*
+ * Copyright (C) 2010-2014 Tobias Brunner
* Copyright (C) 2008 Martin Willi
* Hochschule fuer Technik Rapperswil
*
@@ -140,6 +141,12 @@ struct library_t {
bool (*set)(library_t *this, char *name, void *object);
/**
+ * Namespace used for settings etc. (i.e. the name of the binary that uses
+ * the library)
+ */
+ const char *ns;
+
+ /**
* Printf hook registering facility
*/
printf_hook_t *printf_hook;
@@ -239,12 +246,17 @@ struct library_t {
* Initialize library, creates "lib" instance.
*
* library_init() may be called multiple times in a single process, but each
- * caller should call library_deinit() for each call to library_init().
+ * caller must call library_deinit() for each call to library_init().
+ *
+ * The settings and namespace arguments are only used on the first call.
*
* @param settings file to read settings from, may be NULL for default
+ * @param namespace name of the binary that uses the library, determines
+ * the first section name when reading config options.
+ * Defaults to libstrongswan if NULL.
* @return FALSE if integrity check failed
*/
-bool library_init(char *settings);
+bool library_init(char *settings, const char *namespace);
/**
* Deinitialize library, destroys "lib" instance.
diff --git a/src/libstrongswan/tests/test_runner.c b/src/libstrongswan/tests/test_runner.c
index 1e46cfe8e..0b26ee128 100644
--- a/src/libstrongswan/tests/test_runner.c
+++ b/src/libstrongswan/tests/test_runner.c
@@ -65,7 +65,7 @@ static array_t *load_suites(test_configuration_t configs[],
bool old = FALSE;
int i;
- library_init(NULL);
+ library_init(NULL, "test-runner");
test_setup_handler();
@@ -178,7 +178,7 @@ static bool call_fixture(test_case_t *tcase, bool up)
*/
static bool pre_test(test_runner_init_t init)
{
- library_init(NULL);
+ library_init(NULL, "test-runner");
/* use non-blocking RNG to generate keys fast */
lib->settings->set_default_str(lib->settings,
diff --git a/src/manager/main.c b/src/manager/main.c
index 5c845b157..b6169082f 100644
--- a/src/manager/main.c
+++ b/src/manager/main.c
@@ -34,7 +34,7 @@ int main (int arc, char *argv[])
bool debug;
int threads, timeout;
- library_init(NULL);
+ library_init(NULL, "manager");
if (!lib->plugins->load(lib->plugins,
lib->settings->get_str(lib->settings, "manager.load", PLUGINS)))
{
diff --git a/src/medsrv/main.c b/src/medsrv/main.c
index 6f08b97e5..745fcc359 100644
--- a/src/medsrv/main.c
+++ b/src/medsrv/main.c
@@ -33,7 +33,7 @@ int main(int arc, char *argv[])
char *uri;
int timeout, threads;
- library_init(NULL);
+ library_init(NULL, "medsrv");
if (!lib->plugins->load(lib->plugins,
lib->settings->get_str(lib->settings, "medsrv.load", PLUGINS)))
{
diff --git a/src/openac/openac.c b/src/openac/openac.c
index 1996025e2..8862e9ab0 100644
--- a/src/openac/openac.c
+++ b/src/openac/openac.c
@@ -229,7 +229,7 @@ int main(int argc, char **argv)
/* initialize library */
atexit(library_deinit);
- if (!library_init(NULL))
+ if (!library_init(NULL, "openac"))
{
exit(SS_RC_LIBSTRONGSWAN_INTEGRITY);
}
diff --git a/src/pki/pki.c b/src/pki/pki.c
index ecc0702cd..eb614dd7f 100644
--- a/src/pki/pki.c
+++ b/src/pki/pki.c
@@ -168,7 +168,7 @@ static void remove_callback()
int main(int argc, char *argv[])
{
atexit(library_deinit);
- if (!library_init(NULL))
+ if (!library_init(NULL, "pki"))
{
exit(SS_RC_LIBSTRONGSWAN_INTEGRITY);
}
diff --git a/src/pool/pool.c b/src/pool/pool.c
index 05043cd8c..cc58f7890 100644
--- a/src/pool/pool.c
+++ b/src/pool/pool.c
@@ -1212,7 +1212,7 @@ int main(int argc, char *argv[])
atexit(library_deinit);
/* initialize library */
- if (!library_init(NULL))
+ if (!library_init(NULL, "pool"))
{
exit(SS_RC_LIBSTRONGSWAN_INTEGRITY);
}
diff --git a/src/pt-tls-client/pt-tls-client.c b/src/pt-tls-client/pt-tls-client.c
index e7d75f078..90edb0c8e 100644
--- a/src/pt-tls-client/pt-tls-client.c
+++ b/src/pt-tls-client/pt-tls-client.c
@@ -166,7 +166,7 @@ static void init()
PLUGIN_PROVIDE(CUSTOM, "pt-tls-client"),
PLUGIN_DEPENDS(CUSTOM, "tnccs-manager"),
};
- library_init(NULL);
+ library_init(NULL, "pt-tls-client");
libtnccs_init();
dbg = dbg_pt_tls;
diff --git a/src/scepclient/scepclient.c b/src/scepclient/scepclient.c
index ec892cc0b..d7abcb423 100644
--- a/src/scepclient/scepclient.c
+++ b/src/scepclient/scepclient.c
@@ -487,7 +487,7 @@ int main(int argc, char **argv)
err_t ugh = NULL;
/* initialize library */
- if (!library_init(NULL))
+ if (!library_init(NULL, "scepclient"))
{
library_deinit();
exit(SS_RC_LIBSTRONGSWAN_INTEGRITY);
diff --git a/src/starter/starter.c b/src/starter/starter.c
index 06eb142bd..87ad66dd9 100644
--- a/src/starter/starter.c
+++ b/src/starter/starter.c
@@ -419,7 +419,7 @@ int main (int argc, char **argv)
bool attach_gdb = FALSE;
bool load_warning = FALSE;
- library_init(NULL);
+ library_init(NULL, "starter");
atexit(library_deinit);
libhydra_init("starter");
diff --git a/src/stroke/stroke.c b/src/stroke/stroke.c
index 75f014516..69c8ea2a4 100644
--- a/src/stroke/stroke.c
+++ b/src/stroke/stroke.c
@@ -480,7 +480,7 @@ int main(int argc, char *argv[])
const stroke_token_t *token;
int res = 0;
- library_init(NULL);
+ library_init(NULL, "stroke");
atexit(library_deinit);
if (argc < 2)