|
Mixe for Privacy and Anonymity in the Internet
|
00001 /* 00002 Copyright (c) The JAP-Team, JonDos GmbH 00003 00004 All rights reserved. 00005 00006 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 00007 00008 * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 00009 * Redistributions in binary form must reproduce the above copyright notice, 00010 this list of conditions and the following disclaimer in the documentation and/or 00011 other materials provided with the distribution. 00012 * Neither the name of the University of Technology Dresden, Germany, nor the name of 00013 the JonDos GmbH, nor the names of their contributors may be used to endorse or 00014 promote products derived from this software without specific prior written permission. 00015 00016 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 00017 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00018 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 00019 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR 00020 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00021 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00022 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 00023 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 00024 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 00025 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00026 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00027 */ 00028 #ifndef MONITORING_DEFS_H_ 00029 #define MONITORING_DEFS_H_ 00030 00049 /* How many different status types exist*/ 00050 00051 #define STATUS_FLAG(status_type) (1<<(unsigned int)status_type) 00052 00053 #define FIRST_STATUS 0 00054 #define FIRST_EVENT 0 00055 #define ENTRY_STATE 0 00056 00057 #define DOM_ELEMENT_STATUS_MESSAGE_NAME "StatusMessage" 00058 #define DOM_ELEMENT_STATE_NAME "State" 00059 #define DOM_ELEMENT_STATE_LEVEL_NAME "StateLevel" 00060 #define DOM_ELEMENT_STATE_DESCRIPTION_NAME "StateDescription" 00061 00062 #define MAX_DESCRIPTION_LENGTH 50 00063 #define MONITORING_SERVER_PORT 8080 00064 #define XML_STATUS_MESSAGE_MAX_SIZE 3000 00065 00066 #define XML_STATUS_MESSAGE_START "<StatusMessage>" 00067 #define HTTP_ANSWER_PREFIX_FORMAT "HTTP/1.1 200 OK\nContent-Length: %u\nConnection: close\nContent-Type: text/xml; charset=UTF-8\n\n" 00068 00069 #define HTTP_ANSWER_PREFIX_MAX_LENGTH 100 00070 00071 #define EVER 1 00072 00073 //all status types 00074 enum status_type 00075 { 00076 stat_undef = -1, 00077 stat_networking = 0, 00078 #ifdef PAYMENT 00079 stat_payment, 00080 #endif 00081 stat_system, 00082 stat_all 00083 }; 00084 00085 #define NR_STATUS_TYPES stat_all 00086 00087 //enum type for the id of a state 00088 enum state_type 00089 { 00090 st_ignore = -1, 00091 /* networking states */ 00092 st_net_entry = 0, 00093 st_net_firstMixInit, st_net_firstMixConnectedToNext, st_net_firstMixOnline , 00094 st_net_middleMixInit, st_net_middleMixConnectedToPrev, 00095 st_net_middleMixConnectedToNext, st_net_middleMixOnline, 00096 st_net_lastMixInit, st_net_lastMixConnectedToPrev, st_net_lastMixOnline, 00097 st_net_overall, /* only represents the number all network states */ 00098 #ifdef PAYMENT 00099 /* payment states */ 00100 st_pay_entry = 0, 00101 st_pay_aiInit, st_pay_aiShutdown, 00102 st_pay_biAvailable, st_pay_biUnreachable, st_pay_biPermanentlyUnreachable, 00103 st_pay_dbError, st_pay_dbErrorBiUnreachable, st_pay_dbErrorBiPermanentlyUnreachable, 00104 st_pay_overall, /* only represents the number all payment states */ 00105 #endif 00106 /* system states */ 00107 st_sys_entry = 0, 00108 st_sys_initializing, st_sys_operating, st_sys_restarting, 00109 st_sys_shuttingDown, st_sys_ShuttingDownAfterSegFault, 00110 st_sys_overall /* only represents the number all system states */ 00111 }; 00112 00113 //enum type for the id of an event 00114 enum event_type 00115 { 00116 /* networking events */ 00117 ev_net_firstMixInited = 0, ev_net_middleMixInited , ev_net_lastMixInited, 00118 ev_net_prevConnected, ev_net_nextConnected, 00119 ev_net_prevConnectionClosed, ev_net_nextConnectionClosed, 00120 ev_net_keyExchangePrevSuccessful, ev_net_keyExchangeNextSuccessful, 00121 ev_net_keyExchangePrevFailed, ev_net_keyExchangeNextFailed, 00122 ev_net_overall, /* only represents the number all network events */ 00123 #ifdef PAYMENT 00124 /* payment events */ 00125 ev_pay_aiInited = 0, ev_pay_aiShutdown, 00126 ev_pay_biConnectionSuccess, ev_pay_biConnectionFailure, ev_pay_biConnectionCriticalSubseqFailures, 00127 ev_pay_dbConnectionSuccess, ev_pay_dbConnectionFailure, 00128 ev_pay_overall, /* only represents the number all payment events */ 00129 #endif 00130 /* system events */ 00131 ev_sys_start = 0, 00132 ev_sys_enterMainLoop, ev_sys_leavingMainLoop, 00133 ev_sys_sigTerm, ev_sys_sigInt, ev_sys_sigSegV, 00134 ev_sys_overall /* only represents the number all system events */ 00135 }; 00136 00137 #ifdef PAYMENT 00138 #define PAYMENT_STATUS_NAME "PaymentStatus" 00139 #define NR_PAYMENT_STATES st_pay_overall 00140 #define NR_PAYMENT_EVENTS ev_pay_overall 00141 #endif 00142 00143 #define NETWORKING_STATUS_NAME "NetworkingStatus" 00144 #define NR_NETWORKING_STATES st_net_overall 00145 #define NR_NETWORKING_EVENTS ev_net_overall 00146 00147 #define SYSTEM_STATUS_NAME "SystemStatus" 00148 #define NR_SYSTEM_STATES st_sys_overall 00149 #define NR_SYSTEM_EVENTS ev_sys_overall 00150 00151 static const char *STATUS_NAMES[NR_STATUS_TYPES] = 00152 { 00153 NETWORKING_STATUS_NAME, 00154 #ifdef PAYMENT 00155 PAYMENT_STATUS_NAME, 00156 #endif 00157 SYSTEM_STATUS_NAME 00158 }; 00159 00160 static const int EVENT_COUNT[NR_STATUS_TYPES] = 00161 { 00162 NR_NETWORKING_EVENTS, 00163 #ifdef PAYMENT 00164 NR_PAYMENT_EVENTS, 00165 #endif 00166 NR_SYSTEM_EVENTS 00167 }; 00168 00169 static const int STATE_COUNT[NR_STATUS_TYPES] = 00170 { 00171 NR_NETWORKING_STATES, 00172 #ifdef PAYMENT 00173 NR_PAYMENT_STATES, 00174 #endif 00175 NR_SYSTEM_STATES 00176 }; 00177 00178 00179 /* indices must correspond to strings in STATUS_LEVEL_NAMES */ 00180 enum state_level 00181 { 00182 stl_ok = 0, stl_warning, stl_critical, stl_unknown, stl_all 00183 }; 00184 00185 #define NR_STATE_LEVELS stl_all 00186 00187 static const char *STATUS_LEVEL_NAMES[NR_STATE_LEVELS] = 00188 { 00189 "OK", "WARNING", "CRITICAL", "UNKNOWN" 00190 }; 00191 00192 typedef enum state_type state_type_t; 00193 typedef enum status_type status_type_t; 00194 typedef enum state_type transition_t; 00195 typedef enum event_type event_type_t; 00196 typedef enum state_level state_level_t; 00197 00198 //struct representing an event 00199 struct event 00200 { 00201 event_type_t ev_type; //id of the event 00202 status_type_t ev_statusType; //status to which the event belongs 00203 char *ev_description; //text description of this event. 00204 }; 00205 00206 struct state 00207 { 00208 state_type_t st_type; //id of the state 00209 status_type_t st_statusType; //status to which the state belongs 00210 state_level_t st_stateLevel; //level of the state (e.g "ok", "critical") 00211 char *st_description; //text description of this state. 00212 struct event *st_cause; 00213 struct state *st_prev; 00214 transition_t *st_transitions; //pointer to the transitions which leads from this state to other states 00215 }; 00216 00217 typedef struct state state_t; 00218 typedef struct event event_t; 00219 00221 #define FINISH_STATE_DEFINITIONS(state_array) \ 00222 FINISH_NETWORKING_STATE_DEFINITIONS(state_array) \ 00223 FINISH_PAYMENT_STATE_DEFINITIONS(state_array) \ 00224 FINISH_SYSTEM_STATE_DEFINITIONS(state_array) 00225 00226 #define FINISH_EVENT_DEFINITIONS(event_array) \ 00227 FINISH_NETWORKING_EVENT_DEFINITIONS(event_array) \ 00228 FINISH_PAYMENT_EVENT_DEFINITIONS(event_array) \ 00229 FINISH_SYSTEM_EVENT_DEFINITIONS(event_array) 00230 00231 /* networking states description and transition assignment 00232 * new networking state definitions can be appended here 00233 * (after being declared as networking enum state_type) 00234 */ 00235 #define FINISH_NETWORKING_STATE_DEFINITIONS(state_array) \ 00236 NET_STATE_DEF(state_array, st_net_entry, \ 00237 "networking entry state", \ 00238 TRANS_NET_ENTRY, stl_unknown) \ 00239 NET_STATE_DEF(state_array, st_net_firstMixInit,\ 00240 "first mix initialized", \ 00241 TRANS_NET_FIRST_MIX_INIT, stl_warning) \ 00242 NET_STATE_DEF(state_array, st_net_firstMixConnectedToNext, \ 00243 "first mix connected to next mix", \ 00244 TRANS_NET_FIRST_MIX_CONNECTED_TO_NEXT, stl_warning) \ 00245 NET_STATE_DEF(state_array, st_net_firstMixOnline, \ 00246 "first mix online", \ 00247 TRANS_NET_FIRST_MIX_ONLINE, stl_ok) \ 00248 NET_STATE_DEF(state_array, st_net_middleMixInit, \ 00249 "middle mix initialized", \ 00250 TRANS_NET_MIDDLE_MIX_INIT, stl_warning) \ 00251 NET_STATE_DEF(state_array, st_net_middleMixConnectedToPrev, \ 00252 "middle mix connected to previous mix", \ 00253 TRANS_NET_MIDDLE_MIX_CONNECTED_TO_PREV, stl_warning) \ 00254 NET_STATE_DEF(state_array, st_net_middleMixConnectedToNext, \ 00255 "middle mix connected to next mix", \ 00256 TRANS_NET_MIDDLE_MIX_CONNECTED_TO_NEXT, stl_warning) \ 00257 NET_STATE_DEF(state_array, st_net_middleMixOnline, \ 00258 "middle mix online", \ 00259 TRANS_NET_MIDDLE_MIX_ONLINE, stl_ok) \ 00260 NET_STATE_DEF(state_array, st_net_lastMixInit, \ 00261 "last mix initialized", \ 00262 TRANS_NET_LAST_MIX_INIT, stl_warning) \ 00263 NET_STATE_DEF(state_array, st_net_lastMixConnectedToPrev, \ 00264 "last mix connected to previous mix", \ 00265 TRANS_NET_LAST_MIX_CONNECTED_TO_PREV, stl_warning) \ 00266 NET_STATE_DEF(state_array, st_net_lastMixOnline, \ 00267 "last mix online", \ 00268 TRANS_NET_LAST_MIX_ONLINE, stl_ok) 00269 00270 /* networking events descriptions */ 00271 #define FINISH_NETWORKING_EVENT_DEFINITIONS(event_array) \ 00272 NET_EVENT_DEF(event_array, ev_net_firstMixInited, \ 00273 "first mix initialization finished") \ 00274 NET_EVENT_DEF(event_array, ev_net_middleMixInited, \ 00275 "middle mix initialization finished") \ 00276 NET_EVENT_DEF(event_array, ev_net_lastMixInited, \ 00277 "last mix initialization finished") \ 00278 NET_EVENT_DEF(event_array, ev_net_prevConnected, \ 00279 "connection to previous mix established") \ 00280 NET_EVENT_DEF(event_array, ev_net_nextConnected, \ 00281 "connection to next mix established") \ 00282 NET_EVENT_DEF(event_array, ev_net_keyExchangePrevSuccessful, \ 00283 "key exchange with previous mix successful") \ 00284 NET_EVENT_DEF(event_array, ev_net_keyExchangeNextSuccessful, \ 00285 "key exchange with next mix successful") \ 00286 NET_EVENT_DEF(event_array, ev_net_keyExchangePrevFailed, \ 00287 "key exchange with previous mix failed") \ 00288 NET_EVENT_DEF(event_array, ev_net_keyExchangeNextFailed, \ 00289 "key exchange with next mix failed") \ 00290 NET_EVENT_DEF(event_array, ev_net_prevConnectionClosed, \ 00291 "connection to previous mix closed") \ 00292 NET_EVENT_DEF(event_array, ev_net_nextConnectionClosed, \ 00293 "connection to next mix closed") 00294 00295 #ifdef PAYMENT 00296 /* payment states description and transition assignment 00297 * new payment state definitions can be appended here 00298 * (after being declared as payment enum state_type) 00299 */ 00300 #define FINISH_PAYMENT_STATE_DEFINITIONS(state_array) \ 00301 PAY_STATE_DEF(state_array, st_pay_entry, \ 00302 "payment entry state", \ 00303 TRANS_PAY_ENTRY, stl_unknown) \ 00304 PAY_STATE_DEF(state_array, st_pay_aiInit, \ 00305 "accounting instance initialized", \ 00306 TRANS_PAY_AI_INIT, stl_ok) \ 00307 PAY_STATE_DEF(state_array, st_pay_aiShutdown, \ 00308 "accounting instance shutdown", \ 00309 TRANS_PAY_AI_SHUTDOWN, stl_critical) \ 00310 PAY_STATE_DEF(state_array, st_pay_biAvailable, \ 00311 "payment instance available", \ 00312 TRANS_PAY_BI_AVAILABLE, stl_ok) \ 00313 PAY_STATE_DEF(state_array, st_pay_biUnreachable, \ 00314 "payment instance temporarily unreachable", \ 00315 TRANS_PAY_BI_UNREACHABLE, stl_warning) \ 00316 PAY_STATE_DEF(state_array, st_pay_biPermanentlyUnreachable, \ 00317 "payment instance permanently unreachable", \ 00318 TRANS_PAY_BI_PERMANENTLY_UNREACHABLE, stl_critical) \ 00319 PAY_STATE_DEF(state_array, st_pay_dbError, \ 00320 "pay DB cannot be accessed ", \ 00321 TRANS_PAY_DB_ERROR, stl_critical) \ 00322 PAY_STATE_DEF(state_array, st_pay_dbErrorBiUnreachable, \ 00323 "pay DB cannot be accessed and Payment Instance temporarily unreachable", \ 00324 TRANS_PAY_DB_ERROR_BI_UNREACHABLE, stl_critical) \ 00325 PAY_STATE_DEF(state_array, st_pay_dbErrorBiPermanentlyUnreachable, \ 00326 "pay DB cannot be accessed and Payment Instance permanently unreachable", \ 00327 TRANS_PAY_DB_ERROR_BI_PERMANENTLY_UNREACHABLE, stl_critical) 00328 00329 /* payment events descriptions */ 00330 #define FINISH_PAYMENT_EVENT_DEFINITIONS(event_array) \ 00331 PAY_EVENT_DEF(event_array, ev_pay_aiInited, \ 00332 "accounting instance initialization finished") \ 00333 PAY_EVENT_DEF(event_array, ev_pay_aiShutdown, \ 00334 "accounting instance shutdown finished") \ 00335 PAY_EVENT_DEF(event_array, ev_pay_biConnectionSuccess, \ 00336 "successfully connected to payment instance") \ 00337 PAY_EVENT_DEF(event_array, ev_pay_biConnectionFailure, \ 00338 "connection to payment instance failed") \ 00339 PAY_EVENT_DEF(event_array, ev_pay_biConnectionCriticalSubseqFailures, \ 00340 "connection to payment instance failed permanently") \ 00341 PAY_EVENT_DEF(event_array, ev_pay_dbConnectionSuccess, \ 00342 "pay DB access successful") \ 00343 PAY_EVENT_DEF(event_array, ev_pay_dbConnectionFailure, \ 00344 "pay DB access failed") 00345 #else 00346 #define FINISH_PAYMENT_STATE_DEFINITIONS(state_array) 00347 #define FINISH_PAYMENT_EVENT_DEFINITIONS(event_array) 00348 #endif /* PAYMENT */ 00349 00350 /* system states description and transition assignment 00351 * new system state definitions can be appended here 00352 * (after being declared as system enum state_type) 00353 */ 00354 #define FINISH_SYSTEM_STATE_DEFINITIONS(state_array) \ 00355 SYS_STATE_DEF(state_array, st_sys_entry, \ 00356 "system entry state", \ 00357 TRANS_SYS_ENTRY, stl_unknown) \ 00358 SYS_STATE_DEF(state_array, st_sys_initializing, \ 00359 "mix is initializing", \ 00360 TRANS_SYS_INITIALIZING, stl_warning) \ 00361 SYS_STATE_DEF(state_array, st_sys_operating, \ 00362 "mix is operating", \ 00363 TRANS_SYS_OPERATING, stl_ok) \ 00364 SYS_STATE_DEF(state_array, st_sys_restarting, \ 00365 "mix is restarting", \ 00366 TRANS_SYS_RESTARTING, stl_warning) \ 00367 SYS_STATE_DEF(state_array, st_sys_shuttingDown, \ 00368 "mix is shutting down", \ 00369 TRANS_SYS_SHUTTING_DOWN, stl_critical) \ 00370 SYS_STATE_DEF(state_array, st_sys_ShuttingDownAfterSegFault, \ 00371 "mix is shutting down due to a segmentation fault!", \ 00372 TRANS_SYS_SHUTTING_DOWN_AFTER_SEG_FAULT, stl_critical) 00373 00374 /* payment events descriptions */ 00375 #define FINISH_SYSTEM_EVENT_DEFINITIONS(event_array) \ 00376 SYS_EVENT_DEF(event_array, ev_sys_start, \ 00377 "mix startup") \ 00378 SYS_EVENT_DEF(event_array, ev_sys_enterMainLoop, \ 00379 "mix entering main loop") \ 00380 SYS_EVENT_DEF(event_array, ev_sys_leavingMainLoop, \ 00381 "mix leaving main loop") \ 00382 SYS_EVENT_DEF(event_array, ev_sys_sigTerm, \ 00383 "mix caught SIG_TERM") \ 00384 SYS_EVENT_DEF(event_array, ev_sys_sigInt, \ 00385 "mix caught SIG_INT") \ 00386 SYS_EVENT_DEF(event_array, ev_sys_sigSegV, \ 00387 "mix caught SIG_SEGV") 00388 00389 /* convenience macros for special status state and event definitions */ 00390 #define NET_STATE_DEF(state_array, state_type, description, transitions, stateLevel) \ 00391 STATE_DEF(state_array, stat_networking, state_type, description, transitions, stateLevel) 00392 00393 #define NET_EVENT_DEF(event_array, event_type, description) \ 00394 EVENT_DEF(event_array, stat_networking, event_type, description) 00395 00396 #ifdef PAYMENT 00397 #define PAY_STATE_DEF(state_array, state_type, description, transitions, stateLevel) \ 00398 STATE_DEF(state_array, stat_payment, state_type, description, transitions, stateLevel) 00399 00400 #define PAY_EVENT_DEF(event_array, event_type, description) \ 00401 EVENT_DEF(event_array, stat_payment, event_type, description) 00402 #else 00403 #define PAY_STATE_DEF(state_array, state_type, description, transitions, stateLevel) 00404 #define PAY_EVENT_DEF(event_array, event_type, description) 00405 #endif 00406 00407 #define SYS_STATE_DEF(state_array, state_type, description, transitions, stateLevel) \ 00408 STATE_DEF(state_array, stat_system, state_type, description, transitions, stateLevel) 00409 00410 #define SYS_EVENT_DEF(event_array, event_type, description) \ 00411 EVENT_DEF(event_array, stat_system, event_type, description) 00412 00413 /* This macro is used for assigning state description and state transitions 00414 * to the initialized states in the function "initStates()" 00415 */ 00416 #define STATE_DEF(state_array, status_type, state_type, description, transitions, stateLevel) \ 00417 state_array[status_type][state_type]->st_description = (char *) description; \ 00418 state_array[status_type][state_type]->st_transitions = transitions; \ 00419 state_array[status_type][state_type]->st_stateLevel = stateLevel; 00420 /* Same for events description assignment */ 00421 #define EVENT_DEF(event_array, status_type, event_type, description) \ 00422 event_array[status_type][event_type]->ev_description = (char *) description; 00423 00435 transition_t *defineTransitions(status_type_t s_type, int transitionCount, ...); 00436 00439 /* transitions for the networking entry state: */ 00440 #define TRANS_NET_ENTRY \ 00441 (defineTransitions(stat_networking, 3, \ 00442 ev_net_firstMixInited, st_net_firstMixInit, \ 00443 ev_net_middleMixInited, st_net_middleMixInit, \ 00444 ev_net_lastMixInited, st_net_lastMixInit)) 00445 00446 /* transitions for st_net_firstMixInit: */ 00447 #define TRANS_NET_FIRST_MIX_INIT \ 00448 (defineTransitions(stat_networking, 1, \ 00449 ev_net_nextConnected, st_net_firstMixConnectedToNext)) 00450 00451 /* transitions for st_net_firstMixConnectedToNext: */ 00452 #define TRANS_NET_FIRST_MIX_CONNECTED_TO_NEXT \ 00453 (defineTransitions(stat_networking, 2, \ 00454 ev_net_keyExchangeNextSuccessful, st_net_firstMixOnline, \ 00455 ev_net_nextConnectionClosed, st_net_firstMixInit)) 00456 00457 /* transitions for st_net_firstMixOnline: */ 00458 #define TRANS_NET_FIRST_MIX_ONLINE \ 00459 (defineTransitions(stat_networking, 1, \ 00460 ev_net_nextConnectionClosed, st_net_firstMixInit)) 00461 00462 /* transitions for st_net_middleMixInit: */ 00463 #define TRANS_NET_MIDDLE_MIX_INIT \ 00464 (defineTransitions(stat_networking, 1, \ 00465 ev_net_prevConnected, st_net_middleMixConnectedToPrev)) 00466 00467 /* transitions for st_net_middleMixConnectedToPrev: */ 00468 #define TRANS_NET_MIDDLE_MIX_CONNECTED_TO_PREV \ 00469 (defineTransitions(stat_networking, 2, \ 00470 ev_net_nextConnected, st_net_middleMixConnectedToNext, \ 00471 ev_net_prevConnectionClosed, st_net_middleMixInit)) 00472 00473 /* transitions for st_net_middleMixConnectedToNext: */ 00474 #define TRANS_NET_MIDDLE_MIX_CONNECTED_TO_NEXT \ 00475 (defineTransitions(stat_networking, 4, \ 00476 ev_net_keyExchangeNextFailed, st_net_middleMixInit, \ 00477 ev_net_keyExchangePrevFailed, st_net_middleMixInit, \ 00478 ev_net_keyExchangeNextSuccessful, st_net_middleMixConnectedToNext, \ 00479 ev_net_keyExchangePrevSuccessful, st_net_middleMixOnline)) 00480 00481 /* transitions for st_net_middleMixOnline: */ 00482 #define TRANS_NET_MIDDLE_MIX_ONLINE \ 00483 (defineTransitions(stat_networking, 2, \ 00484 ev_net_prevConnectionClosed, st_net_middleMixInit, \ 00485 ev_net_nextConnectionClosed, st_net_middleMixInit)) 00486 00487 /* transitions for st_net_lastMixInit: */ 00488 #define TRANS_NET_LAST_MIX_INIT \ 00489 (defineTransitions(stat_networking, 1, \ 00490 ev_net_prevConnected, st_net_lastMixConnectedToPrev)) 00491 00492 /* transitions for st_net_lastMixConnectedToPrev: */ 00493 #define TRANS_NET_LAST_MIX_CONNECTED_TO_PREV \ 00494 (defineTransitions(stat_networking, 2, \ 00495 ev_net_keyExchangePrevFailed, st_net_lastMixInit, \ 00496 ev_net_keyExchangePrevSuccessful, st_net_lastMixOnline)) 00497 00498 00499 /* transitions for st_net_lastMixOnline: */ 00500 #define TRANS_NET_LAST_MIX_ONLINE \ 00501 (defineTransitions(stat_networking, 1, \ 00502 ev_net_prevConnectionClosed, st_net_lastMixInit)) 00503 00504 #ifdef PAYMENT 00505 00508 /* transitions for st_pay_entry */ 00509 #define TRANS_PAY_ENTRY \ 00510 (defineTransitions(stat_payment, 1, \ 00511 ev_pay_aiInited, st_pay_aiInit)) 00512 00513 /* transitions for st_pay_aiInit */ 00514 #define TRANS_PAY_AI_INIT \ 00515 (defineTransitions(stat_payment, 4, \ 00516 ev_pay_aiShutdown, st_pay_aiShutdown, \ 00517 ev_pay_biConnectionSuccess, st_pay_biAvailable, \ 00518 ev_pay_biConnectionFailure, st_pay_biUnreachable, \ 00519 ev_pay_dbConnectionFailure, st_pay_dbError)) 00520 00521 /* transitions for st_pay_aiShutdown */ 00522 #define TRANS_PAY_AI_SHUTDOWN \ 00523 (defineTransitions(stat_payment, 1, \ 00524 ev_pay_aiInited, st_pay_aiInit)) 00525 00526 /* transitions for st_pay_biAvailable */ 00527 #define TRANS_PAY_BI_AVAILABLE \ 00528 (defineTransitions(stat_payment, 3, \ 00529 ev_pay_aiShutdown, st_pay_aiShutdown, \ 00530 ev_pay_biConnectionFailure, st_pay_biUnreachable, \ 00531 ev_pay_dbConnectionFailure, st_pay_dbError)) 00532 00533 /* transitions for st_pay_biUnreachable */ 00534 #define TRANS_PAY_BI_UNREACHABLE \ 00535 (defineTransitions(stat_payment, 4, \ 00536 ev_pay_aiShutdown, st_pay_aiShutdown, \ 00537 ev_pay_biConnectionSuccess, st_pay_biAvailable, \ 00538 ev_pay_biConnectionCriticalSubseqFailures, st_pay_biPermanentlyUnreachable, \ 00539 ev_pay_dbConnectionFailure, st_pay_dbErrorBiUnreachable)) 00540 00541 /* transitions for st_pay_biPermanentlyUnreachable */ 00542 #define TRANS_PAY_BI_PERMANENTLY_UNREACHABLE \ 00543 (defineTransitions(stat_payment, 3, \ 00544 ev_pay_aiShutdown, st_pay_aiShutdown, \ 00545 ev_pay_biConnectionSuccess, st_pay_biAvailable, \ 00546 ev_pay_dbConnectionFailure, st_pay_dbErrorBiPermanentlyUnreachable)) 00547 00548 /* transitions for st_pay_dbError */ 00549 #define TRANS_PAY_DB_ERROR \ 00550 (defineTransitions(stat_payment, 2, \ 00551 ev_pay_aiShutdown, st_pay_aiShutdown, \ 00552 ev_pay_dbConnectionSuccess, st_pay_aiInit)) 00553 00554 /* transitions for st_pay_dbErrorBiUnreachable */ 00555 #define TRANS_PAY_DB_ERROR_BI_UNREACHABLE \ 00556 (defineTransitions(stat_payment, 2, \ 00557 ev_pay_aiShutdown, st_pay_aiShutdown, \ 00558 ev_pay_dbConnectionSuccess, st_pay_biUnreachable)) 00559 00560 /* transitions for st_pay_dbErrorBiPermanentlyUnreachable */ 00561 #define TRANS_PAY_DB_ERROR_BI_PERMANENTLY_UNREACHABLE \ 00562 (defineTransitions(stat_payment, 2, \ 00563 ev_pay_aiShutdown, st_pay_aiShutdown, \ 00564 ev_pay_dbConnectionSuccess, st_pay_biPermanentlyUnreachable)) 00565 00566 #endif /* PAYMENT */ 00567 00570 /* transitions for st_sys_entry */ 00571 #define TRANS_SYS_ENTRY \ 00572 (defineTransitions(stat_system, 1, \ 00573 ev_sys_start, st_sys_initializing)) 00574 00575 /* transitions for st_sys_initializing */ 00576 #define TRANS_SYS_INITIALIZING \ 00577 (defineTransitions(stat_system, 4, \ 00578 ev_sys_enterMainLoop, st_sys_operating, \ 00579 ev_sys_sigTerm, st_sys_shuttingDown, \ 00580 ev_sys_sigInt, st_sys_shuttingDown, \ 00581 ev_sys_sigSegV, st_sys_ShuttingDownAfterSegFault)) 00582 00583 /* transitions for st_sys_operating */ 00584 #define TRANS_SYS_OPERATING \ 00585 (defineTransitions(stat_system, 4, \ 00586 ev_sys_leavingMainLoop, st_sys_restarting, \ 00587 ev_sys_sigTerm, st_sys_shuttingDown, \ 00588 ev_sys_sigInt, st_sys_shuttingDown, \ 00589 ev_sys_sigSegV, st_sys_ShuttingDownAfterSegFault)) 00590 00591 /* transitions for st_sys_restarting */ 00592 #define TRANS_SYS_RESTARTING \ 00593 (defineTransitions(stat_system, 4, \ 00594 ev_sys_enterMainLoop, st_sys_operating, \ 00595 ev_sys_sigTerm, st_sys_shuttingDown, \ 00596 ev_sys_sigInt, st_sys_shuttingDown, \ 00597 ev_sys_sigSegV, st_sys_ShuttingDownAfterSegFault)) 00598 00599 /* transitions for st_sys_shuttingDown */ 00600 #define TRANS_SYS_SHUTTING_DOWN \ 00601 (defineTransitions(stat_system, 1, \ 00602 ev_sys_sigSegV, st_sys_ShuttingDownAfterSegFault)) 00603 00604 /* transitions for st_sys_ShuttingDownAfterSegFault */ 00605 #define TRANS_SYS_SHUTTING_DOWN_AFTER_SEG_FAULT \ 00606 (defineTransitions(stat_system, 0)) 00607 00608 #endif /* MONITORING_DEFS_H_ */
1.7.6.1