• Johannes Berg's avatar
    netlink: advertise incomplete dumps · 670dc283
    Johannes Berg authored
    Consider the following situation:
     * a dump that would show 8 entries, four in the first
       round, and four in the second
     * between the first and second rounds, 6 entries are
       removed
     * now the second round will not show any entry, and
       even if there is a sequence/generation counter the
       application will not know
    
    To solve this problem, add a new flag NLM_F_DUMP_INTR
    to the netlink header that indicates the dump wasn't
    consistent, this flag can also be set on the MSG_DONE
    message that terminates the dump, and as such above
    situation can be detected.
    
    To achieve this, add a sequence counter to the netlink
    callback struct. Of course, netlink code still needs
    to use this new functionality. The correct way to do
    that is to always set cb->seq when a dumpit callback
    is invoked and call nl_dump_check_consistent() for
    each new message. The core code will also call this
    function for the final MSG_DONE message.
    
    To make it usable with generic netlink, a new function
    genlmsg_nlhdr() is needed to obtain the netlink header
    from the genetlink user header.
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    Acked-by: default avatarDavid S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    670dc283
af_netlink.c 47.8 KB