8775df08c9448dd801d4daee6027bea932c87b9a
[strongswan.git] / src / libhydra / hydra.c
1 /*
2 * Copyright (C) 2010 Tobias Brunner
3 * Hochschule fuer Technik Rapperswil
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the
7 * Free Software Foundation; either version 2 of the License, or (at your
8 * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * for more details.
14 */
15
16 #include "hydra.h"
17
18 #include <debug.h>
19
20 typedef struct private_hydra_t private_hydra_t;
21
22 /**
23 * Private additions to hydra_t.
24 */
25 struct private_hydra_t {
26 /**
27 * Public members of hydra_t.
28 */
29 hydra_t public;
30 };
31
32 /**
33 * Single instance of hydra_t.
34 */
35 hydra_t *hydra;
36
37 /**
38 * Described in header.
39 */
40 void libhydra_deinit()
41 {
42 private_hydra_t *this = (private_hydra_t*)hydra;
43 this->public.attributes->destroy(this->public.attributes);
44 free(this);
45 hydra = NULL;
46 }
47
48 /**
49 * Described in header.
50 */
51 bool libhydra_init()
52 {
53 private_hydra_t *this;
54
55 INIT(this,
56 .public = {
57 .attributes = attribute_manager_create(),
58 },
59 );
60 hydra = &this->public;
61
62 if (lib->integrity &&
63 !lib->integrity->check(lib->integrity, "libhydra", libhydra_init))
64 {
65 DBG1("integrity check of libhydra failed");
66 return FALSE;
67 }
68 return TRUE;
69 }
70