

PATHALIAS (1)           Public-Domain Utilities            PATHALIAS (1)




NAME  
        pathalias - mail routing tool 

SYNOPSIS  
        ppathaliasq  [ p-cDfivq ] [ p-dq plinkq ] [ p-gq pedgeoutq ][ p-lq phostq ] [ p-oq
        poutfileq ] [ p-sq ptreeq ] [ p-tq ptraceq ] pfileq ...  

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  pfilesq,  and  writes  a  list  of
        host-route  pairs  on  the specified poutfileq, or on the standard
        output.  

OPTIONS  

        -c  
                Print costs: print the path cost before each  host-route
                pair.  

        -D  
                Terminal domains: see pdomainsq 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-cq 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 pargq 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  pargq  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  pargq  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  phostq.    By  default,  pathalias
                discovers   the  local  host  name  by  looking  at  the
                environment variable pSITENAMEq (see below.) 



Tue Feb 23 22:42:26 1993                                          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 pargq is as given for p-dq.  

        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 plinksq.  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 Feb 23 22:42:26 1993                                          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 Feb 23 22:42:26 1993                                          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 pgatewaysq and pdomainsq.  

        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 pargq has the same form as the argument to the p-dq 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 Feb 23 22:42:26 1993                                          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 Feb 23 22:42:26 1993                                          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-Dq 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-lq  option is not given, the name of the local
                site is taken to be plostinspaceq, which most probably  is
                wrong.  

BUGS  
        The p-iq option should be the default.  

        The order of arguments is significant.  In particular, p-iq and p-tq 
        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-Dq 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-oq 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 Feb 23 22:42:26 1993                                          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 Feb 23 22:42:26 1993                                          Page 7


