/* [<][>][^][v][top][bottom][index][help] */
DEFINITIONS
This source file includes following functions.
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,2001,2002 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 123
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 * Define the maximum number of sources
79 *
80 */
81 #define CA_MAXSOURCES 100
82
83
84 /**********************************************
85 * Default values for the SOURCE variables *
86 * *
87 **********************************************/
88
89 #define CA_DEFHOST "rowan"
90 #define CA_DEFPORT "4343"
91 #define CA_DEFUSER "dbase"
92 #define CA_DEFPASSWORD "encrypt1"
93 #define CA_DEFDBNAME "default-db"
94
95
96
97 /**********************************************
98 * Defintion of the dictionary structures. *
99 * *
100 **********************************************/
101
102 typedef struct dict_s {
103 char varName[STRLENGTH];
104 char varSym[STRLENGTH];
105 char varType[STRLENGTH];
106 int varNum;
107 int varMandatory;
108 int varScope;
109 } dict_t;
110
111 extern dict_t dictionary[];
112
113
114
115
116 /**********************************************
117 * Definition of the values structures. *
118 * *
119 **********************************************/
120
121 typedef struct values_s {
122 GString *strPtr; /* Pointer to the GString that contains the value. */
123 void *valPtr; /* Pointer to the actual value. */
124 } values_t;
125
126 /*
127 * "extern" definition of variables that are defined elsewhere.
128 */
129
130
131 extern values_t globals[];
132 extern values_t locals[];
133
134 /*
135 * "extern" definition of configuration variables, defined elsewhere.
136 */
137 extern values_t confVars[];
138
139 /* Mutex lock; used for synchronising changes. */
140 pthread_mutex_t Lock;
141
142 /*
143 * New value of the bindport.
144 * This must be a global variable.
145 * This variable is no longer needed.
146 * char newPort[16];
147 */
148
149 /*
150 * The following is needed for the SOURCE variable. First,
151 * we define the "database" structure. Then, we define the
152 * structure of an element of the linked list. Lastly, we
153 * define the linked list itself.
154 */
155
156 typedef struct ca_database_s {
157
158 char host[64];
159 int port;
160 char user[16];
161 char password[9];
162 char dbName[16];
163 } ca_database_t;
164
165 typedef struct ca_mirror_s {
166 char host[64];
167 int port;
168 char log[64];
169 int delay;
170 int protocolVer;
171 char mrName[16];
172 } ca_mirror_t;
173
174 typedef struct ca_ripadmin_s {
175 char host[64];
176 int port;
177 char user[16];
178 char password[9];
179 char tableName[72];
180 } ca_ripadmin_t;
181
182 extern ca_database_t ripe;
183 extern ca_database_t arin;
184 extern ca_database_t radb;
185
186 typedef struct ca_database_list_s {
187 char name[16];
188 ca_database_t db;
189 int opMode;
190 ca_mirror_t nrtm;
191 int updPort;
192 char canupd[2];
193 char deflook[2];
194 } ca_database_list_t;
195
196 /*
197 * Define the type of a source.
198 * This is the name of a source and
199 * the details of the database which
200 * makes this source.
201 */
202 typedef struct ca_dbSource_s {
203 char name[16];
204 ca_database_t db;
205 int opMode;
206 ca_mirror_t nrtm;
207 int updPort;
208 char canupd[2];
209 char deflook[2];
210 } ca_dbSource_t;
211
212 /*
213 * Define the source handle:
214 * this is a pointer to a source;
215 * i.e. it is of type ca_dbSource_t.
216 */
217 typedef ca_dbSource_t ca_SrcHdl_t;
218
219
220 /*
221 * Define an updateSource. This is used by dbupdate.
222 *
223 */
224 typedef struct ca_updDbSource_s {
225 char name[16];
226 ca_database_t updDb;
227 char whoisd_host[32];
228 int qryPort;
229 int updPort;
230 } ca_updDbSource_t;
231
232
233
234 extern ca_database_list_t ripeComponent;
235 extern ca_database_list_t arinComponent;
236 extern ca_database_list_t radbComponent;
237
238 /*
239 * typedef struct GSList {
240 * gpointer src;
241 * GSList *next;
242 * } ca_source_t;
243 */
244 /* gpointer src; This points to a ca_database_list_t varialbe */
245
246
247 /*************************************************************
248 * Definition of the default values for the SOURCE variable. *
249 * *
250 *************************************************************/
251
252 /*
253 * char ca_defHost[64];
254 * char ca_defPort[16];
255 * char ca_defUser[16];
256 * char ca_defPassword[9];
257 * char ca_defdbName[16];
258 */
259
260 /*
261 * extern char ca_defPort[16];
262 * extern char ca_defHost[64];
263 * extern char ca_defUser[16];
264 * extern char ca_defPassword[9];
265 * extern char ca_defdbName[16];
266 */
267
268 /*
269 * The linked-list of sources.
270 *
271 */
272 extern GSList *sourceList;
273
274 /*
275 * The linked-list of databases and mirrors used by ca_readSources()
276 */
277 extern GSList *dbList;
278 extern GSList *nrtmList;
279
280 /*
281 */
282
283 /*
284 * extern ca_source_t *srcList;
285 */
286
287 /*
288 * A varialbe of type GSList
289 */
290 extern ca_dbSource_t *testSource;
291
292
293 /*
294 * 20000609
295 * Experiment:
296 * define the variable mySrcList as type GSList;
297 * use the extern modifier and put the "real" definition
298 * of the variable elsewhere.
299 *
300 * extern GSList *mySrcList;
301 */
302
303 /*
304 * The test configuration file.
305 * This is defined using a constant string, cf. Oualline, p.145.
306 */
307 extern const char *testFile;
308 extern const char *tempFile;
309 extern const char *dictFile;
310 extern const char *confFile;
311 extern const char *sourcesFile;
312
313 /*
314 * Value returned by ca_getStorageLocation if the symbol for
315 * a configuration variable cannot be found.
316 *
317 * This value is also returned by ca_getType, if it cannot map
318 * the name of a configuration variable to a data type.
319 *
320 */
321 #define NOT_FOUND -1
322 #define INCOMPLETE -1
323
324 /*
325 * Definition of the identifiers used in the sources configuration file.
326 */
327 #define DATABASE_KEY "DATABASE"
328 #define NRTM_KEY "NRTM"
329 #define SOURCE_KEY "SOURCE"
330
331 /*
332 * Symbolic constants defined to represent data types.
333
334 * #define CA_INT 11
335 * #define CA_STRING 12
336 * #define CA_DIRLIST 13
337 * #define CA_BOOLEAN 14
338 * #define CA_SOURCETYPE 15
339 */
340
341 extern ca_dbSource_t *theSrc;
342
343 /*
344 * Macros and const char * definitions for warning and error
345 * messages.
346 */
347
348 extern const char *configWarningStr;
349 extern const char *configError_1Str;
350 extern const char *configError_2Str;
351 extern const char *configVarChk_OK_Str;
352
353
354 #ifdef __cplusplus
355 }
356 #endif
357
358
359 #endif /* CA_DEFS */