1 | /***************************************
2 | $Revision:
3 |
4 | CA module: definitions header file for the configuration module.
5 |
6 | Status: NOT REVIEWED, NOT TESTED
7 |
8 | Author(s): Ambrose Magee
9 |
10 | ******************/ /******************
11 | Modification History:
12 |
13 | ******************/
14 |
15 | /************************************
16 | Copyright (c) 2000 RIPE NCC
17 |
18 | All Rights Reserved
19 |
20 | Permission to use, copy, modify, and distribute this software and its
21 | documentation for any purpose and without fee is hereby granted,
22 | provided that the above copyright notice appear in all copies and that
23 | both that copyright notice and this permission notice appear in
24 | supporting documentation, and that the name of the author not be
25 | used in advertising or publicity pertaining to distribution of the
26 | software without specific, written prior permission.
27 |
28 | THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
29 | ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS; IN NO EVENT SHALL
30 | AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
31 | DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
32 | AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
33 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
34 | ***************************************/
35 |
36 | #ifndef CA_DEFS
37 | #define CA_DEFS
38 |
39 | /************************************************************************
40 | * This is the definitions header file for the configuration module. It
41 | * includes the definitions of data structures, external declarations and
42 | * definitions, definitions of sybolic constants.
43 | *
44 | ************************************************************************/
45 |
46 | #include <pthread.h>
47 | #include <glib.h>
48 |
49 | #ifdef __cplusplus
50 | extern "C" {
51 | #endif
52 |
53 | /* Number of configurations variables. */
54 | #define VARS 120
55 |
56 | #define SCOPE_GLOBAL 1
57 | #define SCOPE_LOCAL 99
58 |
59 | /*
60 | * Define the length of a string to be 160 to cope with the
61 | * copyright statement.
62 | *
63 | */
64 | #define STRLENGTH 256
65 |
66 | /*
67 | * Define the length of strings to cope with the values of
68 | * various types of string variables.
69 | */
70 | #define STRLENGTH_XS 40
71 | #define STRLENGTH_S 80
72 | #define STRLENGTH_M 160
73 | #define STRLENGTH_L 320
74 | #define STRLENGTH_XL 640
75 | #define STRLENGTH_XXL 2560
76 |
77 |
78 | /**********************************************
79 | * Default values for the SOURCE variables *
80 | * *
81 | **********************************************/
82 |
83 | #define CA_DEFHOST "rowan"
84 | #define CA_DEFPORT "4343"
85 | #define CA_DEFUSER "dbase"
86 | #define CA_DEFPASSWORD "encrypt1"
87 | #define CA_DEFDBNAME "default-db"
88 |
89 |
90 |
91 | /**********************************************
92 | * Defintion of the dictionary structures. *
93 | * *
94 | **********************************************/
95 |
96 | typedef struct dict_s {
97 | char varName[STRLENGTH];
98 | char varSym[STRLENGTH];
99 | char varType[STRLENGTH];
100 | int varNum;
101 | int varMandatory;
102 | int varScope;
103 | } dict_t;
104 |
105 | extern dict_t dictionary[];
106 |
107 |
108 |
109 |
110 | /**********************************************
111 | * Definition of the values structures. *
112 | * *
113 | **********************************************/
114 |
115 | typedef struct values_s {
116 | GString *strPtr; /* Pointer to the GString that contains the value. */
117 | void *valPtr; /* Pointer to the actual value. */
118 | } values_t;
119 |
120 | /*
121 | * "extern" definition of variables that are defined elsewhere.
122 | */
123 |
124 |
125 | extern values_t globals[];
126 | extern values_t locals[];
127 |
128 | /*
129 | * "extern" definition of configuration variables, defined elsewhere.
130 | */
131 | extern values_t confVars[];
132 |
133 | /* Mutex lock; used for synchronising changes. */
134 | pthread_mutex_t Lock;
135 |
136 | /*
137 | * New value of the bindport.
138 | * This must be a global variable.
139 | */
140 |
141 | char newPort[16];
142 |
143 | /*
144 | * The following is needed for the SOURCE variable. First,
145 | * we define the "database" structure. Then, we define the
146 | * structure of an element of the linked list. Lastly, we
147 | * define the linked list itself.
148 | */
149 |
150 | typedef struct ca_database_s {
151 |
152 | char host[64];
153 | int port;
154 | char user[16];
155 | char password[9];
156 | char dbName[16];
157 | } ca_database_t;
158 |
159 | typedef struct ca_mirror_s {
160 | char host[64];
161 | int port;
162 | char log[64];
163 | int delay;
164 | int protocolVer;
165 | char mrName[16];
166 | } ca_mirror_t;
167 |
168 | typedef struct ca_ripadmin_s {
169 | char host[64];
170 | int port;
171 | char user[16];
172 | char password[9];
173 | char tableName[16];
174 | } ca_ripadmin_t;
175 |
176 | extern ca_database_t ripe;
177 | extern ca_database_t arin;
178 | extern ca_database_t radb;
179 |
180 | typedef struct ca_database_list_s {
181 | char name[16];
182 | ca_database_t db;
183 | int opMode;
184 | ca_mirror_t nrtm;
185 | int updPort;
186 | char canupd[2];
187 | char deflook[2];
188 | } ca_database_list_t;
189 |
190 | /*
191 | * Define the type of a source.
192 | * This is the name of a source and
193 | * the details of the database which
194 | * makes this source.
195 | */
196 | typedef struct ca_dbSource_s {
197 | char name[16];
198 | ca_database_t db;
199 | int opMode;
200 | ca_mirror_t nrtm;
201 | int updPort;
202 | char canupd[2];
203 | char deflook[2];
204 | } ca_dbSource_t;
205 |
206 | /*
207 | * Define the source handle:
208 | * this is a pointer to a source;
209 | * i.e. it is of type ca_dbSource_t.
210 | */
211 | typedef ca_dbSource_t ca_SrcHdl_t;
212 |
213 |
214 | /*
215 | * Define an updateSource. This is used by dbupdate.
216 | *
217 | */
218 | typedef struct ca_updDbSource_s {
219 | char name[16];
220 | ca_database_t updDb;
221 | char whoisd_host[32];
222 | int qryPort;
223 | int updPort;
224 | } ca_updDbSource_t;
225 |
226 |
227 |
228 | extern ca_database_list_t ripeComponent;
229 | extern ca_database_list_t arinComponent;
230 | extern ca_database_list_t radbComponent;
231 |
232 | /*
233 | * typedef struct GSList {
234 | * gpointer src;
235 | * GSList *next;
236 | * } ca_source_t;
237 | */
238 | /* gpointer src; This points to a ca_database_list_t varialbe */
239 |
240 |
241 | /*************************************************************
242 | * Definition of the default values for the SOURCE variable. *
243 | * *
244 | *************************************************************/
245 |
246 | /*
247 | * char ca_defHost[64];
248 | * char ca_defPort[16];
249 | * char ca_defUser[16];
250 | * char ca_defPassword[9];
251 | * char ca_defdbName[16];
252 | */
253 |
254 | /*
255 | * extern char ca_defPort[16];
256 | * extern char ca_defHost[64];
257 | * extern char ca_defUser[16];
258 | * extern char ca_defPassword[9];
259 | * extern char ca_defdbName[16];
260 | */
261 |
262 | /*
263 | * The linked-list of sources.
264 | *
265 | */
266 | extern GSList *sourceList;
267 |
268 | /*
269 | * The linked-list of databases and mirrors used by ca_readSources()
270 | */
271 | extern GSList *dbList;
272 | extern GSList *nrtmList;
273 |
274 | /*
275 | */
276 |
277 | /*
278 | * extern ca_source_t *srcList;
279 | */
280 |
281 | /*
282 | * A varialbe of type GSList
283 | */
284 | extern ca_dbSource_t *testSource;
285 |
286 |
287 | /*
288 | * 20000609
289 | * Experiment:
290 | * define the variable mySrcList as type GSList;
291 | * use the extern modifier and put the "real" definition
292 | * of the variable elsewhere.
293 | *
294 | * extern GSList *mySrcList;
295 | */
296 |
297 | /*
298 | * The test configuration file.
299 | * This is defined using a constant string, cf. Oualline, p.145.
300 | */
301 | extern const char *testFile;
302 | extern const char *tempFile;
303 | extern const char *dictFile;
304 | extern const char *confFile;
305 | extern const char *sourcesFile;
306 |
307 | /*
308 | * Value returned by ca_getStorageLocation if the symbol for
309 | * a configuration variable cannot be found.
310 | *
311 | * This value is also returned by ca_getType, if it cannot map
312 | * the name of a configuration variable to a data type.
313 | *
314 | */
315 | #define NOT_FOUND -1
316 | #define INCOMPLETE -1
317 |
318 | /*
319 | * Definition of the identifiers used in the sources configuration file.
320 | */
321 | #define DATABASE_KEY "DATABASE"
322 | #define NRTM_KEY "NRTM"
323 | #define SOURCE_KEY "SOURCE"
324 |
325 | /*
326 | * Symbolic constants defined to represent data types.
327 |
328 | * #define CA_INT 11
329 | * #define CA_STRING 12
330 | * #define CA_DIRLIST 13
331 | * #define CA_BOOLEAN 14
332 | * #define CA_SOURCETYPE 15
333 | */
334 |
335 | extern ca_dbSource_t *theSrc;
336 |
337 | /*
338 | * Macros and const char * definitions for warning and error
339 | * messages.
340 | */
341 |
342 | extern const char *configWarningStr;
343 | extern const char *configError_1Str;
344 | extern const char *configError_2Str;
345 |
346 |
347 | #ifdef __cplusplus
348 | }
349 | #endif
350 |
351 |
352 | #endif /* CA_DEFS */