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