Hi Philipp, On Sat, 20 Feb 2021 at 16:25, Philipp Schuster <phip1611@xxxxxxxxx> wrote: > > To whom it may concern, > I'd like to inform you about a bug in the Netlink(7) man page [0]. > > It describes struct nlmsgerr the following way: > > struct nlmsgerr { > int error; /* Negative errno or 0 for acknowledgements */ > struct nlmsghdr msg; /* Message header that caused the error */ > }; > > but according to Kernel code [1] [2] [3] it actually should be: > > struct nlmsgerr { > int error; /* Negative errno or 0 for acknowledgements */ > struct nlmsghdr msg; /* Message header that caused the error */ > /* > * followed by the message contents unless NETLINK_CAP_ACK was set > * or the ACK indicates success (error == 0) > * message length is aligned with NLMSG_ALIGN() > */ > /* > * followed by TLVs defined in enum nlmsgerr_attrs > * if NETLINK_EXT_ACK was set > */ > }; > > This discrepancy led to errors implementing at least a Rust library which > made wrong assumptions about the returned value. I'm a little unclear. Do you mean that the manual page should include the additional comments? Thanks, Michael > [0] https://man7.org/linux/man-pages/man7/netlink.7.html > [1] https://elixir.bootlin.com/linux/v5.11/source/include/uapi/linux/netlink.h#L112 > [2] https://elixir.bootlin.com/linux/v5.11/source/net/netlink/af_netlink.c#L2416 > [3] https://elixir.bootlin.com/linux/v5.11/source/net/netlink/af_netlink.c#L2440 > > > Kind regards > -- > Philipp Schuster -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/