[BACK]Return to README CVS log [TXT][DIR] Up to [local] / src / usr.bin / telnet

Annotation of src/usr.bin/telnet/README, Revision 1.4

1.4     ! jmc         1:        $OpenBSD: README,v 1.3 2002/02/10 23:15:05 deraadt Exp $
1.1       deraadt     2:
                      3: This is a distribution of both client and server telnet.  These programs
                      4: have been compiled on:
                      5:                        telnet  telnetd
1.2       niklas      6:        4.4 BSD-Lite      x       x
                      7:        4.3 BSD Reno      X       X
                      8:        UNICOS 9.1        X       X
                      9:        UNICOS 9.0        X       X
                     10:        UNICOS 8.0        X       X
                     11:        BSDI 2.0          X       X
                     12:        Solaris 2.4       x       x (no linemode in server)
                     13:        SunOs 4.1.4       X       X (no linemode in server)
                     14:        Ultrix 4.3        X       X (no linemode in server)
                     15:        Ultrix 4.1        X       X (no linemode in server)
1.1       deraadt    16:
                     17: In addition, previous versions have been compiled on the following
                     18: machines, but were not available for testing this version.
                     19:                        telnet  telnetd
1.2       niklas     20:        Next1.0           X       X
                     21:        UNICOS 8.3        X       X
                     22:        UNICOS 7.C        X       X
                     23:        UNICOS 7.0        X       X
