Subject: Re: netlink: 12 bytes leftover after parsing attributes - triggered by iproute2 libnetlink's rtnl_dump_request()

From: Stephen Hemminger <[email-masked]>
Date: Tue, 20 Mar 2012 08:09:17 -0700

On Tue, 20 Mar 2012 16:00:23 +0100
Bruno Prémont <[email-masked]> wrote:

> On Tue, 20 Mar 2012 07:41:40 Stephen Hemminger wrote:
> > > Should this get fixed at kernel level, iproute2 libnetlink level or
> > > at end-user level (e.g. collectd)?
> > > Three lines every 10 seconds is a damn lot!
> > > 
> > > Thanks,
> > > Bruno
> > 
> > Netlink is supposed to be encoded as Type-Length-Value and correctly written
> > programs ignore types they don't understand. So either the library is getting
> > confused by the type or the attribute is not encoded correctly.
> > 
> > 
> > The issue could be in libnetlink library. What version of collectd and libnetlink
> > are you using?
> 
> I've used collectd-5.0.x and collectd-4.10.3 with 3.3 kernels.
> The stub code I listed is what collectd's netlink plugin does with
> libnetlink (processing of netlink reply factored out for short-ness)
> 
> In all cases, linked against libnetlink from iproute2-2.6.38 (on
> Gentoo)
> 
> 
> From looking at git history of both collectd and iproute2, on both
> sides there has not been any changes that would affect the result.
> 
> Collectd:
>   http://git.verplant.org/?p=collectd.git;a=history;f=src/netlink.c;hb=HEAD

It is most likely in the libnetlink code, I'll look there.  Since libnetlink
is not really an exported API, I wish applications would use a real
library like libmnl instead rather than copying it out of iproute2.