Last update 22-Oct-2001

MBSE BBS Netmail routing behaviour

Introduction

The mbfido program that is responsible for unpacking, importing, exporting and routing of netmail has a build in default routing plan. In general this is quite simple, if we know the destination node or his uplink, (that node or uplink is in our setup), then we will route via that node in our setup. If the node or his uplink is not in our setup, then the nodelist is used and normal fidonet routing is used. This means, if you are a node, everything goes to your hub, if you are a hub, then mail for your downlinks will go direct to the downlinks because they are in your setup, everything else goes to the host. If you are a host, then your own downlinks will get the mail direct, the downlinks of the hubs in your net well be routed via the hubs below you. If it is for a node in your region but outside your net, mail will be routed via the other hosts in your region. Mail to outside your region will go to the region coordinators system.

 

Tracking and bouncing

At this moment there is no bouncing of undeliverable mail. I will built this in, but it will only work inside your own net. I will never include code for bouncing mail outside your net, because nodelists are always not uptodate.

 

Special routing

What if you need special routing. The solution is simple, add the routing nodes to your setup and fill in the "route via" field. If you don't have a session password with that node, leave the password fields blank. This node will never know that he is in your setup as long as you have the notify settings for that node switched off. To figure out such solutions yourself, I have included the flow diagrams for the tracking module.

 

Main tracking routine:


	+=============================+
	|     Trackmail to dest.      |
	+--------------+--------------+
		       |
	++-------------+-------------++
	||   rc = GetRoute to dest   || (See next diagram).
	++-------------+-------------++
		       |
	+--------------+--------------+  yes
	|       rc = R_NOROUTE        +-----------------+
	+--------------+--------------+		+-------+--------+
		       | no			| res: R_NOROUTE |
		       |			+================+
	+--------------+--------------+  yes
	|       rc = R_UNLISTED       +-----------------+
	+--------------+--------------+		+-------+--------+
		       |			| res: R_UNLISTED|
		       |			+----------------+
	+--------------+--------------+  yes
	|        rc = R_LOCAL         +-----------------+
	+--------------+--------------+		+-------+--------+
		       | no			| result: R_LOCAL|
		       |			+================+
	+--------------+--------------+  no
	|   routing node in setup ?   +-----------------+
	+--------------+--------------+		+-------+--------+
		       | yes			|   result:  rc  |
		       |			+================+
	+--------------+--------------+  no
	|   "Route via" filled in ?   +-----------------+
	+--------------+--------------+		+-------+--------+
		       | yes			|  res: R_ROUTE  |
		       |			+================+
	+--------------+--------------+
	|   Change route to address   |
	|       result = R_ROUTE      |
	+=============================+

Sub function GetRoute:


	+=============================+
	|          GetRoute           |
	+--------------+--------------+
		       |   
	+--------------+--------------+
	|      Add domain name	      |
	+--------------+--------------+
		       |
	+--------------+--------------+ yes
	|  Is dest our own address ?  +------------------+
	+--------------+--------------+		+--------+-------+
		       | no			|   rc = R_LOCAL |
		       |			+================+
	+--------------+--------------+ yes
	| Is dest our point address ? +------------------+
	+--------------+--------------+		+--------+-------+
		       | no			|  rc = R_DIRECT |
		       |			+================+
	+--------------+--------------+ yes (route to boss)
	|    Are we a point system    +------------------+
	+--------------+--------------+		+--------+-------+
		       | no			| dest is my Boss|
		       |                        |  res: R_DIRECT |
		       |			+----------------+
	+--------------+--------------+ yes
	| Dest. addr. in nodes setup? +------------------+
	+--------------+--------------+		+--------+-------+
		       | no			|  rc = R_DIRECT |
		       |			+================+
	+--------------+--------------+ yes
	| Boss of point dest in setup +------------------+
	+--------------+--------------+		+--------+-------+
		       | no			|  rc = R_DIRECT |
		       |			|   dest = Boss  |
		       |			+================+
	+--------------+--------------+ 
	| Is node listed and do we    | yes
        | know his uplink in setup ?  +------------------+
	+--------------+--------------+		+--------+-------+
		       | no			| dest is uplink |
		       |			|  rc = R_DIRECT |
		       |			+================+
	+--------------+--------------+ yes
	|   Are we host in network ?  +------------------+
	+--------------+--------------+		+--------+-------+
		       | no			| Set host addr. |
		       |			+--------+-------+
		       |				 +----------+
	+--------------+--------------+ yes			    |
	|    Are we hub in domain ?   +------------------+	    |
	+--------------+--------------+		+--------+-------+  |
		       | no			|  Set hub addr. |  v
		       |			+--------+-------+  |
		       |				 |	    |
		       +---------------<-----------------+-----<----+
		       |
	+--------------+--------------+
	|    Set our region number    |
	+--------------+--------------+
		       |
		       |
	+--------------+--------------+ no
	|       Host address set ?    +-----------------------------+
	+--------------+--------------+				    |
		       | yes					    |
		       |					    |
	+--------------+--------------+ 
        |  Dest region <> our region  | yes			    |
	|  or Dest zone <> our zone   +------------------+	    |
	+--------------+--------------+		+--------+-------+  |
		       | no			|   Dest to RC   |  |
		       |			|  rc = R_ROUTE  |  |
		       |			+================+  |
	+--------------+--------------+ yes			    |
	|     Dest net <> our net     +------------------+	    |
	+--------------+--------------+		+--------+-------+  |
		       | no			| to host destnet|  |
		       |			|  rc = R_ROUTE  |  |
		       |			+================+  |
	+--------------+--------------+ yes			    |
	|       Has node a hub        +------------------+	    |
	+--------------+--------------+		+--------+-------+  |
		       | yes			| to node's hub  |  |
		+------+--------+		|  rc = R_ROUTE  |  |
		| dest is direct|		+================+  |
		|  rc = R_ROUTE |				    |
		+===============+				    |
								    |
		       +------------------------<-------------------+
	+--------------+--------------+ no
	|       Hub address set ?     +-----------------+
	+--------------+--------------+		+-------+--------+
		       | yes			|  via our hub   |
		       |			|  rc = R_ROUTE  |
		       |			+================+
	+--------------+--------------+ yes
	|  Dest node of our hub addr  +-----------------+
	+--------------+--------------+		+-------+--------+
		       | no			|  rc = R_DIRECT |
		       |			+================+
		+------+-------+
		| dest is host |
		| rc = R_ROUTE |
		+==============+

BackGo Back