1.1       deraadt    24:        SunOs 4.0.3c      X       X (no linemode in server)
1.2       niklas     25:        4.3 BSD           X       X (no linemode in server)
1.1       deraadt    26:        DYNIX V3.0.12     X       X (no linemode in server)
1.2       niklas     27:        Ultrix 3.1        X       X (no linemode in server)
                     28:        Ultrix 4.0        X       X (no linemode in server)
                     29:        SunOs 3.5         X       X (no linemode in server)
                     30:        SunOs 4.1.3       X       X (no linemode in server)
                     31:        Solaris 2.2       x       x (no linemode in server)
                     32:        Solaris 2.3       x       x (no linemode in server)
                     33:        BSDI 1.0          X       X
                     34:        BSDI 1.1          X       X
                     35:        DYNIX V3.0.17.9   X       X (no linemode in server)
                     36:        HP-UX 8.0         x       x (no linemode in server)
                     37:
                     38: This code should work, but there are no guarantees.
                     39:
                     40: Oct 23, 1995
                     41:
                     42: This is a bugfix release.
                     43:
                     44:        The change in the previous release from using makeutx() to
                     45:        pututxline() caused problems on SunOS/Solaris.  It has been
                     46:        changed back to using makeutx().  Symptoms include users
                     47:        getting error messages when logging in about not being able
                     48:        to open the tty.
                     49:
                     50:        Using memmove() instead of memcpy() caused problems under
                     51:        SunOS 4.x, since it doesn't have memmove().  Config.generic
                     52:        has been modified to include mem.o for SunOS 4.x.
                     53:
                     54:        Some new code was added to telnetd to do some enviornment
                     55:        variable cleanup before execing login.  Thanks to Sam Hartman
                     56:        at MIT for pointing this out.
                     57:
                     58:        A couple of other minor bugfixes.
                     59:
                     60: May 30, 1995
                     61:
                     62: This release represents what is on the 4.4BSD-Lite2 release, which
                     63: should be the final BSD release.  I will continue to support of
                     64: telnet, The code (without encryption) is available via anonymous ftp
                     65: from ftp.cray.com, in src/telnet/telnet.YY.MM.DD.NE.tar.Z, where
                     66: YY.MM.DD is replaced with the year, month and day of the release.
                     67: If you can't find it at one of these places, at some point in the
                     68: near future information about the latest releases should be available
                     69: from ftp.borman.com.
                     70:
                     71: In addition, the version with the encryption code is available via
                     72: ftp from net-dist.mit.edu, in the directory /pub/telnet.  There
                     73: is a README file there that gives further information on how
                     74: to get the distribution.
                     75:
                     76: Questions, comments, bug reports and bug fixes can be sent to
                     77: one of these addresses:
                     78:                dab@borman.com
                     79:                dab@cray.com
                     80:                dab@bsdi.com
                     81:
                     82: This release is mainly bug fixes and code cleanup.
                     83:
                     84:        Replace all calls to bcopy()/bzero() with calls to
                     85:        memmove()/memset() and all calls to index()/rindex()
                     86:        with calls to strchr()/strrchr().
                     87:
                     88:        Add some missing diagnostics for option tracing
                     89:        to telnetd.
                     90:
                     91:        Add support for BSDI 2.0 and Solaris 2.4.
                     92:
                     93:        Add support for UNICOS 8.0
                     94:
                     95:        Get rid of expanded tabs and trailing white spaces.
                     96:
                     97:        From Paul Vixie:
                     98:                Fix for telnet going into an endless spin
                     99:                when the session dies abnormally.
                    100:
                    101:        From Jef Poskanzer:
                    102:                Changes to allow telnet to compile
                    103:                under SunOS 3.5.
                    104:
                    105:        From Philip Guenther:
                    106:                makeutx() doesn't expand utmpx,
                    107:                use pututxline() instead.
                    108:
                    109:        From Chris Torek:
                    110:                Add a sleep(1) before execing login
                    111:                to avoid race condition that can eat
                    112:                up the login prompt.
                    113:                Use terminal speed directly if it is
                    114:                not an encoded value.
                    115:
                    116:        From Steve Parker:
                    117:                Fix to realloc() call.  Fix for execing
                    118:                login on solaris with no user name.
                    119:
                    120: January 19, 1994
                    121:
                    122: This is a list of some of the changes since the last tar release
                    123: of telnet/telnetd.  There are probably other changes that aren't
                    124: listed here, but this should hit a lot of the main ones.
                    125:
                    126:    General:
                    127:        Changed #define for AUTHENTICATE to AUTHENTICATION
                    128:        Changed #define for ENCRYPT to ENCRYPTION
                    129:        Changed #define for DES_ENCRYPT to DES_ENCRYPTION
                    130:
                    131:        Added support for SPX authentication: -DSPX
                    132:
                    133:        Added support for Kerberos Version 5 authentication: -DKRB5
                    134:
                    135:        Added support for ANSI C function prototypes
                    136:
                    137:        Added support for the NEW-ENVIRON option (RFC-1572)
                    138:        including support for USERVAR.
                    139:
                    140:        Made support for the old Environment Option (RFC-1408)
                    141:        conditional on -DOLD_ENVIRON
                    142:
                    143:        Added #define ENV_HACK - support for RFC 1571
                    144:
                    145:        The encryption code is removed from the public distributions.
                    146:        Domestic 4.4 BSD distributions contain the encryption code.
                    147:
                    148:        ENV_HACK: Code to deal with systems that only implement
                    149:                the old ENVIRON option, and have reversed definitions
                    150:                of ENV_VAR and ENV_VAL.  Also fixes ENV processing in
                    151:                client to handle things besides just the default set...
                    152:
                    153:        NO_BSD_SETJMP: UNICOS configuration for
                    154:                UNICOS 6.1/6.0/5.1/5.0 systems.
                    155:
                    156:        STREAMSPTY: Use /dev/ptmx to get a clean pty.  This
                    157:                is for SVr4 derivatives (Like Solaris)
                    158:
                    159:        UTMPX: For systems that have /etc/utmpx. This is for
                    160:                SVr4 derivatives (Like Solaris)
                    161:
                    162:        Definitions for BSDI 1.0
                    163:
                    164:        Definitions for 4.3 Reno and 4.4 BSD.
                    165:
                    166:        Definitions for UNICOS 8.0 and UNICOS 7.C
                    167:
                    168:        Definitions for Solaris 2.0
                    169:
                    170:        Definitions for HP-UX 8.0
                    171:
                    172:        Latest Copyright notices from Berkeley.
                    173:
                    174:        FLOW-CONTROL: support for RFC-XXXx
                    175:
                    176:
                    177:    Client Specific:
                    178:
                    179:        Fix the "send" command to not send garbage...
                    180:
                    181:        Fix status message for "skiprc"
                    182:
                    183:        Make sure to send NAWS after telnet has been suspended
                    184:        or an external command has been run, if the window size
                    185:        has changed.
                    186:
                    187:        sysV88 support.
                    188:
                    189:    Server Specific:
                    190:
                    191:        Support flowcontrol option in non-linemode servers.
                    192:
                    193:        -k Server supports Kludge Linemode, but will default to
                    194:           either single character mode or real Linemode support.
                    195:           The user will have to explicitly ask to switch into
                    196:           kludge linemode. ("stty extproc", or escape back to
                    197:           to telnet and say "mode line".)
                    198:
                    199:        -u Specify the length of the hostname field in the utmp
                    200:           file.  Hostname longer than this length will be put
                    201:           into the utmp file in dotted decimal notation, rather
                    202:           than putting in a truncated hostname.
                    203:
                    204:        -U Registered hosts only.  If a reverse hostname lookup
                    205:           fails, the connection will be refused.
                    206:
                    207:        -f/-F
                    208:           Allows forwarding of credentials for KRB5.
