00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef _OBJECTS_H
00028 #define _OBJECTS_H
00029
00030 #include "config.h"
00031 #include "common.h"
00032
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036
00037
00038
00039
00040
00041 #define CURRENT_OBJECT_STRUCTURE_VERSION 307
00042
00043
00044
00045
00046
00047
00048 #define MAX_STATE_HISTORY_ENTRIES 21
00049 #define MAX_CONTACT_ADDRESSES 6
00050
00051
00052
00053
00054
00055 #define NUM_OBJECT_SKIPLISTS 12
00056
00057 #define HOST_SKIPLIST 0
00058 #define SERVICE_SKIPLIST 1
00059 #define COMMAND_SKIPLIST 2
00060 #define TIMEPERIOD_SKIPLIST 3
00061 #define CONTACT_SKIPLIST 4
00062 #define CONTACTGROUP_SKIPLIST 5
00063 #define HOSTGROUP_SKIPLIST 6
00064 #define SERVICEGROUP_SKIPLIST 7
00065 #define HOSTDEPENDENCY_SKIPLIST 8
00066 #define SERVICEDEPENDENCY_SKIPLIST 9
00067 #define HOSTESCALATION_SKIPLIST 10
00068 #define SERVICEESCALATION_SKIPLIST 11
00069
00070
00071
00072
00073 #define VOLATILE_WITH_RENOTIFICATION_INTERVAL 2
00074
00075
00076
00077 #define EC_CONNECTOR_NO 0
00078 #define EC_CONNECTOR_OR 1
00079 #define EC_CONNECTOR_AND 2
00080
00081
00082
00083 typedef struct host_struct host;
00084 typedef struct service_struct service;
00085 typedef struct contact_struct contact;
00086
00087
00088 typedef struct objectlist_struct{
00089 void *object_ptr;
00090 struct objectlist_struct *next;
00091 }objectlist;
00092
00093
00094
00095 typedef struct timerange_struct{
00096 unsigned long range_start;
00097 unsigned long range_end;
00098 struct timerange_struct *next;
00099 }timerange;
00100
00101
00102
00103 typedef struct daterange_struct{
00104 int type;
00105 int syear;
00106 int smon;
00107 int smday;
00108 int swday;
00109 int swday_offset;
00110 int eyear;
00111 int emon;
00112 int emday;
00113 int ewday;
00114 int ewday_offset;
00115 int skip_interval;
00116 timerange *times;
00117 struct daterange_struct *next;
00118 }daterange;
00119
00120
00121
00122 typedef struct timeperiodexclusion_struct{
00123 char *timeperiod_name;
00124 struct timeperiod_struct *timeperiod_ptr;
00125 struct timeperiodexclusion_struct *next;
00126 }timeperiodexclusion;
00127
00128
00129
00130 typedef struct timeperiod_struct{
00131 char *name;
00132 char *alias;
00133 timerange *days[7];
00134 daterange *exceptions[DATERANGE_TYPES];
00135 timeperiodexclusion *exclusions;
00136 struct timeperiod_struct *next;
00137 struct timeperiod_struct *nexthash;
00138 }timeperiod;
00139
00140
00141
00142 typedef struct contactsmember_struct{
00143 char *contact_name;
00144 #ifdef NSCORE
00145 contact *contact_ptr;
00146 #endif
00147 struct contactsmember_struct *next;
00148 }contactsmember;
00149
00150
00151
00152 typedef struct contactgroup_struct{
00153 char *group_name;
00154 char *alias;
00155 contactsmember *members;
00156 struct contactgroup_struct *next;
00157 struct contactgroup_struct *nexthash;
00158 }contactgroup;
00159
00160
00161
00162 typedef struct contactgroupsmember_struct{
00163 char *group_name;
00164 #ifdef NSCORE
00165 contactgroup *group_ptr;
00166 #endif
00167 struct contactgroupsmember_struct *next;
00168 }contactgroupsmember;
00169
00170
00171
00172 typedef struct customvariablesmember_struct{
00173 char *variable_name;
00174 char *variable_value;
00175 int has_been_modified;
00176 struct customvariablesmember_struct *next;
00177 }customvariablesmember;
00178
00179
00180
00181 typedef struct command_struct{
00182 char *name;
00183 char *command_line;
00184 struct command_struct *next;
00185 struct command_struct *nexthash;
00186 }command;
00187
00188
00189
00190 typedef struct commandsmember_struct{
00191 char *command;
00192 #ifdef NSCORE
00193 command *command_ptr;
00194 #endif
00195 struct commandsmember_struct *next;
00196 }commandsmember;
00197
00198
00199
00200 struct contact_struct{
00201 char *name;
00202 char *alias;
00203 char *email;
00204 char *pager;
00205 char *address[MAX_CONTACT_ADDRESSES];
00206 commandsmember *host_notification_commands;
00207 commandsmember *service_notification_commands;
00208 int notify_on_service_unknown;
00209 int notify_on_service_warning;
00210 int notify_on_service_critical;
00211 int notify_on_service_recovery;
00212 int notify_on_service_flapping;
00213 int notify_on_service_downtime;
00214 int notify_on_host_down;
00215 int notify_on_host_unreachable;
00216 int notify_on_host_recovery;
00217 int notify_on_host_flapping;
00218 int notify_on_host_downtime;
00219 char *host_notification_period;
00220 char *service_notification_period;
00221 int host_notifications_enabled;
00222 int service_notifications_enabled;
00223 int can_submit_commands;
00224 int retain_status_information;
00225 int retain_nonstatus_information;
00226 customvariablesmember *custom_variables;
00227 #ifdef NSCORE
00228 time_t last_host_notification;
00229 time_t last_service_notification;
00230 unsigned long modified_attributes;
00231 unsigned long modified_host_attributes;
00232 unsigned long modified_service_attributes;
00233
00234 timeperiod *host_notification_period_ptr;
00235 timeperiod *service_notification_period_ptr;
00236 objectlist *contactgroups_ptr;
00237 #endif
00238 struct contact_struct *next;
00239 struct contact_struct *nexthash;
00240 };
00241
00242
00243
00244 typedef struct servicesmember_struct{
00245 char *host_name;
00246 char *service_description;
00247 #ifdef NSCORE
00248 service *service_ptr;
00249 #endif
00250 struct servicesmember_struct *next;
00251 }servicesmember;
00252
00253
00254
00255 typedef struct hostsmember_struct{
00256 char *host_name;
00257 #ifdef NSCORE
00258 host *host_ptr;
00259 #endif
00260 struct hostsmember_struct *next;
00261 }hostsmember;
00262
00263
00264
00265 typedef struct hostgroup_struct{
00266 char *group_name;
00267 char *alias;
00268 hostsmember *members;
00269 char *notes;
00270 char *notes_url;
00271 char *action_url;
00272 struct hostgroup_struct *next;
00273 struct hostgroup_struct *nexthash;
00274 }hostgroup;
00275
00276
00277
00278 struct host_struct{
00279 char *name;
00280 char *display_name;
00281 char *alias;
00282 char *address;
00283 hostsmember *parent_hosts;
00284 hostsmember *child_hosts;
00285 servicesmember *services;
00286 char *host_check_command;
00287 int initial_state;
00288 double check_interval;
00289 double retry_interval;
00290 int max_attempts;
00291 char *event_handler;
00292 contactgroupsmember *contact_groups;
00293 contactsmember *contacts;
00294 double notification_interval;
00295 double first_notification_delay;
00296 int notify_on_down;
00297 int notify_on_unreachable;
00298 int notify_on_recovery;
00299 int notify_on_flapping;
00300 int notify_on_downtime;
00301 char *notification_period;
00302 char *check_period;
00303 int flap_detection_enabled;
00304 double low_flap_threshold;
00305 double high_flap_threshold;
00306 int flap_detection_on_up;
00307 int flap_detection_on_down;
00308 int flap_detection_on_unreachable;
00309 int stalk_on_up;
00310 int stalk_on_down;
00311 int stalk_on_unreachable;
00312 int check_freshness;
00313 int freshness_threshold;
00314 int process_performance_data;
00315 int checks_enabled;
00316 int accept_passive_host_checks;
00317 int event_handler_enabled;
00318 int retain_status_information;
00319 int retain_nonstatus_information;
00320 int failure_prediction_enabled;
00321 char *failure_prediction_options;
00322 int obsess_over_host;
00323 char *notes;
00324 char *notes_url;
00325 char *action_url;
00326 char *icon_image;
00327 char *icon_image_alt;
00328 char *vrml_image;
00329 char *statusmap_image;
00330 int have_2d_coords;
00331 int x_2d;
00332 int y_2d;
00333 int have_3d_coords;
00334 double x_3d;
00335 double y_3d;
00336 double z_3d;
00337 int should_be_drawn;
00338 customvariablesmember *custom_variables;
00339 #ifdef NSCORE
00340 int problem_has_been_acknowledged;
00341 int acknowledgement_type;
00342 int check_type;
00343 int current_state;
00344 int last_state;
00345 int last_hard_state;
00346 char *plugin_output;
00347 char *long_plugin_output;
00348 char *perf_data;
00349 int state_type;
00350 int current_attempt;
00351 unsigned long current_event_id;
00352 unsigned long last_event_id;
00353 unsigned long current_problem_id;
00354 unsigned long last_problem_id;
00355 double latency;
00356 double execution_time;
00357 int is_executing;
00358 int check_options;
00359 int notifications_enabled;
00360 time_t last_host_notification;
00361 time_t next_host_notification;
00362 time_t next_check;
00363 int should_be_scheduled;
00364 time_t last_check;
00365 time_t last_state_change;
00366 time_t last_hard_state_change;
00367 time_t last_time_up;
00368 time_t last_time_down;
00369 time_t last_time_unreachable;
00370 int has_been_checked;
00371 int is_being_freshened;
00372 int notified_on_down;
00373 int notified_on_unreachable;
00374 int current_notification_number;
00375 #ifdef USE_ST_BASED_ESCAL_RANGES
00376 int current_down_notification_number;
00377 int current_unreachable_notification_number;
00378 #endif
00379 int no_more_notifications;
00380 unsigned long current_notification_id;
00381 int check_flapping_recovery_notification;
00382 int scheduled_downtime_depth;
00383 int pending_flex_downtime;
00384 int state_history[MAX_STATE_HISTORY_ENTRIES];
00385 int state_history_index;
00386 time_t last_state_history_update;
00387 int is_flapping;
00388 unsigned long flapping_comment_id;
00389 double percent_state_change;
00390 int total_services;
00391 unsigned long total_service_check_interval;
00392 unsigned long modified_attributes;
00393 int circular_path_checked;
00394 int contains_circular_path;
00395
00396 command *event_handler_ptr;
00397 command *check_command_ptr;
00398 timeperiod *check_period_ptr;
00399 timeperiod *notification_period_ptr;
00400 objectlist *hostgroups_ptr;
00401 #endif
00402 struct host_struct *next;
00403 struct host_struct *nexthash;
00404
00405
00406 char *processed_command;
00407
00408
00409 char *address6;
00410 };
00411
00412
00413
00414 typedef struct servicegroup_struct{
00415 char *group_name;
00416 char *alias;
00417 servicesmember *members;
00418 char *notes;
00419 char *notes_url;
00420 char *action_url;
00421 struct servicegroup_struct *next;
00422 struct servicegroup_struct *nexthash;
00423 }servicegroup;
00424
00425
00426
00427 struct service_struct{
00428 char *host_name;
00429 char *description;
00430 char *display_name;
00431 char *service_check_command;
00432 char *event_handler;
00433 int initial_state;
00434 double check_interval;
00435 double retry_interval;
00436 int max_attempts;
00437 int parallelize;
00438 contactgroupsmember *contact_groups;
00439 contactsmember *contacts;
00440 double notification_interval;
00441 double first_notification_delay;
00442 int notify_on_unknown;
00443 int notify_on_warning;
00444 int notify_on_critical;
00445 int notify_on_recovery;
00446 int notify_on_flapping;
00447 int notify_on_downtime;
00448 int stalk_on_ok;
00449 int stalk_on_warning;
00450 int stalk_on_unknown;
00451 int stalk_on_critical;
00452 int is_volatile;
00453 char *notification_period;
00454 char *check_period;
00455 int flap_detection_enabled;
00456 double low_flap_threshold;
00457 double high_flap_threshold;
00458 int flap_detection_on_ok;
00459 int flap_detection_on_warning;
00460 int flap_detection_on_unknown;
00461 int flap_detection_on_critical;
00462 int process_performance_data;
00463 int check_freshness;
00464 int freshness_threshold;
00465 int accept_passive_service_checks;
00466 int event_handler_enabled;
00467 int checks_enabled;
00468 int retain_status_information;
00469 int retain_nonstatus_information;
00470 int notifications_enabled;
00471 int obsess_over_service;
00472 int failure_prediction_enabled;
00473 char *failure_prediction_options;
00474 char *notes;
00475 char *notes_url;
00476 char *action_url;
00477 char *icon_image;
00478 char *icon_image_alt;
00479 customvariablesmember *custom_variables;
00480 #ifdef NSCORE
00481 int problem_has_been_acknowledged;
00482 int acknowledgement_type;
00483 int host_problem_at_last_check;
00484 int check_type;
00485 int current_state;
00486 int last_state;
00487 int last_hard_state;
00488 char *plugin_output;
00489 char *long_plugin_output;
00490 char *perf_data;
00491 int state_type;
00492 time_t next_check;
00493 int should_be_scheduled;
00494 time_t last_check;
00495 int current_attempt;
00496 unsigned long current_event_id;
00497 unsigned long last_event_id;
00498 unsigned long current_problem_id;
00499 unsigned long last_problem_id;
00500 time_t last_notification;
00501 time_t next_notification;
00502 int no_more_notifications;
00503 int check_flapping_recovery_notification;
00504 time_t last_state_change;
00505 time_t last_hard_state_change;
00506 time_t last_time_ok;
00507 time_t last_time_warning;
00508 time_t last_time_unknown;
00509 time_t last_time_critical;
00510 int has_been_checked;
00511 int is_being_freshened;
00512 int notified_on_unknown;
00513 int notified_on_warning;
00514 int notified_on_critical;
00515 int current_notification_number;
00516 #ifdef USE_ST_BASED_ESCAL_RANGES
00517 int current_warning_notification_number;
00518 int current_critical_notification_number;
00519 int current_unknown_notification_number;
00520 #endif
00521 unsigned long current_notification_id;
00522 double latency;
00523 double execution_time;
00524 int is_executing;
00525 int check_options;
00526 int scheduled_downtime_depth;
00527 int pending_flex_downtime;
00528 int state_history[MAX_STATE_HISTORY_ENTRIES];
00529 int state_history_index;
00530 int is_flapping;
00531 unsigned long flapping_comment_id;
00532 double percent_state_change;
00533 unsigned long modified_attributes;
00534
00535 host *host_ptr;
00536 command *event_handler_ptr;
00537 char *event_handler_args;
00538 command *check_command_ptr;
00539 char *check_command_args;
00540 timeperiod *check_period_ptr;
00541 timeperiod *notification_period_ptr;
00542 objectlist *servicegroups_ptr;
00543 #endif
00544 struct service_struct *next;
00545 struct service_struct *nexthash;
00546
00547
00548 char *processed_command;
00549 };
00550
00551
00552
00553
00554
00555
00556
00557
00558
00559 typedef struct escalation_condition_struct{
00560 char *host_name;
00561 char *service_description;
00562
00563
00564
00565
00566
00567
00568 int connector;
00569
00570 int escalate_on_down;
00571 int escalate_on_unreachable;
00572 int escalate_on_warning;
00573 int escalate_on_unknown;
00574 int escalate_on_critical;
00575 int escalate_on_ok;
00576
00577 struct escalation_condition_struct *next;
00578 }escalation_condition;
00579
00580
00581 typedef struct serviceescalation_struct{
00582 char *host_name;
00583 char *description;
00584 int first_notification;
00585 int last_notification;
00586 #ifdef USE_ST_BASED_ESCAL_RANGES
00587 int first_warning_notification;
00588 int last_warning_notification;
00589 int first_critical_notification;
00590 int last_critical_notification;
00591 int first_unknown_notification;
00592 int last_unknown_notification;
00593 #endif
00594 double notification_interval;
00595 char *escalation_period;
00596 int escalate_on_recovery;
00597 int escalate_on_warning;
00598 int escalate_on_unknown;
00599 int escalate_on_critical;
00600 escalation_condition *condition;
00601 contactgroupsmember *contact_groups;
00602 contactsmember *contacts;
00603 #ifdef NSCORE
00604 service *service_ptr;
00605 timeperiod *escalation_period_ptr;
00606 #endif
00607 struct serviceescalation_struct *next;
00608 struct serviceescalation_struct *nexthash;
00609 }serviceescalation;
00610
00611
00612
00613 typedef struct servicedependency_struct{
00614 int dependency_type;
00615 char *dependent_host_name;
00616 char *dependent_service_description;
00617 char *host_name;
00618 char *service_description;
00619 char *dependency_period;
00620 int inherits_parent;
00621 int fail_on_ok;
00622 int fail_on_warning;
00623 int fail_on_unknown;
00624 int fail_on_critical;
00625 int fail_on_pending;
00626 #ifdef NSCORE
00627 int circular_path_checked;
00628 int contains_circular_path;
00629
00630 service *master_service_ptr;
00631 service *dependent_service_ptr;
00632 timeperiod *dependency_period_ptr;
00633 #endif
00634 struct servicedependency_struct *next;
00635 struct servicedependency_struct *nexthash;
00636 }servicedependency;
00637
00638
00639
00640 typedef struct hostescalation_struct{
00641 char *host_name;
00642 int first_notification;
00643 int last_notification;
00644 #ifdef USE_ST_BASED_ESCAL_RANGES
00645 int first_down_notification;
00646 int last_down_notification;
00647 int first_unreachable_notification;
00648 int last_unreachable_notification;
00649 #endif
00650 double notification_interval;
00651 char *escalation_period;
00652 int escalate_on_recovery;
00653 int escalate_on_down;
00654 int escalate_on_unreachable;
00655 escalation_condition *condition;
00656 contactgroupsmember *contact_groups;
00657 contactsmember *contacts;
00658 #ifdef NSCORE
00659 host *host_ptr;
00660 timeperiod *escalation_period_ptr;
00661 #endif
00662 struct hostescalation_struct *next;
00663 struct hostescalation_struct *nexthash;
00664 }hostescalation;
00665
00666
00667
00668 typedef struct hostdependency_struct{
00669 int dependency_type;
00670 char *dependent_host_name;
00671 char *host_name;
00672 char *dependency_period;
00673 int inherits_parent;
00674 int fail_on_up;
00675 int fail_on_down;
00676 int fail_on_unreachable;
00677 int fail_on_pending;
00678 #ifdef NSCORE
00679 int circular_path_checked;
00680 int contains_circular_path;
00681
00682 host *master_host_ptr;
00683 host *dependent_host_ptr;
00684 timeperiod *dependency_period_ptr;
00685 #endif
00686 struct hostdependency_struct *next;
00687 struct hostdependency_struct *nexthash;
00688 }hostdependency;
00689
00690
00691
00692
00693
00694
00695 typedef struct host_cursor_struct{
00696 int host_hashchain_iterator;
00697 host *current_host_pointer;
00698 }host_cursor;
00699
00700
00701
00702
00703
00704
00705
00706
00707 int read_object_config_data(char *,int,int,int);
00708
00709
00710
00711 contact *add_contact(char *,char *,char *,char *,char **,char *,char *,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int);
00712 commandsmember *add_service_notification_command_to_contact(contact *,char *);
00713 commandsmember *add_host_notification_command_to_contact(contact *,char *);
00714 customvariablesmember *add_custom_variable_to_contact(contact *,char *,char *);
00715 host *add_host(char *,char *,char *,char *,char *,char *,int,double,double,int,int,int,int,int,int,double,double,char *,int,char *,int,int,char *,int,int,double,double,int,int,int,int,int,int,int,int,char *,int,int,char *,char *,char *,char *,char *,char *,char *,int,int,int,double,double,double,int,int,int,int,int);
00716 hostsmember *add_parent_host_to_host(host *,char *);
00717 hostsmember *add_child_link_to_host(host *,host *);
00718 contactgroupsmember *add_contactgroup_to_host(host *,char *);
00719 contactsmember *add_contact_to_host(host *,char *);
00720 customvariablesmember *add_custom_variable_to_host(host *,char *,char *);
00721 timeperiod *add_timeperiod(char *,char *);
00722 timeperiodexclusion *add_exclusion_to_timeperiod(timeperiod *,char *);
00723 timerange *add_timerange_to_timeperiod(timeperiod *,int,unsigned long,unsigned long);
00724 daterange *add_exception_to_timeperiod(timeperiod *,int,int,int,int,int,int,int,int,int,int,int,int);
00725 timerange *add_timerange_to_daterange(daterange *,unsigned long,unsigned long);
00726 hostgroup *add_hostgroup(char *,char *,char *,char *,char *);
00727 hostsmember *add_host_to_hostgroup(hostgroup *, char *);
00728 servicegroup *add_servicegroup(char *,char *,char *,char *,char *);
00729 servicesmember *add_service_to_servicegroup(servicegroup *,char *,char *);
00730 contactgroup *add_contactgroup(char *,char *);
00731 contactsmember *add_contact_to_contactgroup(contactgroup *,char *);
00732 command *add_command(char *,char *);
00733 service *add_service(char *,char *,char *,char *,int,int,int,int,double,double,double,double,char *,int,int,int,int,int,int,int,int,char *,int,char *,int,int,double,double,int,int,int,int,int,int,int,int,int,int,char *,int,int,char *,char *,char *,char *,char *,int,int,int);
00734 contactgroupsmember *add_contactgroup_to_service(service *,char *);
00735 contactsmember *add_contact_to_service(service *,char *);
00736 #ifndef USE_ST_BASED_ESCAL_RANGES
00737 serviceescalation *add_serviceescalation(char *,char *,int,int,double,char *,int,int,int,int);
00738 #else
00739 serviceescalation *add_serviceescalation(char *,char *,int,int,int,int,int,int,int,int,double,char *,int,int,int,int);
00740 #endif
00741 contactgroupsmember *add_contactgroup_to_serviceescalation(serviceescalation *,char *);
00742 contactsmember *add_contact_to_serviceescalation(serviceescalation *,char *);
00743 customvariablesmember *add_custom_variable_to_service(service *,char *,char *);
00744 servicedependency *add_service_dependency(char *,char *,char *,char *,int,int,int,int,int,int,int,char *);
00745 hostdependency *add_host_dependency(char *,char *,int,int,int,int,int,int,char *);
00746 #ifndef USE_ST_BASED_ESCAL_RANGES
00747 hostescalation *add_hostescalation(char *,int,int,double,char *,int,int,int);
00748 #else
00749 hostescalation *add_hostescalation(char *,int,int,int,int,int,int,double,char *,int,int,int);
00750 #endif
00751 contactsmember *add_contact_to_hostescalation(hostescalation *,char *);
00752 contactgroupsmember *add_contactgroup_to_hostescalation(hostescalation *,char *);
00753
00754 contactsmember *add_contact_to_object(contactsmember **,char *);
00755 customvariablesmember *add_custom_variable_to_object(customvariablesmember **,char *,char *);
00756
00757
00758 servicesmember *add_service_link_to_host(host *,service *);
00759
00760 escalation_condition *add_serviceescalation_condition(serviceescalation *, escalation_condition *, char *, char *, int, int, int, int, int, int, int);
00761 escalation_condition *add_hostescalation_condition(hostescalation *, escalation_condition *, char *, char *, int, int, int, int, int, int, int);
00762
00763
00764 int init_object_skiplists(void);
00765 int free_object_skiplists(void);
00766 int skiplist_compare_text(const char *val1a, const char *val1b, const char *val2a, const char *val2b);
00767 int skiplist_compare_host(void *a, void *b);
00768 int skiplist_compare_service(void *a, void *b);
00769 int skiplist_compare_command(void *a, void *b);
00770 int skiplist_compare_timeperiod(void *a, void *b);
00771 int skiplist_compare_contact(void *a, void *b);
00772 int skiplist_compare_contactgroup(void *a, void *b);
00773 int skiplist_compare_hostgroup(void *a, void *b);
00774 int skiplist_compare_servicegroup(void *a, void *b);
00775 int skiplist_compare_hostescalation(void *a, void *b);
00776 int skiplist_compare_serviceescalation(void *a, void *b);
00777 int skiplist_compare_hostdependency(void *a, void *b);
00778 int skiplist_compare_servicedependency(void *a, void *b);
00779
00780 int get_host_count(void);
00781 int get_service_count(void);
00782
00783
00784
00785
00786 timeperiod * find_timeperiod(char *);
00787 host * find_host(char *);
00788 hostgroup * find_hostgroup(char *);
00789 servicegroup * find_servicegroup(char *);
00790 contact * find_contact(char *);
00791 contactgroup * find_contactgroup(char *);
00792 command * find_command(char *);
00793 service * find_service(char *,char *);
00794
00795
00796
00797 hostescalation *get_first_hostescalation_by_host(char *, void **);
00798 hostescalation *get_next_hostescalation_by_host(char *,void **);
00799 serviceescalation *get_first_serviceescalation_by_service(char *,char *, void **);
00800 serviceescalation *get_next_serviceescalation_by_service(char *,char *,void **);
00801 hostdependency *get_first_hostdependency_by_dependent_host(char *, void **);
00802 hostdependency *get_next_hostdependency_by_dependent_host(char *, void **);
00803 servicedependency *get_first_servicedependency_by_dependent_service(char *,char *, void **);
00804 servicedependency *get_next_servicedependency_by_dependent_service(char *,char *,void **);
00805
00806 #ifdef NSCORE
00807 int add_object_to_objectlist(objectlist **,void *);
00808 int free_objectlist(objectlist **);
00809 #endif
00810
00811
00812 int add_servicedependency_to_hashlist(servicedependency *);
00813
00814
00815
00816 int is_host_immediate_child_of_host(host *,host *);
00817 int is_host_primary_immediate_child_of_host(host *,host *);
00818 int is_host_immediate_parent_of_host(host *,host *);
00819 int is_host_member_of_hostgroup(hostgroup *,host *);
00820 int is_host_member_of_servicegroup(servicegroup *,host *);
00821 int is_service_member_of_servicegroup(servicegroup *,service *);
00822 int is_contact_member_of_contactgroup(contactgroup *, contact *);
00823 int is_contact_for_hostgroup(hostgroup *,contact *);
00824 int is_contact_for_servicegroup(servicegroup *,contact *);
00825 int is_contact_for_host(host *,contact *);
00826 int is_escalated_contact_for_host(host *,contact *);
00827 int is_contact_for_service(service *,contact *);
00828 int is_escalated_contact_for_service(service *,contact *);
00829 int is_host_immediate_parent_of_host(host *,host *);
00830
00831 int number_of_immediate_child_hosts(host *);
00832 int number_of_total_child_hosts(host *);
00833 int number_of_immediate_parent_hosts(host *);
00834 int number_of_total_parent_hosts(host *);
00835
00836 #ifdef NSCORE
00837 int check_for_circular_servicedependency_path(servicedependency *,servicedependency *,int);
00838 int check_for_circular_hostdependency_path(hostdependency *,hostdependency *,int);
00839 #endif
00840
00841
00842
00843 int free_object_data(void);
00844
00845
00846
00847
00848 #ifdef __cplusplus
00849 }
00850 #endif
00851
00852 #endif