RMT(1M)                                                                RMT(1M)


NAME
     rmt - remote magtape protocol module

SYNOPSIS
     /etc/rmt

DESCRIPTION
     Rmt is a program used by the remote programs in manipulating a magnetic
     tape drive through an interprocess communication connection.  Rmt is
     normally started up with an rexec(3N) or rcmd(3N) call.

     The rmt program accepts requests specific to the manipulation of magnetic
     tapes, performs the commands, then responds with a status indication.
     All responses are in ASCII and in one of two forms. Successful commands
     have responses of:

          Anumber\n

     where number is an ASCII representation of a decimal number.
     Unsuccessful commands are responded to with:

          Eerror-number\nerror-message\n

     where error-number is one of the possible error numbers described in
     intro(2), and error-message is the corresponding error string as printed
     from a call to perror(3).  The protocol is comprised of the following
     commands (a space is present between each token):

     Odevice\nmode\n
                    Open the specified device using the indicated mode.
                    Device is a full pathname and mode is an ASCII
                    representation of a decimal number suitable for passing to
                    open(2).  If a device had already been opened, it is
                    closed before a new open is performed.

     Vversion#\n    This command is sent by the client program to indicate the
                    version# of the 'librmt' library that the client program
                    is linked with. If rmt own protocol is the same or  more
                    advanced than that of the client program, rmt will adjust
                    to the client program protocol and return the client
                    version# . However, if the client program version# is more
                    advanced than rmt own protocol version number then rmt
                    will return its actual version number and expect the
                    client program to adjust to rmt protocol.  The returned
                    value is the ASCII representation of the version number.

     Cdevice\n      Close the currently open device.  The device specified is
                    ignored.

     Lwhence\noffset\n
                    Perform an lseek(2) operation using the specified
                    parameters.  The response value is that returned from the


                    lseek call.

     Wcount\n       Write data onto the open device.  Rmt reads count bytes
                    from the connection, aborting if a premature end-of-file
                    is encountered.  The response value is that returned from
                    the write(2) call.

     Rcount\n       Read count bytes of data from the open device.  If count
                    exceeds the size of the data buffer (10 kilobytes), it is
                    truncated to the data buffer size.  Rmt then performs the
                    requested read(2) and responds with Acount-read\n if the
                    read was successful; otherwise an error in the standard
                    format is returned.  If the read was successful, the data
                    read is then sent.

     Ioperation\ncount\n
                    Perform a MTIOTOP ioctl(2) command using the specified
                    parameters.  The parameters are interpreted as the ASCII
                    representations of the decimal values to place in the
                    mt_op and mt_count fields of the structure used in the
                    ioctl call.  The return value is the count parameter when
                    the operation is successful.

     S\n            Return the status of the open device, as obtained with a
                    MTIOCGET ioctl call.  If the operation was successful, an
                    ``ack'' is sent with the size of the status buffer, then
                    the status buffer is sent (in binary).

     Q\n            Perform a MTSCSIINQ ioctl(2) command. If the operation was
                    successful, an ``ack'' is sent with the size of the
                    inquiry buffer, then the inquiry buffer is sent (in
                    binary).

     B\n            Perform a MTIOCGETBLKSIZE ioctl(2) command.  If the
                    operation was successful, an ``ack'' is sent with the size
                    of the block size buffer, then the block size buffer is
                    sent (in binary).

     Z\n            Perform a fstat(2) system call on the currently opened
                    device.  If the operation was successful, an ``ack'' is
                    sent with the size of the ``stat'' structure, then the
                    actual ``stat'' structure is sent (in binary).

     Any other command causes rmt to exit.

DIAGNOSTICS
     All responses are of the form described above. If rmt is invoked with an
     argument, that argument will be treated as a file name and debug
     information will be logged in that file.


SEE ALSO
     rcmd(3N), rexec(3N), mtio(7),

BUGS
     People tempted to use this for a remote file access protocol are
     discouraged.


                                                                        Page 3