X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fnetlink.c;h=d6288e986903f0833e67dde81a439d3c7717b588;hb=a019b6c8144745db63c599680bd693ac02f11666;hp=8c883f67179a9525d71dc0a1a04b11dbb9a3a1bd;hpb=756704084860d8ad21db61f2a677cbd80b008be4;p=collectd.git diff --git a/src/netlink.c b/src/netlink.c index 8c883f67..d6288e98 100644 --- a/src/netlink.c +++ b/src/netlink.c @@ -171,8 +171,8 @@ static void submit_one (const char *dev, const char *type, vl.values = values; vl.values_len = 1; vl.time = time (NULL); - strcpy (vl.host, hostname_g); - strcpy (vl.plugin, "netlink"); + sstrncpy (vl.host, hostname_g, sizeof (vl.host)); + sstrncpy (vl.plugin, "netlink", sizeof (vl.plugin)); strncpy (vl.plugin_instance, dev, sizeof (vl.plugin_instance)); if (type_instance != NULL) @@ -194,8 +194,8 @@ static void submit_two (const char *dev, const char *type, vl.values = values; vl.values_len = 2; vl.time = time (NULL); - strcpy (vl.host, hostname_g); - strcpy (vl.plugin, "netlink"); + sstrncpy (vl.host, hostname_g, sizeof (vl.host)); + sstrncpy (vl.plugin, "netlink", sizeof (vl.plugin)); strncpy (vl.plugin_instance, dev, sizeof (vl.plugin_instance)); if (type_instance != NULL) @@ -237,10 +237,6 @@ static int link_filter (const struct sockaddr_nl *sa, return (-1); } - if (attrs[IFLA_STATS] == NULL) - return (-1); - stats = RTA_DATA (attrs[IFLA_STATS]); - if (attrs[IFLA_IFNAME] == NULL) { ERROR ("netlink plugin: link_filter: attrs[IFLA_IFNAME] == NULL"); @@ -273,6 +269,13 @@ static int link_filter (const struct sockaddr_nl *sa, iflist[msg->ifi_index] = strdup (dev); } + if (attrs[IFLA_STATS] == NULL) + { + DEBUG ("netlink plugin: link_filter: No statistics for interface %s.", dev); + return (0); + } + stats = RTA_DATA (attrs[IFLA_STATS]); + if (check_ignorelist (dev, "interface", NULL) == 0) { submit_two (dev, "if_octets", NULL, stats->rx_bytes, stats->tx_bytes); @@ -359,7 +362,7 @@ static int qos_filter (const struct sockaddr_nl *sa, if (msg->tcm_ifindex >= iflist_len) { ERROR ("netlink plugin: qos_filter: msg->tcm_ifindex = %i " - ">= iflist_len = %i", + ">= iflist_len = %zu", msg->tcm_ifindex, iflist_len); return (-1); }