diff -ur nagios-2.8.orig/base/checks.c nagios-2.8/base/checks.c --- nagios-2.8.orig/base/checks.c 2007-04-16 11:34:23.000000000 +0100 +++ nagios-2.8/base/checks.c 2007-04-25 17:31:31.000000000 +0100 @@ -105,6 +105,7 @@ time_t current_time; time_t preferred_time=0L; time_t next_valid_time; + time_t alt_next_valid_time; pid_t pid; int fork_error=FALSE; int wait_result=0; @@ -153,17 +154,19 @@ /* make sure this is a valid time to check the service */ if(check_time_against_period((unsigned long)current_time,svc->check_period)==ERROR){ + /* also check for alternate time period */ + if(svc->service_check_timeperiod_command==NULL || svc->service_check_timeperiod_command->check_period==NULL || check_time_against_period((unsigned long)current_time,svc->service_check_timeperiod_command->check_period) == ERROR) { + /* don't check the service if we're not forcing it through */ + if(!(svc->check_options & CHECK_OPTION_FORCE_EXECUTION)) + check_service=FALSE; - /* don't check the service if we're not forcing it through */ - if(!(svc->check_options & CHECK_OPTION_FORCE_EXECUTION)) - check_service=FALSE; + /* get the next valid time we can run the check */ + preferred_time=current_time; - /* get the next valid time we can run the check */ - preferred_time=current_time; - - /* set the invalid time flag */ - time_is_valid=FALSE; - } + /* set the invalid time flag */ + time_is_valid=FALSE; + } + } /* check service dependencies for execution */ if(check_service_dependencies(svc,EXECUTION_DEPENDENCY)==DEPENDENCIES_FAILED){ @@ -195,6 +198,14 @@ /* make sure we rescheduled the next service check at a valid time */ get_next_valid_time(preferred_time,&next_valid_time,svc->check_period); + + /* check if the alternate time comes sooner */ + if(svc->service_check_timeperiod_command!=NULL && svc->service_check_timeperiod_command->check_period != NULL) { + get_next_valid_time(preferred_time,&alt_next_valid_time,svc->service_check_timeperiod_command->check_period); + if(alt_next_valid_time < next_valid_time) + next_valid_time=alt_next_valid_time; + } + /* the service could not be rescheduled properly - set the next check time for next year, but don't actually reschedule it */ if(time_is_valid==FALSE && next_valid_time==preferred_time){ @@ -247,7 +258,11 @@ grab_summary_macros(NULL); /* get the raw command line */ - get_raw_command_line(svc->service_check_command,raw_command,sizeof(raw_command),0); + if(svc->service_check_timeperiod_command!=NULL && svc->service_check_timeperiod_command->service_check_command!=NULL && svc->service_check_timeperiod_command->check_period!=NULL && check_time_against_period((unsigned long)current_time,svc->service_check_timeperiod_command->check_period)!=ERROR) { + get_raw_command_line(svc->service_check_timeperiod_command->service_check_command,raw_command,sizeof(raw_command),0); + } else { + get_raw_command_line(svc->service_check_command,raw_command,sizeof(raw_command),0); + } strip(raw_command); /* process any macros contained in the argument */ diff -ur nagios-2.8.orig/common/objects.c nagios-2.8/common/objects.c --- nagios-2.8.orig/common/objects.c 2007-04-16 11:34:23.000000000 +0100 +++ nagios-2.8/common/objects.c 2007-04-25 17:13:53.000000000 +0100 @@ -2753,9 +2753,10 @@ /* add a new service to the list in memory */ -service *add_service(char *host_name, char *description, char *check_period, int max_attempts, int parallelize, int accept_passive_checks, int check_interval, int retry_interval, int notification_interval, char *notification_period, int notify_recovery, int notify_unknown, int notify_warning, int notify_critical, int notify_flapping, int notifications_enabled, int is_volatile, char *event_handler, int event_handler_enabled, char *check_command, int checks_enabled, int flap_detection_enabled, double low_flap_threshold, double high_flap_threshold, int stalk_ok, int stalk_warning, int stalk_unknown, int stalk_critical, int process_perfdata, int failure_prediction_enabled, char *failure_prediction_options, int check_freshness, int freshness_threshold, int retain_status_information, int retain_nonstatus_information, int obsess_over_service){ +service *add_service(char *host_name, char *description, char *check_period, int max_attempts, int parallelize, int accept_passive_checks, int check_interval, int retry_interval, int notification_interval, char *notification_period, int notify_recovery, int notify_unknown, int notify_warning, int notify_critical, int notify_flapping, int notifications_enabled, int is_volatile, char *event_handler, int event_handler_enabled, char *check_command, char *check_timeperiod_command,int checks_enabled, int flap_detection_enabled, double low_flap_threshold, double high_flap_threshold, int stalk_ok, int stalk_warning, int stalk_unknown, int stalk_critical, int process_perfdata, int failure_prediction_enabled, char *failure_prediction_options, int check_freshness, int freshness_threshold, int retain_status_information, int retain_nonstatus_information, int obsess_over_service){ service *temp_service; service *new_service; + char *temp_ptr; #ifdef NSCORE char temp_buffer[MAX_INPUT_BUFFER]; int x; @@ -2778,6 +2779,7 @@ strip(host_name); strip(description); strip(check_command); + strip(check_timeperiod_command); strip(event_handler); strip(notification_period); strip(check_period); @@ -3056,6 +3058,76 @@ free(new_service); return NULL; } + if(check_timeperiod_command!=NULL && strcmp(check_timeperiod_command,"")){ + new_service->service_check_timeperiod_command=(commandtimeperiod *)malloc(sizeof(commandtimeperiod)); + if(new_service->service_check_timeperiod_command==NULL){ +#ifdef NSCORE + snprintf(temp_buffer,sizeof(temp_buffer)-1,"Error: Could not allocate memory for service '%s' on host '%s' check timeperiod command\n",description,host_name); + temp_buffer[sizeof(temp_buffer)-1]='\x0'; + write_to_logs_and_console(temp_buffer,NSLOG_CONFIG_ERROR,TRUE); +#endif + free(new_service->host_name); + free(new_service); + return NULL; + } + temp_ptr=strtok(check_timeperiod_command,","); + if(temp_ptr==NULL){ +#ifdef NSCORE + snprintf(temp_buffer,sizeof(temp_buffer)-1,"Error: Invalid entry for service '%s' on host '%s' check timeperiod command\n",description,host_name); + temp_buffer[sizeof(temp_buffer)-1]='\x0'; + write_to_logs_and_console(temp_buffer,NSLOG_CONFIG_ERROR,TRUE); +#endif + free(new_service->service_check_timeperiod_command); + free(new_service->host_name); + free(new_service); + return NULL; + } + new_service->service_check_timeperiod_command->check_period=strdup(temp_ptr); + if(new_service->service_check_timeperiod_command->check_period==NULL){ +#ifdef NSCORE + snprintf(temp_buffer,sizeof(temp_buffer)-1,"Error: Could not allocate memory for service '%s' on host '%s' check command\n",description,host_name); + temp_buffer[sizeof(temp_buffer)-1]='\x0'; + write_to_logs_and_console(temp_buffer,NSLOG_CONFIG_ERROR,TRUE); +#endif + free(new_service->service_check_timeperiod_command); + free(new_service->host_name); + free(new_service); + return NULL; + } + temp_ptr=strtok(NULL,"\n"); + if(temp_ptr==NULL){ +#ifdef NSCORE + snprintf(temp_buffer,sizeof(temp_buffer)-1,"Error: Invalid entry for service '%s' on host '%s' check timeperiod command\n",description,host_name); + temp_buffer[sizeof(temp_buffer)-1]='\x0'; + write_to_logs_and_console(temp_buffer,NSLOG_CONFIG_ERROR,TRUE); +#endif + if(new_service->service_check_timeperiod_command!=NULL && new_service->service_check_timeperiod_command->check_period!=NULL) + free(new_service->service_check_timeperiod_command->check_period); + if(new_service->service_check_timeperiod_command!=NULL) + free(new_service->service_check_timeperiod_command); + free(new_service->host_name); + free(new_service); + return NULL; + } + new_service->service_check_timeperiod_command->service_check_command=strdup(temp_ptr); + if(new_service->service_check_timeperiod_command->service_check_command==NULL){ +#ifdef NSCORE + snprintf(temp_buffer,sizeof(temp_buffer)-1,"Error: Could not allocate memory for service '%s' on host '%s' check command\n",description,host_name); + temp_buffer[sizeof(temp_buffer)-1]='\x0'; + write_to_logs_and_console(temp_buffer,NSLOG_CONFIG_ERROR,TRUE); +#endif + if(new_service->service_check_timeperiod_command!=NULL && new_service->service_check_timeperiod_command->check_period!=NULL) + free(new_service->service_check_timeperiod_command->check_period); + if(new_service->service_check_timeperiod_command!=NULL) + free(new_service->service_check_timeperiod_command); + free(new_service->host_name); + free(new_service); + return NULL; + } + } + else + new_service->service_check_timeperiod_command=NULL; + if(event_handler!=NULL && strcmp(event_handler,"")){ new_service->event_handler=strdup(event_handler); if(new_service->event_handler==NULL){ @@ -3064,6 +3136,12 @@ temp_buffer[sizeof(temp_buffer)-1]='\x0'; write_to_logs_and_console(temp_buffer,NSLOG_CONFIG_ERROR,TRUE); #endif + if(new_service->service_check_timeperiod_command!=NULL && new_service->service_check_timeperiod_command->check_period!=NULL) + free(new_service->service_check_timeperiod_command->check_period); + if(new_service->service_check_timeperiod_command!=NULL && new_service->service_check_timeperiod_command->service_check_command!=NULL) + free(new_service->service_check_timeperiod_command->service_check_command); + if(new_service->service_check_timeperiod_command!=NULL) + free(new_service->service_check_timeperiod_command); free(new_service->service_check_command); free(new_service->description); free(new_service->host_name); @@ -3083,6 +3161,12 @@ #endif if(new_service->event_handler!=NULL) free(new_service->event_handler); + if(new_service->service_check_timeperiod_command!=NULL && new_service->service_check_timeperiod_command->check_period!=NULL) + free(new_service->service_check_timeperiod_command->check_period); + if(new_service->service_check_timeperiod_command!=NULL && new_service->service_check_timeperiod_command->service_check_command!=NULL) + free(new_service->service_check_timeperiod_command->service_check_command); + if(new_service->service_check_timeperiod_command!=NULL) + free(new_service->service_check_timeperiod_command); free(new_service->service_check_command); free(new_service->description); free(new_service->host_name); @@ -3104,6 +3188,12 @@ free(new_service->notification_period); if(new_service->event_handler!=NULL) free(new_service->event_handler); + if(new_service->service_check_timeperiod_command!=NULL && new_service->service_check_timeperiod_command->check_period!=NULL) + free(new_service->service_check_timeperiod_command->check_period); + if(new_service->service_check_timeperiod_command!=NULL && new_service->service_check_timeperiod_command->service_check_command!=NULL) + free(new_service->service_check_timeperiod_command->service_check_command); + if(new_service->service_check_timeperiod_command!=NULL) + free(new_service->service_check_timeperiod_command); free(new_service->service_check_command); free(new_service->description); free(new_service->host_name); @@ -3127,6 +3217,12 @@ free(new_service->notification_period); if(new_service->event_handler!=NULL) free(new_service->event_handler); + if(new_service->service_check_timeperiod_command!=NULL && new_service->service_check_timeperiod_command->check_period!=NULL) + free(new_service->service_check_timeperiod_command->check_period); + if(new_service->service_check_timeperiod_command!=NULL && new_service->service_check_timeperiod_command->service_check_command!=NULL) + free(new_service->service_check_timeperiod_command->service_check_command); + if(new_service->service_check_timeperiod_command!=NULL) + free(new_service->service_check_timeperiod_command); free(new_service->service_check_command); free(new_service->description); free(new_service->host_name); @@ -3229,6 +3325,12 @@ free(new_service->notification_period); if(new_service->event_handler!=NULL) free(new_service->event_handler); + if(new_service->service_check_timeperiod_command!=NULL && new_service->service_check_timeperiod_command->check_period!=NULL) + free(new_service->service_check_timeperiod_command->check_period); + if(new_service->service_check_timeperiod_command!=NULL && new_service->service_check_timeperiod_command->service_check_command!=NULL) + free(new_service->service_check_timeperiod_command->service_check_command); + if(new_service->service_check_timeperiod_command!=NULL) + free(new_service->service_check_timeperiod_command); free(new_service->service_check_command); free(new_service->description); free(new_service->host_name); @@ -3251,6 +3353,12 @@ free(new_service->notification_period); if(new_service->event_handler!=NULL) free(new_service->event_handler); + if(new_service->service_check_timeperiod_command!=NULL && new_service->service_check_timeperiod_command->check_period!=NULL) + free(new_service->service_check_timeperiod_command->check_period); + if(new_service->service_check_timeperiod_command!=NULL && new_service->service_check_timeperiod_command->service_check_command!=NULL) + free(new_service->service_check_timeperiod_command->service_check_command); + if(new_service->service_check_timeperiod_command!=NULL) + free(new_service->service_check_timeperiod_command); free(new_service->service_check_command); free(new_service->description); free(new_service->host_name); @@ -3283,6 +3391,12 @@ free(new_service->notification_period); if(new_service->event_handler!=NULL) free(new_service->event_handler); + if(new_service->service_check_timeperiod_command!=NULL && new_service->service_check_timeperiod_command->check_period!=NULL) + free(new_service->service_check_timeperiod_command->check_period); + if(new_service->service_check_timeperiod_command!=NULL && new_service->service_check_timeperiod_command->service_check_command!=NULL) + free(new_service->service_check_timeperiod_command->service_check_command); + if(new_service->service_check_timeperiod_command!=NULL) + free(new_service->service_check_timeperiod_command); if(new_service->service_check_command) free(new_service->service_check_command); if(new_service->description) @@ -3313,6 +3427,16 @@ printf("\tHost: %s\n",new_service->host_name); printf("\tDescription: %s\n",new_service->description); printf("\tCommand: %s\n",new_service->service_check_command); + if(new_service->service_check_timeperiod_command!=NULL && new_service->service_check_timeperiod_command->check_period!=NULL){ + printf("\tTimeperiod Command When: %s\n",new_service->service_check_timeperiod_command->check_period); + } else { + printf("\tTimeperiod Command When: %s\n","N/A"); + } + if(new_service->service_check_timeperiod_command!=NULL && new_service->service_check_timeperiod_command->service_check_command!=NULL){ + printf("\tTimeperiod Command What: %s\n",new_service->service_check_timeperiod_command->service_check_command); + } else { + printf("\tTimeperiod Command What: %s\n","N/A"); + } printf("\tCheck Interval: %d\n",new_service->check_interval); printf("\tRetry Interval: %d\n",new_service->retry_interval); printf("\tMax attempts: %d\n",new_service->max_attempts); @@ -5954,6 +6078,12 @@ free(this_service->host_name); free(this_service->description); + if(this_service->service_check_timeperiod_command!= NULL && this_service->service_check_timeperiod_command->check_period!=NULL) + free(this_service->service_check_timeperiod_command->check_period); + if(this_service->service_check_timeperiod_command!= NULL && this_service->service_check_timeperiod_command->service_check_command!=NULL) + free(this_service->service_check_timeperiod_command->service_check_command); + if(this_service->service_check_timeperiod_command!=NULL) + free(this_service->service_check_timeperiod_command); free(this_service->service_check_command); #ifdef NSCORE free(this_service->plugin_output); diff -ur nagios-2.8.orig/include/objects.h nagios-2.8/include/objects.h --- nagios-2.8.orig/include/objects.h 2007-04-16 11:34:23.000000000 +0100 +++ nagios-2.8/include/objects.h 2007-04-25 17:08:17.000000000 +0100 @@ -279,12 +279,17 @@ }contact; +/* COMMAND_TIMEPERIOD structure */ +typedef struct commandtimeperiod_struct{ + char *check_period; + char *service_check_command; + }commandtimeperiod; /* SERVICE structure */ typedef struct service_struct{ char *host_name; char *description; - char *service_check_command; + char *service_check_command; char *event_handler; int check_interval; int retry_interval; @@ -368,6 +373,7 @@ #endif struct service_struct *next; struct service_struct *nexthash; + commandtimeperiod *service_check_timeperiod_command; }service; @@ -546,7 +552,7 @@ contactgroup *add_contactgroup(char *,char *); /* adds a contactgroup definition */ contactgroupmember *add_contact_to_contactgroup(contactgroup *,char *); /* adds a contact to a contact group definition */ command *add_command(char *,char *); /* adds a command definition */ -service *add_service(char *,char *,char *,int,int,int,int,int,int,char *,int,int,int,int,int,int,int,char *,int,char *,int,int,double,double,int,int,int,int,int,int,char *,int,int,int,int,int); /* adds a service definition */ +service *add_service(char *,char *,char *,int,int,int,int,int,int,char *,int,int,int,int,int,int,int,char *,int,char *,char *,int,int,double,double,int,int,int,int,int,int,char *,int,int,int,int,int); /* adds a service definition */ contactgroupsmember *add_contactgroup_to_service(service *,char *); /* adds a contact group to a service definition */ serviceescalation *add_serviceescalation(char *,char *,int,int,int,char *,int,int,int,int); /* adds a service escalation definition */ contactgroupsmember *add_contactgroup_to_serviceescalation(serviceescalation *,char *); /* adds a contact group to a service escalation definition */ diff -ur nagios-2.8.orig/xdata/xodtemplate.c nagios-2.8/xdata/xodtemplate.c --- nagios-2.8.orig/xdata/xodtemplate.c 2007-04-16 11:34:23.000000000 +0100 +++ nagios-2.8/xdata/xodtemplate.c 2007-04-26 10:04:39.000000000 +0100 @@ -1293,6 +1293,7 @@ new_service->service_description=NULL; new_service->servicegroups=NULL; new_service->check_command=NULL; + new_service->check_timeperiod_command=NULL; new_service->check_period=NULL; new_service->event_handler=NULL; new_service->notification_period=NULL; @@ -2950,6 +2951,15 @@ return ERROR; } } + else if(!strcmp(variable,"check_timeperiod_command")){ + temp_service->check_timeperiod_command=strdup(value); + if(temp_service->check_timeperiod_command==NULL){ +#ifdef DEBUG1 + printf("Error: Could not allocate memory for service check_timeperiod_command.\n"); +#endif + return ERROR; + } + } else if(!strcmp(variable,"check_period")){ temp_service->check_period=strdup(value); if(temp_service->check_period==NULL){ @@ -4421,6 +4431,7 @@ new_service->service_description=NULL; new_service->servicegroups=NULL; new_service->check_command=NULL; + new_service->check_timeperiod_command=NULL; new_service->check_period=NULL; new_service->event_handler=NULL; new_service->notification_period=NULL; @@ -4563,6 +4574,22 @@ return ERROR; } } + if(temp_service->check_timeperiod_command!=NULL){ + new_service->check_timeperiod_command=strdup(temp_service->check_timeperiod_command); + if(new_service->check_timeperiod_command==NULL){ +#ifdef DEBUG1 + printf("Error: Could not allocate memory for duplicate definition of service.\n"); +#endif + free(new_service->host_name); + free(new_service->template); + free(new_service->name); + free(new_service->service_description); + free(new_service->check_command); + free(new_service->servicegroups); + free(new_service); + return ERROR; + } + } if(temp_service->check_period!=NULL){ new_service->check_period=strdup(temp_service->check_period); if(new_service->check_period==NULL){ @@ -4574,6 +4601,8 @@ free(new_service->name); free(new_service->service_description); free(new_service->check_command); + if(new_service->check_timeperiod_command!=NULL) + free(new_service->check_timeperiod_command); free(new_service->servicegroups); free(new_service); return ERROR; @@ -4591,6 +4620,8 @@ free(new_service->service_description); free(new_service->servicegroups); free(new_service->check_command); + if(new_service->check_timeperiod_command!=NULL) + free(new_service->check_timeperiod_command); free(new_service->check_period); free(new_service->servicegroups); free(new_service); @@ -4609,6 +4640,8 @@ free(new_service->service_description); free(new_service->servicegroups); free(new_service->check_command); + if(new_service->check_timeperiod_command!=NULL) + free(new_service->check_timeperiod_command); free(new_service->check_period); free(new_service->event_handler); free(new_service); @@ -4627,6 +4660,8 @@ free(new_service->service_description); free(new_service->servicegroups); free(new_service->check_command); + if(new_service->check_timeperiod_command!=NULL) + free(new_service->check_timeperiod_command); free(new_service->check_period); free(new_service->event_handler); free(new_service->notification_period); @@ -4646,6 +4681,8 @@ free(new_service->service_description); free(new_service->servicegroups); free(new_service->check_command); + if(new_service->check_timeperiod_command!=NULL) + free(new_service->check_timeperiod_command); free(new_service->check_period); free(new_service->event_handler); free(new_service->notification_period); @@ -6144,6 +6181,8 @@ this_service->servicegroups=strdup(template_service->servicegroups); if(this_service->check_command==NULL && template_service->check_command!=NULL) this_service->check_command=strdup(template_service->check_command); + if(this_service->check_timeperiod_command==NULL && template_service->check_timeperiod_command!=NULL) + this_service->check_timeperiod_command=strdup(template_service->check_timeperiod_command); if(this_service->check_period==NULL && template_service->check_period!=NULL) this_service->check_period=strdup(template_service->check_period); if(this_service->event_handler==NULL && template_service->event_handler!=NULL) @@ -8139,7 +8178,7 @@ return OK; /* add the service */ - new_service=add_service(this_service->host_name,this_service->service_description,this_service->check_period,this_service->max_check_attempts,this_service->parallelize_check,this_service->passive_checks_enabled,this_service->normal_check_interval,this_service->retry_check_interval,this_service->notification_interval,this_service->notification_period,this_service->notify_on_recovery,this_service->notify_on_unknown,this_service->notify_on_warning,this_service->notify_on_critical,this_service->notify_on_flapping,this_service->notifications_enabled,this_service->is_volatile,this_service->event_handler,this_service->event_handler_enabled,this_service->check_command,this_service->active_checks_enabled,this_service->flap_detection_enabled,this_service->low_flap_threshold,this_service->high_flap_threshold,this_service->stalk_on_ok,this_service->stalk_on_warning,this_service->stalk_on_unknown,this_service->stalk_on_critical,this_service->process_perf_data,this_service->failure_prediction_enabled,this_service->failure_prediction_options,this_service->check_freshness,this_service->freshness_threshold,this_service->retain_status_information,this_service->retain_nonstatus_information,this_service->obsess_over_service); + new_service=add_service(this_service->host_name,this_service->service_description,this_service->check_period,this_service->max_check_attempts,this_service->parallelize_check,this_service->passive_checks_enabled,this_service->normal_check_interval,this_service->retry_check_interval,this_service->notification_interval,this_service->notification_period,this_service->notify_on_recovery,this_service->notify_on_unknown,this_service->notify_on_warning,this_service->notify_on_critical,this_service->notify_on_flapping,this_service->notifications_enabled,this_service->is_volatile,this_service->event_handler,this_service->event_handler_enabled,this_service->check_command,this_service->check_timeperiod_command,this_service->active_checks_enabled,this_service->flap_detection_enabled,this_service->low_flap_threshold,this_service->high_flap_threshold,this_service->stalk_on_ok,this_service->stalk_on_warning,this_service->stalk_on_unknown,this_service->stalk_on_critical,this_service->process_perf_data,this_service->failure_prediction_enabled,this_service->failure_prediction_options,this_service->check_freshness,this_service->freshness_threshold,this_service->retain_status_information,this_service->retain_nonstatus_information,this_service->obsess_over_service); /* return with an error if we couldn't add the service */ if(new_service==NULL){ @@ -9547,6 +9586,8 @@ fprintf(fp,"\tcheck_period\t%s\n",temp_service->check_period); if(temp_service->check_command) fprintf(fp,"\tcheck_command\t%s\n",temp_service->check_command); + if(temp_service->check_timeperiod_command) + fprintf(fp,"\tcheck_timeperiod_command\t%s\n",temp_service->check_timeperiod_command); if(temp_service->event_handler) fprintf(fp,"\tevent_handler\t%s\n",temp_service->event_handler); if(temp_service->contact_groups) @@ -10009,6 +10050,8 @@ free(this_service->service_description); free(this_service->servicegroups); free(this_service->check_command); + if(this_service->check_timeperiod_command!=NULL) + free(this_service->check_timeperiod_command); free(this_service->check_period); free(this_service->event_handler); free(this_service->notification_period); diff -ur nagios-2.8.orig/xdata/xodtemplate.h nagios-2.8/xdata/xodtemplate.h --- nagios-2.8.orig/xdata/xodtemplate.h 2007-04-16 11:34:23.000000000 +0100 +++ nagios-2.8/xdata/xodtemplate.h 2007-04-25 13:08:37.000000000 +0100 @@ -243,6 +243,7 @@ char *service_description; char *servicegroups; char *check_command; + char *check_timeperiod_command; int max_check_attempts; int normal_check_interval; int retry_check_interval;