Logo Search packages:      
Sourcecode: ndoutils version File versions  Download package

macros.h

/************************************************************************
 *
 * MACROS.H - Common macro functions
 * Written By: Ethan Galstad (nagios@nagios.org)
 * Last Modified: 10-28-2007
 *
 * License:
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 ************************************************************************/

#ifndef _MACROS_H
#define _MACROS_H

#include "config.h"
#include "common.h"
#include "objects.h"



/****************** LENGTH LIMITATIONS ****************/

#define MAX_COMMAND_ARGUMENTS             32    /* maximum number of $ARGx$ macros */


/****************** MACRO DEFINITIONS *****************/

#define MACRO_ENV_VAR_PREFIX              "NAGIOS_"

#define MAX_USER_MACROS                   256   /* maximum number of $USERx$ macros */

#define MACRO_X_COUNT                     153   /* size of macro_x[] array */

#define MACRO_HOSTNAME                    0
#define MACRO_HOSTALIAS                   1
#define MACRO_HOSTADDRESS                 2
#define MACRO_SERVICEDESC                 3
#define MACRO_SERVICESTATE                4
#define MACRO_SERVICESTATEID                    5
#define MACRO_SERVICEATTEMPT              6
#define MACRO_LONGDATETIME                7
#define MACRO_SHORTDATETIME               8
#define MACRO_DATE                        9
#define MACRO_TIME                        10
#define MACRO_TIMET                       11
#define MACRO_LASTHOSTCHECK               12
#define MACRO_LASTSERVICECHECK                  13
#define MACRO_LASTHOSTSTATECHANGE         14
#define MACRO_LASTSERVICESTATECHANGE            15
#define MACRO_HOSTOUTPUT                  16
#define MACRO_SERVICEOUTPUT               17
#define MACRO_HOSTPERFDATA                18
#define MACRO_SERVICEPERFDATA             19
#define MACRO_CONTACTNAME                 20
#define MACRO_CONTACTALIAS                21
#define MACRO_CONTACTEMAIL                22
#define MACRO_CONTACTPAGER                23
#define MACRO_ADMINEMAIL                  24
#define MACRO_ADMINPAGER                  25
#define MACRO_HOSTSTATE                   26
#define MACRO_HOSTSTATEID                       27
#define MACRO_HOSTATTEMPT                 28
#define MACRO_NOTIFICATIONTYPE                  29
#define MACRO_NOTIFICATIONNUMBER          30   /* deprecated - see HOSTNOTIFICATIONNUMBER and SERVICENOTIFICATIONNUMBER macros */
#define MACRO_HOSTEXECUTIONTIME                 31
#define MACRO_SERVICEEXECUTIONTIME        32
#define MACRO_HOSTLATENCY                       33
#define MACRO_SERVICELATENCY              34
#define MACRO_HOSTDURATION                35
#define MACRO_SERVICEDURATION             36
#define MACRO_HOSTDURATIONSEC             37
#define MACRO_SERVICEDURATIONSEC          38
#define MACRO_HOSTDOWNTIME                39
#define MACRO_SERVICEDOWNTIME             40
#define MACRO_HOSTSTATETYPE               41
#define MACRO_SERVICESTATETYPE                  42
#define MACRO_HOSTPERCENTCHANGE                 43
#define MACRO_SERVICEPERCENTCHANGE        44
#define MACRO_HOSTGROUPNAME               45
#define MACRO_HOSTGROUPALIAS              46
#define MACRO_SERVICEGROUPNAME                  47
#define MACRO_SERVICEGROUPALIAS                 48
#define MACRO_HOSTACKAUTHOR                     49
#define MACRO_HOSTACKCOMMENT                    50
#define MACRO_SERVICEACKAUTHOR                  51
#define MACRO_SERVICEACKCOMMENT                 52
#define MACRO_LASTSERVICEOK                     53
#define MACRO_LASTSERVICEWARNING                54
#define MACRO_LASTSERVICEUNKNOWN                55
#define MACRO_LASTSERVICECRITICAL               56
#define MACRO_LASTHOSTUP                        57
#define MACRO_LASTHOSTDOWN                      58
#define MACRO_LASTHOSTUNREACHABLE               59
#define MACRO_SERVICECHECKCOMMAND         60
#define MACRO_HOSTCHECKCOMMAND                  61
#define MACRO_MAINCONFIGFILE              62
#define MACRO_STATUSDATAFILE              63
#define MACRO_HOSTDISPLAYNAME             64
#define MACRO_SERVICEDISPLAYNAME          65
#define MACRO_RETENTIONDATAFILE                 66
#define MACRO_OBJECTCACHEFILE             67
#define MACRO_TEMPFILE                    68
#define MACRO_LOGFILE                     69
#define MACRO_RESOURCEFILE                70
#define MACRO_COMMANDFILE                 71
#define MACRO_HOSTPERFDATAFILE                  72
#define MACRO_SERVICEPERFDATAFILE         73
#define MACRO_HOSTACTIONURL               74
#define MACRO_HOSTNOTESURL                75
#define MACRO_HOSTNOTES                   76
#define MACRO_SERVICEACTIONURL                  77
#define MACRO_SERVICENOTESURL             78
#define MACRO_SERVICENOTES                79
#define MACRO_TOTALHOSTSUP                80
#define MACRO_TOTALHOSTSDOWN              81
#define MACRO_TOTALHOSTSUNREACHABLE       82
#define MACRO_TOTALHOSTSDOWNUNHANDLED           83
#define MACRO_TOTALHOSTSUNREACHABLEUNHANDLED    84
#define MACRO_TOTALHOSTPROBLEMS                 85
#define MACRO_TOTALHOSTPROBLEMSUNHANDLED  86
#define MACRO_TOTALSERVICESOK             87
#define MACRO_TOTALSERVICESWARNING        88
#define MACRO_TOTALSERVICESCRITICAL       89
#define MACRO_TOTALSERVICESUNKNOWN        90
#define MACRO_TOTALSERVICESWARNINGUNHANDLED     91
#define MACRO_TOTALSERVICESCRITICALUNHANDLED    92
#define MACRO_TOTALSERVICESUNKNOWNUNHANDLED     93
#define MACRO_TOTALSERVICEPROBLEMS        94
#define MACRO_TOTALSERVICEPROBLEMSUNHANDLED     95
#define MACRO_PROCESSSTARTTIME                  96
#define MACRO_HOSTCHECKTYPE               97
#define MACRO_SERVICECHECKTYPE                  98
#define MACRO_LONGHOSTOUTPUT                  99
#define MACRO_LONGSERVICEOUTPUT                 100
#define MACRO_TEMPPATH                          101
#define MACRO_HOSTNOTIFICATIONNUMBER            102
#define MACRO_SERVICENOTIFICATIONNUMBER         103
#define MACRO_HOSTNOTIFICATIONID                104
#define MACRO_SERVICENOTIFICATIONID             105
#define MACRO_HOSTEVENTID                       106
#define MACRO_LASTHOSTEVENTID                   107
#define MACRO_SERVICEEVENTID                    108
#define MACRO_LASTSERVICEEVENTID                109
#define MACRO_HOSTGROUPNAMES                    110
#define MACRO_SERVICEGROUPNAMES                 111
#define MACRO_HOSTACKAUTHORNAME                 112
#define MACRO_HOSTACKAUTHORALIAS                113
#define MACRO_SERVICEACKAUTHORNAME              114
#define MACRO_SERVICEACKAUTHORALIAS             115
#define MACRO_MAXHOSTATTEMPTS             116
#define MACRO_MAXSERVICEATTEMPTS          117
#define MACRO_SERVICEISVOLATILE                 118
#define MACRO_TOTALHOSTSERVICES                 119
#define MACRO_TOTALHOSTSERVICESOK         120
#define MACRO_TOTALHOSTSERVICESWARNING          121
#define MACRO_TOTALHOSTSERVICESUNKNOWN          122
#define MACRO_TOTALHOSTSERVICESCRITICAL         123
#define MACRO_HOSTGROUPNOTES                    124
#define MACRO_HOSTGROUPNOTESURL                 125
#define MACRO_HOSTGROUPACTIONURL                126
#define MACRO_SERVICEGROUPNOTES                 127
#define MACRO_SERVICEGROUPNOTESURL              128
#define MACRO_SERVICEGROUPACTIONURL             129
#define MACRO_HOSTGROUPMEMBERS                  130
#define MACRO_SERVICEGROUPMEMBERS               131
#define MACRO_CONTACTGROUPNAME                  132
#define MACRO_CONTACTGROUPALIAS                 133
#define MACRO_CONTACTGROUPMEMBERS               134
#define MACRO_CONTACTGROUPNAMES                 135
#define MACRO_NOTIFICATIONRECIPIENTS            136
#define MACRO_NOTIFICATIONISESCALATED           137
#define MACRO_NOTIFICATIONAUTHOR                138
#define MACRO_NOTIFICATIONAUTHORNAME            139
#define MACRO_NOTIFICATIONAUTHORALIAS           140
#define MACRO_NOTIFICATIONCOMMENT               141
#define MACRO_EVENTSTARTTIME                    142
#define MACRO_HOSTPROBLEMID                     143
#define MACRO_LASTHOSTPROBLEMID                 144
#define MACRO_SERVICEPROBLEMID                  145
#define MACRO_LASTSERVICEPROBLEMID              146
#define MACRO_ISVALIDTIME                       147
#define MACRO_NEXTVALIDTIME                     148
#define MACRO_LASTHOSTSTATE                     149
#define MACRO_LASTHOSTSTATEID                   150
#define MACRO_LASTSERVICESTATE                  151
#define MACRO_LASTSERVICESTATEID                152



