Code

Test updates...
[nagiosplug.git] / plugins / check_snmp.c
index 9d9194225b4ee8d5f9facffc3e022e7ff198e741..d79da8cf7cbc6bd94d3f4c8c032d0874dfc43b56 100644 (file)
@@ -160,7 +160,6 @@ main (int argc, char **argv)
        char *outbuff;
        char *ptr = NULL;
        char *show = NULL;
-       char *endptr = NULL;
        char *th_warn=NULL;
        char *th_crit=NULL;
        char type[8] = "";
@@ -170,7 +169,6 @@ main (int argc, char **argv)
        char *state_string=NULL;
        size_t response_length, current_length, string_length;
        char *temp_string=NULL;
-       int is_numeric=0;
        time_t current_time;
        double temp_double;
        time_t duration;
@@ -336,29 +334,24 @@ main (int argc, char **argv)
                /* We strip out the datatype indicator for PHBs */
                if (strstr (response, "Gauge: ")) {
                        show = strstr (response, "Gauge: ") + 7;
-                       is_numeric++;
                } 
                else if (strstr (response, "Gauge32: ")) {
                        show = strstr (response, "Gauge32: ") + 9;
-                       is_numeric++;
                } 
                else if (strstr (response, "Counter32: ")) {
                        show = strstr (response, "Counter32: ") + 11;
-                       is_numeric++;
                        is_counter=1;
                        if(!calculate_rate) 
                                strcpy(type, "c");
                }
                else if (strstr (response, "Counter64: ")) {
                        show = strstr (response, "Counter64: ") + 11;
-                       is_numeric++;
                        is_counter=1;
                        if(!calculate_rate)
                                strcpy(type, "c");
                }
                else if (strstr (response, "INTEGER: ")) {
                        show = strstr (response, "INTEGER: ") + 9;
-                       is_numeric++;
                }
                else if (strstr (response, "STRING: ")) {
                        show = strstr (response, "STRING: ") + 8;
@@ -396,29 +389,18 @@ main (int argc, char **argv)
                                }
                        }
 
-                       /* Allow numeric conversion if whole string is a number. Make concession for strings with " at beginning or end */
-                       /* This duplicates the conversion a bit later, but is cleaner to separate out the checking against the conversion */
-                       ptr = show;
-                       if (*ptr == '"')
-                               ptr++;
-                       if (*ptr != '\0' ) {
-                               strtod( ptr, &endptr );
-                               if (*endptr == '"')
-                                       endptr++;
-                               if (*endptr == '\0')
-                                       is_numeric=1;
-                       }
-
                }
-               else if (strstr (response, "Timeticks: "))
+               else if (strstr (response, "Timeticks: ")) {
                        show = strstr (response, "Timeticks: ");
+               }
                else
                        show = response;
 
                iresult = STATE_DEPENDENT;
 
                /* Process this block for numeric comparisons */
-                if (is_numeric) {
+               /* 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");
                        if (ptr == NULL)
                                die (STATE_UNKNOWN,_("No valid data returned"));