Skip to contentSkip to conversation

question on netlink_overrun()

DISCUSSION Chris Friesen 2 participants 2 messages Mar 5, 2009

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Hi all,

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().

Thanks,

Chris

#1 lore raw
Quoted 5 lines · Chris Friesen

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.