diff options
author | Tobias Brunner <tobias@strongswan.org> | 2010-03-24 15:22:10 +0100 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2010-03-24 18:53:10 +0100 |
commit | 52bff307e108cfd87343fc87ffffb4e94df67dbd (patch) | |
tree | b3a6f73bd9bb0cd29f1461ef05fd1c5ea8e20816 /src | |
parent | f9b1db1631804f102dd4430a53b7264f98d38c29 (diff) | |
download | strongswan-52bff307e108cfd87343fc87ffffb4e94df67dbd.tar.bz2 strongswan-52bff307e108cfd87343fc87ffffb4e94df67dbd.tar.xz |
Init/deinit libhydra in charon and pluto.
Diffstat (limited to 'src')
-rw-r--r-- | src/charon/Makefile.am | 7 | ||||
-rw-r--r-- | src/charon/charon.c | 40 | ||||
-rw-r--r-- | src/libcharon/daemon.c | 1 | ||||
-rw-r--r-- | src/pluto/Makefile.am | 5 | ||||
-rw-r--r-- | src/pluto/plutomain.c | 9 |
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); |