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