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