home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast2.iso / fido / ftsc_all.z43 / FSC-0003.TXT next >
Text File  |  1986-03-22  |  33KB  |  602 lines

  1. FSC-0003
  2.  
  3.                          FidoNet Route Files Explained
  4.                       Part 1 -- The Many Faces of FidoNet
  5.  
  6.                            by Ben Baker, Fido 100/76
  7.  
  8.                There  is  no  aspect  of FidoNet more universally mis-
  9.           understood than routing.  It is the  intent  of  this  foru-
  10.           part series to clear some of the fog.
  11.  
  12.                The   justification  for  nets  and  routing  has  been
  13.           discussed many times and will NOT be  discussed again  here.
  14.           Given  that  routing  is  good,  how is it done?  What's the
  15.           meaning of the various statements that go into route  files?
  16.           Indeed, what's the meaning of route files?
  17.  
  18.                Let's first take a look at "the network." But how do we
  19.           do that?  In reality, there is no "the network." FidoNet  is
  20.           a  different  thing when viewed by each different Fido!  The
  21.           only formal definition of FidoNet is the node list,  and  it
  22.           serves  as  an  adaquate  view  of  "the  network"  for most
  23.           independent Fidos but only the members of some nets.
  24.  
  25.                Consider  the  hypothetical  node,  Fido 21/7.  He's an
  26.           independent member of a "Region." To him, "the network" is a
  27.           couple  of  hundred other independent nodes to whom he sends
  28.           messages directly and another couple of hundred to which  he
  29.           has  access  through  36  defined  "Hosts." If he receives a
  30.           message not addressed to his node, his  Fido  "orphans"  it.
  31.           He has no intention of forwarding someone else's mail.  They
  32.           can pay their own phone bills!  When he sends a  message  to
  33.           18/3,  Fido  knows  (from  the  node  list)  that is another
  34.           independent and sends the message direct.  When he  sends  a
  35.           message to 100/76, Fido knows (from the node list) that is a
  36.           member of net 100 and sends it to 100/0.  Fido 21/7 executes
  37.           only  schedule A during the national mail window.  He has no
  38.           use for ANY route files.
  39.  
  40.                Another hypothetical node, Fido 201/4 is a member of an
  41.           "inbound  only"  net.   Since  the  sysop  has  used the '4'
  42.           command properly, Fido knows he is a member of net  201  and
  43.           will  treat  other  members  of that net as though they were
  44.           independent nodes.  When he sends a message to  201/5,  Fido
  45.           will  send it direct and not to 201/0.  Messages headed out-
  46.           side net 201 will be handled for 201/4 just as they were for
  47.           21/7.   Fido  201/4  executes  two  schedules,  A during the
  48.           national window followed immediatly by B when he  just  sits
  49.           quietly  and  waits  for  201/0  to  send  him  any  mail he
  50.           received.  He has no use for ANY route files.
  51.  
  52.                Everyone   else  has  a  view  of  "the  network"  more
  53.           complicated than Fido can discover from just the node  list.
  54.           If  you're a Southern California Hub, or a local node in the
  55.           New York Megalopolis, or maybe the host of a modest  network
  56.           in  Memphis  "the  network"  looks  different to you than to
  57.           other sysops.  It is the function of route files  to  modify
  58.           Fido's view of "the network" to conform to yours.
  59.  
  60.                If your Fido is executing any mail event and any  other
  61.           Fido calls it up and offers it a mail packet, your Fido will
  62.           graciously receive that packet and at the end  of  the  mail
  63.           event,  he will unpack it into messages.  These actions have
  64.           nothing whatever to do with route files!
  65.  
  66.                Reread  that last paragraph two or three times until it
  67.           sinks in.  It is a very important, very misunderstood point.
  68.           Route  files  do  not and cannot control the way you receive
  69.           mail.  ROUTE FILES CONTROL ONLY THE  WAY  YOU  SEND  MAIL!!!
  70.           After all, that's when you're paying the phone bill.
  71.  
  72.                Furthermore,  what  you  say  in ROUTE.B has absolutely
  73.           nothing to do with how Fido behaves in schedule C.   I  will
  74.           come back to this point later.
  75.  
  76.                Ever since we first began routing FidoNet  messages  to
  77.           places  other than their final destination, route files have
  78.           used three basic commands to mold Fido's view of FidoNet  to
  79.           correspond  with  your  view.   In  part  2  we will look at
  80.           SCHEDULE, ROUTE-TO and ACCEPT-FROM and  see  just  how  they
  81.           influence Fido.
  82.  
  83.                Part  3  will  examine  a  bevy of new routing commands
  84.           available with Fido V11 and see how they have made automatic
  85.           distribution at last possible.
  86.  
  87.                LISTGEN  V2  is capable of generating route files auto-
  88.           matically.  Part 4 will discuss how ROUTE.CTL statements map
  89.           to route file commands.
  90.  
  91.                Stay  with  me  for the next few weeks and maybe we can
  92.           burn off the fog and find a bright sky, a calm sea and clear
  93.           sailing.   (And  don't  throw  away your newsletters, you'll
  94.           want to refer back from time to time.)
  95.  
  96.           ------------------------------------------------------------
  97.  
  98.  
  99.  
  100.                          FidoNet Route Files Explained
  101.                           Part  2 -- In the Beginning
  102.  
  103.                            by Ben Baker, Fido 100/76
  104.  
  105.                From the time he first began "routing"  messages,  Fido
  106.           has  used  "route  files"  to tell him what messages to send
  107.           where when.   Three  basic  route  file  commands  do  this;
  108.           SCHEDULE  aka SEND-TO, ROUTE-TO and ACCEPT-FROM.  This week,
  109.           we'll look at these commands in depth.
  110.  
  111.                Before  going  farther,  I  need  to define a couple of
  112.           terms.  A "target" is a node to which your Fido will connect
  113.           and directly send a message.  An "addressee" is the ultimate
  114.           destination node  for  a  message.   This  is  an  important
  115.           distinction.   Because  of  routing,  the  addressee and the
  116.           target for a particular message are often different nodes.
  117.  
  118.                A "packet" is a collection of messages all to  be  sent
  119.           to  a single target (though perhaps several addressees).  At
  120.           the beginning of each schedule Fido builds all  the  packets
  121.           he will be permitted to send during that schedule.
  122.  
  123.                Now, let's take a look at the three basic commands that
  124.           may  appear  in  a  route file, and see how each of them can
  125.           modify Fido's behavior.
  126.  
  127.           SCHEDULE <tag> <target list>         or
  128.           SEND-TO <target list>
  129.  
  130.                These commands are equivalent.  They tell Fido  "During
  131.           this  schedule,  you  may  build  packets  for any target in
  132.           <target list>.  Include all messages to different addressees
  133.           which  may  be routed to these targets.  Do not consider any
  134.           outgoing messages which cannot  be  sent  to  one  of  these
  135.           targets."  Unless  there  is  an  ACCEPT-FROM statement (see
  136.           below) only messages originating on your Fido qualify to  go
  137.           into  packets.   If  <target list> is empty (and this is NOT
  138.           schedule A), Fido will not build any packets.  If he doesn't
  139.           build  any  packets he will not send any mail, even if he is
  140.           POLLed (see next week).
  141.  
  142.           ROUTE-TO <target> <addressee list>
  143.  
  144.                This  command  will  override  any  node  list  implied
  145.           routing  affecting  these nodes.  It tells Fido "If <target>
  146.           is in <target list> and there are outgoing messages for  any
  147.           nodes  in  <addressee list>, put them in <target>'s packet."
  148.           If <target> is not in  <target  list>  you  blew  it.   It's
  149.           almost,  but  not quite a "no operation." No packets will be
  150.           built for nodes in <addressee list>, even  if  they  are  in
  151.           <target  list>!   Don't  route messages to a <target> that's
  152.           not in the <target list> for this schedule.
  153.  
  154.                By  the  way,  a bug in an earlier version of Fido pre-
  155.           vented messages to <target> from being sent  unless  he  was
  156.           also  in  <addressee  list>.   I don't know if that has been
  157.           corrected, but it's  still  good  general  practice  to  put
  158.           <target> in <addressee list>.
  159.  
  160.           ACCEPT-FROM <originating list>
  161.  
  162.                Normally, Fido only  sends  mail  originating  on  your
  163.           board.   If  you  receive  a  message  originating  on A and
  164.           addressed to B, without this statement, your Fido  will  not
  165.           attempt  to  send  it  along to B.  Instead, he will mark it
  166.           "orphan" to give you an indication that  he  had  a  problem
  167.           with  it and otherwise ignore it.  This statement in a route
  168.           file tells Fido "When you build packets,  if  you  find  any
  169.           messages from any nodes in <originating list>, treat them as
  170.           if  they  originated  here.   In  other  words  FORWARD  any
  171.           messages  from  the nodes in <originating list> that you can
  172.           get into packets FOR THIS SCHEDULE's <target list>."
  173.  
  174.                I actually suggested this verb for this action and have
  175.           regretted  it  ever  since!  It's a misnomer.  A better verb
  176.           might be "FORWARD-FOR" but hindsight is  always  20-20.   It
  177.           really  means  "Accept,  for  forwarding, only messages from
  178.           these guys."  It's  designed  to  prevent  you  from  paying
  179.           someone else's phone costs without prior arrangement.
  180.  
  181.                So  where  do  you  put  this  statement?  Remember two
  182.           important points I've  mentioned  before.   1)  Route  files
  183.           affect  how  you  SEND  mail,  not how you receive it.  2) A
  184.           particular route file affects only  the  schedule  with  the
  185.           matching  <tag>.   Consider  Fido  202/0, a hypothetical bi-
  186.           directional host.  He executes three schedules  each  night.
  187.           During  schedule  B, before the national window, he collects
  188.           outgoing mail from his locals.  During schedule C  he  sends
  189.           mail  from  himself  and  his  locals  to  "the network" and
  190.           receives mail for himself and his locals from it.   Then  in
  191.           schedule  D,  after  the national window, he distributes the
  192.           mail he received for his locals.
  193.  
  194.                ROUTE.B  needs  neither  a <target list> nor an ACCEPT-
  195.           FROM statement.  Indeed, he doesn't really need any  ROUTE.B
  196.           file  at  all  because  HE  ISN'T  SENDING  ANY  MAIL DURING
  197.           SCHEDULE B.
  198.  
  199.                ROUTE.C  has  the national net excluding 202/0's locals
  200.           in its <target list>.  It also has  "ACCEPT-FROM  1,  2,  3,
  201.           (all  locals)."  Now let's say that 202/3 received a message
  202.           from 125/1 last night, but it wasn't delivered because 202/3
  203.           was   down.   The  message  is  still  here.   Won't  it  be
  204.           "orphaned" because 125/1 isn't in the ACCEPT-FROM list?  NO!
  205.           Because  202/3 isn't in the <target list>, the message won't
  206.           even be considered DURING THIS SCHEDULE.
  207.  
  208.                ROUTE.D has all the nodes in net  202  in  the  <target
  209.           list>,  and  an  "ACCEPT-FROM ALL" statement.  Now the fore-
  210.           going message will be processed correctly and  forwarded  to
  211.           202/3.
  212.  
  213.                Now let's say that 100/76 tries to forward a message to
  214.           Jakarta through 202/0.  202/0 cannot refuse delivery of  the
  215.           offending  message,  so  there  it  sits  in  his mail area.
  216.           During schedule B, he ignores all outgoing mail  because  he
  217.           doesn't  have a <target list>.  During schedule C Jakarta is
  218.           in his <target list>, but 100/76 is not in his  <originating
  219.           list>, so the message is orphaned.  During schedule D 100/76
  220.           IS in the <originating list>, but  Jakarta  is  not  in  the
  221.           <target list> so the message is again ignored.
  222.  
  223.                Make  no  mistake,  if  Jakarta had been in the <target
  224.           list> in schedule D, the message would have been sent,  even
  225.           though  it  had  been  marked  an  orphan  during schedule C
  226.           (provided, of course that a connection  could  be  made  and
  227.           Jakarta  happened  to  be  in a mail schedule at that time).
  228.           This means that if messages are orphaned because  of  errors
  229.           in  your  routing  files, the routing files can be corrected
  230.           and the messages can still be sent.  The orphan flag is  NOT
  231.           a dead end!
  232.  
  233.                A  similar kind of bug existed (and may still;  I don't
  234.           know) with ACCEPT-FROM as with ROUTE-TO (above).  If a route
  235.           file  contains  an ACCEPT-FROM statement, make sure your own
  236.           node is in the <originating list>.  (The first time  I  used
  237.           this   statement,   I  forwarded  a  lot  of  messages,  but
  238.           "orphaned" my own messages!)
  239.  
  240.                Well, that's how routing is  achieved.   Remember,  all
  241.           these  statements  control  out-going mail.  You can receive
  242.           mail even if you don't have any route files!
  243.  
  244.                A final point on routing.  If a message says it  has  a
  245.           file  attached (even if the file doesn't exist) all bets are
  246.           off.  Routing is suspended and  the  message  will  be  sent
  247.           direct  from  the  originator  to  the  addressee.  Fido has
  248.           several built-in safeguards to prevent you  from  forwarding
  249.           someone  else's  files,  or  forwarding  your  files through
  250.           someone else for that matter.
  251.  
  252.                Next week we'll take a close look at the goodies TJ has
  253.           provided in version 11 and see how they are making automatic
  254.           node list distribution at long last a reality.
  255.  
  256.           ------------------------------------------------------------
  257.  
  258.  
  259.  
  260.                          FidoNet Route Files Explained
  261.                     Part 3 -- Keep the Old, Ring In the New
  262.  
  263.                            by Ben Baker, Fido 100/76
  264.  
  265.                Last  week  we  looked  at the basic routing statements
  266.           that have been with us since version  7  or  so.  Now  let's
  267.           look at what's been added in version 11.
  268.  
  269.                Please refer back to last weeks  definitions.   I  con-
  270.           tinue to use them as defined.
  271.  
  272.           RECV-ONLY
  273.  
  274.                This tells Fido "Go ahead and  build  packets  for  any
  275.           targets  in  the SCHEDULE command's <target list>, but DON'T
  276.           ATTEMPT TO CALL ANYBODY.  If any targets happen to  call  in
  277.           for  any  reason, try to give them their packets before they
  278.           get away."
  279.  
  280.                There  MUST  be  a  <target list> for this statement to
  281.           mean anything.  It is not  intended  for  normally  "receive
  282.           only"  schedules  like 202/0's collection schedule (see last
  283.           week).  Instead, it  prevents  you  from  originating  calls
  284.           during  schedules  when you are trying to SEND mail.  (Route
  285.           files control how you send mail, not how  you  receive  it.)
  286.           You  are  really  trying  to  send  mail  on the other guy's
  287.           nickel, but as you will see, he has  to  cooperate  in  that
  288.           venture.
  289.  
  290.                This  statement  might be used by the locals during the
  291.           collection schedule in a large, busy  net.   Collisions  are
  292.           avoided  because  there's  only one node, the outbound host,
  293.           placing calls.  He POLLs (see below) the  locals  for  their
  294.           outgoing traffic.
  295.  
  296.           HOLD <hold target list>
  297.  
  298.                "OK, Fido, build packets for  targets  in  the  <target
  299.           list>,  but  don't  attempt  to actually call any targets in
  300.           <hold target list>." This is a limited "RECV-ONLY"  command.
  301.           Any  packets  for  targets not in <hold target list> will be
  302.           sent normally (if they haven't been picked up), but  packets
  303.           for <hold target list> have to be "picked up."
  304.  
  305.                There's  a  hidden  gimmick  here  that  bears  further
  306.           exploration.   Ken  Kaplan  (Fido  100/22  AKA  1/0)  is the
  307.           original  source  in  the  national  nodelist   distribution
  308.           system.   Regional  coordinators  call his Fido each week to
  309.           pick up copies of the latest nodelist.  The route  file  for
  310.           his  national  window contains the statement "HOLD <regional
  311.           coordinator list>."  Fido  will  not  attempt  to  send  any
  312.           packets  targetted  for  a  regional coordinator.  Does this
  313.           mean  that  he  can't  send   "normal"   messages   to   the
  314.           coordinators?   Not  at  all.  Because he is a member of net
  315.           100, all his "normal" messages, including those addressed to
  316.           the  coordinators, wind up in a packet targetted for 100/10,
  317.           the outbound host.  Since 100/10 is not in the <hold  target
  318.           list>,  that  packet  is sent and the messages go out.  HOLD
  319.           APPLIES TO THE TARGETS OF PACKETS, NOT TO THE ADDRESSEES  OF
  320.           MESSAGES!   It  is  only  when  Ken  sends  messages  to the
  321.           coordinators with the nodelist (or other files) attached  to
  322.           them  that Fido builds packets targetted for them instead of
  323.           100/10.
  324.  
  325.                Does that mean that Ken  can't  send  the  coordinators
  326.           other files without waiting for them to pick them up?  Well,
  327.           yes and no.  Because of the HOLD  statement,  he  can't  say
  328.           send  FIDO_IBM.EXE to 14/61 (see PICK-UP below for why 14/61
  329.           and not  14/0).   But  he  can  use  another  gimmick.   The
  330.           coordinators have dual identities (set by the '4' command of
  331.           Fido) and he can certainly send a file  to  14/0.   Fido  is
  332.           smart,  but so smart he'll notice that 14/0 and 14/61 happen
  333.           to have the same phone number.  He'll send  the  packet  for
  334.           14/0 and hold the one for 14/61.  By the same token, if both
  335.           packets are still present when 14/61 calls  in,  he'll  only
  336.           pick up the the nodelist targetted for 14/61 and not the new
  337.           Fido targetted for 14/0.  (You can't have your cake and  eat
  338.           it too.)
  339.  
  340.           PICKUP <pickup target list>
  341.  
  342.                Whenever any other Fido calls your Fido for any reason,
  343.           your Fido looks to see if there is a  packet  targetted  for
  344.           him.  If there is, your Fido will try to deliver it then and
  345.           there and avoid making the phone call which you have to  pay
  346.           for.   Without this statement (or the next one) in his route
  347.           file, the other Fido will simply hang up on you, leaving you
  348.           with  a  phone call to make in order to deliver your packet.
  349.           This statement says to Fido  "If  you  happen  to  call  any
  350.           target in <pickup target list>, hang around to see if he has
  351.           mail for me."
  352.  
  353.                This  is  a  two-edged  sword.   It  can  speed up mail
  354.           exchange, but the Fido that places the call pays for it.  It
  355.           works  best  within a local net where the calls are all toll
  356.           free anyway.  In fact, it won't work at all  between  larger
  357.           nets  supported  by  distinct  inbound  and  outbound hosts.
  358.           Specifying "PICKUP 100/0" in your national  window  schedule
  359.           would  only get you messages originating on 100/0 (or 100/51
  360.           actually) with files attached.  Any other mail for you might
  361.           be in a packet addressed to you, but on 100/10, the outbound
  362.           host, and that's not who you called.
  363.  
  364.                Even worse, let's say Tom Jennings is sending a file to
  365.           100/10 and wants to pick up any mail from St.  Louis for San
  366.           Francisco while he's at it.  He's the host of net  125,  and
  367.           that's  perfectly  legitimate,  right?   Wrong!  His primary
  368.           identity (the '4' command again) is  125/1  and  100/10  may
  369.           have  a  packet  for  125/0,  but he won't have a packet for
  370.           125/1.  This command deals at the packet/target  level  just
  371.           as  the  HOLD command does.  Furthermore, it deals with real
  372.           identities, not alternate identities.
  373.  
  374.                As I said, this is most useful within a local net,  and
  375.           that's where it probably should be applied.
  376.  
  377.           POLL <poll target list>
  378.  
  379.                This  tells Fido "Even if I don't have any mail for the
  380.           targets  in  <poll  target  list>  generate  empty   packets
  381.           addressed  to them so you have an excuse to call them.  Then
  382.           when you do call them, pick anything they have for me."
  383.  
  384.                "POLL <poll target list>" implies "PICKUP <poll  target
  385.           list>"  which  need not be specified.  This is the statement
  386.           an outbound host might use to poll his locals  or  hubs  for
  387.           outgoing traffic prior to national mail time.  Together with
  388.           the next statement, this method can be very efficient.
  389.  
  390.                The regional coordinators run a special  schedule  each
  391.           Saturday morning  during  the  national  mail  window.  It's
  392.           route  file  is  identical to their normal national schedule
  393.           route file except that it contains the statement "POLL 1/0."
  394.           That's how they  get  the  nodelist  for  subsequent  redis-
  395.           tribution.
  396.  
  397.                As I see it, POLL has a lot more uses than PICKUP.
  398.  
  399.           SEND-ONLY
  400.  
  401.                This  one  is  mainly for outbound hosts.  It says "I'm
  402.           not expecting any mail during this schedule, so  don't  wait
  403.           the  normal  one  or  two  minutes for incomming calls after
  404.           making an outgoing call.  As soon as you  finish  one,  dial
  405.           another until all packets have been sent."
  406.  
  407.                As  I  said  above,  this  can  be  very efficient, but
  408.           there's a problem you need to be aware of.  Fido will make a
  409.           maximum of 30 attempts without connect to send a packet to a
  410.           particular target.  If you have only one packet addressed to
  411.           a busy target, Fido would normally take about an hour to use
  412.           up 30 attempts, but in SEND-ONLY  mode  he  can  attempt  30
  413.           calls  in  about  20 minutes!  If you have a Courier and are
  414.           running it  in  "X4"  response  code  mode,  he'll  make  30
  415.           attempts  in 10 to 15 minutes.  (The Courier doesn't waste a
  416.           lot of time in "fast-dial, busy-detect" mode.)
  417.  
  418.                If you're an outbound host and want  to  try  SEND-ONLY
  419.           during  the  national  window,  you  risk using up your call
  420.           attempts while  your  target  is  busiest,  then  when  he's
  421.           quieted  down and you could get through, you've given up!  I
  422.           suggest you break your national time into two schedules, and
  423.           only  use  SEND-ONLY during the last 20 minutes or so of the
  424.           national window.
  425.  
  426.                On  the  other  hand,  polling your locals or hubs is a
  427.           different matter.  They should be in RECV-ONLY mode and  you
  428.           can  expect  every  call to connect the first try.  The call
  429.           attempt limit doesn't apply to this situation and the  SEND-
  430.           ONLY  command  should  be used to shorten the time needed to
  431.           POLL everyone.
  432.  
  433.           NO-ROUTE <addressee list>
  434.  
  435.                This command tells Fido "Do not send messages addressed
  436.           to these nodes anywhere but to the addressed  nodes.   Treat
  437.           them  as though they have files attached, whether they do or
  438.           not."
  439.  
  440.                This lets you say things like Fido 100/76 (in Illinois)
  441.           might:
  442.  
  443.           SEND-TO 100/10        ; Outbound Host (in Missouri)
  444.           ROUTE-TO 100/10 ALL   ; Send everything to accross the river
  445.           NO-ROUTE 100/482      ; Except other Illinois traffic
  446.  
  447.                The  only  other  way to achieve this end is to list in
  448.           the ROUTE-TO command all 500 odd nodes whose messages should
  449.           be routed to 100/10, and that list changes every week!
  450.  
  451.                Now  you  should have a good handle on how the commands
  452.           used in ROUTE.<tag> control  how  Fido  SENDS  files  during
  453.           schedule  <tag>.   But sometimes these commands require very
  454.           long lists of node numbers which change from week to week as
  455.           the  node  list  changes.  LISTGEN 2 will generate the route
  456.           files automatically and  let  you  specify  the  long  lists
  457.           symbolically  in terms of nets, area codes, etc..  Next week
  458.           in  the  last  part  of  this  series,  we'll  see  how  the
  459.           statements  in  LISTGEN's  ROUTE.CTL  file correspond to the
  460.           commands in ROUTE.<tag>.
  461.  
  462.           ------------------------------------------------------------
  463.  
  464.  
  465.  
  466.                          FidoNet Route Files Explained
  467.                         Part 4 -- LISTGEN and ROUTE.CTL
  468.  
  469.                            by Ben Baker, Fido 100/76
  470.  
  471.  
  472.                LISTGEN  Version  2  will  automatically generate route
  473.           files for you if you desire.  The advantage is that  LISTGEN
  474.           is driven by a control file, ROUTE.CTL, in which you specify
  475.           the statements necessary with symbolic parameters  that  you
  476.           define  in  terms  of  nets,  area  codes, etc..  A properly
  477.           designed ROUTE.CTL need only change when your routing  needs
  478.           change.  LISTGEN will continue to create correct route files
  479.           week after week as the nodelist changes.
  480.  
  481.                Before I begin, I'd like to do a quick  review  of  the
  482.           route file commands and their effect.
  483.  
  484.           SCHEDULE <tag> <list> or
  485.           SEND-TO <list>               Determines which nodes may have
  486.                                        packets build to SEND mail to.
  487.           ROUTE-TO <target> <list>     Directs that messages  to  par-
  488.                                        ticular  addressees  be SENT in
  489.                                        packets to another node.
  490.           ACCEPT-FROM <list>           Specifies  which   oritinators'
  491.                                        messages may be SENT.
  492.           RECV-ONLY                    States that packets may only be
  493.                                        SENT by being picked up.
  494.           HOLD <list>                  States that  packets  to  part-
  495.                                        icular  nodes  may only be SENT
  496.                                        by being picked up.
  497.           PICK-UP <list>               States that it is OK to receive
  498.                                        mail from particular nodes when
  499.                                        we originate calls to SEND them
  500.                                        packets.
  501.           POLL <list>                  Directs that packets (empty  if
  502.                                        necessary)   be  generated  and
  503.                                        SENT  to  particular  nodes  in
  504.                                        order to pick up mail.
  505.           SEND-ONLY                    States  that  calls may be made
  506.                                        rapid-fire  to  SEND  as   many
  507.                                        packets as possible.
  508.  
  509.                Note that each definition above includes the verb  SEND
  510.           or  SENT.   I  did that deliberately to emphasize that these
  511.           commands all control some aspect of sending mail.
  512.  
  513.                LISTGEN has been adaquately documented  and  I  do  not
  514.           intend  to re-document it here, but I would like to show you
  515.           how ROUTE.CTL  commands  map  to  the  ROUTE.<tag>  commands
  516.           covered above.
  517.  
  518.           SCHEDULE <tag> <target list>
  519.  
  520.                When  LISTGEN  encounters  this command in ROUTE.CTL it
  521.           does two things.  First it closes any route file it  may  be
  522.           working  on  and  creates a new ROUTE.<tag> file for the new
  523.           <tag>.  Then it generates  a  SCHEDULE  statement  from  the
  524.           specifications   in   this  one  for  the  new  ROUTE.<tag>,
  525.           expanding any symbolic parameters to lists of nodes from the
  526.           nodelist.  In other words, it begins a new route file as you
  527.           would expect it to by defining the <target list>.
  528.  
  529.           FROM <accept list>
  530.  
  531.                This phrase, when encountered, generates an ACCEPT-FROM
  532.           statement.
  533.  
  534.           TO <addressee list> [ VIA <target> ]
  535.  
  536.                If  the VIA clause is present, this statement generates
  537.           a  "ROUTE-TO  <target>  <addressee  list>."  Successive   TO
  538.           phrases  without  VIA  clauses  accumulate  to make a larger
  539.           <addressee list> until a VIA  clause  IS  found.   Then  the
  540.           entire  list  is  routed to the <target>.  (I'm not entirely
  541.           happy with this "feature," but that's the way it works.)  If
  542.           no  VIA  clause  is  ever  found, the TO phrase generates no
  543.           output at all!  It  does  serve  as  documentation  in  your
  544.           ROUTE.CTL file, saying "I expect to be sending mail TO these
  545.           nodes in this schedule."
  546.  
  547.                All of the other route file  commands  discussed  above
  548.           map  one-for-one  in  the  same  format  from  ROUTE.CTL  to
  549.           ROUTE.<tag>.
  550.  
  551.                The big advantage in using LISTGEN is to be able to use
  552.           simple  symbols  which  it will translate into long lists of
  553.           nodes.  To illustrate, net 100 spans two area codes, 314  in
  554.           Missouri  and  618  in  Illinois.  To minimize the number of
  555.           toll calls placed accross the Mississippi, I serve as "Metro
  556.           East"  hub  to concentrate the Illinois traffic.  I have the
  557.           following statements (among others) in my ROUTE.CTL file:
  558.  
  559.           define Metro-East as Net-100 except Area-314 ; Area 618
  560.           define Outbound as 100/10
  561.           define World as all except Metro-East
  562.             *  *  *
  563.           FROM Metro-East TO World VIA Outbound
  564.  
  565.                Nodes may come and go, both in our net and  across  the
  566.           country,  and  these  statements  need  not change.  LISTGEN
  567.           interprets them week after week and builds the  right  route
  568.           files  every  time.   And in several months, if our outbound
  569.           host should change making it necessary to change  ROUTE.CTL,
  570.           I  can  look  at this and not have to say to myself "What on
  571.           earth was I trying to do here?" It's all pretty obvious.
  572.  
  573.                Before I wrap it up, there are two important exceptions
  574.           to  the things I have said.  First, schedule A is special in
  575.           that the <target list> always is  the  entire  nodelist,  no
  576.           matter  what  ROUTE.A  says.  For that reason, if you do any
  577.           routing not defined by the node list, I recommend  that  you
  578.           DO  NOT  USE SCHEDULE A.  For all other schedules, Fido does
  579.           exactly what ROUTE.<tag> tells it to do  and  nothing  more.
  580.           And  second,  ROUTE.BBS is a special route file that affects
  581.           all schedules for which there are no ROUTE.<tag> files.  For
  582.           that  reason,  I recommend that you FORGET YOU EVER HEARD OF
  583.           ROUTE.BBS.  It'll cause more problems than it'll ever solve!
  584.  
  585.                So,  routing  can  get  pretty complex (just ask 'em in
  586.           Southern California), but it doesn't need to be  complicated
  587.           once  you  know  what the objective of each schedule is from
  588.           your point of view, and what your Fido needs to do  to  meet
  589.           those objectives.
  590.  
  591.                In  fact, it's pretty easy if you just remember the two
  592.           points I have been hammering at you since we began:
  593.  
  594.                1) Route files control the way you send  messages,  not
  595.           the  way you receive them.  Every command we discussed above
  596.           controls some aspect of sending messages.  And.  .  .
  597.  
  598.                2) A particular route file only  affects  the  schedule
  599.           with  the  matching  <tag>.   What you say in ROUTE.B has no
  600.           bearing whatever on  schedule  C.   Each  schedule  must  be
  601.           separately spelled out.
  602.