


PATHALIAS (1)           Public-Domain Utilities            PATHALIAS (1)







NAME  

        pathalias - mail routing tool 



SYNOPSIS  

        ppathaliasq  [ p-cDfivq ] [ p-dq plinkq ] [ p-gq pedgeoutq ][ p-lq phostq ] [ p-oq

        poutfileq ] [ p-sq ptreeq ] [ p-tq ptraceq ] pfileq ...  



DESCRIPTION  

        Pathalias computes the shortest paths and  corresponding  routes

        from  one  host  (computer system) to all other known, reachable

        hosts.  Pathalias reads host-to-host connectivity information on 

        standard input or in the named  pfilesq,  and  writes  a  list  of

        host-route  pairs  on  the specified poutfileq, or on the standard

        output.  



OPTIONS  



        -c  

                Print costs: print the path cost before each  host-route

                pair.  



        -D  

                Terminal domains: see pdomainsq section.  



        -f  

                First  hop  cost:  the  printed  cost is the cost to the

                first relay in a path, instead of the cost of  the  path

                itself; implies (and overrides) the p-cq option.  



        -i  

                Ignore case:  map  all  host  names  to  lower case.  By

                default, case is significant.  



        -v  

                Verbose: report some statistics on  the  standard  error

                output.  



        -d <arg>  

                Declare a dead link, host, or network.  If pargq is of the 

                form  ``host-1!host-2,''  the link from host-1 to host-2

                is treated as an  extremely  high  cost  (i.  e.,  DEAD)

                link.   If  pargq  is  a  single  host  name, that host is

                treated as dead and is used as  a  relay  host  of  last

                resort on  any  path.    If  pargq  is a network name, the

                network requires a gateway.  



        -g <file>  

                Dump the edges of the graph into the named file.  



        -l <host>  

                Set local host name to  phostq.    By  default,  pathalias

                discovers   the  local  host  name  by  looking  at  the

                environment variable pSITENAMEq (see below.) 





Tue Jan 4 23:11:20 1994                                           Page 1







PATHALIAS (1)           Public-Domain Utilities            PATHALIAS (1)





        -o <outfile>  

                By default, output is written on  the  standard  output.

                For  shells  with  unreliable  or  no  redirection, this

                option was added to explicitely name an output file.  



        -t <arg>  

                Trace input for link, host or network  on  the  standard

                error output.  The form of pargq is as given for p-dq.  



        Pathalias Input Format  



        A  line beginning with white space continues the preceding line.

        Anything following `#' on an input line is ignored.  



        A list of host-to-host connections consists of a  ``from''  host

        in   column   1,   followed   by  white  space,  followed  by  a

        comma-separated list of ``to' hosts, called plinksq.  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) may be

        followed by a ``cost'' enclosed in parentheses.   Costs  may  be

        arbitrary arithmetic expressions involving numbers, parentheses, 

        `+', `-', `*',  and  `/'.    Negative costs are prohibited.  The

        following symbolic costs are recognized: 





        LOCAL (25)  

                local-area network connection 



        DEDICATED (95)  

                high speed dedicated link 



        DIRECT (200)  

                toll-free call 



        DEMAND (300)  

                long-distance call 



        HOURLY (500)  

                hourly poll 



        EVENING (1800)  

                time restricted call 



        DAILY (5000)  

                daily poll, also called POLLED 



        WEEKLY (30000)  

                irregular poll (These descriptions may not be meaningful 

                outside the U. S.) In addition, 



        DEAD  

                is a very large number (effectively infinite), 







Tue Jan 4 23:11:20 1994                                           Page 2







PATHALIAS (1)           Public-Domain Utilities            PATHALIAS (1)





        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 

                (9.6 Kbaud or more) modems.  



        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, thus, e.g.  HOURLY * 24 is  much  larger  than

        DAILY. If no cost is given, a default of 4000 is used.  



        For  the  most  part,  arithmetic  expressions that mix symbolic

        constants other than HIGH, LOW, and FAST make no sense.    E.g.,

        if  a  host  calls  a local neighbor whenever there is work, and

        additionally polls  every  evening,  the  cost  is  DIRECT,  not

        DIRECT+EVENING.  



        Some examples: 



                down	princeton!(-1DEDICATED0), tilt,
                	%thrash(-1LOCAL0)
                princeton	topaz!(-1DEMAND0+-1LOW0)
                topaz	@rutgers(-1LOCAL0+1)


        If  a  link  is  encountered  more  than  once,  the  least-cost

        occurrence dictates the cost and network character.   Links  are

        treated  as bidirectional but asymmetric: for each link declared

        in the input, a DEAD reverse link is assumed.  



        If the ``to'' host in a link is surrounded  by  angle  brackets,

        the  link  is considered terminal, and further links beyond this

        one are heavily penalized.  E.g., with input 



                seismo	<research>(10), research(100), ihnp4(10)
                research	allegra(10)
                ihnp4	allegra(50)


        the path from seismo to research is direct, but  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 ...  



        The name used in the route to or through aliased  hosts  is  the

        name  by  which  the  host  is  known  to its predecessor in the

        route.  



        Fully connected networks, such as the ARPANET  or  a  local-area

        network, are declared as follows: 





