4.3BSD-UWisc/man/cat4/idp.4p
IDP(4P) UNIX Programmer's Manual IDP(4P)
NAME
idp - Xerox Internet Datagram Protocol
SYNOPSIS
#include <sys/socket.h>
#include <netns/ns.h>
#include <netns/idp.h>
s = socket(AF_NS, SOCK_DGRAM, 0);
DESCRIPTION
IDP is a simple, unreliable datagram protocol which is used
to support the SOCK_DGRAM abstraction for the Internet pro-
tocol family. IDP sockets are connectionless, and are nor-
mally used with the _s_e_n_d_t_o and _r_e_c_v_f_r_o_m calls, though the
_c_o_n_n_e_c_t(2) call may also be used to fix the destination for
future packets (in which case the _r_e_c_v(2) or _r_e_a_d(2) and
_s_e_n_d(2) or _w_r_i_t_e(_2) system calls may be used).
Xerox protocols are built vertically on top of IDP. Thus,
IDP address formats are identical to those used by SPP.
Note that the IDP port space is the same as the SPP port
space (i.e. a IDP port may be "connected" to a SPP port,
with certain options enabled below). In addition broadcast
packets may be sent (assuming the underlying network sup-
ports this) by using a reserved "broadcast address"; this
address is network interface dependent.
DIAGNOSTICS
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 already
connected;
[ENOTCONN] when trying to send a datagram, but no desti-
nation address is specified, and the socket
hasn't been connected;
[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 network address for which no network
interface exists.
Printed 12/27/86 July 30, 1985 1
IDP(4P) UNIX Programmer's Manual IDP(4P)
SOCKET OPTIONS
[SO_HEADERS_ON_INPUT]
When set, the first 30 bytes of any data
returned from a read or recv from will be the
initial 30 bytes of the IDP packet, as
described by
struct idp {
u_short idp_sum;
u_short idp_len;
u_char idp_tc;
u_char idp_pt;
struct ns_addr idp_dna;
struct ns_addr idp_sna;
};
This allows the user to determine the packet
type, and whether the packet was a multi-cast
packet or directed specifically at the local
host. When requested, gives the current
state of the option, (NSP_RAWIN or 0).
[SO_HEADERS_ON_OUTPUT]
When set, the first 30 bytes of any data sent
will be the initial 30 bytes of the IDP
packet. This allows the user to determine
the packet type, and whether the packet
should be multi-cast packet or directed
specifically at the local host. You can also
misrepresent the sender of the packet. When
requested, gives the current state of the
option. (NSP_RAWOUT or 0).
[SO_DEFAULT_HEADERS]
The user provides the kernel an IDP header,
from which it gleans the Packet Type. When
requested, the kernel will provide an IDP
header, showing the default packet type, and
local and foreign addresses, if connected.
[SO_ALL_PACKETS]
When set, this option defeats automatic pro-
cessing of Error packets, and Sequence Proto-
col packets.
[SO_SEQNO] When requested, this returns a sequence
number which is not likely to be repeated
until the machine crashes or a very long time
has passed. It is useful in constructing
Packet Exchange Protocol packets.
SEE ALSO
send(2), recv(2), intro(4N), ns(4F)
Printed 12/27/86 July 30, 1985 2