git: socket: introduce SO_RERROR to detect receive buffer overflow
Roy Marples
roy at crater.dragonflybsd.org
Tue Aug 6 17:51:19 PDT 2019
commit 7eaeff3d5b7170299f570487da1da8a4e87ab072
Author: Roy Marples <roy at marples.name>
Date: Wed Aug 7 01:48:21 2019 +0100
socket: introduce SO_RERROR to detect receive buffer overflow
kernel receive buffers are initially of a limited size and
generally the network protocols that use them don't care
if a packet gets lost.
However some users do care about lost messages even if not
baked into the protocol - such as consumers of route(4) to
track state.
POSIX states that read(2) can return an error of ENOBUFS so
return this error code when an overflow is detected.
Guard this with socket option SO_RERROR so that existing
applications which do not care can carry on not caring by
default.
Taken-from: NetBSD
Reviewed-by: sephe
Summary of changes:
lib/libc/sys/getsockopt.2 | 10 +++++++++-
sys/kern/uipc_socket.c | 31 +++++++++++++++++++++++--------
sys/kern/uipc_socket2.c | 13 +++++++++++++
sys/net/ip_mroute/ip_mroute.c | 4 +++-
sys/net/raw_usrreq.c | 7 ++++---
sys/netgraph/socket/ng_socket.c | 2 ++
sys/netinet/ip_divert.c | 5 +++--
sys/netinet/raw_ip.c | 3 ++-
sys/netinet/udp_usrreq.c | 1 +
sys/netinet6/icmp6.c | 3 ++-
sys/netinet6/ip6_mroute.c | 3 ++-
sys/netinet6/raw_ip6.c | 2 ++
sys/netinet6/udp6_usrreq.c | 3 +++
sys/sys/socket.h | 1 +
sys/sys/socketvar.h | 2 ++
15 files changed, 72 insertions(+), 18 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/7eaeff3d5b7170299f570487da1da8a4e87ab072
--
DragonFly BSD source repository
More information about the Commits
mailing list