Tue Jan 4 23:11:20 1994                                           Page 3







PATHALIAS (1)           Public-Domain Utilities            PATHALIAS (1)





                net = {host, host, ...} 



        The host-list may be preceded or followed by a routing character 

        (`!' default), and may be followed by a cost (default 4000). The 

        network name is optional; if not given, pathalias makes one up.  



                etherhosts = {rahway, milan, joliet}!(-1LOCAL0)
                ringhosts = @{gimli, alida, almo}(-1DEDICATED0)
                = {etherhosts, ringhosts}(0)


        The routing character used in a route to a network member is the 

        one encountered  when  ``entering''  the  network.  See also the

        sections on pgatewaysq and pdomainsq.  



        Connection  data  may  be  given  while  hiding  host  names  by

        declaring 



                private {host, host, ...} 



        Pathalias  will  not  generate routes for private hosts, but may

        produce routes through them.  The scope of a private declaration 

        extends from the declaration 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 offers a way 

        to  retain  the  semantics  of private declarations when reading

        from the standard input.  



        Dead hosts, links, or networks may be  presented  in  the  input

        stream by declaring 



                dead {arg, ...} 



        where pargq has the same form as the argument to the p-dq option.  



        To   force  a  specific  cost  for  a  link,  delete  all  prior

        declarations with 



                delete {host-1!host-2} 



        and declare the link as desired.  To delete a host and  all  its

        links, use 



                delete {host} 



        Error  diagnostics  refer  to  the  file  in which the error was

        found.  To alter the file name, use 



                file {filename} 



        Fine-tuning is possible by adjusting the weights  of  all  links

        from a given host, as in 



                adjust {host-1, host-2(LOW), host-3(-1)} 







Tue Jan 4 23:11:20 1994                                           Page 4







PATHALIAS (1)           Public-Domain Utilities            PATHALIAS (1)





        If no cost is given a default of 4000 is used.  





        Output Format  



        A  list  of  host-route pairs is written to the standard output,

        where route is a string  appropriate  for  use  with  pprintf(3),q

        e.g., 



                rutgers	princeton!topaz!%s@rutgers


        The  ``%s''  in  the route string should be replaced by the user

        name at the destination host.  (This task is normally  performed

        by a mailer.) 



        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  



        A  network  is represented by a pseudo-host and a set of network

        members.  Links from the members to the network have the  weight

        given  in  the  input,  while  the  cost from the network to the

        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.  



        However, if 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.) 



        E.g., 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 presumed 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.  



        E.g., 



                harvard	.-1EDU0	# harvard is gateway to .EDU domain
                .-1EDU0	= {.-1BERKELEY0, .-1UMICH0}
                .-1BERKELEY0	= {ernie}


        yields 





Tue Jan 4 23:11:20 1994                                           Page 5







PATHALIAS (1)           Public-Domain Utilities            PATHALIAS (1)





                ernie	...!harvard!ernie.-1BERKELEY0.-1EDU0!%s


        Output  is  given for the nearest gateway to a domain, e.g., the

        example above gives 



                .-1EDU0	...!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 p-Dq option is given on the command line, 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.  



ENVIRONMENT  



        SITENAME  

                Name of the local site.  If this variable  is  not  set,

                and  the  p-lq  option is not given, the name of the local

                site is taken to be plostinspaceq, which most probably  is

                wrong.  



BUGS  

        The p-iq option should be the default.  



        The order of arguments is significant.  In particular, p-iq and p-tq 

        should appear early.  



        Pathalias can  generate  hybrid (i. e.  ambiguous) routes, which

        are abhorrent and most certainly should not be given as examples 

        in the manual entry.  Experienced mappers largely shun `@'  when

        preparing  input;  this  is historical, but also reflects UUCP's

        facile syntax for source routes.  



        Multiple `@'s in routes are loathsome, so pathalias  resorts  to

        the ``magic  %''  rule  when  necessary.  This convention is not

        documented anywhere, including here.  



        The p-Dq option elides insignificant  routes  to  domain  members.

        This  is  benign,  perhaps even beneficial, but confusing, since

        the behavior is undocumented and somewhat unpredictable.  



AUTHOR  

        Steve Bellovin, as told to Peter Honeyman. Addition of p-oq option 

        and port to the Atari ST/TOS by Martin P. Ibert.  



SEE ALSO  

        P. Honeyman and S.M. Bellovin,  ``PATHALIAS0  or  The  Care  and

        Feeding  of  Relative Addresses,'' in Proc. Summer USENIX Conf.,

        Atlanta, 1986.  









Tue Jan 4 23:11:20 1994                                           Page 6







PATHALIAS (1)           Public-Domain Utilities            PATHALIAS (1)





COPYRIGHT NOTE  

        This program is supplied with HERMES for your convenience.    It

        is  not covered by the HERMES license regulations, and is in the

        public domain, as far as I know.  
























































Tue Jan 4 23:11:20 1994                                           Page 7




