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