lib: Add global config namespace

This commit is contained in:
Tobias Brunner 2014-01-22 11:50:39 +01:00
parent 4f8bd6d404
commit 34d3bfcf14
38 changed files with 55 additions and 41 deletions

View File

@ -556,7 +556,7 @@ int main(int argc, char *argv[])
ctx.in = stdin; ctx.in = stdin;
ctx.out = stdout; ctx.out = stdout;
library_init(NULL); library_init(NULL, "aes-test");
atexit(library_deinit); atexit(library_deinit);
while (true) while (true)

View File

@ -26,7 +26,7 @@ int main(int argc, char *argv[])
int i = 0, limit = 0; int i = 0, limit = 0;
library_init(NULL); library_init(NULL, "crypt_burn");
lib->plugins->load(lib->plugins, PLUGINS); lib->plugins->load(lib->plugins, PLUGINS);
atexit(library_deinit); atexit(library_deinit);

View File

@ -118,7 +118,7 @@ int main(int argc, char *argv[])
usage(); usage();
} }
library_init(NULL); library_init(NULL, "dh_speed");
lib->plugins->load(lib->plugins, argv[1]); lib->plugins->load(lib->plugins, argv[1]);
atexit(library_deinit); atexit(library_deinit);

View File

@ -45,7 +45,7 @@ int main(int argc, char *argv[])
rr_set_t *rrset; rr_set_t *rrset;
rr_t *rr; rr_t *rr;
library_init(NULL); library_init(NULL, "dnssec");
atexit(library_deinit); atexit(library_deinit);
dbg = dbg_dnssec; dbg = dbg_dnssec;

View File

@ -35,7 +35,7 @@ int main(int argc, char *argv[])
{ {
chunk_t res; chunk_t res;
library_init(NULL); library_init(NULL, "fetch");
atexit(library_deinit); atexit(library_deinit);
lib->plugins->load(lib->plugins, PLUGINS); lib->plugins->load(lib->plugins, PLUGINS);

View File

@ -25,7 +25,7 @@ int main(int argc, char *argv[])
char buffer[1024]; char buffer[1024];
int limit = 0, i = 0; int limit = 0, i = 0;
library_init(NULL); library_init(NULL, "hash_burn");
lib->plugins->load(lib->plugins, PLUGINS); lib->plugins->load(lib->plugins, PLUGINS);
atexit(library_deinit); atexit(library_deinit);

View File

@ -30,7 +30,7 @@ int main(int argc, char *argv[])
char buf[8096]; char buf[8096];
int read; int read;
library_init(NULL); library_init(NULL, "key2keyid");
lib->plugins->load(lib->plugins, PLUGINS); lib->plugins->load(lib->plugins, PLUGINS);
atexit(library_deinit); atexit(library_deinit);

View File

@ -30,7 +30,7 @@ int main(int argc, char *argv[])
char buf[8096]; char buf[8096];
int read, n; int read, n;
library_init(NULL); library_init(NULL, "keyid2sql");
lib->plugins->load(lib->plugins, PLUGINS); lib->plugins->load(lib->plugins, PLUGINS);
atexit(library_deinit); atexit(library_deinit);

View File

@ -58,7 +58,7 @@ int main(int argc, char *argv[])
int sizes[16] = { 1, 13, 100, 1000, 16, 10000, 50, 17, int sizes[16] = { 1, 13, 100, 1000, 16, 10000, 50, 17,
123, 32, 8, 64, 8096, 1024, 123, 9 }; 123, 32, 8, 64, 8096, 1024, 123, 9 };
library_init(NULL); library_init(NULL, "malloc_speed");
atexit(library_deinit); atexit(library_deinit);
print_mallinfo(); print_mallinfo();

View File

@ -71,7 +71,7 @@ int main(int argc, char *argv[])
usage(); usage();
} }
library_init(NULL); library_init(NULL, "pubkey_speed");
lib->plugins->load(lib->plugins, argv[1]); lib->plugins->load(lib->plugins, argv[1]);
atexit(library_deinit); atexit(library_deinit);

View File

