--- nagios-plugins-1.4.15-74-gcf07/plugins/check_snmp.c 2012-06-25 19:00:02.000000000 +0200 +++ nagios-plugins-1.4.15-74oneQuarter/plugins/check_snmp.c 2012-06-26 18:52:38.000000000 +0200 @@ -141,6 +141,7 @@ int rate_multiplier = 1; state_data *previous_state; double previous_value[MAX_OIDS]; +int perf_labels = 1; int @@ -485,11 +486,18 @@ ptr = NULL; strtod(show, &ptr); if (ptr > show) { - if (nlabels >= (size_t)1 && (size_t)i < nlabels && labels[i] != NULL) + if (perf_labels && nlabels >= (size_t)1 && (size_t)i < nlabels && labels[i] != NULL) temp_string=labels[i]; else temp_string=oidname; - strncat(perfstr, temp_string, sizeof(perfstr)-strlen(perfstr)-1); + if (strpbrk (temp_string, " ='") == NULL) { + strncat(perfstr, temp_string, sizeof(perfstr)-strlen(perfstr)-1); + } else { + strncat(perfstr, "'", sizeof(perfstr)-strlen(perfstr)-1); + /* FIXME: Char stuffing "foo'bar" --> "'foo''bar'" still missing */ + strncat(perfstr, temp_string, sizeof(perfstr)-strlen(perfstr)-1); + strncat(perfstr, "'", sizeof(perfstr)-strlen(perfstr)-1); + } strncat(perfstr, "=", sizeof(perfstr)-strlen(perfstr)-1); len = sizeof(perfstr)-strlen(perfstr)-1; strncat(perfstr, show, len>ptr-show ? ptr-show : len); @@ -583,6 +591,7 @@ {"rate", no_argument, 0, L_CALCULATE_RATE}, {"rate-multiplier", required_argument, 0, L_RATE_MULTIPLIER}, {"invert-search", no_argument, 0, L_INVERT_SEARCH}, + {"perf-oids", no_argument, 0, 'O'}, {0, 0, 0, 0} }; @@ -600,7 +609,7 @@ } while (1) { - c = getopt_long (argc, argv, "nhvVt:c:w:H:C:o:e:E:d:D:s:t:R:r:l:u:p:m:P:L:U:a:x:A:X:", + c = getopt_long (argc, argv, "nhvVOt:c:w:H:C:o:e:E:d:D:s:t:R:r:l:u:p:m:P:L:U:a:x:A:X:", longopts, &option); if (c == -1 || c == EOF) @@ -798,6 +807,9 @@ case L_INVERT_SEARCH: invert_search=1; break; + case 'O': + perf_labels=0; + break; } } @@ -1063,6 +1075,9 @@ printf (" %s\n", "-e, --retries=INTEGER"); printf (" %s\n", _("Number of retries to be used in the requests")); + printf (" %s\n", "-O, --perf-oids"); + printf (" %s\n", _("Label performance data with OIDs instead of --label's")); + printf (UT_VERBOSE); printf ("\n");