|
|
1.1 root 1: .\" Thanks to Alan Silverstein for help with the manual entry.
2: .TH PATHALIAS 1
3: .SH NAME
4: pathalias, makedb \- electronic address router
5: .SH SYNOPSIS
6: .B pathalias
7: [
8: .B \-ivc
9: ] [
10: .BI \-t \0link
11: ] [
12: .BI \-l \0host
13: ] [
14: .BI \-d \0link
15: ] [
16: .ig
17: .\" the -g option is for pathparse. it's not really used by pathalias.
18: .BI \-g \0file
19: ] [
20: ..
21: .I files
22: ]
23: .PP
24: .B makedb
25: [
26: .B \-a
27: ] [
28: .BI \-o \0dbmfile
29: ] [
30: .I files ...
31: ]
32: .ad b
33: .SH DESCRIPTION
34: .I pathalias
35: computes the shortest paths and corresponding routes from one host
36: (computer system) to all other known, reachable hosts.
37: .I pathalias
38: reads host-to-host connectivity
39: information on standard input or in the named
40: .IR files ,
41: and writes a list of
42: host-route pairs on the standard output.
43: .PP
44: .I makedb
45: takes
46: .I pathalias
47: output and creates or appends to a
48: .IR dbm (3)
49: database.
50: .PP
51: Here are the
52: .I pathalias
53: options:
54: .TP 6
55: .B \-i
56: Ignore case: map all host names to lower case.
57: By default, case is significant.
58: .TP
59: .B \-c
60: Print costs: print the path cost (see below) before each host-route pair.
61: .TP
62: .B \-v
63: Verbose: report some statistics on the standard error output.
64: .ig
65: .\" the -g option is for pathparse and is not for public consumption (yet!).
66: .TP
67: .BI \-g \0file
68: Dump the edges of the graph into the named file.
69: ..
70: .TP
71: .BI \-l \0host
72: Set local host name to
73: .IR host .
74: By default,
75: .I pathalias
76: discovers the local host name in a system-dependent way.
77: .TP
78: .BI \-d \0arg
79: Declare a dead link, host, or network (see below).
80: If
81: .I arg
82: is of the form ``host1!host2,'' the link from host1 to host2
83: is treated as an extremely high cost (\fIi.e.\fP, \s-1DEAD\s0) link.
84: If
85: .I arg
86: is a single host name,
87: that host is treated as dead
88: and is be used as an intermediate host of last resort on any path.
89: If
90: .I arg
91: is a network name, the network requires a gateway.
92: .TP
93: .BR \-t \0arg
94: Trace input for link, host or network on the standard error output.
95: The form of
96: .I arg
97: is as above.
98: .PP
99: Here are the
100: .I makedb
101: options:
102: .TP 6
103: .B \-a
104: Append to an existing database;
105: by default,
106: .I makedb
107: truncates the database.
108: .TP
109: .BI \-o \0dbmfile
110: Identify the output file base name.
111: .SS \fIpathalias\fP Input Format
112: A line beginning with white space continues the preceding line.
113: Anything following `#' on an input line is ignored.
114: .PP
115: A list of host-to-host connections consists of a ``from'' host in column 1,
116: followed by white space,
117: followed by a comma-separated list of ``to' hosts, called
118: .IR links .
119: A link may be preceded or followed by a network character to use
120: in the route.
121: Valid network characters are `!' (default), `@', `:', and `%'.
122: A link (and network character, if present) may be
123: followed by a ``cost'' enclosed in parentheses.
124: Costs may be arbitrary
125: arithmetic expressions involving numbers, parentheses, `+', `\-', `*',
126: and `/'.
127: The following symbolic costs are
128: recognized:
129: .PP
130: .RS
131: .nf
132: .ta 14mR 17m
133: \s-1LOCAL\s0 25 (local-area network connection)
134: \s-1DEDICATED\s0 95 (high speed dedicated link)
135: \s-1DIRECT\s0 200 (toll-free call)
136: \s-1DEMAND\s0 300 (long-distance call)
137: \s-1HOURLY\s0 500 (hourly poll)
138: \s-1EVENING\s0 1800 (time restricted call)
139: \s-1DAILY\s0 5000 (daily poll, also called \s-1POLLED\s0)
140: \s-1WEEKLY\s0 30000 (irregular poll)
141: .fi
142: .RE
143: .PP
144: In addition,
145: .SM DEAD
146: is a very large number (effectively infinite),
147: and
148: .SM HIGH
149: and
150: .SM LOW
151: are \-5 and +5 respectively,
152: for baud-rate or quality bonuses/penalties.
153: These symbolic costs represent an imperfect measure of bandwidth,
154: monetary cost, and frequency of connections.
155: For most mail traffic, it is important to minimize the number
156: of intermediaries in a route,
157: thus,
158: .IR e.g. ,
159: .SM HOURLY
160: is far greater than
161: .SM DAILY
162: / 24.
163: If no cost is given,
164: a default of 4000 is used.
165: .PP
166: For the most part, arithmetic expressions that mix symbolic constants
167: other than
168: .SM HIGH
169: and
170: .SM LOW
171: make no sense.
172: .IR E.g. ,
173: if a host calls a local neighbor whenever there is work,
174: and additionally polls every evening,
175: the cost is
176: .SM DIRECT,
177: .B not
178: .SM DIRECT+EVENING.
179: .PP
180: Some examples:
181: .PP
182: .RS
183: .nf
184: .ta 10m 15m
185: down princeton!(\s-1DEDICATED\s0), tilt,
186: %thrash(\s-1LOCAL\s0)
187: princeton topaz!(\s-1DEMAND\s0+\s-1LOW\s0)
188: topaz @rutgers(\s-1LOCAL\s0)
189: .fi
190: .RE
191: .PP
192: If a link is encountered more than once,
193: the least-cost occurrence dictates the cost and network character.
194: Links are treated as bidirectional, to the extent that a
195: .SM DEAD
196: reverse link is assumed unless better information is available.
197: .PP
198: The set of names by which a host is known by its neighbors is
199: called its
200: .IR aliases .
201: Aliases are declared as follows:
202: .PP
203: .RS
204: name = alias, alias ...
205: .RE
206: .PP
207: The name used in the route to or through aliased hosts
208: is the name by which the host is known
209: to its predecessor in the route.
210: .PP
211: Fully connected networks, such as the
212: .SM ARPANET
213: or a local-area network,
214: are declared as follows:
215: .PP
216: .RS
217: net = {host, host, ...}
218: .RE
219: .PP
220: The host-list may be preceded or followed by a routing
221: character, and may be followed by a cost:
222: .PP
223: .RS
224: .nf
225: princeton-ethernet = {down, up, princeton}!(\s-1LOCAL\s0)
226: \s-1ARPA\s0 = @{sri-unix, mit-ai, su-score}(\s-1DEDICATED\s0)
227: .fi
228: .RE
229: .PP
230: See also the sections on
231: .I gateways
232: and
233: .I domains
234: below.
235: .PP
236: Connection data may be given while hiding host names
237: by declaring
238: .PP
239: .RS
240: private {host, host, ...}
241: .RE
242: .PP
243: .I pathalias
244: will not generate routes for private hosts, but may produce routes
245: through them.
246: The scope of a private declaration extends from the declaration to the end of
247: the input file in which it appears.
248: It is best to put private declarations at the beginning of the appropriate
249: input file.
250: .SS Output Format
251: A list of host-route pairs is written to the standard output,
252: where route is a string appropriate for use with
253: .IR printf (3),
254: .IR e.g. ,
255: .PP
256: .RS
257: .nf
258: .ta 10m 20m
259: rutgers princeton!topaz!%s@rutgers
260: .fi
261: .RE
262: .PP
263: The ``%s'' in the route string should be replaced by the
264: user name at the destination host.
265: (This task is normally performed by a mailer.)
266: .PP
267: Except for
268: .I domains
269: (see below),
270: the name of a network is never used in
271: expansions.
272: Thus, in the earlier example, the path from down to
273: up would be ``up!%s,'' not ``princeton-ethernet!up!%s.''
274: .SS Gateways
275: A network is represented by
276: a pseudo-host and a set of network members.
277: Links from the members to the network have the weight given in
278: the input, while the cost from the network to the members is zero.
279: If a network is declared dead on the command line (with the
280: .B \-d
281: option),
282: the member-to-network links are marked dead,
283: which discourages paths to members by way of the network.
284: .PP
285: If the input also shows a link from a host to the network,
286: then that host will be preferred as a gateway.
287: Gateways need not be network members.
288: .PP
289: .IR E.g. ,
290: suppose
291: .SM CSNET
292: is declared dead on the command line
293: and the input contains
294: .PP
295: .RS
296: .nf
297: .ta 10m 20m
298: \s-1CSNET\s0 = {...}
299: csnet-relay \s-1CSNET\s0
300: .fi
301: .RE
302: .PP
303: Then routes to
304: .SM CSNET
305: hosts will use csnet-relay as a gateway.
306: .PP
307: .I pathalias
308: discourages forwarding beyond dead networks.
309: .SS Domains
310: A host or network whose name begins with `.' is called
311: a domain.
312: Domains are presumed to require gateways,
313: .IR i.e. ,
314: they are \s-1DEAD\s0.
315: The route given by a path through a domain is similar to
316: that for a network, but here
317: the domain name is tacked onto the end of the next host.
318: Subdomains are permitted.
319: .IR E.g. ,
320: .PP
321: .RS
322: .nf
323: .ta 1i
324: .ta 10m 20m
325: harvard .\s-1EDU\s0
326: \&.\s-1EDU\s0 = {.\s-1BERKELEY\s0}
327: \&.\s-1BERKELEY\s0 ernie
328: .fi
329: .RE
330: .PP
331: yields
332: .PP
333: .RS
334: .nf
335: .ta 10m 20m
336: ernie ...!harvard!ernie.\s-1BERKELEY\s0.\s-1EDU\s0!%s
337: .fi
338: .RE
339: .PP
340: Output is given for the nearest gateway
341: to a domain,
342: .IR e.g. ,
343: the example above gives
344: .PP
345: .RS
346: .nf
347: .ta 10m 25m
348: \&.\s-1EDU\s0 ...!harvard!%s
349: .fi
350: .RE
351: .PP
352: Output is given for a subdomain if it has a different
353: route than its parent domain, or if all of its ancestor domains are private.
354: .SS Databases
355: .I Makedb
356: builds a
357: .IR dbm (3)
358: database from the standard input or from the named
359: .IR files .
360: (\fIMakedb\fP replaces the obsolete
361: .B \-b
362: option of
363: .IR pathalias ,
364: which is no longer recognized.)
365: Input is expected to be sequence of
366: .SM ASCII
367: records,
368: each consisting of a key field and a data field separated by a single tab.
369: If the tab is missing, the data field is assumed to be empty.
370: .SH FILES ET AL.
371: .ta \w'/usr/local/lib/palias.{dir,pag} 'u
372: /usr/local/lib/palias.{dir,pag} default dbm output
373: .br
374: newsgroup mod.map likely location of some input files
375: .br
376: .IR getopt (3),
377: available from newsgroup mod.sources (if not in the C library).
378: .SH BUGS
379: The order of arguments is significant.
380: In particular,
381: .B \-i
382: and
383: .B \-t
384: should appear early.
385: .PP
386: .I pathalias
387: can generate hybrid (\fIi.e.\fP ambiguous) routes, which are
388: abhorrent and most certainly should not be given as examples
389: in the manual entry.
390: .PP
391: Multiple `@'s in routes are prohibited by many mailers, so
392: .I pathalias
393: resorts to the ``magic %'' rule when appropriate.
394: This convention is not documented anywhere, including here.
395: .PP
396: Domains constitute a futile attempt to defeat anarchy and otherwise
397: retard progress.
398: .SH AUTHORS
399: Steve Bellovin (ulysses!smb)
400: .br
401: Peter Honeyman (princeton!honey)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.