X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fgmond.c;h=5af0f3297f5cc807c8da1ae20df394077f96dc71;hb=f3610533206238bf4fcb72c76e9a07517d8bc64b;hp=67e0406cd675644148cf3099b3c6cec379ca956d;hpb=12f249b209d7fa31e3a9d53315e47a2342463e0f;p=collectd.git diff --git a/src/gmond.c b/src/gmond.c index 67e0406c..5af0f329 100644 --- a/src/gmond.c +++ b/src/gmond.c @@ -25,14 +25,12 @@ **/ #include "collectd.h" + #include "plugin.h" #include "common.h" #include "configfile.h" #include "utils_avltree.h" -#if HAVE_PTHREAD_H -# include -#endif #if HAVE_NETDB_H # include #endif @@ -214,7 +212,6 @@ static int create_sockets (socket_entry_t **ret_sockets, /* {{{ */ size_t *ret_sockets_num, const char *node, const char *service, int listen) { - struct addrinfo ai_hints; struct addrinfo *ai_list; struct addrinfo *ai_ptr; int ai_return; @@ -227,17 +224,12 @@ static int create_sockets (socket_entry_t **ret_sockets, /* {{{ */ if (*ret_sockets != NULL) return (EINVAL); - memset (&ai_hints, 0, sizeof (ai_hints)); - ai_hints.ai_flags = 0; -#ifdef AI_PASSIVE - ai_hints.ai_flags |= AI_PASSIVE; -#endif -#ifdef AI_ADDRCONFIG - ai_hints.ai_flags |= AI_ADDRCONFIG; -#endif - ai_hints.ai_family = AF_UNSPEC; - ai_hints.ai_socktype = SOCK_DGRAM; - ai_hints.ai_protocol = IPPROTO_UDP; + struct addrinfo ai_hints = { + .ai_family = AF_UNSPEC, + .ai_flags = AI_ADDRCONFIG | AI_PASSIVE, + .ai_protocol = IPPROTO_UDP, + .ai_socktype = SOCK_DGRAM + }; ai_return = getaddrinfo (node, service, &ai_hints, &ai_list); if (ai_return != 0) @@ -311,7 +303,6 @@ static int create_sockets (socket_entry_t **ret_sockets, /* {{{ */ if (ai_ptr->ai_family == AF_INET) { struct sockaddr_in *addr; - struct ip_mreq mreq; int loop; addr = (struct sockaddr_in *) ai_ptr->ai_addr; @@ -332,9 +323,10 @@ static int create_sockets (socket_entry_t **ret_sockets, /* {{{ */ sstrerror (errno, errbuf, sizeof (errbuf))); } - memset (&mreq, 0, sizeof (mreq)); - mreq.imr_multiaddr.s_addr = addr->sin_addr.s_addr; - mreq.imr_interface.s_addr = htonl (INADDR_ANY); + struct ip_mreq mreq = { + .imr_multiaddr.s_addr = addr->sin_addr.s_addr, + .imr_interface.s_addr = htonl (INADDR_ANY) + }; status = setsockopt (sockets[sockets_num].fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, (void *) &mreq, sizeof (mreq)); @@ -348,7 +340,6 @@ static int create_sockets (socket_entry_t **ret_sockets, /* {{{ */ else if (ai_ptr->ai_family == AF_INET6) { struct sockaddr_in6 *addr; - struct ipv6_mreq mreq; int loop; addr = (struct sockaddr_in6 *) ai_ptr->ai_addr; @@ -369,10 +360,12 @@ static int create_sockets (socket_entry_t **ret_sockets, /* {{{ */ sstrerror (errno, errbuf, sizeof (errbuf))); } - memset (&mreq, 0, sizeof (mreq)); + struct ipv6_mreq mreq = { + .ipv6mr_interface = 0 /* any */ + }; + memcpy (&mreq.ipv6mr_multiaddr, &addr->sin6_addr, sizeof (addr->sin6_addr)); - mreq.ipv6mr_interface = 0; /* any */ status = setsockopt (sockets[sockets_num].fd, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, (void *) &mreq, sizeof (mreq)); if (status != 0) @@ -401,14 +394,12 @@ static int create_sockets (socket_entry_t **ret_sockets, /* {{{ */ static int request_meta_data (const char *host, const char *name) /* {{{ */ { - Ganglia_metadata_msg msg; - char buffer[BUFF_SIZE]; + Ganglia_metadata_msg msg = { 0 }; + char buffer[BUFF_SIZE] = { 0 }; unsigned int buffer_size; XDR xdr; size_t i; - memset (&msg, 0, sizeof (msg)); - msg.id = gmetadata_request; msg.Ganglia_metadata_msg_u.grequest.metric_id.host = strdup (host); msg.Ganglia_metadata_msg_u.grequest.metric_id.name = strdup (name); @@ -421,7 +412,6 @@ static int request_meta_data (const char *host, const char *name) /* {{{ */ return (-1); } - memset (buffer, 0, sizeof (buffer)); xdrmem_create (&xdr, buffer, sizeof (buffer), XDR_ENCODE); if (!xdr_Ganglia_metadata_msg (&xdr, &msg)) @@ -717,7 +707,7 @@ static int mc_handle_metadata_msg (Ganglia_metadata_msg *msg) /* {{{ */ msg_meta = msg->Ganglia_metadata_msg_u.gfull; - if (msg_meta.metric.tmax <= 0) + if (msg_meta.metric.tmax == 0) return (-1); map = metric_lookup (msg_meta.metric_id.name); @@ -785,9 +775,8 @@ static int mc_handle_metric (void *buffer, size_t buffer_size) /* {{{ */ case gmetric_float: case gmetric_double: { - Ganglia_value_msg msg; + Ganglia_value_msg msg = { 0 }; - memset (&msg, 0, sizeof (msg)); if (xdr_Ganglia_value_msg (&xdr, &msg)) mc_handle_value_msg (&msg); break; @@ -796,8 +785,7 @@ static int mc_handle_metric (void *buffer, size_t buffer_size) /* {{{ */ case gmetadata_full: case gmetadata_request: { - Ganglia_metadata_msg msg; - memset (&msg, 0, sizeof (msg)); + Ganglia_metadata_msg msg = { 0 }; if (xdr_Ganglia_metadata_msg (&xdr, &msg)) mc_handle_metadata_msg (&msg); break; @@ -1110,7 +1098,7 @@ static int gmond_init (void) /* {{{ */ (mc_receive_port != NULL) ? mc_receive_port : MC_RECEIVE_PORT_DEFAULT, /* listen = */ 0); - staging_tree = c_avl_create ((void *) strcmp); + staging_tree = c_avl_create ((int (*) (const void *, const void *)) strcmp); if (staging_tree == NULL) { ERROR ("gmond plugin: c_avl_create failed.");