1.1       deraadt   209:
                    210: Februrary 22, 1991:
                    211:
                    212:     Features:
                    213:
                    214:        This version of telnet/telnetd has support for both
                    215:        the AUTHENTICATION and ENCRYPTION options.  The
                    216:        AUTHENTICATION option is fairly well defined, and
                    217:        an option number has been assigned to it.  The
                    218:        ENCRYPTION option is still in a state of flux; an
1.2       niklas    219:        option number has been assigned to, but it is still
                    220:        subject to change.  The code is provided in this release
                    221:        for experimental and testing purposes.
1.1       deraadt   222:
                    223:        The telnet "send" command can now be used to send
                    224:        do/dont/will/wont commands, with any telnet option
                    225:        name.  The rules for when do/dont/will/wont are sent
                    226:        are still followed, so just because the user requests
                    227:        that one of these be sent doesn't mean that it will
                    228:        be sent...
                    229:
                    230:        The telnet "getstatus" command no longer requires
                    231:        that option printing be enabled to see the response
                    232:        to the "DO STATUS" command.
                    233:
                    234:        A -n flag has been added to telnetd to disable
                    235:        keepalives.
                    236:
                    237:        A new telnet command, "auth" has been added (if
                    238:        AUTHENTICATE is defined).  It has four sub-commands,
1.2       niklas    239:        "status", "disable", "enable" and "help".
1.1       deraadt   240:
                    241:        A new telnet command, "encrypt" has been added (if
                    242:        ENCRYPT is defined).  It has many sub-commands:
                    243:        "enable", "type", "start", "stop", "input",
1.2       niklas    244:        "-input", "output", "-output", "status", and "help".
                    245:
                    246:        The LOGOUT option is now supported by both telnet
                    247:        and telnetd, a new command, "logout", was added
                    248:        to support this.
                    249:
                    250:        Several new toggle options were added:
                    251:            "autoencrypt", "autodecrypt", "autologin", "authdebug",
                    252:            "encdebug", "skiprc", "verbose_encrypt"
1.1       deraadt   253:
                    254:        An "rlogin" interface has been added.  If the program
                    255:        is named "rlogin", or the "-r" flag is given, then
                    256:        an rlogin type of interface will be used.
                    257:                ~.      Terminates the session
                    258:                ~<susp> Suspend the session
                    259:                ~^]     Escape to telnet command mode
                    260:                ~~      Pass through the ~.
                    261:            BUG: If you type the rlogin escape character
                    262:                 in the middle of a line while in rlogin
                    263:                 mode, you cannot erase it or any characters
                    264:                 before it.  Hopefully this can be fixed
                    265:                 in a future release...
                    266:
                    267:     General changes:
                    268:
                    269:        A "libtelnet.a" has now been created.  This libraray
                    270:        contains code that is common to both telnet and
                    271:        telnetd.  This is also where library routines that
                    272:        are needed, but are not in the standard C library,
                    273:        are placed.
                    274:
                    275:        The makefiles have been re-done.  All of the site
                    276:        specific configuration information has now been put
                    277:        into a single "Config.generic" file, in the top level
                    278:        directory.  Changing this one file will take care of
                    279:        all three subdirectories.  Also, to add a new/local
                    280:        definition, a "Config.local" file may be created
                    281:        at the top level; if that file exists, the subdirectories
                    282:        will use that file instead of "Config.generic".
                    283:
                    284:        Many 1-2 line functions in commands.c have been
                    285:        removed, and just inserted in-line, or replaced
                    286:        with a macro.
                    287:
                    288:     Bug Fixes:
                    289:
                    290:        The non-termio code in both telnet and telnetd was
                    291:        setting/clearing CTLECH in the sg_flags word.  This
                    292:        was incorrect, and has been changed to set/clear the
                    293:        LCTLECH bit in the local mode word.
                    294:
                    295:        The SRCRT #define has been removed.  If IP_OPTIONS
                    296:        and IPPROTO_IP are defined on the system, then the
                    297:        source route code is automatically enabled.
                    298:
                    299:        The NO_GETTYTAB #define has been removed; there
