3f62b24d5c6e1faff46d22d61c82d7996d554d09
[strongswan.git] / src / libstrongswan / library.h
1 /*
2 * Copyright (C) 2008 Martin Willi
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 /**
17 * @defgroup libstrongswan libstrongswan
18 *
19 * @defgroup asn1 asn1
20 * @ingroup libstrongswan
21 *
22 * @defgroup credentials credentials
23 * @ingroup libstrongswan
24 *
25 * @defgroup keys keys
26 * @ingroup credentials
27 *
28 * @defgroup certificates certificates
29 * @ingroup credentials
30 *
31 * @defgroup crypto crypto
32 * @ingroup libstrongswan
33
34 * @defgroup database database
35 * @ingroup libstrongswan
36
37 * @defgroup fetcher fetcher
38 * @ingroup libstrongswan
39
40 * @defgroup fips fips
41 * @ingroup libstrongswan
42
43 * @defgroup plugins plugins
44 * @ingroup libstrongswan
45
46 * @defgroup utils utils
47 * @ingroup libstrongswan
48 */
49
50 /**
51 * @defgroup library library
52 * @{ @ingroup libstrongswan
53 */
54
55 #ifndef LIBRARY_H_
56 #define LIBRARY_H_
57
58 #include <printf_hook.h>
59 #include <utils.h>
60 #include <chunk.h>
61 #include <settings.h>
62 #include <integrity_checker.h>
63 #include <plugins/plugin_loader.h>
64 #include <crypto/crypto_factory.h>
65 #include <fetcher/fetcher_manager.h>
66 #include <database/database_factory.h>
67 #include <credentials/credential_factory.h>
68
69 typedef struct library_t library_t;
70
71 /**
72 * Libstrongswan library context, contains library relevant globals.
73 */
74 struct library_t {
75
76 /**
77 * Printf hook registering facility
78 */
79 printf_hook_t *printf_hook;
80
81 /**
82 * crypto algorithm registry and factory
83 */
84 crypto_factory_t *crypto;
85
86 /**
87 * credential constructor registry and factory
88 */
89 credential_factory_t *creds;
90
91 /**
92 * URL fetching facility
93 */
94 fetcher_manager_t *fetcher;
95
96 /**
97 * database construction factory
98 */
99 database_factory_t *db;
100
101 /**
102 * plugin loading facility
103 */
104 plugin_loader_t *plugins;
105
106 /**
107 * various settings loaded from settings file
108 */
109 settings_t *settings;
110
111 /**
112 * integrity checker to verify code integrity
113 */
114 integrity_checker_t *integrity;
115
116 /**
117 * is leak detective running?
118 */
119 bool leak_detective;
120 };
121
122 /**
123 * Initialize library, creates "lib" instance.
124 *
125 * @param settings file to read settings from, may be NULL for none
126 * @return FALSE if integrity check failed
127 */
128 bool library_init(char *settings);
129
130 /**
131 * Deinitialize library, destroys "lib" instance.
132 */
133 void library_deinit();
134
135 /**
136 * Library instance, set after between library_init() and library_deinit() calls.
137 */
138 extern library_t *lib;
139
140 #endif /** LIBRARY_H_ @}*/