Commit | Line | Data |
---|---|---|
c239fd3a KS |
1 | .\" Copyright (c) 1985 Regents of the University of California. |
2 | .\" All rights reserved. The Berkeley software License Agreement | |
3 | .\" specifies the terms and conditions for redistribution. | |
4 | .\" | |
5 | .\" @(#)idp.4 1.1 (Berkeley) %G% | |
6 | .\" | |
7 | .TH IDP 4P "July 30, 1985" | |
8 | .UC 6 | |
9 | .SH NAME | |
10 | idp \- Xerox Internet Datagram Protocol | |
11 | .SH SYNOPSIS | |
12 | .B #include <sys/socket.h> | |
13 | .br | |
14 | .B #include <netns/ns.h> | |
15 | .br | |
16 | .B #include <netns/idp.h> | |
17 | .PP | |
18 | .B s = socket(AF_NS, SOCK_DGRAM, 0); | |
19 | .SH DESCRIPTION | |
20 | IDP is a simple, unreliable datagram protocol which is used | |
21 | to support the SOCK_DGRAM abstraction for the Internet | |
22 | protocol family. IDP sockets are connectionless, and are | |
23 | normally used with the | |
24 | .I sendto | |
25 | and | |
26 | .IR recvfrom | |
27 | calls, though the | |
28 | .IR connect (2) | |
29 | call may also be used to fix the destination for future | |
30 | packets (in which case the | |
31 | .IR recv (2) | |
32 | or | |
33 | .IR read (2) | |
34 | and | |
35 | .IR send (2) | |
36 | or | |
37 | .IR write(2) | |
38 | system calls may be used). | |
39 | .PP | |
40 | Xerox protocols are built vertically on top of IDP. | |
41 | Thus, IDP address formats are identical to those used by | |
42 | SPP. | |
43 | Note that the IDP port | |
44 | space is the same as the SPP port space (i.e. a IDP port | |
45 | may be \*(lqconnected\*(rq to a SPP port, with certain | |
46 | options enabled below). | |
47 | In addition broadcast packets may be sent | |
48 | (assuming the underlying network supports | |
49 | this) by using a reserved \*(lqbroadcast address\*(rq; this address | |
50 | is network interface dependent. | |
51 | .SH DIAGNOSTICS | |
52 | A socket operation may fail with one of the following errors returned: | |
53 | .TP 15 | |
54 | [EISCONN] | |
55 | when trying to establish a connection on a socket which | |
56 | already has one, or when trying to send a datagram with the destination | |
57 | address specified and the socket is already connected; | |
58 | .TP 15 | |
59 | [ENOTCONN] | |
60 | when trying to send a datagram, but | |
61 | no destination address is specified, and the socket hasn't been | |
62 | connected; | |
63 | .TP 15 | |
64 | [ENOBUFS] | |
65 | when the system runs out of memory for | |
66 | an internal data structure; | |
67 | .TP 15 | |
68 | [EADDRINUSE] | |
69 | when an attempt | |
70 | is made to create a socket with a port which has already been | |
71 | allocated; | |
72 | .TP 15 | |
73 | [EADDRNOTAVAIL] | |
74 | when an attempt is made to create a | |
75 | socket with a network address for which no network interface | |
76 | exists. | |
77 | .SH SOCKET OPTIONS | |
78 | .TP 15 | |
79 | [SO_HEADERS_ON_INPUT] | |
80 | When set, the first 30 bytes of any data returned from a read | |
81 | or recv from will be the initial 30 bytes of the IDP packet, | |
82 | as described by | |
83 | .nf | |
84 | struct idp { | |
85 | u_short idp_sum; | |
86 | u_short idp_len; | |
87 | u_char idp_tc; | |
88 | u_char idp_pt; | |
89 | struct ns_addr idp_dna; | |
90 | struct ns_addr idp_sna; | |
91 | }; | |
92 | .fi | |
93 | This allows the user to determine the packet type, and whether | |
94 | the packet was a multi-cast packet or directed specifically at | |
95 | the local host. | |
96 | When requested, gives the current state of the option, | |
97 | (NSP_RAWIN or 0). | |
98 | .TP 15 | |
99 | [SO_HEADERS_ON_OUTPUT] | |
100 | When set, the first 30 bytes of any data sent | |
101 | will be the initial 30 bytes of the IDP packet. | |
102 | This allows the user to determine the packet type, and whether | |
103 | the packet should be multi-cast packet or directed specifically at | |
104 | the local host. | |
105 | You can also misrepresent the sender of the packet. | |
106 | When requested, gives the current state of the option. | |
107 | (NSP_RAWOUT or 0). | |
108 | .TP 15 | |
109 | [SO_DEFAULT_HEADERS] | |
110 | The user provides the kernel an IDP header, from which | |
111 | it gleans the Packet Type. | |
112 | When requested, the kernel will provide an IDP header, showing | |
113 | the default packet type, and local and foreign addresses, if | |
114 | connected. | |
115 | .TP 15 | |
116 | [SO_ALL_PACKETS] | |
117 | When set, this option defeats automatic processing of Error packets, | |
118 | and Sequence Protocol packets. | |
119 | .TP 15 | |
120 | [SO_SEQNO] | |
121 | When requested, this returns a sequence number which is not likely | |
122 | to be repeated until the machine crashes or a very long time has passed. | |
123 | It is useful in constructing Packet Exchange Protocol packets. | |
124 | .SH SEE ALSO | |
125 | send(2), | |
126 | recv(2), | |
127 | intro(4N), | |
128 | ns(4F) |