@ -251,7 +251,7 @@ static void cleanup()
*/ */
static void init() static void init()
{ {
library_init(NULL); library_init(NULL, "tls_test");
dbg = dbg_tls; dbg = dbg_tls;

View File

@ -76,7 +76,7 @@ main(int argc, char *argv[])
const char **notice = copyright; const char **notice = copyright;
const char **co; const char **co;
library_init(NULL); library_init(NULL, "_copyright");
atexit(library_deinit); atexit(library_deinit);
while ((opt = getopt_long(argc, argv, "", opts, NULL)) != EOF) while ((opt = getopt_long(argc, argv, "", opts, NULL)) != EOF)

View File

@ -322,7 +322,7 @@ int main(int argc, char *argv[])
dbg = dbg_stderr; dbg = dbg_stderr;
atexit(library_deinit); atexit(library_deinit);
if (!library_init(NULL)) if (!library_init(NULL, "charon-cmd"))
{ {
exit(SS_RC_LIBSTRONGSWAN_INTEGRITY); exit(SS_RC_LIBSTRONGSWAN_INTEGRITY);
} }

View File

@ -161,7 +161,7 @@ int main(int argc, char *argv[])
dbg = dbg_syslog; dbg = dbg_syslog;
/* initialize library */ /* initialize library */
if (!library_init(NULL)) if (!library_init(NULL, "charon-nm"))
{ {
library_deinit(); library_deinit();
exit(SS_RC_LIBSTRONGSWAN_INTEGRITY); exit(SS_RC_LIBSTRONGSWAN_INTEGRITY);

View File

@ -250,7 +250,7 @@ int main(int argc, char *argv[])
dbg = dbg_syslog; dbg = dbg_syslog;
/* initialize library */ /* initialize library */
if (!library_init(NULL)) if (!library_init(NULL, dmn_name))
{ {
library_deinit(); library_deinit();
exit(status); exit(status);

View File

@ -289,7 +289,7 @@ int main(int argc, char *argv[])
dbg = dbg_stderr; dbg = dbg_stderr;
/* initialize library */ /* initialize library */
if (!library_init(NULL)) if (!library_init(NULL, "charon"))
{ {
library_deinit(); library_deinit();
exit(SS_RC_LIBSTRONGSWAN_INTEGRITY); exit(SS_RC_LIBSTRONGSWAN_INTEGRITY);

View File

@ -136,7 +136,7 @@ int main(int argc, char* argv[])
/* avoid confusing leak reports in build process */ /* avoid confusing leak reports in build process */
setenv("LEAK_DETECTIVE_DISABLE", "1", 0); setenv("LEAK_DETECTIVE_DISABLE", "1", 0);
/* don't use a strongswan.conf, forces integrity check to disabled */ /* don't use a strongswan.conf, forces integrity check to disabled */
library_init(""); library_init("", "checksum_builder");
atexit(library_deinit); atexit(library_deinit);
integrity = integrity_checker_create(NULL); integrity = integrity_checker_create(NULL);

View File

@ -435,7 +435,7 @@ int main(int argc, char *argv[])
char *suite_file = "suite.conf", *test_file = NULL, *preload, *plugins; char *suite_file = "suite.conf", *test_file = NULL, *preload, *plugins;
file_logger_t *logger; file_logger_t *logger;
if (!library_init(NULL)) if (!library_init(NULL, "conftest"))
{ {
library_deinit(); library_deinit();
return SS_RC_LIBSTRONGSWAN_INTEGRITY; return SS_RC_LIBSTRONGSWAN_INTEGRITY;

View File

@ -774,7 +774,7 @@ void Init_dumm()
/* there are too many to report, rubyruby... */ /* there are too many to report, rubyruby... */
setenv("LEAK_DETECTIVE_DISABLE", "1", 1); setenv("LEAK_DETECTIVE_DISABLE", "1", 1);
library_init(NULL); library_init(NULL, "dumm");
dumm = dumm_create(NULL); dumm = dumm_create(NULL);

View File

@ -479,7 +479,7 @@ int main(int argc, char *argv[])
enumerator_t *enumerator; enumerator_t *enumerator;
guest_t *guest; guest_t *guest;
library_init(NULL); library_init(NULL, "dumm");
gtk_init(&argc, &argv); gtk_init(&argc, &argv);
pages = linked_list_create(); pages = linked_list_create();

View File

@ -600,7 +600,7 @@ JNI_METHOD(CharonVpnService, initializeCharon, jboolean,
dbg = dbg_android; dbg = dbg_android;
/* initialize library */ /* initialize library */
if (!library_init(NULL)) if (!library_init(NULL, "charon"))
{ {
library_deinit(); library_deinit();
return FALSE; return FALSE;

View File

@ -133,7 +133,7 @@ int main(int argc, char *argv[])
dbg = dbg_stderr; dbg = dbg_stderr;
atexit(library_deinit); atexit(library_deinit);
if (!library_init(NULL)) if (!library_init(NULL, "charon-xpc"))
{ {
exit(SS_RC_LIBSTRONGSWAN_INTEGRITY); exit(SS_RC_LIBSTRONGSWAN_INTEGRITY);
} }

View File

@ -109,7 +109,7 @@ bool libimcv_init(bool is_imv)
else else
{ {
/* we are the first to initialize libstrongswan */ /* we are the first to initialize libstrongswan */
if (!library_init(NULL)) if (!library_init(NULL, "libimcv"))
{ {
return FALSE; return FALSE;
} }

View File

@ -288,7 +288,7 @@ int main(int argc, char *argv[])
atexit(library_deinit); atexit(library_deinit);
/* initialize library */ /* initialize library */
if (!library_init(NULL)) if (!library_init(NULL, "imv_policy_manager"))
{ {
exit(SS_RC_LIBSTRONGSWAN_INTEGRITY); exit(SS_RC_LIBSTRONGSWAN_INTEGRITY);
} }

View File

@ -466,12 +466,12 @@ int main(int argc, char *argv[])
atexit(cleanup); atexit(cleanup);
/* initialize library */ /* initialize library */
if (!library_init(NULL)) if (!library_init(NULL, "pacman"))
{ {
exit(SS_RC_LIBSTRONGSWAN_INTEGRITY); exit(SS_RC_LIBSTRONGSWAN_INTEGRITY);
} }
if (!lib->plugins->load(lib->plugins, 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); exit(SS_RC_INITIALIZATION_FAILED);
} }

View File

@ -439,7 +439,7 @@ int main(int argc, char *argv[])
atexit(library_deinit); atexit(library_deinit);
/* initialize library */ /* initialize library */
if (!library_init(NULL)) if (!library_init(NULL, "attest"))
{ {
exit(SS_RC_LIBSTRONGSWAN_INTEGRITY); exit(SS_RC_LIBSTRONGSWAN_INTEGRITY);
} }

View File

@ -145,6 +145,7 @@ void library_deinit()
threads_deinit(); threads_deinit();
backtrace_deinit(); backtrace_deinit();
free((void*)this->public.ns);
free(this); free(this);
lib = NULL; lib = NULL;
} }
@ -234,7 +235,7 @@ static bool check_memwipe()
/* /*
* see header file * see header file
*/ */
bool library_init(char *settings) bool library_init(char *settings, const char *namespace)
{ {
private_library_t *this; private_library_t *this;
printf_hook_t *pfh; printf_hook_t *pfh;
@ -250,6 +251,7 @@ bool library_init(char *settings)
.public = { .public = {
.get = _get, .get = _get,
.set = _set, .set = _set,
.ns = strdup(namespace ?: "libstrongswan"),
}, },
.ref = 1, .ref = 1,
); );

View File

@ -1,4 +1,5 @@
/* /*
* Copyright (C) 2010-2014 Tobias Brunner
* Copyright (C) 2008 Martin Willi * Copyright (C) 2008 Martin Willi
* Hochschule fuer Technik Rapperswil * Hochschule fuer Technik Rapperswil
* *
@ -139,6 +140,12 @@ struct library_t {
*/ */
bool (*set)(library_t *this, char *name, void *object); 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 registering facility
*/ */
@ -239,12 +246,17 @@ struct library_t {
* Initialize library, creates "lib" instance. * Initialize library, creates "lib" instance.
* *
* library_init() may be called multiple times in a single process, but each * 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 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 * @return FALSE if integrity check failed
*/ */
bool library_init(char *settings); bool library_init(char *settings, const char *namespace);
/** /**
* Deinitialize library, destroys "lib" instance. * Deinitialize library, destroys "lib" instance.

View File

@ -65,7 +65,7 @@ static array_t *load_suites(test_configuration_t configs[],
bool old = FALSE; bool old = FALSE;
int i; int i;
library_init(NULL); library_init(NULL, "test-runner");
test_setup_handler(); 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) 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 */ /* use non-blocking RNG to generate keys fast */
lib->settings->set_default_str(lib->settings, lib->settings->set_default_str(lib->settings,

View File

@ -34,7 +34,7 @@ int main (int arc, char *argv[])
bool debug; bool debug;
int threads, timeout; int threads, timeout;
library_init(NULL); library_init(NULL, "manager");
if (!lib->plugins->load(lib->plugins, if (!lib->plugins->load(lib->plugins,
lib->settings->get_str(lib->settings, "manager.load", PLUGINS))) lib->settings->get_str(lib->settings, "manager.load", PLUGINS)))
{ {

View File

@ -33,7 +33,7 @@ int main(int arc, char *argv[])
char *uri; char *uri;
int timeout, threads; int timeout, threads;
library_init(NULL); library_init(NULL, "medsrv");
if (!lib->plugins->load(lib->plugins, if (!lib->plugins->load(lib->plugins,
lib->settings->get_str(lib->settings, "medsrv.load", PLUGINS))) lib->settings->get_str(lib->settings, "medsrv.load", PLUGINS)))
{ {

View File

@ -229,7 +229,7 @@ int main(int argc, char **argv)
/* initialize library */ /* initialize library */
atexit(library_deinit); atexit(library_deinit);
if (!library_init(NULL)) if (!library_init(NULL, "openac"))
{ {
exit(SS_RC_LIBSTRONGSWAN_INTEGRITY); exit(SS_RC_LIBSTRONGSWAN_INTEGRITY);
} }

View File

@ -168,7 +168,7 @@ static void remove_callback()
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
atexit(library_deinit); atexit(library_deinit);
if (!library_init(NULL)) if (!library_init(NULL, "pki"))
{ {
exit(SS_RC_LIBSTRONGSWAN_INTEGRITY); exit(SS_RC_LIBSTRONGSWAN_INTEGRITY);
} }

View File

@ -1212,7 +1212,7 @@ int main(int argc, char *argv[])
atexit(library_deinit); atexit(library_deinit);
/* initialize library */ /* initialize library */
if (!library_init(NULL)) if (!library_init(NULL, "pool"))
{ {
exit(SS_RC_LIBSTRONGSWAN_INTEGRITY); exit(SS_RC_LIBSTRONGSWAN_INTEGRITY);
} }

View File

@ -166,7 +166,7 @@ static void init()
PLUGIN_PROVIDE(CUSTOM, "pt-tls-client"), PLUGIN_PROVIDE(CUSTOM, "pt-tls-client"),
PLUGIN_DEPENDS(CUSTOM, "tnccs-manager"), PLUGIN_DEPENDS(CUSTOM, "tnccs-manager"),
}; };
library_init(NULL); library_init(NULL, "pt-tls-client");
libtnccs_init(); libtnccs_init();
dbg = dbg_pt_tls; dbg = dbg_pt_tls;

View File

@ -487,7 +487,7 @@ int main(int argc, char **argv)
err_t ugh = NULL; err_t ugh = NULL;
/* initialize library */ /* initialize library */
if (!library_init(NULL)) if (!library_init(NULL, "scepclient"))
{ {
library_deinit(); library_deinit();
exit(SS_RC_LIBSTRONGSWAN_INTEGRITY); exit(SS_RC_LIBSTRONGSWAN_INTEGRITY);

View File

@ -419,7 +419,7 @@ int main (int argc, char **argv)
bool attach_gdb = FALSE; bool attach_gdb = FALSE;
bool load_warning = FALSE; bool load_warning = FALSE;
library_init(NULL); library_init(NULL, "starter");
atexit(library_deinit); atexit(library_deinit);
libhydra_init("starter"); libhydra_init("starter");

View File

@ -480,7 +480,7 @@ int main(int argc, char *argv[])
const stroke_token_t *token; const stroke_token_t *token;
int res = 0; int res = 0;
library_init(NULL); library_init(NULL, "stroke");
atexit(library_deinit); atexit(library_deinit);
if (argc < 2) if (argc < 2)