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