[BACK]Return to nchan2.ms CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Annotation of src/usr.bin/ssh/nchan2.ms, Revision 1.1.6.1

1.1.6.1 ! miod        1: .\"    $OpenBSD: nchan2.ms,v 1.2 2001/10/03 10:05:57 markus Exp $
        !             2: .\"
        !             3: .\" Copyright (c) 2000 Markus Friedl.  All rights reserved.
        !             4: .\"
        !             5: .\" Redistribution and use in source and binary forms, with or without
        !             6: .\" modification, are permitted provided that the following conditions
        !             7: .\" are met:
        !             8: .\" 1. Redistributions of source code must retain the above copyright
        !             9: .\"    notice, this list of conditions and the following disclaimer.
        !            10: .\" 2. Redistributions in binary form must reproduce the above copyright
        !            11: .\"    notice, this list of conditions and the following disclaimer in the
        !            12: .\"    documentation and/or other materials provided with the distribution.
        !            13: .\"
        !            14: .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
        !            15: .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
        !            16: .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
        !            17: .\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
        !            18: .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
        !            19: .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
        !            20: .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
        !            21: .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
        !            22: .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
        !            23: .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        !            24: .\"
1.1       markus     25: .TL
                     26: OpenSSH Channel Close Protocol 2.0 Implementation
                     27: .SH
                     28: Channel Input State Diagram
                     29: .PS
                     30: reset
                     31: l=1
                     32: s=1.2
                     33: ellipsewid=s*ellipsewid
                     34: boxwid=s*boxwid
                     35: ellipseht=s*ellipseht
                     36: S1: ellipse "INPUT" "OPEN"
                     37: move right 2*l from last ellipse.e
                     38: S3: ellipse invis
                     39: move down l from last ellipse.s
                     40: S4: ellipse "INPUT" "CLOSED"
                     41: move down l from 1st ellipse.s
                     42: S2: ellipse "INPUT" "WAIT" "DRAIN"
                     43: arrow from S1.e to S4.n
                     44: box invis "rcvd CLOSE/" "shutdown_read" with .sw at last arrow.c
                     45: arrow "ibuf_empty ||" "rcvd CLOSE/" "send EOF" "" from S2.e to S4.w
                     46: arrow from S1.s to S2.n
                     47: box invis "read_failed/" "shutdown_read" with .e at last arrow.c
                     48: ellipse wid .9*ellipsewid ht .9*ellipseht at S4
                     49: arrow "start" "" from S1.w+(-0.5,0) to S1.w
                     50: .PE
                     51: .SH
                     52: Channel Output State Diagram
                     53: .PS
                     54: S1: ellipse "OUTPUT" "OPEN"
                     55: move right 2*l from last ellipse.e
                     56: S3: ellipse invis
                     57: move down l from last ellipse.s
                     58: S4: ellipse "OUTPUT" "CLOSED"
                     59: move down l from 1st ellipse.s
                     60: S2: ellipse "OUTPUT" "WAIT" "DRAIN"
                     61: arrow from S1.e to S4.n
                     62: box invis "write_failed/" "shutdown_write" with .sw at last arrow.c
                     63: arrow "obuf_empty ||" "write_failed/" "shutdown_write" "" from S2.e to S4.w
                     64: arrow from S1.s to S2.n
                     65: box invis "rcvd EOF ||" "rcvd CLOSE/" "-" with .e at last arrow.c
                     66: ellipse wid .9*ellipsewid ht .9*ellipseht at S4
                     67: arrow "start" "" from S1.w+(-0.5,0) to S1.w
                     68: .PE
                     69: .SH
                     70: Notes
                     71: .PP
                     72: The input buffer is filled with data from the socket
                     73: (the socket represents the local consumer/producer of the
                     74: forwarded channel).
                     75: The data is then sent over the INPUT-end (transmit-end) of the channel to the
                     76: remote peer.
                     77: Data sent by the peer is received on the OUTPUT-end (receive-end),
                     78: saved in the output buffer and written to the socket.
                     79: .PP
                     80: If the local protocol instance has forwarded all data on the
                     81: INPUT-end of the channel, it sends an EOF message to the peer.
                     82: .PP
                     83: A CLOSE message is sent to the peer if
                     84: both the INPUT- and the OUTOUT-half of the local
                     85: end of the channel are closed.
                     86: .PP
                     87: The channel can be deallocated by a protocol instance
                     88: if a CLOSE message he been both sent and received.