Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

__skb_recv_datagram(9) [centos man page]

__SKB_RECV_DATAGRAM(9)						 Linux Networking					    __SKB_RECV_DATAGRAM(9)

__skb_recv_datagram - Receive a datagram skbuff SYNOPSIS
struct sk_buff * __skb_recv_datagram(struct sock * sk, unsigned int flags, int * peeked, int * off, int * err); ARGUMENTS
sk socket flags MSG_ flags peeked returns non-zero if this packet has been seen before off an offset in bytes to peek skb from. Returns an offset within an skb where data actually starts err error code returned DESCRIPTION
Get a datagram skbuff, understands the peeking, nonblocking wakeups and possible races. This replaces identical code in packet, raw and udp, as well as the IPX AX.25 and Appletalk. It also finally fixes the long standing peek and read race for datagram sockets. If you alter this routine remember it must be re-entrant. This function will lock the socket if a skb is returned, so the caller needs to unlock the socket in that case (usually by calling skb_free_datagram) * It does not lock socket since today. This function is * free of race conditions. This measure should/can improve * significantly datagram socket latencies at high loads, * when data copying to user space takes lots of time. * (BTW I've just killed the last cli in IP/IPv6/core/netlink/packet * 8) Great win.) * --ANK (980729) The order of the tests when we find no data waiting are specified quite explicitly by POSIX 1003.1g, don't change them without having the standard around please. COPYRIGHT
Kernel Hackers Manual 3.10 June 2014 __SKB_RECV_DATAGRAM(9)

Check Out this Related Man Page

udp(7)							 Miscellaneous Information Manual						    udp(7)

udp - Internet user datagram protocol (UDP) SYNOPSIS
#include <sys/socket.h> #include <netinet/in.h> The following is the socket call for AF_INET sockets: s = socket(AF_INET, SOCK_DGRAM, 0); The following is the socket call for AF_INET6 sockets: s = socket(AF_INET6, SOCK_DGRAM, 0); DESCRIPTION
UDP is a simple, unreliable datagram protocol that is used to support the SOCK_DGRAM abstraction for the Internet Protocol family. UDP sockets are connectionless, and are normally used with the sendto() and recvfrom() functions, though the connect() function may also be used to fix the destination for future packets, in which case the recv() or read() and send() or write() functions may be used. UDP address formats are identical to those used by TCP. In particular, UDP provides a port identifier in addition to the normal Internet address format. Note that the UDP port space is separate from the TCP port space (that is, a UDP port may not be "connected" to a TCP port). In addition, IPv4 broadcast packets may be sent (assuming the underlying network supports this) by using a reserved "broadcast address"; this address is network interface dependent. There is no broadcast address in IPv6. Options at the IP transport level may be used with UDP; see the ip() reference page. ERRORS
If a socket operation fails, errno may be set to one of the following values: An attempt was made to create a socket with a port that has already been allocated. An attempt was made to create a socket with a network address for which no network interface exists. The socket is already connected. This error occurs when trying to establish connection on a socket or when trying to send a datagram with the desti- nation address specified. The system ran out of memory for an internal data structure. The destination address of a datagram was not specified, and the socket has not been connected. RELATED INFORMATION
Functions: getsockopt(2), recv(2), send(2), socket(2) Files: netintro(7), inet(7), ip(7) delim off udp(7)
Man Page