Starting with linux-3.3-rc5 kernel at each interval netlink plugin triggers three lines of kernel log: netlink: 12 bytes leftover after parsing attributes. Change the libnetlink function used to query link statistics to match iproute2's behavior and thus not trip on the kernel's new parsing of optional attributes for RTM_GETLINK. While at it, also fix libnetlink's complaint to stderr: !!!Deficit 16, rta_len=996 caused by incorrect calculation of msg_len. Signed-off-by: Bruno Prémont --- This should get applied to 5.0 and 4.10 series! The two hunks may get applied separately. --- collectd-a/src/netlink.c 2012-03-21 19:20:15.304227640 +0100 +++ collectd-b/src/netlink.c 2012-03-21 19:21:20.454323202 +0100 @@ -223,7 +223,7 @@ static int link_filter (const struct soc msg = NLMSG_DATA (nmh); - msg_len = nmh->nlmsg_len - sizeof (struct ifinfomsg); + msg_len = nmh->nlmsg_len - NLMSG_LENGTH(sizeof (struct ifinfomsg)); if (msg_len < 0) { ERROR ("netlink plugin: link_filter: msg_len = %i < 0;", msg_len); @@ -554,17 +554,13 @@ static int ir_init (void) static int ir_read (void) { - struct ifinfomsg im; struct tcmsg tm; int ifindex; static const int type_id[] = { RTM_GETQDISC, RTM_GETTCLASS, RTM_GETTFILTER }; static const char *type_name[] = { "qdisc", "class", "filter" }; - memset (&im, '\0', sizeof (im)); - im.ifi_type = AF_UNSPEC; - - if (rtnl_dump_request (&rth, RTM_GETLINK, &im, sizeof (im)) < 0) + if (rtnl_wilddump_request (&rth, AF_UNSPEC, RTM_GETLINK) < 0) { ERROR ("netlink plugin: ir_read: rtnl_dump_request failed."); return (-1);