aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2010-03-24 15:22:10 +0100
committerTobias Brunner <tobias@strongswan.org>2010-03-24 18:53:10 +0100
commit52bff307e108cfd87343fc87ffffb4e94df67dbd (patch)
treeb3a6f73bd9bb0cd29f1461ef05fd1c5ea8e20816
parentf9b1db1631804f102dd4430a53b7264f98d38c29 (diff)
downloadstrongswan-52bff307e108cfd87343fc87ffffb4e94df67dbd.tar.bz2
strongswan-52bff307e108cfd87343fc87ffffb4e94df67dbd.tar.xz
Init/deinit libhydra in charon and pluto.
-rw-r--r--src/charon/Makefile.am7
-rw-r--r--src/charon/charon.c40
-rw-r--r--src/libcharon/daemon.c1
-rw-r--r--src/pluto/Makefile.am5
-rw-r--r--src/pluto/plutomain.c9
5 files changed, 40 insertions, 22 deletions
diff --git a/src/charon/Makefile.am b/src/charon/Makefile.am
index 041868b7c..6481947f1 100644
--- a/src/charon/Makefile.am
+++ b/src/charon/Makefile.am
@@ -3,10 +3,15 @@ ipsec_PROGRAMS = charon
charon_SOURCES = \
charon.c
-INCLUDES = -I$(top_srcdir)/src/libstrongswan -I$(top_srcdir)/src/libcharon
+INCLUDES = \
+ -I$(top_srcdir)/src/libstrongswan \
+ -I$(top_srcdir)/src/libhydra \
+ -I$(top_srcdir)/src/libcharon
+
AM_CFLAGS = \
-DIPSEC_DIR=\"${ipsecdir}\" \
-DIPSEC_PIDDIR=\"${piddir}\"
+
charon_LDADD = \
$(top_builddir)/src/libstrongswan/libstrongswan.la \
$(top_builddir)/src/libhydra/libhydra.la \
diff --git a/src/charon/charon.c b/src/charon/charon.c
index 811c5042f..d33d00f7f 100644
--- a/src/charon/charon.c
+++ b/src/charon/charon.c
@@ -31,6 +31,7 @@
#include <pwd.h>
#include <grp.h>
+#include <hydra.h>
#include <daemon.h>
#include <library.h>
@@ -268,7 +269,7 @@ int main(int argc, char *argv[])
struct sigaction action;
bool use_syslog = FALSE;
level_t levels[DBG_MAX];
- int group;
+ int group, status = SS_RC_INITIALIZATION_FAILED;
/* logging for library during initialization, as we have no bus yet */
dbg = dbg_stderr;
@@ -288,14 +289,20 @@ int main(int argc, char *argv[])
exit(SS_RC_DAEMON_INTEGRITY);
}
- if (!libcharon_init())
+ if (!libhydra_init())
{
dbg_stderr(1, "initialization failed - aborting charon");
- libcharon_deinit();
+ libhydra_deinit();
library_deinit();
exit(SS_RC_INITIALIZATION_FAILED);
}
+ if (!libcharon_init())
+ {
+ dbg_stderr(1, "initialization failed - aborting charon");
+ goto deinit;
+ }
+
/* use CTRL loglevel for default */
for (group = 0; group < DBG_MAX; group++)
{
@@ -351,34 +358,27 @@ int main(int argc, char *argv[])
if (!lookup_uid_gid())
{
dbg_stderr(1, "invalid uid/gid - aborting charon");
- libcharon_deinit();
- library_deinit();
- exit(SS_RC_INITIALIZATION_FAILED);
+ goto deinit;
}
/* initialize daemon */
if (!charon->initialize(charon, use_syslog, levels))
{
DBG1(DBG_DMN, "initialization failed - aborting charon");
- libcharon_deinit();
- library_deinit();
- exit(SS_RC_INITIALIZATION_FAILED);
+ goto deinit;
}
if (check_pidfile())
{
DBG1(DBG_DMN, "charon already running (\""PID_FILE"\" exists)");
- libcharon_deinit();
- library_deinit();
- exit(-1);
+ status = -1;
+ goto deinit;
}
if (!drop_capabilities())
{
DBG1(DBG_DMN, "capability dropping failed - aborting charon");
- libcharon_deinit();
- library_deinit();
- exit(SS_RC_INITIALIZATION_FAILED);
+ goto deinit;
}
/* add handler for SEGV and ILL,
@@ -404,11 +404,13 @@ int main(int argc, char *argv[])
run();
/* normal termination, cleanup and exit */
- libcharon_deinit();
- library_deinit();
-
unlink(PID_FILE);
+ status = 0;
- return 0;
+deinit:
+ libcharon_deinit();
+ libhydra_deinit();
+ library_deinit();
+ return status;
}
diff --git a/src/libcharon/daemon.c b/src/libcharon/daemon.c
index be9672f7d..3b8c8e60a 100644
--- a/src/libcharon/daemon.c
+++ b/src/libcharon/daemon.c
@@ -323,6 +323,7 @@ METHOD(daemon_t, initialize, bool,
{
DBG1(DBG_DMN, "integrity tests enabled:");
DBG1(DBG_DMN, "lib 'libstrongswan': passed file and segment integrity tests");
+ DBG1(DBG_DMN, "lib 'libhydra': passed file and segment integrity tests");
DBG1(DBG_DMN, "lib 'libcharon': passed file and segment integrity tests");
DBG1(DBG_DMN, "daemon 'charon': passed file integrity test");
}
diff --git a/src/pluto/Makefile.am b/src/pluto/Makefile.am
index a0ab0f4a6..1d55d0188 100644
--- a/src/pluto/Makefile.am
+++ b/src/pluto/Makefile.am
@@ -54,13 +54,14 @@ rsaref/pkcs11t.h rsaref/pkcs11.h rsaref/unix.h rsaref/pkcs11f.h
_pluto_adns_SOURCES = adns.c adns.h
LIBSTRONGSWANDIR=$(top_builddir)/src/libstrongswan
-LIBHYDRADIR=$(top_builddir)/src/libhydra
LIBFREESWANDIR=$(top_builddir)/src/libfreeswan
+LIBHYDRADIR=$(top_builddir)/src/libhydra
INCLUDES = \
-I${linux_headers} \
-I$(top_srcdir)/src/libstrongswan \
-I$(top_srcdir)/src/libfreeswan \
+-I$(top_srcdir)/src/libhydra \
-I$(top_srcdir)/src/whack
AM_CFLAGS = \
@@ -75,8 +76,8 @@ AM_CFLAGS = \
pluto_LDADD = \
$(LIBSTRONGSWANDIR)/libstrongswan.la \
-$(LIBHYDRADIR)/libhydra.la \
$(LIBFREESWANDIR)/libfreeswan.a \
+$(LIBHYDRADIR)/libhydra.la \
-lresolv $(PTHREADLIB) $(DLLIB)
_pluto_adns_LDADD = \
diff --git a/src/pluto/plutomain.c b/src/pluto/plutomain.c
index 8b922df8c..98195ca2f 100644
--- a/src/pluto/plutomain.c
+++ b/src/pluto/plutomain.c
@@ -38,6 +38,7 @@
#include <freeswan.h>
+#include <hydra.h>
#include <library.h>
#include <debug.h>
#include <utils/enumerator.h>
@@ -273,6 +274,12 @@ int main(int argc, char **argv)
library_deinit();
exit(SS_RC_DAEMON_INTEGRITY);
}
+ if (!libhydra_init())
+ {
+ libhydra_deinit();
+ library_deinit();
+ exit(SS_RC_INITIALIZATION_FAILED);
+ }
options = options_create();
/* handle arguments */
@@ -648,6 +655,7 @@ int main(int argc, char **argv)
{
plog("integrity tests enabled:");
plog("lib 'libstrongswan': passed file and segment integrity tests");
+ plog("lib 'libhydra': passed file and segment integrity tests");
plog("daemon 'pluto': passed file integrity test");
}
@@ -770,6 +778,7 @@ void exit_pluto(int status)
free_builder();
delete_lock();
options->destroy(options);
+ libhydra_deinit();
library_deinit();
close_log();
exit(status);