Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
UDP(4)			     Kernel Interfaces Manual			  UDP(4)

NAME
     udp -- Internet User Datagram Protocol

SYNOPSIS
     #include <sys/types.h>
     #include <sys/socket.h>
     #include <netinet/in.h>

     int
     socket(AF_INET, SOCK_DGRAM, 0);

DESCRIPTION
     UDP  is a simple, unreliable datagram protocol which is used to support the
     SOCK_DGRAM abstraction for the Internet protocol family.  UDP  sockets  are
     connectionless,  and  are	normally used with the sendto(2) and recvfrom(2)
     calls, though the connect(2) call may also be used to fix	the  destination
     for  future  packets  (in	which case the recv(2) or read(2) and send(2) or
     write(2) 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 for-
     mat.  Note that the UDP port space is separate  from  the	TCP  port  space
     (i.e.,  a	UDP  port  may	not  be "connected" to a TCP port).  In addition
     broadcast packets may be sent (assuming  the  underlying  network	supports
     this)  by using a reserved "broadcast address"; this address is network in-
     terface dependent.

     Options at the IP	transport  level  may  be  used  with  UDP;  see  ip(4).
     UDP_ENCAP socket option may be used at the IPPROTO_UDP level to encapsulate
     ESP  packets  in  UDP.   Only  one  value	is  supported  for  this option:
     UDP_ENCAP_ESPINUDP from RFC 3948, defined in <netinet/udp.h>.

FIB support
     UDP sockets are FIB-aware.  They inherit the FIB of the process which  cre-
     ated  the socket.	By default, a UDP socket bound to an address can receive
     datagrams originating from any FIB.  If the net.inet.udp.bind_all_fibs tun-
     able is set to 0, all UDP sockets will receive only  datagrams  originating
     from  the	same  FIB  as the socket.  In this mode, multiple sockets can be
     bound to the same address, so long as each socket belongs	to  a  different
     FIB, similar to the behavior of the SO_REUSEPORT option.

MIB (sysctl) Variables
     The  udp  protocol  implements  a	number	of variables in the net.inet.udp
     branch of the sysctl(3) MIB, which  can  be  also	read  or  modified  with
     sysctl(8):

     blackhole	  When a datagram is received on a port where there is no socket
		  listening,  do  not  return  an ICMP port unreachable message.
		  (Disabled by default.  See blackhole(4).)

     checksum	  Enable UDP checksums (enabled by default).

     log_in_vain  For all UDP datagrams, to ports on which there  is  no  socket
		  listening, log the connection attempt (disabled by default).

     maxdgram	  Maximum outgoing UDP datagram size

     recvspace	  Maximum space for incoming UDP datagrams

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

     [EISCONN]		when  trying 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 is al-
			ready connected;

     [ENOTCONN] 	when trying to send a datagram, but no	destination  ad-
			dress  is  specified,  and  the socket has not been con-
			nected;

     [ENOBUFS]		when the system runs out of memory for an internal  data
			structure;

     [EADDRINUSE]	when  an  attempt is made to create a socket with a port
			which has already been allocated;

     [EADDRNOTAVAIL]	when an attempt is made to create a socket with  a  net-
			work address for which no network interface exists.

SEE ALSO
     getsockopt(2),  recv(2),  send(2),  socket(2),  blackhole(4),  inet(4), in-
     tro(4), ip(4), udplite(4)

HISTORY
     The udp protocol appeared in 4.2BSD.

FreeBSD 14.3			January 20, 2025			  UDP(4)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=udp&sektion=4&manpath=FreeBSD+14.3-RELEASE+and+Ports>

home | help