1.4     ! jmc       300:        is a compatibility routine that can be built into
1.1       deraadt   301:        libtelnet to achive the same results.
                    302:
                    303:        The server, telnetd, has been switched to use getopt()
                    304:        for parsing the argument list.
                    305:
                    306:        The code for getting the input/output speeds via
                    307:        cfgetispeed()/cfgetospeed() was still not quite
                    308:        right in telnet.  Posix says if the ispeed is 0,
                    309:        then it is really equal to the ospeed.
                    310:
                    311:        The suboption processing code in telnet now has
                    312:        explicit checks to make sure that we received
                    313:        the entire suboption (telnetd was already doing this).
                    314:
                    315:        The telnet code for processing the terminal type
                    316:        could cause a core dump if an existing connection
                    317:        was closed, and a new connection opened without
                    318:        exiting telnet.
                    319:
                    320:        Telnetd was doing a TCSADRAIN when setting the new
                    321:        terminal settings;  This is not good, because it means
                    322:        that the tcsetattr() will hang waiting for output to
                    323:        drain, and telnetd is the only one that will drain
                    324:        the output...  The fix is to use TCSANOW which does
                    325:        not wait.
                    326:
                    327:        Telnetd was improperly setting/clearing the ISTRIP
                    328:        flag in the c_lflag field, it should be using the
                    329:        c_iflag field.
                    330:
                    331:        When the child process of telnetd was opening the
                    332:        slave side of the pty, it was re-setting the EXTPROC
                    333:        bit too early, and some of the other initialization
                    334:        code was wiping it out.  This would cause telnetd
                    335:        to go out of linemode and into single character mode.
                    336:
                    337:        One instance of leaving linemode in telnetd forgot
                    338:        to send a WILL ECHO to the client, the net result
                    339:        would be that the user would see double character
                    340:        echo.
                    341:
                    342:        If the MODE was being changed several times very
                    343:        quickly, telnetd could get out of sync with the
                    344:        state changes and the returning acks; and wind up
                    345:        being left in the wrong state.
                    346:
                    347: September 14, 1990:
                    348:
                    349:        Switch the client to use getopt() for parsing the
                    350:        argument list.  The 4.3Reno getopt.c is included for
                    351:        systems that don't have getopt().
                    352:
                    353:        Use the posix _POSIX_VDISABLE value for what value
                    354:        to use when disabling special characters.  If this
                    355:        is undefined, it defaults to 0x3ff.
                    356:
                    357:        For non-termio systems, TIOCSETP was being used to
                    358:        change the state of the terminal.  This causes the
                    359:        input queue to be flushed, which we don't want.  This
                    360:        is now changed to TIOCSETN.
                    361:
                    362:        Take out the "#ifdef notdef" around the code in the
                    363:        server that generates a "sync" when the pty oputput
                    364:        is flushed.  The potential problem is that some older
                    365:        telnet clients may go into an infinate loop when they
                    366:        receive a "sync", if so, the server can be compiled
                    367:        with "NO_URGENT" defined.
                    368:
                    369:        Fix the client where it was setting/clearing the OPOST
                    370:        bit in the c_lflag field, not the c_oflag field.
                    371:
                    372:        Fix the client where it was setting/clearing the ISTRIP
                    373:        bit in the c_lflag field, not the c_iflag field.  (On
                    374:        4.3Reno, this is the ECHOPRT bit in the c_lflag field.)
                    375:        The client also had its interpretation of WILL BINARY
                    376:        and DO BINARY reversed.
                    377:
                    378:        Fix a bug in client that would cause a core dump when
                    379:        attempting to remove the last environment variable.
                    380:
                    381:        In the client, there were a few places were switch()
                    382:        was being passed a character, and if it was a negative
                    383:        value, it could get sign extended, and not match
                    384:        the 8 bit case statements.  The fix is to and the
                    385:        switch value with 0xff.
                    386:
                    387:        Add a couple more printoption() calls in the client, I
                    388:        don't think there are any more places were a telnet
                    389:        command can be received and not printed out when
                    390:        "options" is on.
                    391:
                    392:        A new flag has been added to the client, "-a".  Currently,
                    393:        this just causes the USER name to be sent across, in
                    394:        the future this may be used to signify that automatic
                    395:        authentication is requested.
                    396:
                    397:        The USER variable is now only sent by the client if
                    398:        the "-a" or "-l user" options are explicity used, or
                    399:        if the user explicitly asks for the "USER" environment
                    400:        variable to be exported.  In the server, if it receives
                    401:        the "USER" environment variable, it won't print out the
                    402:        banner message, so that only "Password:" will be printed.
                    403:        This makes the symantics more like rlogin, and should be
                    404:        more familiar to the user.  (People are not used to
                    405:        getting a banner message, and then getting just a
                    406:        "Password:" prompt.)
                    407:
                    408:        Re-vamp the code for starting up the child login
                    409:        process.  The code was getting ugly, and it was
                    410:        hard to tell what was really going on.  What we
                    411:        do now is after the fork(), in the child:
                    412:                1) make sure we have no controlling tty
                    413:                2) open and initialize the tty
                    414:                3) do a setsid()/setpgrp()
                    415:                4) makes the tty our controlling tty.
                    416:        On some systems, #2 makes the tty our controlling
                    417:        tty, and #4 is a no-op.  The parent process does
                    418:        a gets rid of any controlling tty after the child
                    419:        is fork()ed.
                    420:
                    421:        Use the strdup() library routine in telnet, instead
                    422:        of the local savestr() routine.  If you don't have
                    423:        strdup(), you need to define NO_STRDUP.
                    424:
                    425:        Add support for ^T (SIGINFO/VSTATUS), found in the
                    426:        4.3Reno distribution.  This maps to the AYT character.
                    427:        You need a 4-line bugfix in the kernel to get this
                    428:        to work properly:
                    429:
                    430:        > *** tty_pty.c.ORG     Tue Sep 11 09:41:53 1990
                    431:        > --- tty_pty.c Tue Sep 11 17:48:03 1990
                    432:        > ***************
                    433:        > *** 609,613 ****
                    434:        >                       if ((tp->t_lflag&NOFLSH) == 0)
                    435:        >                               ttyflush(tp, FREAD|FWRITE);
                    436:        > !                     pgsignal(tp->t_pgrp, *(unsigned int *)data);
                    437:        >                       return(0);
                    438:        >               }
                    439:        > --- 609,616 ----
                    440:        >                       if ((tp->t_lflag&NOFLSH) == 0)
                    441:        >                               ttyflush(tp, FREAD|FWRITE);
                    442:        > !                     pgsignal(tp->t_pgrp, *(unsigned int *)data, 1);
                    443:        > !                     if ((*(unsigned int *)data == SIGINFO) &&
                    444:        > !                         ((tp->t_lflag&NOKERNINFO) == 0))
                    445:        > !                             ttyinfo(tp);
                    446:        >                       return(0);
                    447:        >               }
                    448:
                    449:        The client is now smarter when setting the telnet escape
                    450:        character; it only sets it to one of VEOL and VEOL2 if
                    451:        one of them is undefined, and the other one is not already
                    452:        defined to the telnet escape character.
                    453:
