Go to the first, previous, next, last section, table of contents.


Protocol Selection

protocol string
Specifies which protocols to use for the other system, and in which order to use them. This would not normally be used. For example, `protocol tfg'. The default depends on the characteristics of the port and the dialer, as specified by the seven-bit and reliable commands. If neither the port nor the dialer use either of these commands, the default is to assume an eight-bit reliable connection. The commands `seven-bit true' or `reliable false' might be used in either the port or the dialer to change this. Each protocol has particular requirements that must be met before it will be considered during negotiation with the remote side. The `t' and `e' protocols are intended for use over TCP or some other communication path with end to end reliability, as they do no checking of the data at all. They will only be considered on a TCP port which is both reliable and eight bit. For technical details, see section UUCP `t' Protocol, and section UUCP `e' Protocol. The `i' protocol is a bidirectional protocol. It requires an eight-bit connection. It will run over a half-duplex link, such as Telebit modems in PEP mode, but for efficient use of such a connection you must use the half-duplex command (see section The Port Configuration File). See section UUCP `i' Protocol. The `g' protocol is robust, but requires an eight-bit connection. See section UUCP `g' Protocol. The `G' protocol is the System V Release 4 version of the `g' protocol. See section UUCP `G' Protocol. The `a' protocol is a Zmodem like protocol, contributed by Doug Evans. It requires an eight-bit connection, but unlike the `g' or `i' protocol it will work if certain control characters may not be transmitted. The `j' protocol is a variant of the `i' protocol which can avoid certain control characters. The set of characters it avoids can be set by a parameter. While it technically does not require an eight bit connection (it could be configured to avoid all characters with the high bit set) it would be very inefficient to use it over one. It is useful over a eight-bit connection that will not transmit certain control characters. See section UUCP `j' Protocol. The `f' protocol is intended for use with X.25 connections; it checksums each file as a whole, so any error causes the entire file to be retransmitted. It requires a reliable connection, but only uses seven-bit transmissions. It is a streaming protocol, so, while it can be used on a serial port, the port must be completely reliable and flow controlled; many aren't. See section UUCP `f' Protocol. The `v' protocol is the `g' protocol as used by the DOS program UUPC/Extended. It is provided only so that UUPC/Extended users can use it; there is no particular reason to select it. See section UUCP `v' Protocol. The `y' protocol is an efficient streaming protocol. It does error checking, but when it detects an error it immediately aborts the connection. This requires a reliable, flow controlled, eight-bit connection. In practice, it is only useful on a connection that is nearly always error-free. Unlike the `t' and `e' protocols, the connection need not be entirely error-free, so the `y' protocol can be used on a serial port. See section UUCP `y' Protocol. The protocols will be considered in the order shown above. This means that if neither the seven-bit nor the reliable command are used, the `t' protocol will be used over a TCP connection and the `i' protocol will be used over any other type of connection (subject, of course, to what is supported by the remote system; it may be assumed that all systems support the `g' protocol). Note that currently specifying both `seven-bit true' and `reliable false' will not match any protocol. If this occurs through a combination of port and dialer specifications, you will have to use the protocol command for the system or no protocol will be selected at all (the only reasonable choice would be `protocol f'). A protocol list may also be specified for a port (see section The Port Configuration File), but, if there is a list for the system, the list for the port is ignored.
protocol-parameter character string ...
character is a single character specifying a protocol. The remaining strings are a command specific to that protocol which will be executed if that protocol is used. A typical command is something like `window 7'. The particular commands are protocol specific. The `i' protocol supports the following commands, all of which take numeric arguments:
window
The window size to request the remote system to use. This must be between 1 and 16 inclusive. The default is 16.
packet-size
The packet size to request the remote system to use. This must be between 1 and 4095 inclusive. The default is 1024.
remote-packet-size
If this is between 1 and 4095 inclusive, the packet size requested by the remote system is ignored, and this is used instead. The default is 0, which means that the remote system's request is honored.
sync-timeout
The length of time, in seconds, to wait for a SYNC packet from the remote system. SYNC packets are exchanged when the protocol is started. The default is 10.
sync-retries
The number of times to retry sending a SYNC packet before giving up. The default is 6.
timeout
The length of time, in seconds, to wait for an incoming packet before sending a negative acknowledgement. The default is 10.
retries
The number of times to retry sending a packet or a negative acknowledgement before giving up and closing the connection. The default is 6.
errors
The maximum number of errors to permit before closing the connection. The default is 100.
error-decay
The rate at which to ignore errors. Each time this many packets are received, the error count is decreased by one, so that a long connection with an occasional error will not exceed the limit set by errors. The default is 10.
ack-frequency
The number of packets to receive before sending an acknowledgement. The default is half the requested window size, which should provide good performance in most cases.
The `g', `G' and `v' protocols support the following commands, all of which take numeric arguments, except short-packets which takes a boolean argument:
window
The window size to request the remote system to use. This must be between 1 and 7 inclusive. The default is 7.
packet-size
The packet size to request the remote system to use. This must be a power of 2 between 32 and 4096 inclusive. The default is 64 for the `g' and `G' protocols and 1024 for the `v' protocol. Many older UUCP packages do not support packet sizes larger than 64, and many others do not support packet sizes larger than 128. Some UUCP packages will even dump core if a larger packet size is requested. The packet size is not a negotiation, and it may be different in each direction. If you request a packet size larger than the remote system supports, you will not be able to send any files.
startup-retries
The number of times to retry the initialization sequence. The default is 8.
init-retries
The number of times to retry one phase of the initialization sequence (there are three phases). The default is 4.
init-timeout
The timeout in seconds for one phase of the initialization sequence. The default is 10.
retries
The number of times to retry sending either a data packet or a request for the next packet. The default is 6.
timeout
The timeout in seconds when waiting for either a data packet or an acknowledgement. The default is 10.
garbage
The number of unrecognized bytes to permit before dropping the connection. This must be larger than the packet size. The default is 10000.
errors
The number of errors (malformed packets, out of order packets, bad checksums, or packets rejected by the remote system) to permit before dropping the connection. The default is 100.
error-decay
The rate at which to ignore errors. Each time this many packets are received, the error count is decreased by one, so that a long connection with an occasional error will not exceed the limit set by errors. The default is 10.
remote-window
If this is between 1 and 7 inclusive, the window size requested by the remote system is ignored and this is used instead. This can be useful when dealing with some poor UUCP packages. The default is 0, which means that the remote system's request is honored.
remote-packet-size
If this is between 32 and 4096 inclusive the packet size requested by the remote system is ignored and this is used instead. There is probably no good reason to use this. The default is 0, which means that the remote system's request is honored.
short-packets
If this is true, then the code will optimize by sending shorter packets when there is less data to send. This confuses some UUCP packages, such as System V Release 4 (when using the `G' protocol) and Waffle; when connecting to such a package, this parameter must be set to false. The default is true for the `g' and `v' protocols and false for the `G' protocol.
The `a' protocol is a Zmodem like protocol contributed by Doug Evans. It supports the following commands, all of which take numeric arguments except for escape-control, which takes a boolean argument:
timeout
Number of seconds to wait for a packet to arrive. The default is 10.
retries
The number of times to retry sending a packet. The default is 10.
startup-retries
The number of times to retry sending the initialization packet. The default is 4.
garbage
The number of garbage characters to accept before closing the connection. The default is 2400.
send-window
The number of characters that may be sent before waiting for an acknowledgement. The default is 1024.
escape-control
Whether to escape control characters. If this is true, the protocol may be used over a connection which does not transmit certain control characters, such as XON or XOFF. The connection must still transmit eight bit characters other than control characters. The default is false.
The `j' protocol can be used over an eight bit connection that will not transmit certain control characters. It accepts the same protocol parameters that the `i' protocol accepts, as well as one more:
avoid
A list of characters to avoid. This is a string which is interpreted as an escape sequence (see section Chat Scripts). The protocol does not have a way to avoid printable ASCII characters (byte values from 32 to 126, inclusive); only ASCII control characters and eight-bit characters may be avoided. The default value is `\021\023'; these are the characters XON and XOFF, which many connections use for flow control. If the package is configured to use HAVE_BSD_TTY, then on some versions of Unix you may have to avoid `\377' as well, due to the way some implementations of the BSD terminal driver handle signals.
The `f' protocol is intended for use with error-correcting modems only; it checksums each file as a whole, so any error causes the entire file to be retransmitted. It supports the following commands, both of which take numeric arguments:
timeout
The timeout in seconds before giving up. The default is 120.
retries
How many times to retry sending a file. The default is 2.
The `t' and `e' protocols are intended for use over TCP or some other communication path with end to end reliability, as they do no checking of the data at all. They both support a single command, which takes a numeric argument:
timeout
The timeout in seconds before giving up. The default is 120.
The `y' protocol is a streaming protocol contributed by Jorge Cwik. It supports the following commands, both of which take numeric arguments:
timeout
The timeout in seconds when waiting for a packet. The default is 60.
packet-size
The packet size to use. The default is 1024.
The protocol parameters are reset to their default values after each call.


Go to the first, previous, next, last section, table of contents.