The netlink rfc (3549) says that in multi-part messages (messages split
over multiple netlink packets), the first and all following headers
have the NLM_F_MULTI flag set except for the last header which has the
header type NLMSG_DONE.
afaict NLMSG_DONE is redundant, since one could simply not set the
NLM_F_MULTI flag for the final header; and if a multi-part message
can't cross a datagram boundary - which is assumed by e.g. the reading
example in
http://www.kernel.org/doc/man-pages/online/pages/man7/netlink.7.html
- NLMSG_DONE is redundant too.
And the rfc doesn't say what NLMSG_DONE /and/ NLM_F_MULTI should mean,
although net/netlink/af_netlink.c always sets both.
So, what are the symantics for NLM_F_MULTI and NLMSG_DONE?
Networking developers do not (generally) subscribe to linux-kernel,
they are listening in at [email protected] so you'll have more
luck sending your question there.
Thanks.