/************* MACRO CLEANING OPTIONS *****************/

#define STRIP_ILLEGAL_MACRO_CHARS       1
#define ESCAPE_MACRO_CHARS              2
#define URL_ENCODE_MACRO_CHARS            4



/****************** MACRO FUNCTIONS ******************/

int process_macros(char *,char **,int);               /* replace macros with their actual values */
char *clean_macro_chars(char *,int);                    /* cleans macros characters before insertion into output string */

int grab_service_macros(service *);                   /* updates the service macro data */
int grab_host_macros(host *);                         /* updates the host macro data */
int grab_servicegroup_macros(servicegroup *);           /* updates servicegroup macros */
int grab_hostgroup_macros(hostgroup *);                 /* updates hostgroup macros */
int grab_contact_macros(contact *);                   /* updates the contact macro data */
int grab_contactgroup_macros(contactgroup *);           /* updates contactgroup macros */
int grab_datetime_macros(void);                       /* updates date/time macros */
int grab_on_demand_macro(char *);                       /* fetches an on-demand macro */

char *get_url_encoded_string(char *);                 /* URL encode a string */

int init_macros(void);
int init_macrox_names(void);
int add_macrox_name(int,char *);
int free_macrox_names(void);

int clear_argv_macros(void);
int clear_volatile_macros(void);
int clear_host_macros(void);
int clear_service_macros(void);
int clear_hostgroup_macros(void);
int clear_servicegroup_macros(void);
int clear_contact_macros(void);
int clear_contactgroup_macros(void);
int clear_summary_macros(void);

int grab_macro_value(char *,char **,int *,int *);
int grab_macrox_value(int,char *,char *,char **,int *);
int grab_custom_macro_value(char *,char *,char *,char **);
int grab_datetime_macro(int,char *,char *,char **);
int grab_standard_host_macro(int,host *,char **,int *);
int grab_standard_hostgroup_macro(int,hostgroup *,char **);
int grab_standard_service_macro(int,service *,char **,int *);
int grab_standard_servicegroup_macro(int,servicegroup *,char **);
int grab_standard_contact_macro(int,contact *,char **);
int grab_contact_address_macro(int,contact *,char **);
int grab_standard_contactgroup_macro(int,contactgroup *,char **);
int grab_custom_object_macro(char *,customvariablesmember *,char **);


#ifdef NSCORE
int set_all_macro_environment_vars(int);
int set_macrox_environment_vars(int);
int set_argv_macro_environment_vars(int);
int set_custom_macro_environment_vars(int);
int set_contact_address_environment_vars(int);
int set_macro_environment_var(char *,char *,int);
#endif

#endif

Generated by  Doxygen 1.6.0   Back to index