diff options
Diffstat (limited to 'plugins/check_snmp.c')
| -rw-r--r-- | plugins/check_snmp.c | 71 |
1 files changed, 58 insertions, 13 deletions
diff --git a/plugins/check_snmp.c b/plugins/check_snmp.c index a939f078..0a9c6752 100644 --- a/plugins/check_snmp.c +++ b/plugins/check_snmp.c | |||
| @@ -286,9 +286,21 @@ int main(int argc, char **argv) { | |||
| 286 | } | 286 | } |
| 287 | struct counter64 tmp = *(vars->val.counter64); | 287 | struct counter64 tmp = *(vars->val.counter64); |
| 288 | uint64_t counter = (tmp.high << 32) + tmp.low; | 288 | uint64_t counter = (tmp.high << 32) + tmp.low; |
| 289 | counter *= (uint64_t)config.multiplier; | 289 | |
| 290 | counter += (uint64_t)config.offset; | 290 | if (config.multiplier_set || config.offset_set) { |
| 291 | pd_result_val = mp_create_pd_value(counter); | 291 | double processed = 0; |
| 292 | if (config.multiplier_set) { | ||
| 293 | processed = (double)counter * config.multiplier; | ||
| 294 | } | ||
| 295 | |||
| 296 | if (config.offset_set) { | ||
| 297 | processed += config.offset; | ||
| 298 | } | ||
| 299 | pd_result_val = mp_create_pd_value(processed); | ||
| 300 | } else { | ||
| 301 | pd_result_val = mp_create_pd_value(counter); | ||
| 302 | } | ||
| 303 | |||
| 292 | } break; | 304 | } break; |
| 293 | /* Numerical values */ | 305 | /* Numerical values */ |
| 294 | case ASN_GAUGE: // same as ASN_UNSIGNED | 306 | case ASN_GAUGE: // same as ASN_UNSIGNED |
| @@ -299,10 +311,20 @@ int main(int argc, char **argv) { | |||
| 299 | printf("Debug: Got a Integer like\n"); | 311 | printf("Debug: Got a Integer like\n"); |
| 300 | } | 312 | } |
| 301 | unsigned long tmp = (unsigned long)*(vars->val.integer); | 313 | unsigned long tmp = (unsigned long)*(vars->val.integer); |
| 302 | tmp *= (unsigned long)config.multiplier; | ||
| 303 | 314 | ||
| 304 | tmp += (unsigned long)config.offset; | 315 | if (config.multiplier_set || config.offset_set) { |
| 305 | pd_result_val = mp_create_pd_value(tmp); | 316 | double processed = 0; |
| 317 | if (config.multiplier_set) { | ||
| 318 | processed = (double)tmp * config.multiplier; | ||
| 319 | } | ||
| 320 | |||
| 321 | if (config.offset_set) { | ||
| 322 | processed += config.offset; | ||
| 323 | } | ||
| 324 | pd_result_val = mp_create_pd_value(processed); | ||
| 325 | } else { | ||
| 326 | pd_result_val = mp_create_pd_value(tmp); | ||
| 327 | } | ||
| 306 | break; | 328 | break; |
| 307 | } | 329 | } |
| 308 | case ASN_INTEGER: { | 330 | case ASN_INTEGER: { |
| @@ -311,19 +333,36 @@ int main(int argc, char **argv) { | |||
| 311 | } | 333 | } |
| 312 | 334 | ||
| 313 | long tmp = *(vars->val.integer); | 335 | long tmp = *(vars->val.integer); |
| 314 | tmp *= (long)config.multiplier; | ||
| 315 | tmp += (long)config.offset; | ||
| 316 | 336 | ||
| 317 | pd_result_val = mp_create_pd_value(tmp); | 337 | if (config.multiplier_set || config.offset_set) { |
| 338 | double processed = 0; | ||
| 339 | if (config.multiplier_set) { | ||
| 340 | processed = (double)tmp * config.multiplier; | ||
| 341 | } | ||
| 342 | |||
| 343 | if (config.offset_set) { | ||
| 344 | processed += config.offset; | ||
| 345 | } | ||
| 346 | pd_result_val = mp_create_pd_value(processed); | ||
| 347 | } else { | ||
| 348 | pd_result_val = mp_create_pd_value(tmp); | ||
| 349 | } | ||
| 350 | |||
| 318 | } break; | 351 | } break; |
| 319 | case ASN_FLOAT: { | 352 | case ASN_FLOAT: { |
| 320 | if (verbose) { | 353 | if (verbose) { |
| 321 | printf("Debug: Got a float\n"); | 354 | printf("Debug: Got a float\n"); |
| 322 | } | 355 | } |
| 323 | double tmp = *(vars->val.floatVal); | 356 | double tmp = *(vars->val.floatVal); |
| 324 | tmp *= config.multiplier; | ||
| 325 | 357 | ||
| 326 | tmp += config.offset; | 358 | if (config.multiplier_set) { |
| 359 | tmp *= config.multiplier; | ||
| 360 | } | ||
| 361 | |||
| 362 | if (config.offset_set) { | ||
| 363 | tmp += config.offset; | ||
| 364 | } | ||
| 365 | |||
| 327 | pd_result_val = mp_create_pd_value(tmp); | 366 | pd_result_val = mp_create_pd_value(tmp); |
| 328 | break; | 367 | break; |
| 329 | } | 368 | } |
| @@ -332,8 +371,14 @@ int main(int argc, char **argv) { | |||
| 332 | printf("Debug: Got a double\n"); | 371 | printf("Debug: Got a double\n"); |
| 333 | } | 372 | } |
| 334 | double tmp = *(vars->val.doubleVal); | 373 | double tmp = *(vars->val.doubleVal); |
| 335 | tmp *= config.multiplier; | 374 | if (config.multiplier_set) { |
| 336 | tmp += config.offset; | 375 | tmp *= config.multiplier; |
| 376 | } | ||
| 377 | |||
| 378 | if (config.offset_set) { | ||
| 379 | tmp += config.offset; | ||
| 380 | } | ||
| 381 | |||
| 337 | pd_result_val = mp_create_pd_value(tmp); | 382 | pd_result_val = mp_create_pd_value(tmp); |
| 338 | break; | 383 | break; |
| 339 | } | 384 | } |
