summaryrefslogtreecommitdiffstats
path: root/plugins/utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/utils.h')
-rw-r--r--plugins/utils.h154
1 files changed, 80 insertions, 74 deletions
diff --git a/plugins/utils.h b/plugins/utils.h
index f939e337..92a6c115 100644
--- a/plugins/utils.h
+++ b/plugins/utils.h
@@ -13,51 +13,51 @@ in order to resist overflow attacks. In addition, a few functions are
13provided to standardize version and error reporting across the entire 13provided to standardize version and error reporting across the entire
14suite of plugins. */ 14suite of plugins. */
15 15
16/* now some functions etc are being defined in ../lib/utils_base.c */ 16#include "../config.h"
17#include "utils_base.h"
18
19#include <stdbool.h> 17#include <stdbool.h>
20 18#include <stdint.h>
19#include <stdio.h>
20#include <time.h>
21 21
22#ifdef NP_EXTRA_OPTS 22#ifdef NP_EXTRA_OPTS
23/* Include extra-opts functions if compiled in */ 23/* Include extra-opts functions if compiled in */
24#include "extra_opts.h" 24# include "extra_opts.h"
25#else 25#else
26/* else, fake np_extra_opts */ 26/* else, fake np_extra_opts */
27#define np_extra_opts(acptr,av,pr) av 27# define np_extra_opts(acptr, av, pr) av
28#endif 28#endif
29 29
30/* Standardize version information, termination */ 30/* Standardize version information, termination */
31 31
32void support (void); 32void support(void);
33void print_revision (const char *, const char *); 33void print_revision(const char *, const char *);
34 34
35extern time_t start_time, end_time; 35extern time_t start_time, end_time;
36 36
37/* Test input types */ 37/* Test input types */
38 38
39bool is_integer (char *); 39bool is_integer(char *);
40bool is_intpos (char *); 40bool is_intpos(char *);
41bool is_intneg (char *); 41bool is_intneg(char *);
42bool is_intnonneg (char *); 42bool is_intnonneg(char *);
43bool is_intpercent (char *); 43bool is_intpercent(char *);
44bool is_uint64(char *number, uint64_t *target); 44bool is_uint64(char *number, uint64_t *target);
45bool is_int64(char *number, int64_t *target); 45bool is_int64(char *number, int64_t *target);
46 46
47bool is_numeric (char *); 47bool is_numeric(char *);
48bool is_positive (char *); 48bool is_positive(char *);
49bool is_negative (char *); 49bool is_negative(char *);
50bool is_nonnegative (char *); 50bool is_nonnegative(char *);
51bool is_percentage (char *); 51bool is_percentage(char *);
52bool is_percentage_expression (const char[]); 52bool is_percentage_expression(const char[]);
53 53
54bool is_option (char *); 54bool is_option(char *);
55 55
56/* Generalized timer that will do milliseconds if available */ 56/* Generalized timer that will do milliseconds if available */
57#ifndef HAVE_STRUCT_TIMEVAL 57#ifndef HAVE_STRUCT_TIMEVAL
58struct timeval { 58struct timeval {
59 long tv_sec; /* seconds */ 59 long tv_sec; /* seconds */
60 long tv_usec; /* microseconds */ 60 long tv_usec; /* microseconds */
61}; 61};
62#endif 62#endif
63 63
@@ -65,137 +65,143 @@ struct timeval {
65int gettimeofday(struct timeval *, struct timezone *); 65int gettimeofday(struct timeval *, struct timezone *);
66#endif 66#endif
67 67
68double delta_time (struct timeval tv); 68double delta_time(struct timeval tv);
69long deltime (struct timeval tv); 69long deltime(struct timeval tv);
70 70
71/* Handle strings safely */ 71/* Handle strings safely */
72 72
73void strip (char *); 73void strip(char *);
74char *strscpy (char *, const char *); 74char *strscpy(char *, const char *);
75char *strnl (char *); 75char *strnl(char *);
76char *strpcpy (char *, const char *, const char *); 76char *strpcpy(char *, const char *, const char *);
77char *strpcat (char *, const char *, const char *); 77char *strpcat(char *, const char *, const char *);
78int xvasprintf (char **strp, const char *fmt, va_list ap); 78int xvasprintf(char **strp, const char *fmt, va_list ap);
79int xasprintf (char **strp, const char *fmt, ...); 79int xasprintf(char **strp, const char *fmt, ...);
80 80
81int max_state (int a, int b); 81void usage(const char *) __attribute__((noreturn));
82int max_state_alt (int a, int b);
83
84void usage (const char *) __attribute__((noreturn));
85void usage2(const char *, const char *) __attribute__((noreturn)); 82void usage2(const char *, const char *) __attribute__((noreturn));
86void usage3(const char *, int) __attribute__((noreturn)); 83void usage3(const char *, int) __attribute__((noreturn));
87void usage4(const char *) __attribute__((noreturn)); 84void usage4(const char *) __attribute__((noreturn));
88void usage5(void) __attribute__((noreturn)); 85void usage5(void) __attribute__((noreturn));
89void usage_va(const char *fmt, ...) __attribute__((noreturn)); 86void usage_va(const char *fmt, ...) __attribute__((noreturn));
90 87
91#define max(a,b) (((a)>(b))?(a):(b)) 88#define max(a, b) (((a) > (b)) ? (a) : (b))
92#define min(a,b) (((a)<(b))?(a):(b)) 89#define min(a, b) (((a) < (b)) ? (a) : (b))
93 90
94char *perfdata (const char *, long int, const char *, int, long int, 91char *perfdata(const char *, long int, const char *, bool, long int, bool, long int, bool, long int, bool, long int);
95 int, long int, int, long int, int, long int);
96 92
97char *perfdata_uint64 (const char *, uint64_t , const char *, int, uint64_t, 93char *perfdata_uint64(const char *, uint64_t, const char *, bool, uint64_t, bool, uint64_t, bool, uint64_t, bool, uint64_t);
98 int, uint64_t, int, uint64_t, int, uint64_t);
99 94
100char *perfdata_int64 (const char *, int64_t, const char *, int, int64_t, 95char *perfdata_int64(const char *, int64_t, const char *, bool, int64_t, bool, int64_t, bool, int64_t, bool, int64_t);
101 int, int64_t, int, int64_t, int, int64_t);
102 96
103char *fperfdata (const char *, double, const char *, int, double, 97char *fperfdata(const char *, double, const char *, bool, double, bool, double, bool, double, bool, double);
104 int, double, int, double, int, double);
105 98
106char *sperfdata (const char *, double, const char *, char *, char *, 99char *sperfdata(const char *, double, const char *, char *, char *, bool, double, bool, double);
107 int, double, int, double);
108 100
109char *sperfdata_int (const char *, int, const char *, char *, char *, 101char *sperfdata_int(const char *, int, const char *, char *, char *, bool, int, bool, int);
110 int, int, int, int);
111 102
112/* The idea here is that, although not every plugin will use all of these, 103/* The idea here is that, although not every plugin will use all of these,
113 most will or should. Therefore, for consistency, these very common 104 most will or should. Therefore, for consistency, these very common
114 options should have only these meanings throughout the overall suite */ 105 options should have only these meanings throughout the overall suite */
115 106
116#define STD_LONG_OPTS \ 107#define STD_LONG_OPTS \
117{"version",no_argument,0,'V'},\ 108 {"version", no_argument, 0, 'V'}, {"verbose", no_argument, 0, 'v'}, {"help", no_argument, 0, 'h'}, \
118{"verbose",no_argument,0,'v'},\ 109 {"timeout", required_argument, 0, 't'}, {"critical", required_argument, 0, 'c'}, {"warning", required_argument, 0, 'w'}, \
119{"help",no_argument,0,'h'},\ 110 {"hostname", required_argument, 0, 'H'}
120{"timeout",required_argument,0,'t'},\
121{"critical",required_argument,0,'c'},\
122{"warning",required_argument,0,'w'},\
123{"hostname",required_argument,0,'H'}
124 111
125#define COPYRIGHT "Copyright (c) %s Monitoring Plugins Development Team\n\ 112#define COPYRIGHT \
113 "Copyright (c) %s Monitoring Plugins Development Team\n\
126\t<%s>\n\n" 114\t<%s>\n\n"
127 115
128#define UT_HLP_VRS _("\ 116#define UT_HLP_VRS \
117 _("\
129 %s (-h | --help) for detailed help\n\ 118 %s (-h | --help) for detailed help\n\
130 %s (-V | --version) for version information\n") 119 %s (-V | --version) for version information\n")
131 120
132#define UT_HELP_VRSN _("\ 121#define UT_HELP_VRSN \
122 _("\
133\nOptions:\n\ 123\nOptions:\n\
134 -h, --help\n\ 124 -h, --help\n\
135 Print detailed help screen\n\ 125 Print detailed help screen\n\
136 -V, --version\n\ 126 -V, --version\n\
137 Print version information\n") 127 Print version information\n")
138 128
139#define UT_HOST_PORT _("\ 129#define UT_HOST_PORT \
130 _("\
140 -H, --hostname=ADDRESS\n\ 131 -H, --hostname=ADDRESS\n\
141 Host name, IP Address, or unix socket (must be an absolute path)\n\ 132 Host name, IP Address, or unix socket (must be an absolute path)\n\
142 -%c, --port=INTEGER\n\ 133 -%c, --port=INTEGER\n\
143 Port number (default: %s)\n") 134 Port number (default: %s)\n")
144 135
145#define UT_IPv46 _("\ 136#define UT_IPv46 \
137 _("\
146 -4, --use-ipv4\n\ 138 -4, --use-ipv4\n\
147 Use IPv4 connection\n\ 139 Use IPv4 connection\n\
148 -6, --use-ipv6\n\ 140 -6, --use-ipv6\n\
149 Use IPv6 connection\n") 141 Use IPv6 connection\n")
150 142
151#define UT_VERBOSE _("\ 143#define UT_VERBOSE \
144 _("\
152 -v, --verbose\n\ 145 -v, --verbose\n\
153 Show details for command-line debugging (output may be truncated by\n\ 146 Show details for command-line debugging (output may be truncated by\n\
154 the monitoring system)\n") 147 the monitoring system)\n")
155 148
156#define UT_WARN_CRIT _("\ 149#define UT_WARN_CRIT \
150 _("\
157 -w, --warning=DOUBLE\n\ 151 -w, --warning=DOUBLE\n\
158 Response time to result in warning status (seconds)\n\ 152 Response time to result in warning status (seconds)\n\
159 -c, --critical=DOUBLE\n\ 153 -c, --critical=DOUBLE\n\
160 Response time to result in critical status (seconds)\n") 154 Response time to result in critical status (seconds)\n")
161 155
162#define UT_WARN_CRIT_RANGE _("\ 156#define UT_WARN_CRIT_RANGE \
157 _("\
163 -w, --warning=RANGE\n\ 158 -w, --warning=RANGE\n\
164 Warning range (format: start:end). Alert if outside this range\n\ 159 Warning range (format: start:end). Alert if outside this range\n\
165 -c, --critical=RANGE\n\ 160 -c, --critical=RANGE\n\
166 Critical range\n") 161 Critical range\n")
167 162
168#define UT_CONN_TIMEOUT _("\ 163#define UT_CONN_TIMEOUT \
164 _("\
169 -t, --timeout=INTEGER\n\ 165 -t, --timeout=INTEGER\n\
170 Seconds before connection times out (default: %d)\n") 166 Seconds before connection times out (default: %d)\n")
171 167
172#define UT_PLUG_TIMEOUT _("\ 168#define UT_PLUG_TIMEOUT \
169 _("\
173 -t, --timeout=INTEGER\n\ 170 -t, --timeout=INTEGER\n\
174 Seconds before plugin times out (default: %d)\n") 171 Seconds before plugin times out (default: %d)\n")
175 172
176#ifdef NP_EXTRA_OPTS 173#ifdef NP_EXTRA_OPTS
177#define UT_EXTRA_OPTS _("\ 174# define UT_EXTRA_OPTS \
175 _("\
178 --extra-opts=[section][@file]\n\ 176 --extra-opts=[section][@file]\n\
179 Read options from an ini file. See\n\ 177 Read options from an ini file. See\n\
180 https://www.monitoring-plugins.org/doc/extra-opts.html\n\ 178 https://www.monitoring-plugins.org/doc/extra-opts.html\n\
181 for usage and examples.\n") 179 for usage and examples.\n")
182#else 180#else
183#define UT_EXTRA_OPTS " \b" 181# define UT_EXTRA_OPTS " \b"
184#endif 182#endif
185 183
186#define UT_THRESHOLDS_NOTES _("\ 184#define UT_THRESHOLDS_NOTES \
185 _("\
187 See:\n\ 186 See:\n\
188 https://www.monitoring-plugins.org/doc/guidelines.html#THRESHOLDFORMAT\n\ 187 https://www.monitoring-plugins.org/doc/guidelines.html#THRESHOLDFORMAT\n\
189 for THRESHOLD format and examples.\n") 188 for THRESHOLD format and examples.\n")
190 189
191#define UT_SUPPORT _("\n\ 190#define UT_SUPPORT \
191 _("\n\
192Send email to help@monitoring-plugins.org if you have questions regarding\n\ 192Send email to help@monitoring-plugins.org if you have questions regarding\n\
193use of this software. To submit patches or suggest improvements, send email\n\ 193use of this software. To submit patches or suggest improvements, send email\n\
194to devel@monitoring-plugins.org\n\n") 194to devel@monitoring-plugins.org\n\n")
195 195
196#define UT_NOWARRANTY _("\n\ 196#define UT_NOWARRANTY \
197 _("\n\
197The Monitoring Plugins come with ABSOLUTELY NO WARRANTY. You may redistribute\n\ 198The Monitoring Plugins come with ABSOLUTELY NO WARRANTY. You may redistribute\n\
198copies of the plugins under the terms of the GNU General Public License.\n\ 199copies of the plugins under the terms of the GNU General Public License.\n\
199For more information about these matters, see the file named COPYING.\n") 200For more information about these matters, see the file named COPYING.\n")
200 201
202#define UT_OUTPUT_FORMAT \
203 _("\
204 --output-format=OUTPUT_FORMAT\n\
205 Select output format. Valid values: \"multi-line\", \"mp-test-json\"\n")
206
201#endif /* NP_UTILS_H */ 207#endif /* NP_UTILS_H */