include/ca_defs.h
/* [<][>][^][v][top][bottom][index][help] */
FUNCTIONS
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 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 * This variable is no longer needed.
140 * char newPort[16];
141 */
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[72];
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 extern const char *configVarChk_OK_Str;
346
347
348 #ifdef __cplusplus
349 }
350 #endif
351
352
353 #endif /* CA_DEFS */