udp(7) CLIX udp(7)
NAME
udp - User Datagram Protocol
DESCRIPTION
The udp device is a ``cloneable'' (see clone) STREAMS multiplexing driver
that provides the services of the User Datagram Protocol (UDP).
The upd device communicates using the AT&T Transport Provider Interface
(TPI). Adherence to TPI allows applications to interface with udp using
the AT&T Transport Layer Interface (TLI). The udp driver provides the TLI
network service type T_CLTS, a connectionless (datagram) protocol service.
udp should be linked above the ip STREAMS driver that has been bound to
the UDP protocol (0x11) in order to provide the UDP/Internet Protocol (IP)
functionality of the DARPA Internet Protocol suite. incd performs this
binding at boot time.
The following address format is used as defined in <sys/dod/inet.h> and
<sys/dod/dod_ut.h>:
typedef struct inet_addr {
unchar uc[4];
} ina_t;
typedef struct dod_ut_addr {
ina_t inet;
unchar port[2];
} dodaddr_t;
The following helpful macros are defined in <sys/dod/dod_ut.h> for
converting the port between host byte order (least significant byte first)
and network byte order (most significant byte first):
#define NET16_TO_HOST16(c) (c[0] << 8 | c[1])
#define HOST16_TO_NET16(i, c) (c[0] = ((unchar)((i) >> 8))), \
(c[1] = ((unchar)((i))))
Each of the fields in the address format structures should be filled with
values in network byte order. For example, the proper encoding of the
Internet address 129.135.200.7 with port number 200 would be assigned to
the structure as follows:
dodaddr_t address;
address.inet.uc[0] = (unchar) 129;
address.inet.uc[1] = (unchar) 135;
address.inet.uc[2] = (unchar) 200;
address.inet.uc[3] = (unchar) 7;
HOST16_TO_NET16(200, address.port);
2/94 - Intergraph Corporation 1
udp(7) CLIX udp(7)
When a t_bind is requested, an address length of zero in the t_bind
structure specifies that a port number be chosen by the driver for all
local endpoints. If a specific port needs to be bound, the address length
should be set to DOD_UT_ADDR_SZ and the port field should contain the port
number to be bound. The maximum number of outstanding connect indications
should be set to zero. If no address is specified or the Internet address
zero is specified, all local interfaces will be bound and an all zero
Internet addresses will be returned as the bound addresses.
When data is sent (with t_sndudata()), the destination address length in
the t_unitdata structure should be set to DOD_UT_ADDR_SZ and the entire
remote address, including the Internet address and port number, should be
specified. Data to be filled in the Internet Protocol header including
the TYPE OF SERVICE, TIME TO LIVE, IP OPTIONS, and source Internet address
may be specified with the opt field in the t_unitdata structure using the
format of the following structure defined in <sys/dod/udp.h>:
struct udp_udopt {
ina_t addr;
unchar iptos;
unchar ipttl;
unchar ipoptions[IPH_MAX_OPT_SZ];
dodaddr_t;
}
When data is received (with t_rcvudata()), the destination Internet
address, TYPE OF SERVICE, and OPTIONS from the Internet Protocol header
will be returned with the opt field in the t_unitdata structure using the
format of the udp_udopt structure.
Internet Control Message Protocol (ICMP) error messages pertaining to
datagrams sent with udp may be retrieved through the t_rcvuderr() call.
udp supports the Address Resolution Protocol ioctl() requests described in
arp.
FILES
/dev/udp
Special device file for UDP
/usr/include/sys/dod/inet.h
Internet address definitions
/usr/include/sys/dod/dod_ut.h
Internet utility and address definitions
/usr/include/sys/dod/udp.h
Definitions for udp device
NOTES
2 Intergraph Corporation - 2/94
udp(7) CLIX udp(7)
The incd command is used at boot time to configure the STREAMS drivers and
modules that implement network protocols, including udp. Manual
configuration is not usually necessary.
RELATED INFORMATION
Commands: incd(1)
Files: arp(7), icmp(7), ip(7), tcp(7), clone(7)
2/94 - Intergraph Corporation 3