From 18758e3d2ea173b798a827917e4f8a1f9c4bc9a2 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Tue, 24 Apr 2012 11:07:56 +0200 Subject: [PATCH] Store the name of the binary using libcharon to enable specific settings. --- src/charon-nm/charon-nm.c | 2 +- src/charon/charon.c | 2 +- src/conftest/conftest.c | 2 +- src/libcharon/daemon.c | 7 ++++--- src/libcharon/daemon.h | 8 +++++++- 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/charon-nm/charon-nm.c b/src/charon-nm/charon-nm.c index 16b0ed856..2e781c08a 100644 --- a/src/charon-nm/charon-nm.c +++ b/src/charon-nm/charon-nm.c @@ -240,7 +240,7 @@ int main(int argc, char *argv[]) exit(SS_RC_INITIALIZATION_FAILED); } - if (!libcharon_init()) + if (!libcharon_init("charon-nm")) { dbg_syslog(DBG_DMN, 1, "initialization failed - aborting charon-nm"); goto deinit; diff --git a/src/charon/charon.c b/src/charon/charon.c index 9211a63c2..8475a5fc9 100644 --- a/src/charon/charon.c +++ b/src/charon/charon.c @@ -475,7 +475,7 @@ int main(int argc, char *argv[]) exit(SS_RC_INITIALIZATION_FAILED); } - if (!libcharon_init()) + if (!libcharon_init("charon")) { dbg_stderr(DBG_DMN, 1, "initialization failed - aborting charon"); goto deinit; diff --git a/src/conftest/conftest.c b/src/conftest/conftest.c index 48bf9681f..7b5669bc6 100644 --- a/src/conftest/conftest.c +++ b/src/conftest/conftest.c @@ -422,7 +422,7 @@ int main(int argc, char *argv[]) library_deinit(); return SS_RC_INITIALIZATION_FAILED; } - if (!libcharon_init()) + if (!libcharon_init("conftest")) { libcharon_deinit(); libhydra_deinit(); diff --git a/src/libcharon/daemon.c b/src/libcharon/daemon.c index c6238ebab..2cf8d5e08 100644 --- a/src/libcharon/daemon.c +++ b/src/libcharon/daemon.c @@ -247,7 +247,7 @@ METHOD(daemon_t, initialize, bool, /** * Create the daemon. */ -private_daemon_t *daemon_create() +private_daemon_t *daemon_create(const char *name) { private_daemon_t *this; @@ -260,6 +260,7 @@ private_daemon_t *daemon_create() .bus = bus_create(), .file_loggers = linked_list_create(), .sys_loggers = linked_list_create(), + .name = strdup(name ?: "libcharon"), }, ); charon = &this->public; @@ -298,9 +299,9 @@ void libcharon_deinit() /** * Described in header. */ -bool libcharon_init() +bool libcharon_init(const char *name) { - daemon_create(); + daemon_create(name); /* for uncritical pseudo random numbers */ srandom(time(NULL) + getpid()); diff --git a/src/libcharon/daemon.h b/src/libcharon/daemon.h index ad9ab4cd2..5ea3f45bf 100644 --- a/src/libcharon/daemon.h +++ b/src/libcharon/daemon.h @@ -263,6 +263,11 @@ struct daemon_t { */ gid_t gid; + /** + * Name of the binary that uses the library (used for settings etc.) + */ + const char *name; + /** * Do not drop a given capability after initialization. * @@ -311,9 +316,10 @@ extern daemon_t *charon; * This function initializes the bus, listeners can be registered before * calling initialize(). * + * @param name name of the binary that uses the library * @return FALSE if integrity check failed */ -bool libcharon_init(); +bool libcharon_init(const char *name); /** * Deinitialize libcharon and destroy the "charon" instance of daemon_t.