1 | #ifndef CA_DEFS 2 | #define CA_DEFS 3 | 4 | /************************************************************************ 5 | * This is the definitions header file for the configuration module. It 6 | * includes the definitions of data structures, external declarations and 7 | * definitions, definitions of sybolic constants. 8 | * 9 | ************************************************************************/ 10 | 11 | #include <pthread.h> 12 | #include <glib.h> 13 | 14 | #ifdef __cplusplus 15 | extern "C" { 16 | #endif 17 | 18 | /* Number of configurations variables. */ 19 | #define VARS 90 20 | 21 | #define SCOPE_GLOBAL 1 22 | #define SCOPE_LOCAL 99 23 | 24 | /* 25 | * Define the length of a string to be 160 to cope with the 26 | * copyright statement. 27 | * 28 | */ 29 | #define STRLENGTH 160 30 | 31 | /* 32 | * Define the length of strings to cope with the values of 33 | * various types of string variables. 34 | */ 35 | #define STRLENGTH_S 40 36 | #define STRLENGTH_M 80 37 | #define STRLENGTH_L 160 38 | #define STRLENGTH_XL 320 39 | #define STRLENGTH_XXL 640 40 | 41 | 42 | /********************************************** 43 | * Default values for the SOURCE variables * 44 | * * 45 | **********************************************/ 46 | 47 | #define CA_DEFHOST "rowan" 48 | #define CA_DEFPORT "4343" 49 | #define CA_DEFUSER "dbase" 50 | #define CA_DEFPASSWORD "encrypt1" 51 | #define CA_DEFDBNAME "default-db" 52 | 53 | 54 | 55 | /********************************************** 56 | * Defintion of the dictionary structures. * 57 | * * 58 | **********************************************/ 59 | 60 | typedef struct dict_s { 61 | char varName[STRLENGTH]; 62 | char varSym[STRLENGTH]; 63 | char varType[STRLENGTH]; 64 | int varScope; 65 | int varNum; 66 | } dict_t; 67 | 68 | extern dict_t dictionary[]; 69 | 70 | 71 | 72 | 73 | /********************************************** 74 | * Definition of the values structures. * 75 | * * 76 | **********************************************/ 77 | 78 | typedef struct values_s { 79 | char *strPtr; /* Pointer to the string that contains the value. */ 80 | void *valPtr; /* Pointer to the actual value. */ 81 | } values_t; 82 | 83 | /* 84 | * "extern" definition of variables that are defined elsewhere. 85 | */ 86 | 87 | 88 | extern values_t globals[]; 89 | extern values_t locals[]; 90 | 91 | /* 92 | * "extern" definition of configuration variables, defined elsewhere. 93 | */ 94 | extern values_t confVars[]; 95 | 96 | /* Mutex lock; used for synchronising changes. */ 97 | pthread_mutex_t Lock; 98 | 99 | /* 100 | * New value of the bindport. 101 | * This must be a global variable. 102 | */ 103 | 104 | char newPort[16]; 105 | 106 | /* 107 | * The following is needed for the SOURCE variable. First, 108 | * we define the "database" structure. Then, we define the 109 | * structure of an element of the linked list. Lastly, we 110 | * define the linked list itself. 111 | */ 112 | 113 | typedef struct ca_database_s { 114 | 115 | char host[64]; 116 | int port; 117 | char user[16]; 118 | char password[9]; 119 | char dbName[16]; 120 | } ca_database_t; 121 | 122 | typedef struct ca_mirror_s { 123 | char host[64]; 124 | int port; 125 | char log[64]; 126 | int delay; 127 | int protocolVer; 128 | } ca_mirror_t; 129 | 130 | typedef struct ca_ripadmin_s { 131 | char host[64]; 132 | int port; 133 | char user[16]; 134 | char password[9]; 135 | char tableName[16]; 136 | } ca_ripadmin_t; 137 | 138 | extern ca_database_t ripe; 139 | extern ca_database_t arin; 140 | extern ca_database_t radb; 141 | 142 | typedef struct ca_database_list_s { 143 | char name[16]; 144 | ca_database_t db; 145 | int opMode; 146 | ca_mirror_t nrtm; 147 | int updPort; 148 | char canupd[2]; 149 | char deflook[2]; 150 | } ca_database_list_t; 151 | 152 | /* 153 | * Define the type of a source. 154 | * This is the name of a source and 155 | * the details of the database which 156 | * makes this source. 157 | */ 158 | typedef struct ca_dbSource_s { 159 | char name[16]; 160 | ca_database_t db; 161 | int opMode; 162 | ca_mirror_t nrtm; 163 | int updPort; 164 | char canupd[2]; 165 | char deflook[2]; 166 | } ca_dbSource_t; 167 | 168 | /* 169 | * Define the source handle: 170 | * this is a pointer to a source; 171 | * i.e. it is of type ca_dbSource_t. 172 | */ 173 | typedef ca_dbSource_t ca_SrcHdl_t; 174 | 175 | extern ca_database_list_t ripeComponent; 176 | extern ca_database_list_t arinComponent; 177 | extern ca_database_list_t radbComponent; 178 | 179 | /* 180 | * typedef struct GSList { 181 | * gpointer src; 182 | * GSList *next; 183 | * } ca_source_t; 184 | */ 185 | /* gpointer src; This points to a ca_database_list_t varialbe */ 186 | 187 | 188 | /************************************************************* 189 | * Definition of the default values for the SOURCE variable. * 190 | * * 191 | *************************************************************/ 192 | 193 | /* 194 | * char ca_defHost[64]; 195 | * char ca_defPort[16]; 196 | * char ca_defUser[16]; 197 | * char ca_defPassword[9]; 198 | * char ca_defdbName[16]; 199 | */ 200 | 201 | /* 202 | * extern char ca_defPort[16]; 203 | * extern char ca_defHost[64]; 204 | * extern char ca_defUser[16]; 205 | * extern char ca_defPassword[9]; 206 | * extern char ca_defdbName[16]; 207 | */ 208 | 209 | /* 210 | * The linked-list of sources. 211 | * 212 | */ 213 | extern GSList *sourceList; 214 | 215 | /* 216 | * extern ca_source_t *srcList; 217 | */ 218 | 219 | /* 220 | * A varialbe of type GSList 221 | */ 222 | extern ca_dbSource_t *testSource; 223 | 224 | 225 | /* 226 | * 20000609 227 | * Experiment: 228 | * define the variable mySrcList as type GSList; 229 | * use the extern modifier and put the "real" definition 230 | * of the variable elsewhere. 231 | * 232 | * extern GSList *mySrcList; 233 | */ 234 | 235 | /* 236 | * The test configuration file. 237 | * This is defined using a constant string, cf. Oualline, p.145. 238 | */ 239 | extern const char *testFile; 240 | extern const char *tempFile; 241 | extern const char *dictFile; 242 | extern const char *confFile; 243 | 244 | /* 245 | * Value returned by ca_getStorageLocation if the symbol for 246 | * a configuration variable cannot be found. 247 | * 248 | * This value is also returned by ca_getType, if it cannot map 249 | * the name of a configuration variable to a data type. 250 | * 251 | */ 252 | #define NOT_FOUND -1 253 | 254 | /* 255 | * Symbolic constants defined to represent data types. 256 | 257 | * #define CA_INT 11 258 | * #define CA_STRING 12 259 | * #define CA_DIRLIST 13 260 | * #define CA_BOOLEAN 14 261 | * #define CA_SOURCETYPE 15 262 | */ 263 | 264 | extern ca_dbSource_t *theSrc; 265 | 266 | #ifdef __cplusplus 267 | } 268 | #endif 269 | 270 | 271 | #endif /* CA_DEFS */