diff options
author | Ton Voon <tonvoon@users.sourceforge.net> | 2006-07-13 12:50:23 (GMT) |
---|---|---|
committer | Ton Voon <tonvoon@users.sourceforge.net> | 2006-07-13 12:50:23 (GMT) |
commit | 548083b2ea865474915fc8a9ddd361e997585a02 (patch) | |
tree | f3766c1f5d8f8ea1b2b721a5792e4fb4daf1cf68 /plugins/utils.c | |
parent | 6b9cc76d0a27631fbab19a31ab8bd46e143b7580 (diff) | |
download | monitoring-plugins-548083b2ea865474915fc8a9ddd361e997585a02.tar.gz |
Move new util_* functions to lib/
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1451 f882894a-f735-0410-b71e-b25c423dba1c
Diffstat (limited to 'plugins/utils.c')
-rw-r--r-- | plugins/utils.c | 191 |
1 files changed, 1 insertions, 190 deletions
diff --git a/plugins/utils.c b/plugins/utils.c index cb01341..2b3acce 100644 --- a/plugins/utils.c +++ b/plugins/utils.c | |||
@@ -16,6 +16,7 @@ | |||
16 | 16 | ||
17 | #include "common.h" | 17 | #include "common.h" |
18 | #include "utils.h" | 18 | #include "utils.h" |
19 | #include "utils_base.h" | ||
19 | #include <stdarg.h> | 20 | #include <stdarg.h> |
20 | #include <limits.h> | 21 | #include <limits.h> |
21 | 22 | ||
@@ -132,16 +133,6 @@ state_text (int result) | |||
132 | } | 133 | } |
133 | 134 | ||
134 | void | 135 | void |
135 | die (int result, const char *fmt, ...) | ||
136 | { | ||
137 | va_list ap; | ||
138 | va_start (ap, fmt); | ||
139 | vprintf (fmt, ap); | ||
140 | va_end (ap); | ||
141 | exit (result); | ||
142 | } | ||
143 | |||
144 | void | ||
145 | timeout_alarm_handler (int signo) | 136 | timeout_alarm_handler (int signo) |
146 | { | 137 | { |
147 | if (signo == SIGALRM) { | 138 | if (signo == SIGALRM) { |
@@ -266,156 +257,6 @@ is_option (char *str) | |||
266 | return FALSE; | 257 | return FALSE; |
267 | } | 258 | } |
268 | 259 | ||
269 | void set_range_start (range *this, double value) { | ||
270 | this->start = value; | ||
271 | this->start_infinity = FALSE; | ||
272 | } | ||
273 | |||
274 | void set_range_end (range *this, double value) { | ||
275 | this->end = value; | ||
276 | this->end_infinity = FALSE; | ||
277 | } | ||
278 | |||
279 | range | ||
280 | *parse_range_string (char *str) { | ||
281 | range *temp_range; | ||
282 | double start; | ||
283 | double end; | ||
284 | char *end_str; | ||
285 | |||
286 | temp_range = (range *) malloc(sizeof(range)); | ||
287 | |||
288 | /* Set defaults */ | ||
289 | temp_range->start = 0; | ||
290 | temp_range->start_infinity = FALSE; | ||
291 | temp_range->end = 0; | ||
292 | temp_range->end_infinity = TRUE; | ||
293 | temp_range->alert_on = OUTSIDE; | ||
294 | |||
295 | if (str[0] == '@') { | ||
296 | temp_range->alert_on = INSIDE; | ||
297 | str++; | ||
298 | } | ||
299 | |||
300 | end_str = index(str, ':'); | ||
301 | if (end_str != NULL) { | ||
302 | if (str[0] == '~') { | ||
303 | temp_range->start_infinity = TRUE; | ||
304 | } else { | ||
305 | start = strtod(str, NULL); /* Will stop at the ':' */ | ||
306 | set_range_start(temp_range, start); | ||
307 | } | ||
308 | end_str++; /* Move past the ':' */ | ||
309 | } else { | ||
310 | end_str = str; | ||
311 | } | ||
312 | end = strtod(end_str, NULL); | ||
313 | if (strcmp(end_str, "") != 0) { | ||
314 | set_range_end(temp_range, end); | ||
315 | } | ||
316 | |||
317 | if (temp_range->start_infinity == TRUE || | ||
318 | temp_range->end_infinity == TRUE || | ||
319 | temp_range->start <= temp_range->end) { | ||
320 | return temp_range; | ||
321 | } | ||
322 | free(temp_range); | ||
323 | return NULL; | ||
324 | } | ||
325 | |||
326 | /* returns 0 if okay, otherwise 1 */ | ||
327 | int | ||
328 | _set_thresholds(thresholds **my_thresholds, char *warn_string, char *critical_string) | ||
329 | { | ||
330 | thresholds *temp_thresholds = NULL; | ||
331 | |||
332 | temp_thresholds = malloc(sizeof(temp_thresholds)); | ||
333 | |||
334 | temp_thresholds->warning = NULL; | ||
335 | temp_thresholds->critical = NULL; | ||
336 | |||
337 | if (warn_string != NULL) { | ||
338 | if ((temp_thresholds->warning = parse_range_string(warn_string)) == NULL) { | ||
339 | return 1; | ||
340 | } | ||
341 | } | ||
342 | if (critical_string != NULL) { | ||
343 | if ((temp_thresholds->critical = parse_range_string(critical_string)) == NULL) { | ||
344 | return 1; | ||
345 | } | ||
346 | } | ||
347 | |||
348 | if (*my_thresholds != 0) { | ||
349 | /* printf("Freeing here: %d\n", *my_thresholds); */ | ||
350 | free(*my_thresholds); | ||
351 | } | ||
352 | *my_thresholds = temp_thresholds; | ||
353 | |||
354 | return 0; | ||
355 | } | ||
356 | |||
357 | void | ||
358 | set_thresholds(thresholds **my_thresholds, char *warn_string, char *critical_string) | ||
359 | { | ||
360 | if (_set_thresholds(my_thresholds, warn_string, critical_string) == 0) { | ||
361 | return; | ||
362 | } else { | ||
363 | usage(_("Range format incorrect")); | ||
364 | } | ||
365 | } | ||
366 | |||
367 | /* Returns TRUE if alert should be raised based on the range */ | ||
368 | int | ||
369 | check_range(double value, range *my_range) | ||
370 | { | ||
371 | int false = FALSE; | ||
372 | int true = TRUE; | ||
373 | |||
374 | if (my_range->alert_on == INSIDE) { | ||
375 | false = TRUE; | ||
376 | true = FALSE; | ||
377 | } | ||
378 | |||
379 | if (my_range->end_infinity == FALSE && my_range->start_infinity == FALSE) { | ||
380 | if ((my_range->start <= value) && (value <= my_range->end)) { | ||
381 | return false; | ||
382 | } else { | ||
383 | return true; | ||
384 | } | ||
385 | } else if (my_range->start_infinity == FALSE && my_range->end_infinity == TRUE) { | ||
386 | if (my_range->start <= value) { | ||
387 | return false; | ||
388 | } else { | ||
389 | return true; | ||
390 | } | ||
391 | } else if (my_range->start_infinity == TRUE && my_range->end_infinity == FALSE) { | ||
392 | if (value <= my_range->end) { | ||
393 | return false; | ||
394 | } else { | ||
395 | return true; | ||
396 | } | ||
397 | } else { | ||
398 | return false; | ||
399 | } | ||
400 | } | ||
401 | |||
402 | /* Returns status */ | ||
403 | int | ||
404 | get_status(double value, thresholds *my_thresholds) | ||
405 | { | ||
406 | if (my_thresholds->critical != NULL) { | ||
407 | if (check_range(value, my_thresholds->critical) == TRUE) { | ||
408 | return STATE_CRITICAL; | ||
409 | } | ||
410 | } | ||
411 | if (my_thresholds->warning != NULL) { | ||
412 | if (check_range(value, my_thresholds->warning) == TRUE) { | ||
413 | return STATE_WARNING; | ||
414 | } | ||
415 | } | ||
416 | return STATE_OK; | ||
417 | } | ||
418 | |||
419 | #ifdef NEED_GETTIMEOFDAY | 260 | #ifdef NEED_GETTIMEOFDAY |
420 | int | 261 | int |
421 | gettimeofday (struct timeval *tv, struct timezone *tz) | 262 | gettimeofday (struct timeval *tv, struct timezone *tz) |
@@ -727,33 +568,3 @@ char *fperfdata (const char *label, | |||
727 | 568 | ||
728 | return data; | 569 | return data; |
729 | } | 570 | } |
730 | |||
731 | char *np_escaped_string (const char *string) { | ||
732 | char *data; | ||
733 | int i, j=0; | ||
734 | data = strdup(string); | ||
735 | for (i=0; data[i]; i++) { | ||
736 | if (data[i] == '\\') { | ||
737 | switch(data[++i]) { | ||
738 | case 'n': | ||
739 | data[j++] = '\n'; | ||
740 | break; | ||
741 | case 'r': | ||
742 | data[j++] = '\r'; | ||
743 | break; | ||
744 | case 't': | ||
745 | data[j++] = '\t'; | ||
746 | break; | ||
747 | case '\\': | ||
748 | data[j++] = '\\'; | ||
749 | break; | ||
750 | default: | ||
751 | data[j++] = data[i]; | ||
752 | } | ||
753 | } else { | ||
754 | data[j++] = data[i]; | ||
755 | } | ||
756 | } | ||
757 | data[j] = '\0'; | ||
758 | return data; | ||
759 | } | ||