1.3       deraadt   454:        Handle TERMIOS systems that have separate input and output
1.1       deraadt   455:        line speed settings imbedded in the flags.
                    456:
                    457:        Many other minor bug fixes.
                    458:
                    459: June 20, 1990:
                    460:        Re-organize makefiles and source tree.  The telnet/Source
                    461:        directory is now gone, and all the source that was in
                    462:        telnet/Source is now just in the telnet directory.
                    463:
1.3       deraadt   464:        Separate makefile for each system are now gone.  There
1.1       deraadt   465:        are two makefiles, Makefile and Makefile.generic.
                    466:        The "Makefile" has the definitions for the various
                    467:        system, and "Makefile.generic" does all the work.
                    468:        There is a variable called "WHAT" that is used to
                    469:        specify what to make.  For example, in the telnet
                    470:        directory, you might say:
                    471:                make 4.4bsd WHAT=clean
                    472:        to clean out the directory.
                    473:
                    474:        Add support for the ENVIRON and XDISPLOC options.
                    475:        In order for the server to work, login has to have
                    476:        the "-p" option to preserve environment variables.
                    477:
                    478:        Add the SOFT_TAB and LIT_ECHO modes in the LINEMODE support.
                    479:
                    480:        Add the "-l user" option to command line and open command
                    481:        (This is passed through the ENVIRON option).
                    482:
                    483:        Add the "-e" command line option, for setting the escape
                    484:        character.
                    485:
                    486:        Add the "-D", diagnostic, option to the server.  This allows
                    487:        the server to print out debug information, which is very
                    488:        useful when trying to debug a telnet that doesn't have any
                    489:        debugging ability.
                    490:
                    491:        Turn off the literal next character when not in LINEMODE.
                    492:
                    493:        Don't recognize ^Y locally, just pass it through.
                    494:
                    495:        Make minor modifications for Sun4.0 and Sun4.1
                    496:
                    497:        Add support for both FORW1 and FORW2 characters.  The
                    498:        telnet escpape character is set to whichever of the
                    499:        two is not being used.  If both are in use, the escape
                    500:        character is not set, so when in linemode the user will
                    501:        have to follow the escape character with a <CR> or <EOF)
                    502:        to get it passed through.
                    503:
                    504:        Commands can now be put in single and double quotes, and
                    505:        a backslash is now an escape character.  This is needed
                    506:        for allowing arbitrary strings to be assigned to environment
                    507:        variables.
                    508:
                    509:        Switch telnetd to use macros like telnet for keeping
                    510:        track of the state of all the options.
                    511:
                    512:        Fix telnetd's processing of options so that we always do
                    513:        the right processing of the LINEMODE option, regardless
                    514:        of who initiates the request to turn it on.  Also, make
                    515:        sure that if the other side went "WILL ECHO" in response
                    516:        to our "DO ECHO", that we send a "DONT ECHO" to get the
                    517:        option turned back off!
                    518:
                    519:        Fix the TERMIOS setting of the terminal speed to handle both
