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

Dmitry V. Levin ldv at altlinux.org
Tue Jun 21 14:10:57 UTC 2016


On Tue, Jun 21, 2016 at 12:44:45PM +0000, Fabien Siron wrote:
> 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?

For example, print_array in abbrev(tcp) mode limits number of printed
elements to max_strlen.


-- 
ldv
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20160621/95ba7c48/attachment.bin>


More information about the Strace-devel mailing list