Annotation of 43BSDTahoe/man/man4/spp.4, revision 1.1

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: .\"    @(#)spp.4p      1.2 (Berkeley) 9/17/85
        !             6: .\"
        !             7: .TH SPP 4P "July 30, 1985"
        !             8: .UC 6
        !             9: .SH NAME
        !            10: spp \- Xerox Sequenced Packet Protocol
        !            11: .SH SYNOPSIS
        !            12: .B #include <sys/socket.h>
        !            13: .br
        !            14: .B #include <netns/ns.h>
        !            15: .br
        !            16: .B s = socket(AF_NS, SOCK_STREAM, 0);
        !            17: .PP
        !            18: .B #include <netns/sp.h>
        !            19: .br
        !            20: .B s = socket(AF_NS, SOCK_SEQPACKET, 0);
        !            21: .SH DESCRIPTION
        !            22: The SPP protocol provides reliable, flow-controlled, two-way
        !            23: transmission of data.  It is a byte-stream protocol used to
        !            24: support the SOCK_STREAM abstraction.  SPP uses the standard
        !            25: NS(tm) address formats.
        !            26: .PP
        !            27: Sockets utilizing the SPP protocol are either \*(lqactive\*(rq or
        !            28: \*(lqpassive\*(rq.  Active sockets initiate connections to passive
        !            29: sockets.  By default SPP sockets are created active; to create a
        !            30: passive socket the
        !            31: .IR listen (2)
        !            32: system call must be used
        !            33: after binding the socket with the
        !            34: .IR bind (2)
        !            35: system call.  Only
        !            36: passive sockets may use the 
        !            37: .IR accept (2)
        !            38: call to accept incoming connections.  Only active sockets may
        !            39: use the
        !            40: .IR connect (2)
        !            41: call to initiate connections.
        !            42: .PP
        !            43: Passive sockets may \*(lqunderspecify\*(rq their location to match
        !            44: incoming connection requests from multiple networks.  This
        !            45: technique, termed \*(lqwildcard addressing\*(rq, allows a single
        !            46: server to provide service to clients on multiple networks.
        !            47: To create a socket which listens on all networks, the NS
        !            48: address of all zeroes must be bound.
        !            49: The SPP port may still be specified
        !            50: at this time; if the port is not specified the system will assign one.
        !            51: Once a connection has been established the socket's address is
        !            52: fixed by the peer entity's location.   The address assigned the
        !            53: socket is the address associated with the network interface
        !            54: through which packets are being transmitted and received.  Normally
        !            55: this address corresponds to the peer entity's network.
        !            56: .LP
        !            57: If the SOCK_SEQPACKET socket type is specified,
        !            58: each packet received has the actual 12 byte sequenced packet header
        !            59: left for the user to inspect:
        !            60: .nf
        !            61: struct sphdr {
        !            62:        u_char          sp_cc;          /* \fIconnection control\fP */
        !            63: #define        SP_EM   0x10                    /* \fIend of message\fP */
        !            64:        u_char          sp_dt;          /* \fIdatastream type\fP */
        !            65:        u_short         sp_sid;
        !            66:        u_short         sp_did;
        !            67:        u_short         sp_seq;
        !            68:        u_short         sp_ack;
        !            69:        u_short         sp_alo;
        !            70: };
        !            71: .fi
        !            72: This facilitates the implementation of higher level Xerox protocols
        !            73: which make use of the data stream type field and the end of message bit.
        !            74: Conversely, the user is required to supply a 12 byte header,
        !            75: the only part of which inspected is the data stream type and end of message
        !            76: fields.
        !            77: .LP
        !            78: For either socket type,
        !            79: packets received with the Attention bit sent are interpreted as
        !            80: out of band data.  Data sent with send(..., ..., ..., MSG_OOB)
        !            81: cause the attention bit to be set.
        !            82: .SH DIAGNOSTICS
        !            83: A socket operation may fail with one of the following errors returned:
        !            84: .TP 20
        !            85: [EISCONN]
        !            86: when trying to establish a connection on a socket which
        !            87: already has one;
        !            88: .TP 20
        !            89: [ENOBUFS]
        !            90: when the system runs out of memory for
        !            91: an internal data structure;
        !            92: .TP 20
        !            93: [ETIMEDOUT]
        !            94: when a connection was dropped
        !            95: due to excessive retransmissions;
        !            96: .TP 20
        !            97: [ECONNRESET]
        !            98: when the remote peer
        !            99: forces the connection to be closed;
        !           100: .TP 20
        !           101: [ECONNREFUSED]
        !           102: when the remote
        !           103: peer actively refuses connection establishment (usually because
        !           104: no process is listening to the port);
        !           105: .TP 20
        !           106: [EADDRINUSE]
        !           107: when an attempt
        !           108: is made to create a socket with a port which has already been
        !           109: allocated;
        !           110: .TP 20
        !           111: [EADDRNOTAVAIL]
        !           112: when an attempt is made to create a 
        !           113: socket with a network address for which no network interface
        !           114: exists.
        !           115: .SH SOCKET OPTIONS
        !           116: .TP 20
        !           117: SO_DEFAULT_HEADERS
        !           118: when set, this determines the data stream type and whether
        !           119: the end of message bit is to be set on every ensuing packet.
        !           120: .TP 20
        !           121: SO_MTU
        !           122: This specifies the maximum ammount of user data in a single packet.
        !           123: The default is 576 bytes - sizeof(struct spidp).  This quantity
        !           124: affects windowing -- increasing it without increasing the amount
        !           125: of buffering in the socket will lower the number of unread packets
        !           126: accepted.  Anything larger than the default will not be forwarded
        !           127: by a bona fide XEROX product internetwork router.
        !           128: The data argument for the setsockopt call must be
        !           129: an unsigned short.
        !           130: .SH SEE ALSO
        !           131: intro(4N), ns(4F)
        !           132: .SH BUGS
        !           133: There should be some way to reflect record boundaries in
        !           134: a stream.
        !           135: For stream mode, there should be an option to get the data stream type of
        !           136: the record the user process is about to receive.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.