[PATCH v5 4/4] Netlink: handle multi netlink messages

Fabien Siron fabien.siron at epita.fr
Tue Jun 21 12:44:45 UTC 2016


Quoting Dmitry V. Levin (2016-06-20 23:40:38)
> On Mon, Jun 20, 2016 at 04:06:45PM +0000, Fabien Siron wrote:
> > This commit handles the case where there are several messages in the buffer.
> > This is very useful to some protocols like SOCK_DIAG.
> > 
> > * netlink.c (nlmsg_fetch, nlmsg_next): New functions.
> > (decode_netlink_msg): New function.
> > (decode_netlink): Call decode_netlink_msg().
> > * tests/netlink_parsing.c (send_query): Adapt test.
> > ---
> >  netlink.c               | 45 +++++++++++++++++++++++++++++++++++++++++++--
> >  tests/netlink_parsing.c |  8 ++++----
> >  2 files changed, 47 insertions(+), 6 deletions(-)
> > 
> > diff --git a/netlink.c b/netlink.c
> > index c43f6e7..fecc413 100644
> > --- a/netlink.c
> > +++ b/netlink.c
> > @@ -31,8 +31,34 @@
[...]
> > +void
> > +decode_netlink(struct tcb *tcp, unsigned long addr, unsigned long total_size) {
> > +     struct nlmsghdr nlmsghdr;
> > +     unsigned long size = total_size;
> > +
> > +     for (; nlmsg_fetch(tcp, &nlmsghdr, addr, size);
> > +          addr = nlmsg_next(&nlmsghdr, addr, &size)) {
> > +             if (size != total_size)
> > +                     tprints(", ");
> > +             tprints("{");
> > +             decode_netlink_msg(tcp, addr, size);
> > +             tprints("}");
> 
> Square brackets are more appropriate for this sequence of structures,
> one before the first element and one after the last.  No need to enclose
> each element in additional brackets.  I'd say if there is only one
> element, no need to enclose it in additional brackets, too.
> 
> Should there be a limit on the number of elements printed?

Well, maybe a limit could be useful in non verbose, but in verbose everything
should be printed, isn't it?

Cheers,
--
Fabien Siron




More information about the Strace-devel mailing list