aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/charon/charon.c2
-rw-r--r--src/libhydra/hydra.c4
-rw-r--r--src/libhydra/hydra.h10
-rw-r--r--src/pluto/plutomain.c2
4 files changed, 14 insertions, 4 deletions
diff --git a/src/charon/charon.c b/src/charon/charon.c
index 2a90d86ff..888eb1b35 100644
--- a/src/charon/charon.c
+++ b/src/charon/charon.c
@@ -289,7 +289,7 @@ int main(int argc, char *argv[])
exit(SS_RC_DAEMON_INTEGRITY);
}
- if (!libhydra_init())
+ if (!libhydra_init("charon"))
{
dbg_stderr(1, "initialization failed - aborting charon");
libhydra_deinit();
diff --git a/src/libhydra/hydra.c b/src/libhydra/hydra.c
index 2dd6ee7e5..7ad022f5f 100644
--- a/src/libhydra/hydra.c
+++ b/src/libhydra/hydra.c
@@ -42,6 +42,7 @@ void libhydra_deinit()
{
private_hydra_t *this = (private_hydra_t*)hydra;
this->public.attributes->destroy(this->public.attributes);
+ free((void*)this->public.daemon);
free(this);
hydra = NULL;
}
@@ -49,13 +50,14 @@ void libhydra_deinit()
/**
* Described in header.
*/
-bool libhydra_init()
+bool libhydra_init(const char *daemon)
{
private_hydra_t *this;
INIT(this,
.public = {
.attributes = attribute_manager_create(),
+ .daemon = strdup(daemon ?: "libhydra"),
},
);
hydra = &this->public;
diff --git a/src/libhydra/hydra.h b/src/libhydra/hydra.h
index 525dce165..8670f3969 100644
--- a/src/libhydra/hydra.h
+++ b/src/libhydra/hydra.h
@@ -44,6 +44,11 @@ struct hydra_t {
* manager for payload attributes
*/
attribute_manager_t *attributes;
+
+ /**
+ * name of the daemon that initialized the library
+ */
+ const char *daemon;
};
/**
@@ -56,9 +61,12 @@ extern hydra_t *hydra;
/**
* Initialize libhydra.
*
+ * The daemon's name is used to load daemon-specific settings.
+ *
+ * @param daemon name of the daemon that initializes the library
* @return FALSE if integrity check failed
*/
-bool libhydra_init();
+bool libhydra_init(const char *daemon);
/**
* Deinitialize libhydra.
diff --git a/src/pluto/plutomain.c b/src/pluto/plutomain.c
index 9c1cb77e4..93c663fdb 100644
--- a/src/pluto/plutomain.c
+++ b/src/pluto/plutomain.c
@@ -275,7 +275,7 @@ int main(int argc, char **argv)
library_deinit();
exit(SS_RC_DAEMON_INTEGRITY);
}
- if (!libhydra_init())
+ if (!libhydra_init("pluto"))
{
libhydra_deinit();
library_deinit();