|
|
1.1 ! root 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.4p 1.1 (Berkeley) 7/30/85 ! 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)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.