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