#define _BSD_SOURCE /* For NI_MAXHOST */
#include "collectd.h"
+
#include "common.h"
#include "plugin.h"
-#include "configfile.h"
#if HAVE_STDINT_H
# include <stdint.h>
static void ntpd_submit (const char *type, const char *type_inst, gauge_t value)
{
- value_t values[1];
value_list_t vl = VALUE_LIST_INIT;
- values[0].gauge = value;
-
- vl.values = values;
+ vl.values = &(value_t) { .gauge = value };
vl.values_len = 1;
sstrncpy (vl.host, hostname_g, sizeof (vl.host));
sstrncpy (vl.plugin, "ntpd", sizeof (vl.plugin));
const char *host;
const char *port;
- struct addrinfo ai_hints;
struct addrinfo *ai_list;
- struct addrinfo *ai_ptr;
int status;
if (sock_descr >= 0)
if (strlen (port) == 0)
port = NTPD_DEFAULT_PORT;
- memset (&ai_hints, '\0', sizeof (ai_hints));
- ai_hints.ai_flags = 0;
-#ifdef AI_ADDRCONFIG
- ai_hints.ai_flags |= AI_ADDRCONFIG;
-#endif
- ai_hints.ai_family = PF_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_protocol = IPPROTO_UDP,
+ .ai_socktype = SOCK_DGRAM
+ };
if ((status = getaddrinfo (host, port, &ai_hints, &ai_list)) != 0)
{
return (-1);
}
- for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
+ for (struct addrinfo *ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
{
/* create our socket descriptor */
if ((sock_descr = socket (ai_ptr->ai_family,
struct resp_pkt res;
int status;
int done;
- int i;
char *items;
size_t items_num;
struct timeval time_now;
int timeout;
- int pkt_item_num; /* items in this packet */
- int pkt_item_len; /* size of the items in this packet */
+ int pkt_item_num; /* items in this packet */
+ int pkt_item_len; /* size of the items in this packet */
int pkt_sequence;
- char pkt_recvd[MAXSEQ+1]; /* sequence numbers that have been received */
- int pkt_recvd_num; /* number of packets that have been received */
- int pkt_lastseq; /* the last sequence number */
- ssize_t pkt_padding; /* Padding in this packet */
+ char pkt_recvd[MAXSEQ+1] = { 0 }; /* sequence numbers that have been received */
+ int pkt_recvd_num; /* number of packets that have been received */
+ int pkt_lastseq; /* the last sequence number */
+ ssize_t pkt_padding; /* Padding in this packet */
if ((sd = ntpd_connect ()) < 0)
return (-1);
items = NULL;
items_num = 0;
- memset (pkt_recvd, '\0', sizeof (pkt_recvd));
pkt_recvd_num = 0;
pkt_lastseq = -1;
items_num += pkt_item_num;
*res_data = items;
- for (i = 0; i < pkt_item_num; i++)
+ for (int i = 0; i < pkt_item_num; i++)
{
/* dst: There are already `*res_items' items with
* res_item_size bytes each in in `*res_data'. Set
static int ntpd_send_request (int req_code, int req_items, int req_size, char *req_data)
{
int sd;
- struct req_pkt req;
+ struct req_pkt req = { 0 };
size_t req_data_len;
int status;
if ((sd = ntpd_connect ()) < 0)
return (-1);
- memset (&req, '\0', sizeof (req));
req.rm_vn_mode = RM_VN_MODE(0, 0, 0);
req.auth_seq = AUTH_SEQ (0, 0);
req.implementation = IMPL_XNTPD;
static int ntpd_get_name_from_address (char *buffer, size_t buffer_size,
struct info_peer_summary const *peer_info, _Bool do_reverse_lookup)
{
- struct sockaddr_storage sa;
+ struct sockaddr_storage sa = { 0 };
socklen_t sa_len;
int flags = 0;
int status;
- memset (&sa, 0, sizeof (sa));
-
if (peer_info->v6_flag)
{
- struct sockaddr_in6 sa6;
+ struct sockaddr_in6 sa6 = { 0 };
assert (sizeof (sa) >= sizeof (sa6));
- memset (&sa6, 0, sizeof (sa6));
sa6.sin6_family = AF_INET6;
sa6.sin6_port = htons (123);
memcpy (&sa6.sin6_addr, &peer_info->srcadr6,
}
else
{
- struct sockaddr_in sa4;
+ struct sockaddr_in sa4 = { 0 };
assert (sizeof (sa) >= sizeof (sa4));
- memset (&sa4, 0, sizeof (sa4));
sa4.sin_family = AF_INET;
sa4.sin_port = htons (123);
memcpy (&sa4.sin_addr, &peer_info->srcadr,
gauge_t offset_error;
int status;
- int i;
/* On Linux, if the STA_NANO bit is set in ik->status, then ik->offset
* is is nanoseconds, otherwise it's microseconds. */
return (-1);
}
- for (i = 0; i < ps_num; i++)
+ for (int i = 0; i < ps_num; i++)
{
struct info_peer_summary *ptr;
double offset;