Go to the first, previous, next, last section, table of contents.
Before the initial handshake, the caller will usually have logged in the
called machine and somehow started the UUCP package there. On Unix this
is normally done by setting the shell of the login name used to
`/usr/lib/uucp/uucico'.
All messages in the initial handshake begin with a ^P (a byte with
the octal value `\020') and end with a null byte (`\000'). A
few systems end these messages with a line feed character (`\012')
instead of a null byte; the examples below assume a null byte is being
used.
Some options below are supported by QFT, which stands for Queued File
Transfer, and is (or was) an internal Bell Labs version of UUCP.
Taylor UUCP size negotiation was introduced by Taylor UUCP, and is
also supported by DOS based UUPlus and Amiga based wUUCP and
UUCP-1.17.
The initial handshake goes as follows. It is begun by the called
machine.
- called: `\020Shere=hostname\000'
-
The hostname is the UUCP name of the called machine. Older UUCP
packages do not output it, and simply send `\020Shere\000'.
- caller: `\020Shostname options\000'
-
The hostname is the UUCP name of the calling machine. The following
options may appear (or there may be none):
- `-QSEQ'
-
Report sequence number for this conversation. The sequence number is
stored at both sites, and incremented after each call. If there is a
sequence number mismatch, something has gone wrong (somebody may have
broken security by pretending to be one of the machines) and the call is
denied. If the sequence number changes on one of the machines, perhaps
because of an attempted breakin or because a disk backup was restored,
the sequence numbers on the two machines must be reconciled manually.
- `-xLEVEL'
-
Requests the called system to set its debugging level to the specified
value. This is not supported by all systems.
- `-pGRADE'
-
- `-vgrade=GRADE'
-
Requests the called system to only transfer files of the specified grade
or higher. This is not supported by all systems. Some systems support
`-p', some support `-vgrade='. UUPlus allows either `-p'
or `-v' to be specified on a per-system basis in the `SYSTEMS'
file (`gradechar' option).
- `-R'
-
Indicates that the calling UUCP understands how to restart failed file
transmissions. Supported only by System V Release 4 UUCP, QFT, and
Taylor UUCP.
- `-ULIMIT'
-
Reports the ulimit value of the calling UUCP. The limit is specified as
a base 16 number in C notation (e.g., `-U0x1000000'). This number
is the number of 512 byte blocks in the largest file which the calling
UUCP can create. The called UUCP may not transfer a file larger than
this. Supported only by System V Release 4 UUCP, QFT and UUPlus.
UUPlus reports the lesser of the available disk space on the spool
directory drive and the ulimit variable in `UUPLUS.CFG'. Taylor
UUCP understands this option, but does not generate it.
- `-N[NUMBER]'
-
Indicates that the calling UUCP understands the Taylor UUCP size
negotiation extension. Not supported by traditional UUCP packages.
Supported by UUPlus. The optional number is a bitmask of features
supported by the calling UUCP, and is described below.
- called: `\020ROK\000'
-
There are actually several possible responses.
- `ROK'
-
The calling UUCP is acceptable, and the handshake proceeds to the
protocol negotiation. Some options may also appear; see below.
- `ROKN[NUMBER]'
-
The calling UUCP is acceptable, it specified `-N', and the called
UUCP also understands the Taylor UUCP size limiting extensions. The
optional number is a bitmask of features supported by the called UUCP,
and is described below.
- `RLCK'
-
The called UUCP already has a lock for the calling UUCP, which normally
indicates the two machines are already communicating.
- `RCB'
-
The called UUCP will call back. This may be used to avoid impostors
(but only one machine out of each pair should call back, or no
conversation will ever begin).
- `RBADSEQ'
-
The call sequence number is wrong (see the `-Q' discussion above).
- `RLOGIN'
-
The calling UUCP is using the wrong login name.
- `RYou are unknown to me'
-
The calling UUCP is not known to the called UUCP, and the called UUCP
does not permit connections from unknown systems. Some versions of UUCP
just drop the line rather than sending this message.
If the response is `ROK', the following options are supported by
System V Release 4 UUCP and QFT.
- `-R'
-
The called UUCP knows how to restart failed file transmissions.
- `-ULIMIT'
-
Reports the ulimit value of the called UUCP. The limit is specified as
a base 16 number in C notation. This number is the number of 512 byte
blocks in the largest file which the called UUCP can create. The
calling UUCP may not send a file larger than this. Also supported by
UUPlus. Taylor UUCP understands this option, but does not generate it.
- `-xLEVEL'
-
I'm not sure just what this means. It may request the
calling UUCP to set its debugging level to the specified
value.
If the response is not `ROK' (or `ROKN') both sides hang up
the phone, abandoning the call.
- called: `\020Pprotocols\000'
-
Note that the called UUCP outputs two strings in a row. The protocols
string is a list of UUCP protocols supported by the caller. Each UUCP
protocol has a single character name. These protocols are discussed in
more detail later in this document. For example, the called UUCP might
send `\020Pgf\000'.
- caller: `\020Uprotocol\000'
-
The calling UUCP selects which protocol to use out of the protocols
offered by the called UUCP. If there are no mutually supported
protocols, the calling UUCP sends `\020UN\000' and both sides hang
up the phone. Otherwise the calling UUCP sends something like
`\020Ug\000'.
Most UUCP packages will consider each locally supported protocol in turn
and select the first one supported by the called UUCP. With some
versions of HDB UUCP, this can be modified by giving a list of protocols
after the device name in the `Devices' file or the `Systems'
file. For example, to select the `e' protocol in `Systems',
airs Any ACU,e ...
or in Devices,
ACU,e ttyXX ...
Taylor UUCP provides the protocol
command which may be used either
for a system
(see section Protocol Selection)
or a
port (see section The Port Configuration File).
UUPlus allows specification of the protocol string on a per-system basis
in the `SYSTEMS' file.
The optional number following a `-N' sent by the calling system, or
an `ROKN' sent by the called system, is a bitmask of features
supported by the UUCP package. The optional number was introduced in
Taylor UUCP version 1.04. The number is sent as an octal number with a
leading zero. The following bits are currently defined. A missing
number should be taken as `011'.
- `01'
-
UUCP supports size negotiation.
- `02'
-
UUCP supports file restart.
- `04'
-
UUCP supports the `E' command.
- `010'
-
UUCP requires the file size in the `S' and `R' commands to be
in base 10. This bit is used by default if no number appears, but
should not be explicitly sent.
- `020'
-
UUCP expects a dummy string between the notify field and the size field
in an `S' command. This is true of SVR4 UUCP. This bit should not
be used.
After the protocol has been selected and the initial handshake has been
completed, both sides turn on the selected protocol. For some protocols
(notably `g') a further handshake is done at this point.
Go to the first, previous, next, last section, table of contents.