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 */