Module Name: src Committed By: bouyer Date: Mon Apr 9 13:34:11 UTC 2018
Modified Files: src/lib/libc/sys [netbsd-8]: recv.2 src/sbin/route [netbsd-8]: route.c src/sys/kern [netbsd-8]: uipc_socket.c uipc_socket2.c uipc_usrreq.c src/sys/net [netbsd-8]: raw_usrreq.c rtsock.c src/sys/netatalk [netbsd-8]: ddp_input.c src/sys/netcan [netbsd-8]: can.c src/sys/netinet [netbsd-8]: ip_mroute.c raw_ip.c udp_usrreq.c src/sys/netinet6 [netbsd-8]: icmp6.c ip6_input.c ip6_mroute.c raw_ip6.c udp6_usrreq.c src/sys/netipsec [netbsd-8]: keysock.c src/sys/sys [netbsd-8]: socketvar.h src/tests/lib/libc/sys [netbsd-8]: t_recvmmsg.c src/tests/net/icmp [netbsd-8]: t_ping.c Log Message: Pull up following revision(s) (requested by roy in ticket #724): tests/net/icmp/t_ping.c: revision 1.19 sys/netinet6/raw_ip6.c: revision 1.166 sys/netinet6/ip6_input.c: revision 1.195 sys/net/raw_usrreq.c: revision 1.59 sys/sys/socketvar.h: revision 1.151 sys/kern/uipc_socket2.c: revision 1.128 tests/lib/libc/sys/t_recvmmsg.c: revision 1.2 lib/libc/sys/recv.2: revision 1.38 sys/net/rtsock.c: revision 1.239 sys/netinet/udp_usrreq.c: revision 1.246 sys/netinet6/icmp6.c: revision 1.224 tests/net/icmp/t_ping.c: revision 1.20 sys/netipsec/keysock.c: revision 1.63 sys/netinet/raw_ip.c: revision 1.172 sys/kern/uipc_socket.c: revision 1.260 tests/net/icmp/t_ping.c: revision 1.22 sys/kern/uipc_socket.c: revision 1.261 tests/net/icmp/t_ping.c: revision 1.23 sys/netinet/ip_mroute.c: revision 1.155 sbin/route/route.c: revision 1.159 sys/netinet6/ip6_mroute.c: revision 1.123 sys/netatalk/ddp_input.c: revision 1.31 sys/netcan/can.c: revision 1.3 sys/kern/uipc_usrreq.c: revision 1.184 sys/netinet6/udp6_usrreq.c: revision 1.138 tests/net/icmp/t_ping.c: revision 1.18 socket: report receive buffer overflows Add soroverflow() which increments the overflow counter, sets so_error to ENOBUFS and wakes the receive socket up. Replace all code that manually increments this counter with soroverflow(). Add soroverflow() to raw_input(). This allows userland to detect route(4) overflows so it can re-sync with the current state. socket: clear error even when peeking The error has already been reported and it's pointless requiring another recv(2) call just to clear it. socket: remove now incorrect comment that so_error is only udp As it can be affected by route(4) sockets which are raw. rtsock: log dropped messages that we cannot report to userland Handle ENOBUFS when receiving messages. Don't send messages if the receiver has died. Sprinkle more soroverflow(). Handle ENOBUFS in recv Handle ENOBUFS in sendto Note value received. Harden another sendto for ENOBUFS. Handle the routing socket overflowing gracefully. Allow a valid sendto .... duh Handle errors better. Fix test for checking we sent all the data we asked to. To generate a diff of this commit: cvs rdiff -u -r1.36 -r1.36.20.1 src/lib/libc/sys/recv.2 cvs rdiff -u -r1.155.4.2 -r1.155.4.3 src/sbin/route/route.c cvs rdiff -u -r1.255.2.1 -r1.255.2.2 src/sys/kern/uipc_socket.c cvs rdiff -u -r1.124 -r1.124.8.1 src/sys/kern/uipc_socket2.c cvs rdiff -u -r1.181 -r1.181.8.1 src/sys/kern/uipc_usrreq.c cvs rdiff -u -r1.56.4.1 -r1.56.4.2 src/sys/net/raw_usrreq.c cvs rdiff -u -r1.213.2.7 -r1.213.2.8 src/sys/net/rtsock.c cvs rdiff -u -r1.29 -r1.29.8.1 src/sys/netatalk/ddp_input.c cvs rdiff -u -r1.2 -r1.2.2.1 src/sys/netcan/can.c cvs rdiff -u -r1.146.6.2 -r1.146.6.3 src/sys/netinet/ip_mroute.c cvs rdiff -u -r1.164.4.1 -r1.164.4.2 src/sys/netinet/raw_ip.c cvs rdiff -u -r1.233.4.1 -r1.233.4.2 src/sys/netinet/udp_usrreq.c cvs rdiff -u -r1.211.6.4 -r1.211.6.5 src/sys/netinet6/icmp6.c cvs rdiff -u -r1.178.2.6 -r1.178.2.7 src/sys/netinet6/ip6_input.c cvs rdiff -u -r1.119.6.1 -r1.119.6.2 src/sys/netinet6/ip6_mroute.c cvs rdiff -u -r1.157.2.3 -r1.157.2.4 src/sys/netinet6/raw_ip6.c cvs rdiff -u -r1.129 -r1.129.4.1 src/sys/netinet6/udp6_usrreq.c cvs rdiff -u -r1.58.2.1 -r1.58.2.2 src/sys/netipsec/keysock.c cvs rdiff -u -r1.144.6.1 -r1.144.6.2 src/sys/sys/socketvar.h cvs rdiff -u -r1.1 -r1.1.26.1 src/tests/lib/libc/sys/t_recvmmsg.c cvs rdiff -u -r1.17 -r1.17.6.1 src/tests/net/icmp/t_ping.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.