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,2001,2002 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 123 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 | * Define the maximum number of sources 79 | * 80 | */ 81 | #define CA_MAXSOURCES 100 82 | 83 | 84 | /********************************************** 85 | * Default values for the SOURCE variables * 86 | * * 87 | **********************************************/ 88 | 89 | #define CA_DEFHOST "rowan" 90 | #define CA_DEFPORT "4343" 91 | #define CA_DEFUSER "dbase" 92 | #define CA_DEFPASSWORD "encrypt1" 93 | #define CA_DEFDBNAME "default-db" 94 | 95 | 96 | 97 | /********************************************** 98 | * Defintion of the dictionary structures. * 99 | * * 100 | **********************************************/ 101 | 102 | typedef struct dict_s { 103 | char varName[STRLENGTH]; 104 | char varSym[STRLENGTH]; 105 | char varType[STRLENGTH]; 106 | int varNum; 107 | int varMandatory; 108 | int varScope; 109 | } dict_t; 110 | 111 | extern dict_t dictionary[]; 112 | 113 | 114 | 115 | 116 | /********************************************** 117 | * Definition of the values structures. * 118 | * * 119 | **********************************************/ 120 | 121 | typedef struct values_s { 122 | GString *strPtr; /* Pointer to the GString that contains the value. */ 123 | void *valPtr; /* Pointer to the actual value. */ 124 | } values_t; 125 | 126 | /* 127 | * "extern" definition of variables that are defined elsewhere. 128 | */ 129 | 130 | 131 | extern values_t globals[]; 132 | extern values_t locals[]; 133 | 134 | /* 135 | * "extern" definition of configuration variables, defined elsewhere. 136 | */ 137 | extern values_t confVars[]; 138 | 139 | /* Mutex lock; used for synchronising changes. */ 140 | pthread_mutex_t Lock; 141 | 142 | /* 143 | * New value of the bindport. 144 | * This must be a global variable. 145 | * This variable is no longer needed. 146 | * char newPort[16]; 147 | */ 148 | 149 | /* 150 | * The following is needed for the SOURCE variable. First, 151 | * we define the "database" structure. Then, we define the 152 | * structure of an element of the linked list. Lastly, we 153 | * define the linked list itself. 154 | */ 155 | 156 | typedef struct ca_database_s { 157 | 158 | char host[64]; 159 | int port; 160 | char user[16]; 161 | char password[9]; 162 | char dbName[16]; 163 | } ca_database_t; 164 | 165 | typedef struct ca_mirror_s { 166 | char host[64]; 167 | int port; 168 | char log[64]; 169 | int delay; 170 | int protocolVer; 171 | char mrName[16]; 172 | } ca_mirror_t; 173 | 174 | typedef struct ca_ripadmin_s { 175 | char host[64]; 176 | int port; 177 | char user[16]; 178 | char password[9]; 179 | char tableName[72]; 180 | } ca_ripadmin_t; 181 | 182 | extern ca_database_t ripe; 183 | extern ca_database_t arin; 184 | extern ca_database_t radb; 185 | 186 | typedef struct ca_database_list_s { 187 | char name[16]; 188 | ca_database_t db; 189 | int opMode; 190 | ca_mirror_t nrtm; 191 | int updPort; 192 | char canupd[2]; 193 | char deflook[2]; 194 | } ca_database_list_t; 195 | 196 | /* 197 | * Define the type of a source. 198 | * This is the name of a source and 199 | * the details of the database which 200 | * makes this source. 201 | */ 202 | typedef struct ca_dbSource_s { 203 | char name[16]; 204 | ca_database_t db; 205 | int opMode; 206 | ca_mirror_t nrtm; 207 | int updPort; 208 | char canupd[2]; 209 | char deflook[2]; 210 | } ca_dbSource_t; 211 | 212 | /* 213 | * Define the source handle: 214 | * this is a pointer to a source; 215 | * i.e. it is of type ca_dbSource_t. 216 | */ 217 | typedef ca_dbSource_t ca_SrcHdl_t; 218 | 219 | 220 | /* 221 | * Define an updateSource. This is used by dbupdate. 222 | * 223 | */ 224 | typedef struct ca_updDbSource_s { 225 | char name[16]; 226 | ca_database_t updDb; 227 | char whoisd_host[32]; 228 | int qryPort; 229 | int updPort; 230 | } ca_updDbSource_t; 231 | 232 | 233 | 234 | extern ca_database_list_t ripeComponent; 235 | extern ca_database_list_t arinComponent; 236 | extern ca_database_list_t radbComponent; 237 | 238 | /* 239 | * typedef struct GSList { 240 | * gpointer src; 241 | * GSList *next; 242 | * } ca_source_t; 243 | */ 244 | /* gpointer src; This points to a ca_database_list_t varialbe */ 245 | 246 | 247 | /************************************************************* 248 | * Definition of the default values for the SOURCE variable. * 249 | * * 250 | *************************************************************/ 251 | 252 | /* 253 | * char ca_defHost[64]; 254 | * char ca_defPort[16]; 255 | * char ca_defUser[16]; 256 | * char ca_defPassword[9]; 257 | * char ca_defdbName[16]; 258 | */ 259 | 260 | /* 261 | * extern char ca_defPort[16]; 262 | * extern char ca_defHost[64]; 263 | * extern char ca_defUser[16]; 264 | * extern char ca_defPassword[9]; 265 | * extern char ca_defdbName[16]; 266 | */ 267 | 268 | /* 269 | * The linked-list of sources. 270 | * 271 | */ 272 | extern GSList *sourceList; 273 | 274 | /* 275 | * The linked-list of databases and mirrors used by ca_readSources() 276 | */ 277 | extern GSList *dbList; 278 | extern GSList *nrtmList; 279 | 280 | /* 281 | */ 282 | 283 | /* 284 | * extern ca_source_t *srcList; 285 | */ 286 | 287 | /* 288 | * A varialbe of type GSList 289 | */ 290 | extern ca_dbSource_t *testSource; 291 | 292 | 293 | /* 294 | * 20000609 295 | * Experiment: 296 | * define the variable mySrcList as type GSList; 297 | * use the extern modifier and put the "real" definition 298 | * of the variable elsewhere. 299 | * 300 | * extern GSList *mySrcList; 301 | */ 302 | 303 | /* 304 | * The test configuration file. 305 | * This is defined using a constant string, cf. Oualline, p.145. 306 | */ 307 | extern const char *testFile; 308 | extern const char *tempFile; 309 | extern const char *dictFile; 310 | extern const char *confFile; 311 | extern const char *sourcesFile; 312 | 313 | /* 314 | * Value returned by ca_getStorageLocation if the symbol for 315 | * a configuration variable cannot be found. 316 | * 317 | * This value is also returned by ca_getType, if it cannot map 318 | * the name of a configuration variable to a data type. 319 | * 320 | */ 321 | #define NOT_FOUND -1 322 | #define INCOMPLETE -1 323 | 324 | /* 325 | * Definition of the identifiers used in the sources configuration file. 326 | */ 327 | #define DATABASE_KEY "DATABASE" 328 | #define NRTM_KEY "NRTM" 329 | #define SOURCE_KEY "SOURCE" 330 | 331 | /* 332 | * Symbolic constants defined to represent data types. 333 | 334 | * #define CA_INT 11 335 | * #define CA_STRING 12 336 | * #define CA_DIRLIST 13 337 | * #define CA_BOOLEAN 14 338 | * #define CA_SOURCETYPE 15 339 | */ 340 | 341 | extern ca_dbSource_t *theSrc; 342 | 343 | /* 344 | * Macros and const char * definitions for warning and error 345 | * messages. 346 | */ 347 | 348 | extern const char *configWarningStr; 349 | extern const char *configError_1Str; 350 | extern const char *configError_2Str; 351 | extern const char *configVarChk_OK_Str; 352 | 353 | 354 | #ifdef __cplusplus 355 | } 356 | #endif 357 | 358 | 359 | #endif /* CA_DEFS */