1.3       deraadt   520:        BSD's separate fields, and the SYSV method of CBAUD bits.
1.1       deraadt   521:
                    522:        Change how we deal with the other side refusing to enable
                    523:        an option.  The sequence used to be: send DO option; receive
                    524:        WONT option; send DONT option.  Now, the sequence is: send
                    525:        DO option; receive WONT option.  Both should be valid
                    526:        according to the spec, but there has been at least one
                    527:        client implementation of telnet identified that can get
                    528:        really confused by this.  (The exact sequence, from a trace
                    529:        on the server side, is (numbers are number of responses that
                    530:        we expect to get after that line...):
                    531:
                    532:                send WILL ECHO  1 (initial request)
                    533:                send WONT ECHO  2 (server is changing state)
                    534:                recv DO ECHO    1 (first reply, ok.  expect DONT ECHO next)
                    535:                send WILL ECHO  2 (server changes state again)
                    536:                recv DONT ECHO  1 (second reply, ok.  expect DO ECHO next)
                    537:                recv DONT ECHO  0 (third reply, wrong answer. got DONT!!!)
                    538:        ***     send WONT ECHO    (send WONT to acknowledge the DONT)
                    539:                send WILL ECHO  1 (ask again to enable option)
                    540:                recv DO ECHO    0
                    541:
                    542:                recv DONT ECHO  0
                    543:                send WONT ECHO  1
                    544:                recv DONT ECHO  0
                    545:                recv DO ECHO    1
                    546:                send WILL ECHO  0
                    547:                (and the last 5 lines loop forever)
                    548:
                    549:        The line with the "***" is last of the WILL/DONT/WONT sequence.
                    550:        The change to the server to not generate that makes this same
                    551:        example become:
                    552:
                    553:                send will ECHO  1
                    554:                send wont ECHO  2
                    555:                recv do ECHO    1
                    556:                send will ECHO  2
                    557:                recv dont ECHO  1
                    558:                recv dont ECHO  0
                    559:                recv do ECHO    1
                    560:                send will ECHO  0
                    561:
                    562:        There is other option negotiation going on, and not sending
                    563:        the third part changes some of the timings, but this specific
                    564:        example no longer gets stuck in a loop.  The "telnet.state"
                    565:        file has been modified to reflect this change to the algorithm.
                    566:
                    567:        A bunch of miscellaneous bug fixes and changes to make
                    568:        lint happier.
                    569:
                    570:        This version of telnet also has some KERBEROS stuff in
                    571:        it. This has not been tested, it uses an un-authorized
                    572:        telnet option number, and uses an out-of-date version
                    573:        of the (still being defined) AUTHENTICATION option.
                    574:        There is no support for this code, do not enable it.
                    575:
                    576:
                    577: March 1, 1990:
                    578: CHANGES/BUGFIXES SINCE LAST RELEASE:
                    579:        Some support for IP TOS has been added.  Requires that the
                    580:        kernel support the IP_TOS socket option (currently this
                    581:        is only in UNICOS 6.0).
                    582:
                    583:        Both telnet and telnetd now use the cc_t typedef.  typedefs are
                    584:        included for systems that don't have it (in termios.h).
                    585:
                    586:        SLC_SUSP was not supported properly before.  It is now.
                    587:
                    588:        IAC EOF was not translated  properly in telnetd for SYSV_TERMIO
                    589:        when not in linemode.  It now saves a copy of the VEOF character,
                    590:        so that when ICANON is turned off and we can't trust it anymore
                    591:        (because it is now the VMIN character) we use the saved value.
                    592:
                    593:        There were two missing "break" commands in the linemode
                    594:        processing code in telnetd.
                    595:
                    596:        Telnetd wasn't setting the kernel window size information
                    597:        properly.  It was using the rows for both rows and columns...
                    598:
                    599: Questions/comments go to
                    600:                David Borman
                    601:                Cray Research, Inc.
                    602:                655F Lone Oak Drive
                    603:                Eagan, MN 55123
                    604:                dab@cray.com.
                    605:
                    606: README:        You are reading it.
                    607:
                    608: Config.generic:
                    609:        This file contains all the OS specific definitions.  It
                    610:        has pre-definitions for many common system types, and is
                    611:        in standard makefile fromat.  See the comments at the top
                    612:        of the file for more information.
                    613:
                    614: Config.local:
                    615:        This is not part of the distribution, but if this file exists,
                    616:        it is used instead of "Config.generic".  This allows site
                    617:        specific configuration without having to modify the distributed
                    618:        "Config.generic" file.
                    619:
                    620: kern.diff:
                    621:        This file contains the diffs for the changes needed for the
                    622:        kernel to support LINEMODE is the server.  These changes are
                    623:        for a 4.3BSD system.  You may need to make some changes for
                    624:        your particular system.
                    625:
                    626:        There is a new bit in the terminal state word, TS_EXTPROC.
                    627:        When this bit is set, several aspects of the terminal driver
                    628:        are disabled.  Input line editing, character echo, and
                    629:        mapping of signals are all disabled.  This allows the telnetd
                    630:        to turn of these functions when in linemode, but still keep
                    631:        track of what state the user wants the terminal to be in.
                    632:
                    633:        New ioctl()s:
                    634:
                    635:                TIOCEXT         Turn on/off the TS_EXTPROC bit
                    636:                TIOCGSTATE      Get t_state of tty to look at TS_EXTPROC bit
                    637:                TIOCSIG         Generate a signal to processes in the
                    638:                                current process group of the pty.
                    639:
                    640:        There is a new mode for packet driver, the TIOCPKT_IOCTL bit.
                    641:        When packet mode is turned on in the pty, and the TS_EXTPROC
                    642:        bit is set, then whenever the state of the pty is changed, the
                    643:        next read on the master side of the pty will have the TIOCPKT_IOCTL
                    644:        bit set, and the data will contain the following:
                    645:                struct xx {
                    646:                        struct sgttyb a;
                    647:                        struct tchars b;
                    648:                        struct ltchars c;
                    649:                        int t_state;
                    650:                        int t_flags;
                    651:                }
                    652:        This allows the process on the server side of the pty to know
                    653:        when the state of the terminal has changed, and what the new
                    654:        state is.
                    655:
                    656:        However, if you define USE_TERMIO or SYSV_TERMIO, the code will
                    657:        expect that the structure returned in the TIOCPKT_IOCTL is
                    658:        the termio/termios structure.
                    659:
                    660: stty.diff:
                    661:        This file contains the changes needed for the stty(1) program
                    662:        to report on the current status of the TS_EXTPROC bit.  It also
                    663:        allows the user to turn on/off the TS_EXTPROC bit.  This is useful
                    664:        because it allows the user to say "stty -extproc", and the
                    665:        LINEMODE option will be automatically disabled, and saying "stty
                    666:        extproc" will re-enable the LINEMODE option.
                    667:
                    668: telnet.state:
                    669:        Both the client and server have code in them to deal
                    670:        with option negotiation loops.  The algorithm that is
                    671:        used is described in this file.
                    672:
                    673: telnet:
                    674:        This directory contains the client code.  No kernel changes are
                    675:        needed to use this code.
                    676:
                    677: telnetd:
                    678:        This directory contains the server code.  If LINEMODE or KLUDGELINEMODE
                    679:        are defined, then the kernel modifications listed above are needed.
                    680:
                    681: libtelnet:
                    682:        This directory contains code that is common to both the client
                    683:        and the server.
                    684:
                    685: arpa:
                    686:        This directory has a new <arpa/telnet.h>
                    687:
1.2       niklas    688: libtelnet/Makefile.4.4:
                    689: telnet/Makefile.4.4:
                    690: telnetd/Makefile.4.4:
                    691:        These are the makefiles that can be used on a 4.3Reno
                    692:        system when this software is installed in /usr/src/lib/libtelnet,
                    693:        /usr/src/libexec/telnetd, and /usr/src/usr.bin/telnet.
                    694:
1.1       deraadt   695:
                    696: The following TELNET options are supported:
                    697:
                    698:        LINEMODE:
                    699:                The LINEMODE option is supported as per RFC1116.  The
                    700:                FORWARDMASK option is not currently supported.
                    701:
                    702:        BINARY: The client has the ability to turn on/off the BINARY
                    703:                option in each direction.  Turning on BINARY from
                    704:                server to client causes the LITOUT bit to get set in
                    705:                the terminal driver on both ends,  turning on BINARY
                    706:                from the client to the server causes the PASS8 bit
                    707:                to get set in the terminal driver on both ends.
                    708:
                    709:        TERMINAL-TYPE:
                    710:                This is supported as per RFC1091.  On the server side,
                    711:                when a terminal type is received, termcap/terminfo
                    712:                is consulted to determine if it is a known terminal
                    713:                type.  It keeps requesting terminal types until it
                    714:                gets one that it recongnizes, or hits the end of the
                    715:                list.  The server side looks up the entry in the
                    716:                termcap/terminfo data base, and generates a list of
                    717:                names which it then passes one at a time to each
                    718:                request for a terminal type, duplicating the last
                    719:                entry in the list before cycling back to the beginning.
                    720:
                    721:        NAWS:   The Negotiate about Window Size, as per RFC 1073.
                    722:
                    723:        TERMINAL-SPEED:
                    724:                Implemented as per RFC 1079
                    725:
                    726:        TOGGLE-FLOW-CONTROL:
                    727:                Implemented as per RFC 1080
                    728:
                    729:        TIMING-MARK:
                    730:                As per RFC 860
                    731:
                    732:        SGA:    As per RFC 858
                    733:
                    734:        ECHO:   As per RFC 857
                    735:
1.2       niklas    736:        LOGOUT: As per RFC 727
                    737:
1.1       deraadt   738:        STATUS:
                    739:                The server will send its current status upon
                    740:                request.  It does not ask for the clients status.
                    741:                The client will request the servers current status
                    742:                from the "send getstatus" command.
                    743:
                    744:        ENVIRON:
                    745:                This option is currently being defined by the IETF
                    746:                Telnet Working Group, and an RFC has not yet been
                    747:                issued, but should be in the near future...
                    748:
                    749:        X-DISPLAY-LOCATION:
                    750:                This functionality can be done through the ENVIRON
                    751:                option, it is added here for completeness.
                    752:
                    753:        AUTHENTICATION:
                    754:                This option is currently being defined by the IETF
                    755:                Telnet Working Group, and an RFC has not yet been
                    756:                issued.  The basic framework is pretty much decided,
                    757:                but the definitions for the specific authentication
                    758:                schemes is still in a state of flux.
                    759:
1.2       niklas    760:        ENCRYPTION:
1.1       deraadt   761:                This option is currently being defined by the IETF
                    762:                Telnet Working Group, and an RFC has not yet been
                    763:                issued.  The draft RFC is still in a state of flux,
                    764:                so this code may change in the future.