diff options
Diffstat (limited to 'man7/udp.7')
-rw-r--r-- | man7/udp.7 | 312 |
1 files changed, 0 insertions, 312 deletions
diff --git a/man7/udp.7 b/man7/udp.7 deleted file mode 100644 index 6b643a2..0000000 --- a/man7/udp.7 +++ /dev/null @@ -1,312 +0,0 @@ -.\" SPDX-License-Identifier: Linux-man-pages-1-para -.\" -.\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>. -.\" -.\" $Id: udp.7,v 1.7 2000/01/22 01:55:05 freitag Exp $ -.\" -.TH udp 7 2023-10-31 "Linux man-pages 6.7" -.SH NAME -udp \- User Datagram Protocol for IPv4 -.SH SYNOPSIS -.nf -.B #include <sys/socket.h> -.B #include <netinet/in.h> -.B #include <netinet/udp.h> -.P -.IB udp_socket " = socket(AF_INET, SOCK_DGRAM, 0);" -.fi -.SH DESCRIPTION -This is an implementation of the User Datagram Protocol -described in RFC\ 768. -It implements a connectionless, unreliable datagram packet service. -Packets may be reordered or duplicated before they arrive. -UDP generates and checks checksums to catch transmission errors. -.P -When a UDP socket is created, -its local and remote addresses are unspecified. -Datagrams can be sent immediately using -.BR sendto (2) -or -.BR sendmsg (2) -with a valid destination address as an argument. -When -.BR connect (2) -is called on the socket, the default destination address is set and -datagrams can now be sent using -.BR send (2) -or -.BR write (2) -without specifying a destination address. -It is still possible to send to other destinations by passing an -address to -.BR sendto (2) -or -.BR sendmsg (2). -In order to receive packets, the socket can be bound to a local -address first by using -.BR bind (2). -Otherwise, the socket layer will automatically assign -a free local port out of the range defined by -.I /proc/sys/net/ipv4/ip_local_port_range -and bind the socket to -.BR INADDR_ANY . -.P -All receive operations return only one packet. -When the packet is smaller than the passed buffer, only that much -data is returned; when it is bigger, the packet is truncated and the -.B MSG_TRUNC -flag is set. -.B MSG_WAITALL -is not supported. -.P -IP options may be sent or received using the socket options described in -.BR ip (7). -They are processed by the kernel only when the appropriate -.I /proc -parameter -is enabled (but still passed to the user even when it is turned off). -See -.BR ip (7). -.P -When the -.B MSG_DONTROUTE -flag is set on sending, the destination address must refer to a local -interface address and the packet is sent only to that interface. -.P -By default, Linux UDP does path MTU (Maximum Transmission Unit) discovery. -This means the kernel -will keep track of the MTU to a specific target IP address and return -.B EMSGSIZE -when a UDP packet write exceeds it. -When this happens, the application should decrease the packet size. -Path MTU discovery can be also turned off using the -.B IP_MTU_DISCOVER -socket option or the -.I /proc/sys/net/ipv4/ip_no_pmtu_disc -file; see -.BR ip (7) -for details. -When turned off, UDP will fragment outgoing UDP packets -that exceed the interface MTU. -However, disabling it is not recommended -for performance and reliability reasons. -.SS Address format -UDP uses the IPv4 -.I sockaddr_in -address format described in -.BR ip (7). -.SS Error handling -All fatal errors will be passed to the user as an error return even -when the socket is not connected. -This includes asynchronous errors -received from the network. -You may get an error for an earlier packet -that was sent on the same socket. -This behavior differs from many other BSD socket implementations -which don't pass any errors unless the socket is connected. -Linux's behavior is mandated by -.BR RFC\ 1122 . -.P -For compatibility with legacy code, in Linux 2.0 and 2.2 -it was possible to set the -.B SO_BSDCOMPAT -.B SOL_SOCKET -option to receive remote errors only when the socket has been -connected (except for -.B EPROTO -and -.BR EMSGSIZE ). -Locally generated errors are always passed. -Support for this socket option was removed in later kernels; see -.BR socket (7) -for further information. -.P -When the -.B IP_RECVERR -option is enabled, all errors are stored in the socket error queue, -and can be received by -.BR recvmsg (2) -with the -.B MSG_ERRQUEUE -flag set. -.SS /proc interfaces -System-wide UDP parameter settings can be accessed by files in the directory -.IR /proc/sys/net/ipv4/ . -.TP -.IR udp_mem " (since Linux 2.6.25)" -This is a vector of three integers governing the number -of pages allowed for queueing by all UDP sockets. -.RS -.TP -.I min -Below this number of pages, UDP is not bothered about its -memory appetite. -When the amount of memory allocated by UDP exceeds -this number, UDP starts to moderate memory usage. -.TP -.I pressure -This value was introduced to follow the format of -.I tcp_mem -(see -.BR tcp (7)). -.TP -.I max -Number of pages allowed for queueing by all UDP sockets. -.RE -.IP -Defaults values for these three items are -calculated at boot time from the amount of available memory. -.TP -.IR udp_rmem_min " (integer; default value: PAGE_SIZE; since Linux 2.6.25)" -Minimal size, in bytes, of receive buffers used by UDP sockets in moderation. -Each UDP socket is able to use the size for receiving data, -even if total pages of UDP sockets exceed -.I udp_mem -pressure. -.TP -.IR udp_wmem_min " (integer; default value: PAGE_SIZE; since Linux 2.6.25)" -Minimal size, in bytes, of send buffer used by UDP sockets in moderation. -Each UDP socket is able to use the size for sending data, -even if total pages of UDP sockets exceed -.I udp_mem -pressure. -.SS Socket options -To set or get a UDP socket option, call -.BR getsockopt (2) -to read or -.BR setsockopt (2) -to write the option with the option level argument set to -.BR IPPROTO_UDP . -Unless otherwise noted, -.I optval -is a pointer to an -.IR int . -.P -Following is a list of UDP-specific socket options. -For details of some other socket options that are also applicable -for UDP sockets, see -.BR socket (7). -.TP -.BR UDP_CORK " (since Linux 2.5.44)" -If this option is enabled, then all data output on this socket -is accumulated into a single datagram that is transmitted when -the option is disabled. -This option should not be used in code intended to be -portable. -.\" FIXME document UDP_ENCAP (new in Linux 2.5.67) -.\" From include/linux/udp.h: -.\" UDP_ENCAP_ESPINUDP_NON_IKE draft-ietf-ipsec-nat-t-ike-00/01 -.\" UDP_ENCAP_ESPINUDP draft-ietf-ipsec-udp-encaps-06 -.\" UDP_ENCAP_L2TPINUDP rfc2661 -.\" FIXME Document UDP_NO_CHECK6_TX and UDP_NO_CHECK6_RX, added in Linux 3.16 -.TP -.BR UDP_SEGMENT " (since Linux 4.18)" -Enables UDP segmentation offload. -Segmentation offload reduces -.BR send (2) -cost by transferring multiple datagrams worth of data -as a single large packet through the kernel transmit path, -even when that exceeds MTU. -As late as possible, -the large packet is split by segment size into a series of datagrams. -This segmentation offload step is deferred to hardware if supported, -else performed in software. -This option takes a value in the range -.RB [ 0 ,\~ USHRT_MAX ] -that sets the segment size: -the size of datagram payload, -excluding the UDP header. -The segment size must be chosen such that -at most 64 datagrams are sent in a single call -and that the datagrams after segmentation meet -the same MTU rules that apply to datagrams sent without this option. -Segmentation offload depends on checksum offload, -as datagram checksums are computed after segmentation. -The option may also be set for individual -.BR sendmsg (2) -calls by passing it as a -.BR cmsg (3). -A value of zero disables the feature. -This option should not be used in code intended to be portable. -.TP -.BR UDP_GRO " (since Linux 5.0)" -Enables UDP receive offload. -If enabled, -the socket may receive multiple datagrams worth of data -as a single large buffer, -together with a -.BR cmsg (3) -that holds the segment size. -This option is the inverse of segmentation offload. -It reduces receive cost by handling multiple datagrams worth of data -as a single large packet in the kernel receive path, -even when that exceeds MTU. -This option should not be used in code intended to be portable. -.SS Ioctls -These ioctls can be accessed using -.BR ioctl (2). -The correct syntax is: -.P -.RS -.nf -.BI int " value"; -.IB error " = ioctl(" udp_socket ", " ioctl_type ", &" value ");" -.fi -.RE -.TP -.BR FIONREAD " (" SIOCINQ ) -Gets a pointer to an integer as argument. -Returns the size of the next pending datagram in the integer in bytes, -or 0 when no datagram is pending. -.B Warning: -Using -.BR FIONREAD , -it is impossible to distinguish the case where no datagram is pending -from the case where the next pending datagram contains zero bytes of data. -It is safer to use -.BR select (2), -.BR poll (2), -or -.BR epoll (7) -to distinguish these cases. -.\" See http://www.securiteam.com/unixfocus/5KP0I15IKO.html -.\" "GNUnet DoS (UDP Socket Unreachable)", 14 May 2006 -.TP -.BR TIOCOUTQ " (" SIOCOUTQ ) -Returns the number of data bytes in the local send queue. -Supported only with Linux 2.4 and above. -.P -In addition, all ioctls documented in -.BR ip (7) -and -.BR socket (7) -are supported. -.SH ERRORS -All errors documented for -.BR socket (7) -or -.BR ip (7) -may be returned by a send or receive on a UDP socket. -.TP -.B ECONNREFUSED -No receiver was associated with the destination address. -This might be caused by a previous packet sent over the socket. -.SH VERSIONS -.B IP_RECVERR -is a new feature in Linux 2.2. -.\" .SH CREDITS -.\" This man page was written by Andi Kleen. -.SH SEE ALSO -.BR ip (7), -.BR raw (7), -.BR socket (7), -.BR udplite (7) -.P -The kernel source file -.IR Documentation/networking/ip\-sysctl.txt . -.P -RFC\ 768 for the User Datagram Protocol. -.br -RFC\ 1122 for the host requirements. -.br -RFC\ 1191 for a description of path MTU discovery. |