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 |