RFC 729: Telnet byte macro option (original) (raw)

[RFC Home] [TEXT|PDF|HTML] [Tracker] [IPR] [Info page]

Obsoleted by: 735 UNKNOWN

Network Working Group Dave Crocker, Rand-ISD Request for Comments: 729 (Dcrocker at Rand-Unix) NlC: 40306 13 May l977

                    TELNET Byte Macro Option

1. Command name and code:

BM 19

2. Command Meanings:

IAC WILL BM

    The sender of this  command REQUESTS or AGREES  to use the  BM
    option, and will send sing1e  data characters which are to  be
    interpreted as if longer data strings had been sent.

IAC WON'T BM

    The  sender  of  this  option  REFUSES  to  send  single  data
    characters which  are  to be  interpreted  as if  longer  data
    strings had been sent.

IAC DO BM

    The sender REQUESTS or AGREES to have the other side (send  of
    WILL BM) issue  send single  data characters which  are to  be
    interpreted as if longer data strings had been sent.

IAC DON'T BM

    The sender REFUSES to allow the other side to send single data
    characters which  are  to be  interpreted  as if  longer  data
    strings had been sent.

IAC SB BM IAC SE where:

       <macro byte> is the  data byte actually  to be sent  across
       the network; it may NOT be Telnet IAC (decimal 255).

RFC #729 Telnet Byte Macro Option Page 2

       <count> is a  one-byte binary number,  indicating how  many
       <expansion string> characters follow, up to the ending  IAC
       SE, but not including it.

       <expansion string> is a string of one or more Telnet  ASCII
       characters and/or commands,  which the <macro  byte> is  to
       represent; any  character may  occur within  an  <expansion
       string>.

    The indicated  <macro  byte>  will  be  sent  instead  of  the
    indicated <expansion string>. The receiver of the <macro byte>
    (the sender  of the  DO BM)  is to  behave EXACTLY  as if  the
    <expansion string> of bytes had instead been received from the
    network. This  interpretation is  to  occur before  any  other
    Telnet interpretations, unless the <macro byte> occurs as part
    of a BM subcommand; in this case no special interpretation  is
    to be made.

    Note that the effect of a particular <macro byte> may be
    negated by reseting it to "expand" into itself.

    <DEFINE> is decimal 01.

IAC SB BM IAC SE

    The receiver  of the  <DEFINE> for  <macro byte>  accepts  the
    requested definition and will perform the indicating expansion
    whenever a <macro byte>  is received and is  not part of a  BM
    subcommand.

    <ACCEPT> is decimal 02.

IAC SB BM IAC SE

    The receive  of  the  <DEFINE> for  <macro  byte>  refuses  to
    perform  the  indicated  translation  from  <macro  byte>   to
    <expansion string> either because the particular <macro  byte>
    is not  an acceptable  choice  or because  the length  of  the
    <expansion string> exceeds available storage.

is decimal 03.

may be

       <BAD CHOICE> which is decimal 01; or

       <TOO LONG> which is decimal 02.

RFC #729 Telnet Byte Macro Option Page 3

IAC SB BM IAC SE

    The <macro byte> is to be treated as real data, rather than as
    representative of the <expansion string>

    <LITERAL> is decimal 03.

3. Default:

WON'T BM -- DON'T BM

    No reinterpretation of data is allowed.

4. Motivation for the option:

Subcommands for Telnet options currently require a minimum of five characters to be sent over the network (i.e., IAC SB

5. Description of the option

The option is enabled through the standard Telnet Option negotiation process. Afterwards, the SENDER of data (the side which sends the IAC WILL BM) is free to define and use mappings between single and multiple NOT characters. Except for the ability to offer a blanket refusal, the receiver of data has no control over the definition and use of mappings.

The sender (of the WILL BM) is prohibited from using or redefining a until it has received an or , in reply to a .

NOTE: The Telnet command character IAC (decimal 255) may be a member of an but is the ONLY character which may NOT be defined as a . ALL OTHER Telnet command characters use IAC as a preface and therefore occupy a SEPARATE portion of the data space than do regular data bytes.


RFC #729 Telnet Byte Macro Option Page 4

With the exception of IAC, data transfered as part of BM subcommands are NOT to be interpreted. They are to be taken only as their normal character values. This avoids the problem of distinguishing between a character which is to be taken as a , and interpreted as its corresponding , and that same character to be taken as its usual Telnet NVT value. In all other cases, however, s are to be interpreted immediately, as if the had actually been sent across the network. Expanded strings are not subject to reinterpretation, so that recursive definitions cannot be made.

The in the subcommand allows the receiver to allocate storage. IAC interpretation is not over-ridden during BM subcommands so that IAC SE will continue to safely terminate malformed subcommands. To include IAC as part of a , the string "IAC IAC" must be sent.

The BM option is notably inefficient with regard to problems during definition and use of s as real data. It is expected that relatively few s will be defined and that they will represent relatively short strings. Since the Telnet data space between decimal 128 and decimal 254 is not normally used, except by implementations employing the original Telnet protocol, it is recommended that s normally be drawn from that pool.