X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fnetwork.c;h=75f52df651c56f6dbdeabe7631dfb0653c145539;hb=35f98b6e5c4c30bd7aeb52c7894c5f6e276638da;hp=67a7c3c57b5db7e9059b5769520c34b9dcb8f1e0;hpb=476c9ceb31dc6a7b4e83b50cb6aaf6b94ca68b4a;p=collectd.git diff --git a/src/network.c b/src/network.c index 67a7c3c5..75f52df6 100644 --- a/src/network.c +++ b/src/network.c @@ -19,6 +19,8 @@ * Florian octo Forster **/ +#define _BSD_SOURCE /* For struct ip_mreq */ + #include "collectd.h" #include "plugin.h" #include "common.h" @@ -525,17 +527,34 @@ static int write_part_values (char **ret_buffer, int *ret_buffer_len, for (i = 0; i < num_values; i++) { - if (ds->ds[i].type == DS_TYPE_COUNTER) - { - pkg_values_types[i] = DS_TYPE_COUNTER; - pkg_values[i].counter = htonll (vl->values[i].counter); - } - else + pkg_values_types[i] = (uint8_t) ds->ds[i].type; + switch (ds->ds[i].type) { - pkg_values_types[i] = DS_TYPE_GAUGE; - pkg_values[i].gauge = htond (vl->values[i].gauge); - } - } + case DS_TYPE_COUNTER: + pkg_values[i].counter = htonll (vl->values[i].counter); + break; + + case DS_TYPE_GAUGE: + pkg_values[i].gauge = htond (vl->values[i].gauge); + break; + + case DS_TYPE_DERIVE: + pkg_values[i].derive = htonll (vl->values[i].derive); + break; + + case DS_TYPE_ABSOLUTE: + pkg_values[i].absolute = htonll (vl->values[i].absolute); + break; + + default: + free (pkg_values_types); + free (pkg_values); + ERROR ("network plugin: write_part_values: " + "Unknown data source type: %i", + ds->ds[i].type); + return (-1); + } /* switch (ds->ds[i].type) */ + } /* for (num_values) */ /* * Use `memcpy' to write everything to the buffer, because the pointer @@ -711,10 +730,32 @@ static int parse_part_values (void **ret_buffer, size_t *ret_buffer_len, for (i = 0; i < pkg_numval; i++) { - if (pkg_types[i] == DS_TYPE_COUNTER) - pkg_values[i].counter = ntohll (pkg_values[i].counter); - else if (pkg_types[i] == DS_TYPE_GAUGE) - pkg_values[i].gauge = ntohd (pkg_values[i].gauge); + switch (pkg_types[i]) + { + case DS_TYPE_COUNTER: + pkg_values[i].counter = (counter_t) ntohll (pkg_values[i].counter); + break; + + case DS_TYPE_GAUGE: + pkg_values[i].gauge = (gauge_t) ntohd (pkg_values[i].gauge); + break; + + case DS_TYPE_DERIVE: + pkg_values[i].derive = (derive_t) ntohll (pkg_values[i].derive); + break; + + case DS_TYPE_ABSOLUTE: + pkg_values[i].absolute = (absolute_t) ntohll (pkg_values[i].absolute); + break; + + default: + sfree (pkg_types); + sfree (pkg_values); + NOTICE ("network plugin: parse_part_values: " + "Don't know how to handle data source type %"PRIu8, + pkg_types[i]); + return (-1); + } /* switch (pkg_types[i]) */ } *ret_buffer = buffer; @@ -2259,9 +2300,6 @@ static void networt_send_buffer_encrypted (sockent_t *se, /* {{{ */ gcry_error_t err; gcry_cipher_hd_t cypher; - DEBUG ("network plugin: networt_send_buffer_encrypted: " - "buffer_size = %zu;", buffer_size); - /* Initialize the header fields */ memset (&pea, 0, sizeof (pea)); pea.head.type = htons (TYPE_ENCR_AES256); @@ -2280,6 +2318,8 @@ static void networt_send_buffer_encrypted (sockent_t *se, /* {{{ */ - sizeof (pea.hash); assert (buffer_size <= sizeof (buffer)); + DEBUG ("network plugin: networt_send_buffer_encrypted: " + "buffer_size = %zu;", buffer_size); pea.head.length = htons ((uint16_t) (PART_ENCRYPTION_AES256_SIZE + username_len + in_buffer_size));