Module: monitoring-plugins
    Branch: master
    Commit: 35811848da1095525e6937159f6611fc8a87261b
    Author: Stephane Lapie <[email protected]>
 Committer: Thomas Guyot-Sionnest <[email protected]>
      Date: Fri Nov 15 11:04:55 2013 +0900
       URL: 
https://www.monitoring-plugins.org/repositories/monitoring-plugins/commit/?id=3581184

Handle negative values properly with check_snmp

check_snmp becomes capable of evaluating negative values properly,
but it might be returning CRITICALs where it used to return OK and was ignored,
if a negative value turns out to actually be a valid value.
If negative values are valid, this can be worked around,
by adding "~:" to the warning/critical threshold : 100 -> ~:100

---

 lib/utils_base.h     | 2 +-
 plugins/check_snmp.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/utils_base.h b/lib/utils_base.h
index 04f6370..d69b0da 100644
--- a/lib/utils_base.h
+++ b/lib/utils_base.h
@@ -62,7 +62,7 @@ int check_range(double, range *);
 int get_status(double, thresholds *);
 
 /* All possible characters in a threshold range */
-#define NP_THRESHOLDS_CHARS "0123456789.:@~"
+#define NP_THRESHOLDS_CHARS "-0123456789.:@~"
 
 char *np_escaped_string (const char *);
 
diff --git a/plugins/check_snmp.c b/plugins/check_snmp.c
index ca17970..d516fbc 100644
--- a/plugins/check_snmp.c
+++ b/plugins/check_snmp.c
@@ -459,7 +459,7 @@ main (int argc, char **argv)
                /* Process this block for numeric comparisons */
                /* Make some special values,like Timeticks numeric only if a 
threshold is defined */
                if (thlds[i]->warning || thlds[i]->critical || calculate_rate) {
-                       ptr = strpbrk (show, "0123456789");
+                       ptr = strpbrk (show, "-0123456789");
                        if (ptr == NULL)
                                die (STATE_UNKNOWN,_("No valid data returned 
(%s)\n"), show);
                        while (i >= response_size) {

Reply via email to