UDP(4) | Kernel Interfaces Manual | UDP(4) |
int
socket(AF_INET, SOCK_DGRAM, 0);
int
socket(AF_INET6, SOCK_DGRAM, 0);
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 (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 interface dependent.
There are two UDP-level setsockopt(2)/getsockopt(2) options. UDP_OPTIONS may be used to change the default behavior of the socket. For example:
setsockopt(s, IPPROTO_UDP, UDP_OPTIONS, NULL, 0);
The UDP_ENCAP option can be used to encapsulate ESP packets in UDP. There are two valid enapsulation options: UDP_ENCAP_ESPINUDP_NON_IKE from draft-ietf-ipsec-nat-t-ike-00/01 and UDP_ENCAP_ESPINUDP from draft-ietf-ipsec-udp-encaps-06 defined in <netinet/udp.h>.
The UDP_RFC6056ALGO can be used to randomize the port selection. Valid algorithms are described in rfc6056(7) and their respective constants are in <netinet/rfc6056.h>. For example,
int algo = RFC6056_ALGO_RANDOM_PICK; /* see <netinet/rfc6056.h> */ setsockopt(s, IPPROTO_UDP, UDP_RFC6056ALGO, &algo, sizeof(algo));
The port selection can be also controlled at a global level for all UDP or UDP6 sockets using the following sysctl(7) variables: net.inet.udp.rfc6056.selected and net.inet6.udp6.rfc6056.selected respectively.
Options at the IP transport level may be used with UDP; see ip(4) or ip6(4).
User Datagram Protocol, RFC, 768, August 28, 1980.
Requirements for Internet Hosts -- Communication Layers, RFC, 1122, October 1989.
September 24, 2011 | NetBSD 6.1 |