COHERENT manpages
This page displays the COHERENT manpage for pathalias [Generate a set of paths among computers].
List of available manpages
Index
pathalias -- Command Generate a set of paths among computers /usr/lib/mail/pathalias [-ivcDf] [-d link] [-l host] [-t link] [ datafile ... ] The command pathalias computes the shortest path and corresponding route from a host to every other known, reachable host. It reads host-to-host connectivity information from the standard input or datafile, then writes a list of host-route pairs onto the standard output. This command normally is used only by administrators of busy systems, to maintain the path information used by smail. pathalias recognizes the following command-line options: -c Print costs: print the path cost before each host-route pair. -D Terminal domains: see domains section, below. -d arg arg is a dead link, host, or network. If arg is of the form host-1!host-2 pathalias treats the link from host-1 to host-2 as an extremely high- cost (i.e., dead) link. If arg is a single host name, pathalias treats that host as dead and uses it on any path only as the relay host of last resort. If arg names a network, the network requires a gateway. -f First-hop cost: the printed cost is the cost to the first relay in a path, instead of the cost of the entire path. This option implies (and overrides) option -c. -i Ignore case: map all host names to lower case. By default, case is significant. -l host Set the name of the local host to host. By default, pathalias reads file /etc/uucpname to discover the name of your system. -t arg Output trace information for arg onto the standard error. -v Verbose: report some statistics on the standard error output. Input Format A line that begins with white space continues the preceding line. pathalias ignores anything following a `#'. A list of a host-to-host connection consists of a from host in column one, followed by white space, followed by a comma-separated list of to hosts, called links. A link may be preceded or followed by a network character to use in the route. Valid network characters are `!' (default), `@', `:', and `%'. A link (and network character, if present) can be followed by a ``cost'' enclosed between parentheses. The cost is an arithmetic expression that includes numbers, parentheses, and the operators `+', `-', `*', and `/'. It cannot be negative. pathalias recognizes the following symbolic costs: LOCAL A local-area-network connection. Set cost to 25. DEDICATED A high-speed dedicated link. Set cost to 95. DIRECT A toll-free telephone call. Set cost to 200. DEMAND A long-distance telephone call. Set cost to 300. HOURLY An hourly poll. Set cost to 500. EVENING A time-restricted telephone call. Set cost to 1,800. DAILY A daily poll (also called POLLED). Set cost to 5,000. WEEKLY An irregular poll. Set cost to 30,000. In addition, the symbolic cost DEAD is a very large number (effectively, infinite); HIGH and LOW are -5 and +5, respectively, for baud-rate or quality bonuses/penalties; and FAST is -80, for adjusting costs of links that use high-speed modems (9600 baud or faster). These symbolic costs represent an imperfect measure of bandwidth, monetary cost, and frequency of connections. For most mail traffic, it is important to minimize the number of hosts in a route; for this reason, HOURLY times 24 is much larger than DAILY. If no cost is given, pathalias uses a default cost of 4,000. For the most part, an arithmetic expression that mixes symbolic constants other than HIGH, LOW, and FAST makes no sense. For example, if a host calls a local neighbor whenever there is work, and in addition polls every evening, the cost is DIRECT, not DIRECT+EVENING. Examples Consider the following input: down princeton!(DEDICATED), tilt, %thrash(LOCAL) princeton topaz!(DEMAND+LOW) topaz @rutgers(LOCAL+1) If a link is encountered more than once, the least-cost occurrence dictates the cost and network character. pathalias treats links as bidirectional but asymmetric: for each link declared in the input, pathalias assumes a DEAD reverse link. If the ``to'' host in a link is enclosed by angle brackets, pathalias regards the link as being terminal, and heavily penalizes all links beyond it. For example, when given the input seismo <research>(10), research(100), ihnp4(10) research allegra(10) ihnp4 allegra(50) pathalias generates a direct path from site seismo to site research; however, the path from seismo to allegra uses ihnp4 as a relay, not research. The set of names by which a host is known to its neighbors is called its aliases. Aliases are declared as follows: name = alias, alias ... name is the name by which the host is known to its predecessor in the route. Fully connected networks, such as the Internet or a local-area network, are declared as follows: net = {host, host, ...} The list of hosts may be preceded or followed by a routing character (by default, `!'), and may be followed by a cost (default 4,000). The network name is optional; if not given, pathalias makes one up. Consider the following input: etherhosts = {rahway, milan, joliet}!(LOCAL) ringhosts = @{gimli, alida, almo}(DEDICATED) = {etherhosts, ringhosts}(0) The routing character used in a route to a network member is the one encountered when ``entering'' the network. For details, see the sections on gateways and domains, below. If you wish to give connection data, but also wish to hide the host names, use a declaration of the form: private {host, host, ...} pathalias will not generate a route to a private host, but it may produce routes through it. The scope of a private declaration extends from the declaration either to the end of the input file in which it appears, or to a private declaration with an empty host list, whichever comes first. The latter scope rule lets you retain the semantics of a private declarations when you pass data to pathalias via the standard input. Dead hosts, links, or networks may be presented in the input stream by declaring dead {arg, ...} where arg has the same form as the argument to the command-line option -d. To force a specific cost for a link, use delete {host-1!host-2} to delete all prior declarations, then re-declare the link as desired. To delete a host and all its links, use the instruction: delete {host} Diagnostic messages name the file in which pathalias found the error. To change the file's name, use the instruction: file {filename} You can fine-tune an entry by adjusting the weights of all links from a given host. For example: adjust {host-1, host-2(LOW), host-3(-1)} If no cost is given, pathalias uses a default of 4,000. The following script pipes into pathalias input from compressed (and uncompressed) files: for i in $*; do case $i in *.Z) echo "file {`expr $i : '.Z'`} zcat $i ;; *) echo "file {$i}" cat $i ;; esac echo "private {}" done Output Format pathalias writes to the standard output a list of host-route pairs, where the route is a string appropriate for use with printf(), e.g.: rutgers princeton!topaz!%s@rutgers %s in the route string is replaced by the name of the user to whom the message is being sent. This task normally is performed by a mailer, e.g., mail or elm. Except for domains, the name of a network is never used in routes. Thus, in the earlier example, the path from down to up would be up!%s, not princeton-ethernet!up!%s. Gateways pathalias represents a network by a pseudo-host and a set of network members. Links from the members to the network have the weight given in the input, whereas the cost from the network to its members is zero. If a network is declared dead, the member-to-network links are marked dead, which effectively prohibits access to the network from its members. If, however, the input also shows an explicit link from any host to the network, then that host can be used as a gateway. In particular, the gateway need not be a network member. For example, if CSNET is declared dead and the input contains CSNET = {...} csnet-relay CSNET then routes to CSNET hosts will use csnet-relay as a gateway. Domains A network whose name begins with `.' is called a domain. Domains are assumed to require gateways, i.e., they are DEAD. The route given by a path through a domain is similar to that for a network, but here the domain name is tacked onto the end of the next host. Subdomains are permitted. For example, the definition harvard .EDU # harvard is gateway to .EDU domain .EDU = {.BERKELEY, .UMICH} .BERKELEY = {ernie} yields: ernie ...!harvard!ernie.BERKELEY.EDU!%s Output is given for the nearest gateway to a domain. For example, the example above yields: .EDU ...!harvard!%s Output is given for a subdomain if it has a different route than its parent domain, or if all its ancestor domains are private. If the you use its command-line option -D, pathalias treats a link from a domain to a host member of that domain as terminal. This property extends to host members of subdomains, etc., and discourages routes that use any domain member as a relay. Files /usr/local/lib/palias.dir -- Default output /usr/local/lib/palias.pag -- Default output comp.mail.maps -- Likely location of some input files See Also commands, mail [overview], pathmerge, smail Honeyman P., Bellovin, S.M.: PATHALIAS, or the care and feeding of relative addresses. Atlanta, Proceedings of the Summer USENIX Conference, 1986. Notes This command is not used by the implementation of smail that COHERENT uses. It is included, however, for compatibility with other implementations. The order of arguments is significant. In particular, options -i and -t should appear early.