X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fnetwork.c;h=cc3d6b3a3a3aa24af444be96e01bca5cb056260a;hb=8b695cf6f4fe477a6d44bce39af371510cd90f14;hp=43193cfca250093849a918b547904fc7f999981e;hpb=a04ffbda508739433df0975328100e33e7986c87;p=collectd.git diff --git a/src/network.c b/src/network.c index 43193cfc..cc3d6b3a 100644 --- a/src/network.c +++ b/src/network.c @@ -1,6 +1,6 @@ /** * collectd - src/network.c - * Copyright (C) 2005-2009 Florian octo Forster + * Copyright (C) 2005-2010 Florian octo Forster * Copyright (C) 2009 Aman Gupta * * This program is free software; you can redistribute it and/or modify it @@ -31,6 +31,7 @@ #include "utils_fbhash.h" #include "utils_avltree.h" #include "utils_cache.h" +#include "utils_complain.h" #include "network.h" @@ -295,14 +296,14 @@ static pthread_mutex_t send_buffer_lock = PTHREAD_MUTEX_INITIALIZER; * example). Only if neither is true, the stats_lock is acquired. The counters * are always read without holding a lock in the hope that writing 8 bytes to * memory is an atomic operation. */ -static uint64_t stats_octets_rx = 0; -static uint64_t stats_octets_tx = 0; -static uint64_t stats_packets_rx = 0; -static uint64_t stats_packets_tx = 0; -static uint64_t stats_values_dispatched = 0; -static uint64_t stats_values_not_dispatched = 0; -static uint64_t stats_values_sent = 0; -static uint64_t stats_values_not_sent = 0; +static derive_t stats_octets_rx = 0; +static derive_t stats_octets_tx = 0; +static derive_t stats_packets_rx = 0; +static derive_t stats_packets_tx = 0; +static derive_t stats_values_dispatched = 0; +static derive_t stats_values_not_dispatched = 0; +static derive_t stats_values_sent = 0; +static derive_t stats_values_not_sent = 0; static pthread_mutex_t stats_lock = PTHREAD_MUTEX_INITIALIZER; /* @@ -917,6 +918,8 @@ static int parse_packet (sockent_t *se, static int parse_part_sign_sha256 (sockent_t *se, /* {{{ */ void **ret_buffer, size_t *ret_buffer_len, int flags) { + static c_complain_t complain_no_users = C_COMPLAIN_INIT_STATIC; + char *buffer; size_t buffer_len; size_t buffer_offset; @@ -938,8 +941,9 @@ static int parse_part_sign_sha256 (sockent_t *se, /* {{{ */ if (se->data.server.userdb == NULL) { - NOTICE ("network plugin: Received signed network packet but can't verify " - "it because no user DB has been configured. Will accept it."); + c_complain (LOG_NOTICE, &complain_no_users, + "network plugin: Received signed network packet but can't verify it " + "because no user DB has been configured. Will accept it."); return (0); } @@ -1378,7 +1382,18 @@ static int parse_packet (sockent_t *se, /* {{{ */ if (status == 0) { vl.time = TIME_T_TO_CDTIME_T (tmp); - n.time = TIME_T_TO_CDTIME_T (tmp); + n.time = TIME_T_TO_CDTIME_T (tmp); + } + } + else if (pkg_type == TYPE_TIME_HR) + { + uint64_t tmp = 0; + status = parse_part_number (&buffer, &buffer_size, + &tmp); + if (status == 0) + { + vl.time = (cdtime_t) tmp; + n.time = (cdtime_t) tmp; } } else if (pkg_type == TYPE_INTERVAL) @@ -1389,6 +1404,14 @@ static int parse_packet (sockent_t *se, /* {{{ */ if (status == 0) vl.interval = TIME_T_TO_CDTIME_T (tmp); } + else if (pkg_type == TYPE_INTERVAL_HR) + { + uint64_t tmp = 0; + status = parse_part_number (&buffer, &buffer_size, + &tmp); + if (status == 0) + vl.interval = (cdtime_t) tmp; + } else if (pkg_type == TYPE_HOST) { status = parse_part_string (&buffer, &buffer_size, @@ -2583,18 +2606,16 @@ static int add_to_buffer (char *buffer, int buffer_size, /* {{{ */ if (vl_def->time != vl->time) { - time_t tmp = CDTIME_T_TO_TIME_T (vl->time); - if (write_part_number (&buffer, &buffer_size, TYPE_TIME, - (uint64_t) tmp)) + if (write_part_number (&buffer, &buffer_size, TYPE_TIME_HR, + (uint64_t) vl->time)) return (-1); vl_def->time = vl->time; } if (vl_def->interval != vl->interval) { - /* TODO: Create a new type for sub-second intervals. */ - if (write_part_number (&buffer, &buffer_size, TYPE_INTERVAL, - (uint64_t) CDTIME_T_TO_TIME_T (vl->interval))) + if (write_part_number (&buffer, &buffer_size, TYPE_INTERVAL_HR, + (uint64_t) vl->interval)) return (-1); vl_def->interval = vl->interval; } @@ -3072,14 +3093,11 @@ static int network_notification (const notification_t *n, char *buffer_ptr = buffer; int buffer_free = sizeof (buffer); int status; - time_t tmp; memset (buffer, '\0', sizeof (buffer)); - - tmp = CDTIME_T_TO_TIME_T (n->time); - status = write_part_number (&buffer_ptr, &buffer_free, TYPE_TIME, - (uint64_t) tmp); + status = write_part_number (&buffer_ptr, &buffer_free, TYPE_TIME_HR, + (uint64_t) n->time); if (status != 0) return (-1); @@ -3183,15 +3201,15 @@ static int network_shutdown (void) static int network_stats_read (void) /* {{{ */ { - uint64_t copy_octets_rx; - uint64_t copy_octets_tx; - uint64_t copy_packets_rx; - uint64_t copy_packets_tx; - uint64_t copy_values_dispatched; - uint64_t copy_values_not_dispatched; - uint64_t copy_values_sent; - uint64_t copy_values_not_sent; - uint64_t copy_receive_list_length; + derive_t copy_octets_rx; + derive_t copy_octets_tx; + derive_t copy_packets_rx; + derive_t copy_packets_tx; + derive_t copy_values_dispatched; + derive_t copy_values_not_dispatched; + derive_t copy_values_sent; + derive_t copy_values_not_sent; + derive_t copy_receive_list_length; value_list_t vl = VALUE_LIST_INIT; value_t values[2]; @@ -3214,14 +3232,14 @@ static int network_stats_read (void) /* {{{ */ sstrncpy (vl.plugin, "network", sizeof (vl.plugin)); /* Octets received / sent */ - vl.values[0].counter = (counter_t) copy_octets_rx; - vl.values[1].counter = (counter_t) copy_octets_tx; + vl.values[0].derive = (derive_t) copy_octets_rx; + vl.values[1].derive = (derive_t) copy_octets_tx; sstrncpy (vl.type, "if_octets", sizeof (vl.type)); plugin_dispatch_values (&vl); /* Packets received / send */ - vl.values[0].counter = (counter_t) copy_packets_rx; - vl.values[1].counter = (counter_t) copy_packets_tx; + vl.values[0].derive = (derive_t) copy_packets_rx; + vl.values[1].derive = (derive_t) copy_packets_tx; sstrncpy (vl.type, "if_packets", sizeof (vl.type)); plugin_dispatch_values (&vl);