1    | /************************************************************************
2    |  * This is the definitions header file for the configuration module.  It
3    |  * includes the definitions of data structures, external declarations and
4    |  * definitions, defitinitions of sybolic constants.
5    |  *
6    |  ************************************************************************/
7    | 
8    | #include <pthread.h>
9    | #include <glib.h>
10   | 
11   | /* Number of configurations variables. */
12   | #define VARS 86
13   | 
14   | #define SCOPE_GLOBAL 1
15   | #define SCOPE_LOCAL 99
16   | 
17   | /* 
18   |  * Define the length of a string to be 160 to cope with the 
19   |  * copyright statement.
20   |  *
21   |  */
22   | #define STRLENGTH 160
23   | 
24   | /*
25   | 	* Define the length of strings to cope with the values of 
26   |  * various types of string variables.
27   | 	*/
28   | #define STRLENGTH_S 40
29   | #define STRLENGTH_M 80
30   | #define STRLENGTH_L 160
31   | #define STRLENGTH_XL 320
32   | 
33   | 
34   | /**********************************************
35   |  * Default values for the SOURCE variables		*
36   | 	*															*
37   |  **********************************************/
38   | 
39   |  #define CA_DEFHOST "rowan"						
40   |  #define CA_DEFPORT "4343"
41   |  #define CA_DEFUSER "dbase"						
42   |  #define CA_DEFPASSWORD "encrypt1"				
43   |  #define CA_DEFDBNAME	"default-db"			
44   | 															
45   | 
46   | 
47   | /**********************************************
48   |  * Defintion of the dictionary structures.		*
49   | 	*															*
50   |  **********************************************/
51   | 
52   | typedef struct dict_s	{
53   | 				char varName[STRLENGTH];
54   | 				char varSym[STRLENGTH];
55   | 				char varType[STRLENGTH];
56   | 				int varScope;
57   | 				int varNum;
58   | } dict_t;
59   | 
60   | extern dict_t dictionary[];
61   | 
62   | 
63   | 
64   | 
65   | /**********************************************
66   |  * Definition of the values structures.			*
67   |  *															*
68   | 	**********************************************/
69   | 
70   | typedef struct values_s	{
71   | 				char *strPtr;	/* Pointer to the string that contains the value. */
72   | 				void *valPtr;	/* Pointer to the actual value. */
73   | } values_t;									
74   | 
75   | /*
76   |  * "extern" definition of variables that are defined elsewhere.
77   |  */
78   | 
79   | 
80   | extern values_t globals[];
81   | extern values_t locals[];
82   | 
83   | /*
84   |  * "extern" definition of configuration variables, defined elsewhere.
85   |  */
86   | extern values_t confVars[];
87   | 
88   | /* Mutex lock; used for synchronising changes. */
89   | pthread_mutex_t Lock;
90   | 
91   | /* 
92   | 	* New value of the bindport.
93   | 	* This must be a global variable.
94   | 	*/
95   | 
96   | char newPort[16];
97   | 
98   | /*
99   |  * The following is needed for the SOURCE variable.  First,
100  |  * we define the "database" structure.  Then, we define the
101  |  * structure of an element of the linked list.  Lastly, we 
102  |  * define the linked list itself.
103  |  */
104  | 
105  | typedef struct ca_database_s	{
106  | 
107  | 			char host[64];
108  | 			char port[16];
109  | 			char user[16];
110  | 			char password[9];
111  | 			char dbName[16];
112  | 		} ca_database_t;
113  | 
114  | extern ca_database_t ripe;
115  | extern ca_database_t arin;
116  | extern ca_database_t radb;
117  | 
118  | typedef struct ca_database_list_s		{
119  | 			char name[16];
120  | 			ca_database_t db;
121  | 		} ca_database_list_t;
122  | 
123  | extern ca_database_list_t ripeComponent;
124  | extern ca_database_list_t arinComponent;
125  | extern ca_database_list_t radbComponent;
126  | 
127  | typedef struct GSList {
128  | 		gpointer src;		/* This points to a ca_database_list_t varialbe */
129  | 		GSList *next;
130  | 		} ca_source_t;
131  | 
132  | 
133  | /*************************************************************
134  |  * Definition of the default values for the SOURCE variable.	*
135  |  *																				*
136  |  *************************************************************/
137  | 
138  | /*
139  |  * char ca_defHost[64];
140  |  * char ca_defPort[16];
141  |  * char ca_defUser[16];
142  |  * char ca_defPassword[9];
143  |  * char ca_defdbName[16];
144  |  */
145  | 
146  | /*
147  |  * extern char ca_defPort[16];
148  |  * extern char ca_defHost[64];
149  |  * extern char ca_defUser[16];
150  |  * extern char ca_defPassword[9];
151  |  * extern char ca_defdbName[16];
152  |  */
153  | 
154  | /*
155  |  * The linked-list of sources.
156  |  *
157  |  */
158  | extern GSList *sourceList;
159  | extern ca_source_t *srcList;
160  | 
161  | /*
162  |  * 20000609
163  |  * Experiment:
164  |  * define the variable mySrcList as type GSList;
165  |  * use the extern modifier and put the "real" definition
166  |  * of the variable elsewhere.
167  |  *
168  |  * extern GSList *mySrcList;
169  |  */
170  | 
171  | /*
172  | 	* The test configuration file.
173  |  * This is defined using a constant string, cf. Oualline, p.145.
174  |  */
175  | extern const char *testFile;
176  | extern const char *tempFile;
177  | extern const char *dictFile;
178  | extern const char *confFile;
179  | 
180  | /* 
181  |  * Value returned by ca_getStorageLocation if the symbol for
182  |  * a configuration variable cannot be found.
183  |  *
184  | 	* This value is also returned by ca_getType, if it cannot map 
185  |  * the name of a configuration variable to a data type.
186  |  *
187  |  */
188  | #define NOT_FOUND -1 	
189  | 
190  | /*
191  |  * Symbolic constants defined to represent data types.
192  | 
193  |  * #define CA_INT 			11
194  |  * #define CA_STRING 		12
195  |  * #define CA_DIRLIST 	13
196  |  * #define CA_BOOLEAN 	14
197  |  * #define CA_SOURCETYPE		15
198  | 	*/
199  | 
200  |