Subject: Re: question on netlink_overrun()

From: Patrick McHardy <[email-masked]>
Date: Thu, 05 Mar 2009 06:56:02 +0100

Chris Friesen wrote:
> Currently we set netlink_overrun() on the socket in both the unicast and 
> broadcast paths.  If I understand things correctly this should result in 
> the receiver getting ENOBUFS the next time they try a socket-related 
> syscall.
> 
> However, in the netlink_dump() code we don't call it--was this an 
> oversight or an intentional design decision?
> 
> I have a userspace app that would like to know if it ran out of buffer 
> space in the receive socket (and hence lost some packets) while dumping 
> SA information in xfrm_user_rcv_msg().

The dump should never overrun since it has flow control based
on available socket memory. Once the decision has been made
to send a dump packet and it has been sucessfully allocated,
it is never dropped. Except when explicitly filtered.