Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

__skb_recv_datagram(9) [suse man page]

__SKB_RECV_DATAGRAM(9)						 Linux Networking					    __SKB_RECV_DATAGRAM(9)

NAME
__skb_recv_datagram - Receive a datagram skbuff SYNOPSIS
struct sk_buff * __skb_recv_datagram(struct sock * sk, unsigned flags, int * peeked, int * err); ARGUMENTS
sk socket flags MSG_ flags peeked returns non-zero if this packet has been seen before 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 2.6. July 2010 __SKB_RECV_DATAGRAM(9)

Check Out this Related Man Page

udp(4p) 																   udp(4p)

Name
       udp - Internet User Datagram Protocol

Syntax
       #include <sys/socket.h>
       #include <netinet/in.h>

       s = socket(AF_INET, 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 and calls, though the call can also be used to fix  the  destination  for  future
       packets (in which case the or and or system calls 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 (for example,	a UDP port may not be ``connected''  to  a
       TCP  port).   In  addition  broadcast  packets  can be sent (assuming the underlying network supports this) by using a reserved ``broadcast
       address''; this address is network interface dependent.	The SO_BROADCAST option must be set on the socket for broadcasting to succeed.

Diagnostics
       A socket operation may fail with one of the following errors returned:

       [EISCONN]      Try to establish a connection on a socket which already has one, or when trying to send  a  datagram  with  the  destination
		      address specified and the socket already connected.

       [ENOTCONN]     Try to send a datagram, but no destination address is specified, and the socket has not been connected.

       [ENOBUFS]      The system runs out of memory for an internal data structure.

       [EADDRINUSE]   An attempt is made to create a socket with a port that has already been allocated.

       [EADDRNOTAVAIL]
		      An attempt is made to create a socket with a network address for which no network interface exists.

See Also
       getsockopt(2), send(2), socket(2) recv(2), intro(4n), inet(4f)

																	   udp(4p)
Man Page