Implement Linux-variant of MSG_TRUNC flag used in recv(), recvfrom() and recvmsg().
Posix defines MSG_TRUNC as an output flag, indicating packet/datagram truncation. Linux extended it a while (~15+ years) ago to act as input flag, making the returned number of bytes being the full packet size.
It's a (relatively) popular pattern to do recvmsg( MSG_PEEK | MSG_TRUNC) to get the packet size, allocate the buffer and issue another call to fetch the packet. In particular, it's popular in userland netlink code, which is the primary driving factor of this change.
This diff implements the aforementioned behaviour for SOCK_DGRAM sockets (udp, unix, all soreceive_generic() users).