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 |