Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 29c369053a983cc5d8c880dc6e0a2237 > files > 1437

libdtn-devel-2.6.0-2mdv2009.1.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>DTN Reference Implementation: dtn::TableBasedRouter Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.8 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="namespacedtn.html">dtn</a>::<a class="el" href="classdtn_1_1TableBasedRouter.html">TableBasedRouter</a>
  </div>
</div>
<div class="contents">
<h1>dtn::TableBasedRouter Class Reference</h1><!-- doxytag: class="dtn::TableBasedRouter" --><!-- doxytag: inherits="dtn::BundleRouter" -->This is an abstract class that is intended to be used for all routing algorithms that store routing state in a table.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="TableBasedRouter_8h-source.html">TableBasedRouter.h</a>&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for dtn::TableBasedRouter:</div>
<div class="dynsection">

<p><center><img src="classdtn_1_1TableBasedRouter.png" usemap="#dtn::TableBasedRouter_map" border="0" alt=""></center>
<map name="dtn::TableBasedRouter_map">
<area href="classdtn_1_1BundleRouter.html" alt="dtn::BundleRouter" shape="rect" coords="241,56,392,80">
<area href="classdtn_1_1BundleEventHandler.html" alt="dtn::BundleEventHandler" shape="rect" coords="241,0,392,24">
<area href="classdtn_1_1DTLSRRouter.html" alt="dtn::DTLSRRouter" shape="rect" coords="0,168,151,192">
<area href="classdtn_1_1FloodBundleRouter.html" alt="dtn::FloodBundleRouter" shape="rect" coords="161,168,312,192">
<area href="classdtn_1_1StaticBundleRouter.html" alt="dtn::StaticBundleRouter" shape="rect" coords="322,168,473,192">
<area href="classdtn_1_1TcaRouter.html" alt="dtn::TcaRouter" shape="rect" coords="483,168,634,192">
</map>
</div>

<p>
<a href="classdtn_1_1TableBasedRouter-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter_1_1DeferredList.html">DeferredList</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Per-link class used to store deferred transmission bundles that helps cache route computations.  <a href="classdtn_1_1TableBasedRouter_1_1DeferredList.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter_1_1RerouteTimer.html">RerouteTimer</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Timer class used to cancel transmission on down links after waiting for them to potentially reopen.  <a href="classdtn_1_1TableBasedRouter_1_1RerouteTimer.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter_1_1ResubscribeTimer.html">ResubscribeTimer</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Timer class used to periodically refresh subscriptions.  <a href="classdtn_1_1TableBasedRouter_1_1ResubscribeTimer.html#_details">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Protected Types</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef oasys::StringMap<br class="typebreak">
&lt; <a class="el" href="classdtn_1_1TableBasedRouter_1_1RerouteTimer.html">RerouteTimer</a> * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#0f3d17c2f282c283f277f5f5c7f49f95">RerouteTimerMap</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Table of reroute timers, indexed by the link name.  <a href="#0f3d17c2f282c283f277f5f5c7f49f95"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#a1727dca6f2c6bc0cf3f8dc371e93568">TableBasedRouter</a> (const char *classname, const std::string &amp;name)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor -- protected since this class is never instantiated by itself.  <a href="#a1727dca6f2c6bc0cf3f8dc371e93568"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#2b6549f8eac7612a408703026bd0f8d6">~TableBasedRouter</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor.  <a href="#2b6549f8eac7612a408703026bd0f8d6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#0a41a70c82d3a58ec0fc044dbe99dfe9">handle_event</a> (<a class="el" href="classdtn_1_1BundleEvent.html">BundleEvent</a> *event)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event handler overridden from <a class="el" href="classdtn_1_1BundleRouter.html" title="The BundleRouter is the main decision maker for all routing decisions related to...">BundleRouter</a> / <a class="el" href="classdtn_1_1BundleEventHandler.html" title="Both the BundleDaemon and all the BundleRouter classes need to process the various...">BundleEventHandler</a> that dispatches to the type specific handlers where appropriate.  <a href="#0a41a70c82d3a58ec0fc044dbe99dfe9"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#c7e05bea7fada765cb85bc589e8fe9ab">get_routing_state</a> (oasys::StringBuffer *<a class="el" href="num2sdnv_8c.html#a81cdcc7ff6987bc85c073253e32715f">buf</a>)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Dump the routing state.  <a href="#c7e05bea7fada765cb85bc589e8fe9ab"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#b84236fc3f6862121bb83088b2e35d42">tcl_dump_state</a> (oasys::StringBuffer *<a class="el" href="num2sdnv_8c.html#a81cdcc7ff6987bc85c073253e32715f">buf</a>)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a tcl version of the routing state.  <a href="#b84236fc3f6862121bb83088b2e35d42"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#118c2a374824c8ba1fcf2e7388c0af74">add_route</a> (<a class="el" href="classdtn_1_1RouteEntry.html">RouteEntry</a> *entry)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a route entry to the routing table.  <a href="#118c2a374824c8ba1fcf2e7388c0af74"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#5cbd7ee9f918a8c833bb0d82f0df9155">del_route</a> (const <a class="el" href="classdtn_1_1EndpointIDPattern.html">EndpointIDPattern</a> &amp;id)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove matrhing route entry(s) from the routing table.  <a href="#5cbd7ee9f918a8c833bb0d82f0df9155"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#d5d66b2ef80180677d4cf5093bcaf009">handle_changed_routes</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Update forwarding state due to changed routes.  <a href="#d5d66b2ef80180677d4cf5093bcaf009"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#4bac86cb57a6b1b7350f8471d890bb2f">fwd_to_nexthop</a> (<a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *bundle, <a class="el" href="classdtn_1_1RouteEntry.html">RouteEntry</a> *route)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Try to forward a bundle to a next hop route.  <a href="#4bac86cb57a6b1b7350f8471d890bb2f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#08961b48157a280be9cb160158903a82">should_fwd</a> (const <a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *bundle, <a class="el" href="classdtn_1_1RouteEntry.html">RouteEntry</a> *route)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if the bundle should be forwarded to the given next hop.  <a href="#08961b48157a280be9cb160158903a82"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#2e313494d5804ecac9399a3685e32734">route_bundle</a> (<a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *bundle)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check the route table entries that match the given bundle and have not already been found in the bundle history.  <a href="#2e313494d5804ecac9399a3685e32734"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#33e876c5a09869489c60f892a9fbb909">sort_routes</a> (<a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *bundle, <a class="el" href="classdtn_1_1RouteEntryVec.html">RouteEntryVec</a> *routes)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Once a vector of matching routes has been found, sort the vector.  <a href="#33e876c5a09869489c60f892a9fbb909"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#c94ac84e21dbf45fd6ccd8fb37b0bd97">check_next_hop</a> (const <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> &amp;next_hop)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Called when the next hop link is available for transmission (i.e.  <a href="#c94ac84e21dbf45fd6ccd8fb37b0bd97"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#3e5d2926a1b0cf5cabbef44eafd21bb7">reroute_all_bundles</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Go through all known bundles in the system and try to re-route them.  <a href="#3e5d2926a1b0cf5cabbef44eafd21bb7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#7339ab822d11b9cf8c83ae608e79058e">recompute_routes</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generic hook in response to the command line indication that we should reroute all bundles.  <a href="#7339ab822d11b9cf8c83ae608e79058e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#822c4f8e15dab2c379dad968431c1f27">add_nexthop_route</a> (const <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> &amp;link)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">When new links are added or opened, and if we're configured to add nexthop routes, try to add a new route for the given link.  <a href="#822c4f8e15dab2c379dad968431c1f27"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#feb96189b85d0035ad08874204bdc86b">can_delete_bundle</a> (const <a class="el" href="namespacedtn.html#87094f3b26b9f1d469e616d311ae57b1">BundleRef</a> &amp;bundle)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Hook to ask the router if the bundle can be deleted.  <a href="#feb96189b85d0035ad08874204bdc86b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#469390b9ba77d858ed51d5d80176407e">delete_bundle</a> (const <a class="el" href="namespacedtn.html#87094f3b26b9f1d469e616d311ae57b1">BundleRef</a> &amp;bundle)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Hook to tell the router that the bundle should be deleted.  <a href="#469390b9ba77d858ed51d5d80176407e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#0999e77477c37efdf9709fd3f0928b05">remove_from_deferred</a> (const <a class="el" href="namespacedtn.html#87094f3b26b9f1d469e616d311ae57b1">BundleRef</a> &amp;bundle, int actions)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove matching deferred transmission entries.  <a href="#0999e77477c37efdf9709fd3f0928b05"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#7ea4067686f50b1656df26c896aea369">reroute_bundles</a> (const <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> &amp;link)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Helper function for rerouting.  <a href="#7ea4067686f50b1656df26c896aea369"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classdtn_1_1TableBasedRouter_1_1DeferredList.html">DeferredList</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#8b9aa9d3859cb6bbc3a8fc5fa30775c6">deferred_list</a> (const <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> &amp;link)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Helper accessor to return the deferred queue for a link.  <a href="#8b9aa9d3859cb6bbc3a8fc5fa30775c6"></a><br></td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#f85d95a59fe4ae2217ed2c9b0c6cb662">handle_bundle_received</a> (<a class="el" href="classdtn_1_1BundleReceivedEvent.html">BundleReceivedEvent</a> *event)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event handlers.  <a href="#f85d95a59fe4ae2217ed2c9b0c6cb662"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#c021068d7b1e9802cc3507d6825ba245">handle_bundle_transmitted</a> (<a class="el" href="classdtn_1_1BundleTransmittedEvent.html">BundleTransmittedEvent</a> *event)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event handlers.  <a href="#c021068d7b1e9802cc3507d6825ba245"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#8cc4cee7d37567989384b3c70c33f938">handle_bundle_cancelled</a> (<a class="el" href="classdtn_1_1BundleSendCancelledEvent.html">BundleSendCancelledEvent</a> *event)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event handlers.  <a href="#8cc4cee7d37567989384b3c70c33f938"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#7ffd58d58cac80337e17c53869d7f6dd">handle_route_add</a> (<a class="el" href="classdtn_1_1RouteAddEvent.html">RouteAddEvent</a> *event)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event handlers.  <a href="#7ffd58d58cac80337e17c53869d7f6dd"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#aeaa4b9e5557810958ac0e48768a0a28">handle_route_del</a> (<a class="el" href="classdtn_1_1RouteDelEvent.html">RouteDelEvent</a> *event)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event handlers.  <a href="#aeaa4b9e5557810958ac0e48768a0a28"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#898f2c517d6c8b0635c2ac19a5c3425a">handle_contact_up</a> (<a class="el" href="classdtn_1_1ContactUpEvent.html">ContactUpEvent</a> *event)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event handlers.  <a href="#898f2c517d6c8b0635c2ac19a5c3425a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#5b9a452a306adc7f97c998f3e7c585e3">handle_contact_down</a> (<a class="el" href="classdtn_1_1ContactDownEvent.html">ContactDownEvent</a> *event)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event handlers.  <a href="#5b9a452a306adc7f97c998f3e7c585e3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#32d765a2b27a3e41273884bf521a9122">handle_link_available</a> (<a class="el" href="classdtn_1_1LinkAvailableEvent.html">LinkAvailableEvent</a> *event)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event handlers.  <a href="#32d765a2b27a3e41273884bf521a9122"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#15d6e91c5362005ef5f5ee2cc9b667b8">handle_link_created</a> (<a class="el" href="classdtn_1_1LinkCreatedEvent.html">LinkCreatedEvent</a> *event)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event handlers.  <a href="#15d6e91c5362005ef5f5ee2cc9b667b8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#f18906e5ecdbe1dc6ff76b3d74bc41b0">handle_link_deleted</a> (<a class="el" href="classdtn_1_1LinkDeletedEvent.html">LinkDeletedEvent</a> *event)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event handlers.  <a href="#f18906e5ecdbe1dc6ff76b3d74bc41b0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#4fec130df59945e730febe93bf5b9372">handle_custody_timeout</a> (<a class="el" href="classdtn_1_1CustodyTimeoutEvent.html">CustodyTimeoutEvent</a> *event)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event handlers.  <a href="#4fec130df59945e730febe93bf5b9372"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#fab4ded007eddf5b49c3ff75eea74dd8">handle_registration_added</a> (<a class="el" href="classdtn_1_1RegistrationAddedEvent.html">RegistrationAddedEvent</a> *event)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event handlers.  <a href="#fab4ded007eddf5b49c3ff75eea74dd8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#14f12535527828c3a8e76f97f00c584c">handle_registration_removed</a> (<a class="el" href="classdtn_1_1RegistrationRemovedEvent.html">RegistrationRemovedEvent</a> *event)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event handlers.  <a href="#14f12535527828c3a8e76f97f00c584c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#777585bc5c45196cd7426c08f47375d5">handle_registration_expired</a> (<a class="el" href="classdtn_1_1RegistrationExpiredEvent.html">RegistrationExpiredEvent</a> *event)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Event handlers.  <a href="#777585bc5c45196cd7426c08f47375d5"></a><br></td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classdtn_1_1Session.html">Session</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#de9f9602a3734518769ac7a4bc324e79">get_session_for_bundle</a> (<a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *bundle)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classdtn_1_1Session.html" title="Class to manage a session.">Session</a> management helper functions.  <a href="#de9f9602a3734518769ac7a4bc324e79"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#c917dc5ba2a3e8d2c73adb3cad6033d3">add_bundle_to_session</a> (<a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *bundle, <a class="el" href="classdtn_1_1Session.html">Session</a> *session)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classdtn_1_1Session.html" title="Class to manage a session.">Session</a> management helper functions.  <a href="#c917dc5ba2a3e8d2c73adb3cad6033d3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#8eefa1b03ae7e19a168205af67d4173b">subscribe_to_session</a> (int action, <a class="el" href="classdtn_1_1Session.html">Session</a> *session)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classdtn_1_1Session.html" title="Class to manage a session.">Session</a> management helper functions.  <a href="#8eefa1b03ae7e19a168205af67d4173b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#6f94fb99000ba969300ffee06b8a2d84">find_session_upstream</a> (<a class="el" href="classdtn_1_1Session.html">Session</a> *session)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classdtn_1_1Session.html" title="Class to manage a session.">Session</a> management helper functions.  <a href="#6f94fb99000ba969300ffee06b8a2d84"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#5a20afd32a3841641b60c8dab2c55986">reroute_all_sessions</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classdtn_1_1Session.html" title="Class to manage a session.">Session</a> management helper functions.  <a href="#5a20afd32a3841641b60c8dab2c55986"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#14061ba8016fc61a7556d44b1323f36c">handle_session_bundle</a> (<a class="el" href="classdtn_1_1BundleReceivedEvent.html">BundleReceivedEvent</a> *event)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classdtn_1_1Session.html" title="Class to manage a session.">Session</a> management helper functions.  <a href="#14061ba8016fc61a7556d44b1323f36c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#81dfb7a82261a5ee3baa1226c4bc2b1c">add_subscriber</a> (<a class="el" href="classdtn_1_1Session.html">Session</a> *session, const <a class="el" href="classdtn_1_1EndpointID.html">EndpointID</a> &amp;peer, const <a class="el" href="classdtn_1_1SequenceID.html">SequenceID</a> &amp;known_seqid)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classdtn_1_1Session.html" title="Class to manage a session.">Session</a> management helper functions.  <a href="#81dfb7a82261a5ee3baa1226c4bc2b1c"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classdtn_1_1BundleInfoCache.html">BundleInfoCache</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#794be5288550f7294907e058fc21a98f">reception_cache_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cache to check for duplicates and to implement a simple RPF check.  <a href="#794be5288550f7294907e058fc21a98f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classdtn_1_1RouteTable.html">RouteTable</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#83939b60c495ff450a1e95787c811297">route_table_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The routing table.  <a href="#83939b60c495ff450a1e95787c811297"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classdtn_1_1SessionTable.html">SessionTable</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#15781c2af48938de09c75f010e40071a">sessions_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classdtn_1_1Session.html" title="Class to manage a session.">Session</a> state management table.  <a href="#15781c2af48938de09c75f010e40071a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classdtn_1_1RegistrationList.html">RegistrationList</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#82bda89e14b56877e7b4dce41ebd5261">session_custodians_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Vector of session custodian registrations.  <a href="#82bda89e14b56877e7b4dce41ebd5261"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classdtn_1_1TableBasedRouter.html#0f3d17c2f282c283f277f5f5c7f49f95">RerouteTimerMap</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#601cf75bb9ad55256211e63b3d34b4d9">reroute_timers_</a></td></tr>

<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1TableBasedRouter.html#e76c969f4f466488fef519f992eef9e6">RerouteTimer</a></td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
This is an abstract class that is intended to be used for all routing algorithms that store routing state in a table. 
<p>Definition at line <a class="el" href="TableBasedRouter_8h-source.html#l00038">38</a> of file <a class="el" href="TableBasedRouter_8h-source.html">TableBasedRouter.h</a>.</p>
<hr><h2>Member Typedef Documentation</h2>
<a class="anchor" name="0f3d17c2f282c283f277f5f5c7f49f95"></a><!-- doxytag: member="dtn::TableBasedRouter::RerouteTimerMap" ref="0f3d17c2f282c283f277f5f5c7f49f95" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef oasys::StringMap&lt;<a class="el" href="classdtn_1_1TableBasedRouter_1_1RerouteTimer.html">RerouteTimer</a>*&gt; <a class="el" href="classdtn_1_1TableBasedRouter.html#0f3d17c2f282c283f277f5f5c7f49f95">dtn::TableBasedRouter::RerouteTimerMap</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Table of reroute timers, indexed by the link name. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8h-source.html#l00223">223</a> of file <a class="el" href="TableBasedRouter_8h-source.html">TableBasedRouter.h</a>.</p>

</div>
</div><p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="a1727dca6f2c6bc0cf3f8dc371e93568"></a><!-- doxytag: member="dtn::TableBasedRouter::TableBasedRouter" ref="a1727dca6f2c6bc0cf3f8dc371e93568" args="(const char *classname, const std::string &amp;name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">dtn::TableBasedRouter::TableBasedRouter           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>classname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Constructor -- protected since this class is never instantiated by itself. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00035">35</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="TableBasedRouter_8h-source.html#l00194">route_table_</a>.</p>

</div>
</div><p>
<a class="anchor" name="2b6549f8eac7612a408703026bd0f8d6"></a><!-- doxytag: member="dtn::TableBasedRouter::~TableBasedRouter" ref="2b6549f8eac7612a408703026bd0f8d6" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">dtn::TableBasedRouter::~TableBasedRouter           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Destructor. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00045">45</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="TableBasedRouter_8h-source.html#l00194">route_table_</a>.</p>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="c917dc5ba2a3e8d2c73adb3cad6033d3"></a><!-- doxytag: member="dtn::TableBasedRouter::add_bundle_to_session" ref="c917dc5ba2a3e8d2c73adb3cad6033d3" args="(Bundle *bundle, Session *session)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> dtn::TableBasedRouter::add_bundle_to_session           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *&nbsp;</td>
          <td class="paramname"> <em>bundle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classdtn_1_1Session.html">Session</a> *&nbsp;</td>
          <td class="paramname"> <em>session</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classdtn_1_1Session.html" title="Class to manage a session.">Session</a> management helper functions. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00126">126</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="BundleList_8cc-source.html#l00475">dtn::BundleList::begin()</a>, <a class="el" href="Session_8h-source.html#l00078">dtn::Session::bundles()</a>, <a class="el" href="SequenceID_8h-source.html#l00148">dtn::SequenceID::empty()</a>, <a class="el" href="BundleList_8cc-source.html#l00488">dtn::BundleList::end()</a>, <a class="el" href="BundleList_8cc-source.html#l00275">dtn::BundleList::erase()</a>, <a class="el" href="bundling_2BundleList_8h-source.html#l00285">dtn::BundleList::lock()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00229">dtn::Bundle::obsoletes_id()</a>, <a class="el" href="BundleDaemon_8cc-source.html#l00141">dtn::BundleDaemon::post_at_head()</a>, <a class="el" href="BundleList_8cc-source.html#l00130">dtn::BundleList::push_back()</a>, <a class="el" href="BundleProtocol_8h-source.html#l00128">dtn::BundleProtocol::REASON_DEPLETED_STORAGE</a>, <a class="el" href="Session_8h-source.html#l00079">dtn::Session::sequence_id()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00228">dtn::Bundle::sequence_id()</a>, and <a class="el" href="SequenceID_8cc-source.html#l00354">dtn::SequenceID::update()</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l00199">handle_bundle_received()</a>.</p>

</div>
</div><p>
<a class="anchor" name="822c4f8e15dab2c379dad968431c1f27"></a><!-- doxytag: member="dtn::TableBasedRouter::add_nexthop_route" ref="822c4f8e15dab2c379dad968431c1f27" args="(const LinkRef &amp;link)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::add_nexthop_route           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>link</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
When new links are added or opened, and if we're configured to add nexthop routes, try to add a new route for the given link. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00394">394</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="BundleRouter_8h-source.html#l00080">dtn::BundleRouter::BundleRouter::Config::add_nexthop_routes_</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00052">add_route()</a>, <a class="el" href="BundleRouter_8cc-source.html#l00049">dtn::BundleRouter::config_</a>, <a class="el" href="ForwardingInfo_8h-source.html#l00045">dtn::ForwardingInfo::FORWARD_ACTION</a>, <a class="el" href="RouteTable_8cc-source.html#l00107">dtn::RouteTable::get_matching()</a>, <a class="el" href="EndpointID_8h-source.html#l00358">dtn::EndpointID::NULL_EID()</a>, <a class="el" href="TableBasedRouter_8h-source.html#l00194">route_table_</a>, and <a class="el" href="RouteEntry_8h-source.html#l00133">dtn::RouteEntry::set_action()</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l00450">handle_contact_up()</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l00577">handle_link_created()</a>.</p>

</div>
</div><p>
<a class="anchor" name="118c2a374824c8ba1fcf2e7388c0af74"></a><!-- doxytag: member="dtn::TableBasedRouter::add_route" ref="118c2a374824c8ba1fcf2e7388c0af74" args="(RouteEntry *entry)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::add_route           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1RouteEntry.html">RouteEntry</a> *&nbsp;</td>
          <td class="paramname"> <em>entry</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add a route entry to the routing table. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00052">52</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="RouteTable_8cc-source.html#l00039">dtn::RouteTable::add_entry()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00073">handle_changed_routes()</a>, and <a class="el" href="TableBasedRouter_8h-source.html#l00194">route_table_</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l00394">add_nexthop_route()</a>, <a class="el" href="FloodBundleRouter_8cc-source.html#l00066">dtn::FloodBundleRouter::handle_link_created()</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l00380">handle_route_add()</a>.</p>

</div>
</div><p>
<a class="anchor" name="81dfb7a82261a5ee3baa1226c4bc2b1c"></a><!-- doxytag: member="dtn::TableBasedRouter::add_subscriber" ref="81dfb7a82261a5ee3baa1226c4bc2b1c" args="(Session *session, const EndpointID &amp;peer, const SequenceID &amp;known_seqid)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::add_subscriber           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1Session.html">Session</a> *&nbsp;</td>
          <td class="paramname"> <em>session</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classdtn_1_1EndpointID.html">EndpointID</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>peer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classdtn_1_1SequenceID.html">SequenceID</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>known_seqid</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classdtn_1_1Session.html" title="Class to manage a session.">Session</a> management helper functions. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l01295">1295</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="ForwardingLog_8cc-source.html#l00204">dtn::ForwardingLog::add_entry()</a>, <a class="el" href="RouteTable_8cc-source.html#l00039">dtn::RouteTable::add_entry()</a>, <a class="el" href="Session_8cc-source.html#l00085">dtn::Session::add_subscriber()</a>, <a class="el" href="BundleList_8cc-source.html#l00475">dtn::BundleList::begin()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00201">dtn::Bundle::bundleid()</a>, <a class="el" href="Session_8h-source.html#l00078">dtn::Session::bundles()</a>, <a class="el" href="EndpointID_8h-source.html#l00264">dtn::EndpointID::c_str()</a>, <a class="el" href="ForwardingInfo_8h-source.html#l00046">dtn::ForwardingInfo::COPY_ACTION</a>, <a class="el" href="Session_8h-source.html#l00075">dtn::Session::eid()</a>, <a class="el" href="SequenceID_8h-source.html#l00148">dtn::SequenceID::empty()</a>, <a class="el" href="BundleList_8cc-source.html#l00488">dtn::BundleList::end()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00233">dtn::Bundle::fwdlog()</a>, <a class="el" href="bundling_2BundleList_8h-source.html#l00285">dtn::BundleList::lock()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00728">route_bundle()</a>, <a class="el" href="TableBasedRouter_8h-source.html#l00194">route_table_</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00228">dtn::Bundle::sequence_id()</a>, <a class="el" href="RouteEntry_8h-source.html#l00133">dtn::RouteEntry::set_action()</a>, <a class="el" href="BundleList_8cc-source.html#l00459">dtn::BundleList::size()</a>, and <a class="el" href="ForwardingInfo_8h-source.html#l00077">dtn::ForwardingInfo::SUPPRESSED</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l01227">find_session_upstream()</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l01103">handle_session_bundle()</a>.</p>

</div>
</div><p>
<a class="anchor" name="feb96189b85d0035ad08874204bdc86b"></a><!-- doxytag: member="dtn::TableBasedRouter::can_delete_bundle" ref="feb96189b85d0035ad08874204bdc86b" args="(const BundleRef &amp;bundle)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> dtn::TableBasedRouter::can_delete_bundle           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacedtn.html#87094f3b26b9f1d469e616d311ae57b1">BundleRef</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>bundle</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Hook to ask the router if the bundle can be deleted. 
<p>

<p>Reimplemented from <a class="el" href="classdtn_1_1BundleRouter.html#50702bb5cf9c4e2b9be0a7b452c94629">dtn::BundleRouter</a>.</p>

<p>Reimplemented in <a class="el" href="classdtn_1_1DTLSRRouter.html#2820245e08b955fa33bf8b5dbaaca00c">dtn::DTLSRRouter</a>.</p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00304">304</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="ForwardingInfo_8h-source.html#l00076">dtn::ForwardingInfo::DELIVERED</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00091">get_session_for_bundle()</a>, <a class="el" href="Session_8h-source.html#l00077">dtn::Session::subscribers()</a>, and <a class="el" href="ForwardingInfo_8h-source.html#l00072">dtn::ForwardingInfo::TRANSMITTED</a>.</p>

<p>Referenced by <a class="el" href="DTLSRRouter_8cc-source.html#l00238">dtn::DTLSRRouter::can_delete_bundle()</a>.</p>

</div>
</div><p>
<a class="anchor" name="c94ac84e21dbf45fd6ccd8fb37b0bd97"></a><!-- doxytag: member="dtn::TableBasedRouter::check_next_hop" ref="c94ac84e21dbf45fd6ccd8fb37b0bd97" args="(const LinkRef &amp;next_hop)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::check_next_hop           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>next_hop</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Called when the next hop link is available for transmission (i.e. 
<p>
either when it first arrives and the contact is brought up or when a bundle is completed and it's no longer busy).<p>
Loops through the bundle list and calls fwd_to_matching on all bundles. 
<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00802">802</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="ForwardingInfo_8h-source.html#l00159">dtn::ForwardingInfo::action()</a>, <a class="el" href="BundleRouter_8h-source.html#l00204">dtn::BundleRouter::actions_</a>, <a class="el" href="ForwardingInfo_8h-source.html#l00164">dtn::ForwardingInfo::custody_spec()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00990">deferred_list()</a>, <a class="el" href="dtncat_8c-source.html#l00085">info</a>, <a class="el" href="BundleActions_8cc-source.html#l00033">dtn::BundleActions::open_link()</a>, <a class="el" href="BundleActions_8cc-source.html#l00078">dtn::BundleActions::queue_bundle()</a>, and <a class="el" href="BundleRouter_8cc-source.html#l00099">dtn::BundleRouter::should_fwd()</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l00287">handle_bundle_transmitted()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00450">handle_contact_up()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00556">handle_link_available()</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l00728">route_bundle()</a>.</p>

</div>
</div><p>
<a class="anchor" name="8b9aa9d3859cb6bbc3a8fc5fa30775c6"></a><!-- doxytag: member="dtn::TableBasedRouter::deferred_list" ref="8b9aa9d3859cb6bbc3a8fc5fa30775c6" args="(const LinkRef &amp;link)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classdtn_1_1TableBasedRouter_1_1DeferredList.html">TableBasedRouter::DeferredList</a> * dtn::TableBasedRouter::deferred_list           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>link</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Helper accessor to return the deferred queue for a link. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00990">990</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l00802">check_next_hop()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00670">fwd_to_nexthop()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00253">remove_from_deferred()</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l00728">route_bundle()</a>.</p>

</div>
</div><p>
<a class="anchor" name="5cbd7ee9f918a8c833bb0d82f0df9155"></a><!-- doxytag: member="dtn::TableBasedRouter::del_route" ref="5cbd7ee9f918a8c833bb0d82f0df9155" args="(const EndpointIDPattern &amp;id)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::del_route           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classdtn_1_1EndpointIDPattern.html">EndpointIDPattern</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>id</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Remove matrhing route entry(s) from the routing table. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00060">60</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="RouteTable_8cc-source.html#l00078">dtn::RouteTable::del_entries()</a>, <a class="el" href="BundleInfoCache_8cc-source.html#l00067">dtn::BundleInfoCache::evict_all()</a>, <a class="el" href="TableBasedRouter_8h-source.html#l00191">reception_cache_</a>, and <a class="el" href="TableBasedRouter_8h-source.html#l00194">route_table_</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l00387">handle_route_del()</a>.</p>

</div>
</div><p>
<a class="anchor" name="469390b9ba77d858ed51d5d80176407e"></a><!-- doxytag: member="dtn::TableBasedRouter::delete_bundle" ref="469390b9ba77d858ed51d5d80176407e" args="(const BundleRef &amp;bundle)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::delete_bundle           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacedtn.html#87094f3b26b9f1d469e616d311ae57b1">BundleRef</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>bundle</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Hook to tell the router that the bundle should be deleted. 
<p>

<p>Reimplemented from <a class="el" href="classdtn_1_1BundleRouter.html#4e48a822cf5f7b143cf641d26a12091f">dtn::BundleRouter</a>.</p>

<p>Reimplemented in <a class="el" href="classdtn_1_1DTLSRRouter.html#819cff8c7468bbcf0fe6ec13f386e7e0">dtn::DTLSRRouter</a>.</p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00342">342</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="ForwardingInfo_8h-source.html#l00053">dtn::ForwardingInfo::ANY_ACTION</a>, <a class="el" href="Session_8h-source.html#l00078">dtn::Session::bundles()</a>, <a class="el" href="BundleList_8cc-source.html#l00275">dtn::BundleList::erase()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00091">get_session_for_bundle()</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l00253">remove_from_deferred()</a>.</p>

</div>
</div><p>
<a class="anchor" name="6f94fb99000ba969300ffee06b8a2d84"></a><!-- doxytag: member="dtn::TableBasedRouter::find_session_upstream" ref="6f94fb99000ba969300ffee06b8a2d84" args="(Session *session)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> dtn::TableBasedRouter::find_session_upstream           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1Session.html">Session</a> *&nbsp;</td>
          <td class="paramname"> <em>session</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classdtn_1_1Session.html" title="Class to manage a session.">Session</a> management helper functions. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l01227">1227</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="TableBasedRouter_8cc-source.html#l01295">add_subscriber()</a>, <a class="el" href="EndpointID_8h-source.html#l00264">dtn::EndpointID::c_str()</a>, <a class="el" href="Session_8h-source.html#l00075">dtn::Session::eid()</a>, <a class="el" href="Registration_8h-source.html#l00115">dtn::Registration::endpoint()</a>, <a class="el" href="RouteTable_8cc-source.html#l00107">dtn::RouteTable::get_matching()</a>, <a class="el" href="EndpointID_8cc-source.html#l00197">dtn::EndpointIDPattern::match()</a>, <a class="el" href="EndpointID_8h-source.html#l00358">dtn::EndpointID::NULL_EID()</a>, <a class="el" href="Registration_8h-source.html#l00114">dtn::Registration::regid()</a>, <a class="el" href="TableBasedRouter_8h-source.html#l00194">route_table_</a>, <a class="el" href="TableBasedRouter_8h-source.html#l00200">session_custodians_</a>, <a class="el" href="Session_8cc-source.html#l00075">dtn::Session::set_upstream()</a>, <a class="el" href="EndpointID_8h-source.html#l00258">dtn::EndpointID::str()</a>, and <a class="el" href="Session_8h-source.html#l00076">dtn::Session::upstream()</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l01000">handle_registration_added()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l01103">handle_session_bundle()</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l01213">reroute_all_sessions()</a>.</p>

</div>
</div><p>
<a class="anchor" name="4bac86cb57a6b1b7350f8471d890bb2f"></a><!-- doxytag: member="dtn::TableBasedRouter::fwd_to_nexthop" ref="4bac86cb57a6b1b7350f8471d890bb2f" args="(Bundle *bundle, RouteEntry *route)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> dtn::TableBasedRouter::fwd_to_nexthop           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *&nbsp;</td>
          <td class="paramname"> <em>bundle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classdtn_1_1RouteEntry.html">RouteEntry</a> *&nbsp;</td>
          <td class="paramname"> <em>route</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Try to forward a bundle to a next hop route. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00670">670</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="RouteEntry_8h-source.html#l00125">dtn::RouteEntry::action()</a>, <a class="el" href="BundleRouter_8h-source.html#l00204">dtn::BundleRouter::actions_</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00948">dtn::TableBasedRouter::TableBasedRouter::DeferredList::add()</a>, <a class="el" href="RouteEntry_8h-source.html#l00123">dtn::RouteEntry::custody_spec()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00990">deferred_list()</a>, <a class="el" href="dtncat_8c-source.html#l00085">info</a>, <a class="el" href="Bundle_8cc-source.html#l00358">dtn::Bundle::is_queued_on()</a>, <a class="el" href="RouteEntry_8h-source.html#l00119">dtn::RouteEntry::link()</a>, <a class="el" href="TableBasedRouter_8h-source.html#l00233">dtn::TableBasedRouter::TableBasedRouter::DeferredList::list()</a>, <a class="el" href="ForwardingInfo_8h-source.html#l00070">dtn::ForwardingInfo::NONE</a>, <a class="el" href="BundleActions_8cc-source.html#l00033">dtn::BundleActions::open_link()</a>, and <a class="el" href="BundleActions_8cc-source.html#l00078">dtn::BundleActions::queue_bundle()</a>.</p>

<p>Referenced by <a class="el" href="TcaRouter_8cc-source.html#l00303">dtn::TcaRouter::fwd_to_all()</a>, <a class="el" href="TcaRouter_8cc-source.html#l00346">dtn::TcaRouter::fwd_to_matching_r()</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l00728">route_bundle()</a>.</p>

</div>
</div><p>
<a class="anchor" name="c7e05bea7fada765cb85bc589e8fe9ab"></a><!-- doxytag: member="dtn::TableBasedRouter::get_routing_state" ref="c7e05bea7fada765cb85bc589e8fe9ab" args="(oasys::StringBuffer *buf)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::get_routing_state           </td>
          <td>(</td>
          <td class="paramtype">oasys::StringBuffer *&nbsp;</td>
          <td class="paramname"> <em>buf</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Dump the routing state. 
<p>

<p>Implements <a class="el" href="classdtn_1_1BundleRouter.html#a0bfd372d2ae8e1c324e6beae5a31573">dtn::BundleRouter</a>.</p>

<p>Reimplemented in <a class="el" href="classdtn_1_1DTLSRRouter.html#3f070b730307f39d2febe44628495606">dtn::DTLSRRouter</a>.</p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00622">622</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="SessionTable_8cc-source.html#l00068">dtn::SessionTable::dump()</a>, <a class="el" href="RouteTable_8cc-source.html#l00176">dtn::RouteTable::dump()</a>, <a class="el" href="SessionTable_8h-source.html#l00045">dtn::SessionTable::empty()</a>, <a class="el" href="BundleRouter_8h-source.html#l00194">dtn::BundleRouter::name_</a>, <a class="el" href="TableBasedRouter_8h-source.html#l00194">route_table_</a>, <a class="el" href="TableBasedRouter_8h-source.html#l00200">session_custodians_</a>, <a class="el" href="TableBasedRouter_8h-source.html#l00197">sessions_</a>, and <a class="el" href="SessionTable_8h-source.html#l00046">dtn::SessionTable::size()</a>.</p>

</div>
</div><p>
<a class="anchor" name="de9f9602a3734518769ac7a4bc324e79"></a><!-- doxytag: member="dtn::TableBasedRouter::get_session_for_bundle" ref="de9f9602a3734518769ac7a4bc324e79" args="(Bundle *bundle)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classdtn_1_1Session.html">Session</a> * dtn::TableBasedRouter::get_session_for_bundle           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *&nbsp;</td>
          <td class="paramname"> <em>bundle</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classdtn_1_1Session.html" title="Class to manage a session.">Session</a> management helper functions. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00091">91</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="EndpointID_8h-source.html#l00084">dtn::EndpointID::assign()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00201">dtn::Bundle::bundleid()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00205">dtn::Bundle::dest()</a>, <a class="el" href="SequenceID_8h-source.html#l00148">dtn::SequenceID::empty()</a>, <a class="el" href="SessionTable_8cc-source.html#l00056">dtn::SessionTable::get_session()</a>, <a class="el" href="EndpointID_8h-source.html#l00266">dtn::EndpointID::length()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00229">dtn::Bundle::obsoletes_id()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00228">dtn::Bundle::sequence_id()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00230">dtn::Bundle::session_eid()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00231">dtn::Bundle::session_flags()</a>, <a class="el" href="TableBasedRouter_8h-source.html#l00197">sessions_</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00204">dtn::Bundle::source()</a>, <a class="el" href="EndpointID_8h-source.html#l00258">dtn::EndpointID::str()</a>, and <a class="el" href="EndpointID_8h-source.html#l00262">dtn::EndpointID::valid()</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l00304">can_delete_bundle()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00342">delete_bundle()</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l00199">handle_bundle_received()</a>.</p>

</div>
</div><p>
<a class="anchor" name="8cc4cee7d37567989384b3c70c33f938"></a><!-- doxytag: member="dtn::TableBasedRouter::handle_bundle_cancelled" ref="8cc4cee7d37567989384b3c70c33f938" args="(BundleSendCancelledEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::handle_bundle_cancelled           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1BundleSendCancelledEvent.html">BundleSendCancelledEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Event handlers. 
<p>

<p>Reimplemented from <a class="el" href="classdtn_1_1BundleEventHandler.html#e4a3c711993cb7b18fa23823f2449e10">dtn::BundleEventHandler</a>.</p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00366">366</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="bundling_2Bundle_8h-source.html#l00203">dtn::Bundle::expired()</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l00728">route_bundle()</a>.</p>

</div>
</div><p>
<a class="anchor" name="f85d95a59fe4ae2217ed2c9b0c6cb662"></a><!-- doxytag: member="dtn::TableBasedRouter::handle_bundle_received" ref="f85d95a59fe4ae2217ed2c9b0c6cb662" args="(BundleReceivedEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::handle_bundle_received           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1BundleReceivedEvent.html">BundleReceivedEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Event handlers. 
<p>

<p>Reimplemented from <a class="el" href="classdtn_1_1BundleEventHandler.html#6df59110f4c4dc2bdd4a72092bb4deca">dtn::BundleEventHandler</a>.</p>

<p>Reimplemented in <a class="el" href="classdtn_1_1DTLSRRouter.html#d48eeddd0bcaaf710690b0eccc863168">dtn::DTLSRRouter</a>, <a class="el" href="classdtn_1_1FloodBundleRouter.html#d0c23759201e076aec5b7a4d070ef3a0">dtn::FloodBundleRouter</a>, and <a class="el" href="classdtn_1_1TcaRouter.html#20fc6b94067656bf6d3d32cba7d836c8">dtn::TcaRouter</a>.</p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00199">199</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="TableBasedRouter_8cc-source.html#l00126">add_bundle_to_session()</a>, <a class="el" href="BundleInfoCache_8cc-source.html#l00034">dtn::BundleInfoCache::add_entry()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00201">dtn::Bundle::bundleid()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00091">get_session_for_bundle()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l01103">handle_session_bundle()</a>, <a class="el" href="BundleEvent_8h-source.html#l00378">dtn::BundleReceivedEvent::link_</a>, <a class="el" href="EndpointID_8h-source.html#l00358">dtn::EndpointID::NULL_EID()</a>, <a class="el" href="BundleDaemon_8cc-source.html#l00141">dtn::BundleDaemon::post_at_head()</a>, <a class="el" href="BundleProtocol_8h-source.html#l00124">dtn::BundleProtocol::REASON_NO_ADDTL_INFO</a>, <a class="el" href="TableBasedRouter_8h-source.html#l00191">reception_cache_</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00728">route_bundle()</a>, and <a class="el" href="bundling_2Bundle_8h-source.html#l00231">dtn::Bundle::session_flags()</a>.</p>

</div>
</div><p>
<a class="anchor" name="c021068d7b1e9802cc3507d6825ba245"></a><!-- doxytag: member="dtn::TableBasedRouter::handle_bundle_transmitted" ref="c021068d7b1e9802cc3507d6825ba245" args="(BundleTransmittedEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::handle_bundle_transmitted           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1BundleTransmittedEvent.html">BundleTransmittedEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Event handlers. 
<p>

<p>Reimplemented from <a class="el" href="classdtn_1_1BundleEventHandler.html#369effa1ba338afd7a5bf719bc27ea1b">dtn::BundleEventHandler</a>.</p>

<p>Reimplemented in <a class="el" href="classdtn_1_1TcaRouter.html#5ac83a679cce9bf7b5025e46a3c88d65">dtn::TcaRouter</a>.</p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00287">287</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="TableBasedRouter_8cc-source.html#l00802">check_next_hop()</a>, <a class="el" href="ForwardingInfo_8h-source.html#l00045">dtn::ForwardingInfo::FORWARD_ACTION</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l00253">remove_from_deferred()</a>.</p>

</div>
</div><p>
<a class="anchor" name="d5d66b2ef80180677d4cf5093bcaf009"></a><!-- doxytag: member="dtn::TableBasedRouter::handle_changed_routes" ref="d5d66b2ef80180677d4cf5093bcaf009" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::handle_changed_routes           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Update forwarding state due to changed routes. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00073">73</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="BundleInfoCache_8cc-source.html#l00067">dtn::BundleInfoCache::evict_all()</a>, <a class="el" href="TableBasedRouter_8h-source.html#l00191">reception_cache_</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00880">reroute_all_bundles()</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l01213">reroute_all_sessions()</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l00052">add_route()</a>, and <a class="el" href="DTLSRRouter_8cc-source.html#l00524">dtn::DTLSRRouter::recompute_routes()</a>.</p>

</div>
</div><p>
<a class="anchor" name="5b9a452a306adc7f97c998f3e7c585e3"></a><!-- doxytag: member="dtn::TableBasedRouter::handle_contact_down" ref="5b9a452a306adc7f97c998f3e7c585e3" args="(ContactDownEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::handle_contact_down           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1ContactDownEvent.html">ContactDownEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Event handlers. 
<p>

<p>Reimplemented from <a class="el" href="classdtn_1_1BundleEventHandler.html#5f44d0029ddf5a0d66137f0b5966f65a">dtn::BundleEventHandler</a>.</p>

<p>Reimplemented in <a class="el" href="classdtn_1_1DTLSRRouter.html#db62776ace5c4b42f033031f30a66259">dtn::DTLSRRouter</a>, and <a class="el" href="classdtn_1_1TcaRouter.html#87986c1aa06a4894ecf4b14f932a8442">dtn::TcaRouter</a>.</p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00484">484</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="TableBasedRouter_8h-source.html#l00224">reroute_timers_</a>, and <a class="el" href="TableBasedRouter_8h-source.html#l00217">RerouteTimer</a>.</p>

</div>
</div><p>
<a class="anchor" name="898f2c517d6c8b0635c2ac19a5c3425a"></a><!-- doxytag: member="dtn::TableBasedRouter::handle_contact_up" ref="898f2c517d6c8b0635c2ac19a5c3425a" args="(ContactUpEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::handle_contact_up           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1ContactUpEvent.html">ContactUpEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Event handlers. 
<p>

<p>Reimplemented from <a class="el" href="classdtn_1_1BundleEventHandler.html#79e3c093546c0829a33c211fe16d90bd">dtn::BundleEventHandler</a>.</p>

<p>Reimplemented in <a class="el" href="classdtn_1_1DTLSRRouter.html#538d08d46a2361111fb37c2aca223ca4">dtn::DTLSRRouter</a>, and <a class="el" href="classdtn_1_1TcaRouter.html#9cac11025de364655eb960b8b549a92c">dtn::TcaRouter</a>.</p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00450">450</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="TableBasedRouter_8cc-source.html#l00394">add_nexthop_route()</a>, <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00802">check_next_hop()</a>, and <a class="el" href="TableBasedRouter_8h-source.html#l00224">reroute_timers_</a>.</p>

</div>
</div><p>
<a class="anchor" name="4fec130df59945e730febe93bf5b9372"></a><!-- doxytag: member="dtn::TableBasedRouter::handle_custody_timeout" ref="4fec130df59945e730febe93bf5b9372" args="(CustodyTimeoutEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::handle_custody_timeout           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1CustodyTimeoutEvent.html">CustodyTimeoutEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Event handlers. 
<p>

<p>Reimplemented from <a class="el" href="classdtn_1_1BundleEventHandler.html#a07114961a6f1637104d13a307836739">dtn::BundleEventHandler</a>.</p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00608">608</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="BundleEvent_8h-source.html#l00834">dtn::CustodyTimeoutEvent::bundle_</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l00728">route_bundle()</a>.</p>

</div>
</div><p>
<a class="anchor" name="0a41a70c82d3a58ec0fc044dbe99dfe9"></a><!-- doxytag: member="dtn::TableBasedRouter::handle_event" ref="0a41a70c82d3a58ec0fc044dbe99dfe9" args="(BundleEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::handle_event           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1BundleEvent.html">BundleEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Event handler overridden from <a class="el" href="classdtn_1_1BundleRouter.html" title="The BundleRouter is the main decision maker for all routing decisions related to...">BundleRouter</a> / <a class="el" href="classdtn_1_1BundleEventHandler.html" title="Both the BundleDaemon and all the BundleRouter classes need to process the various...">BundleEventHandler</a> that dispatches to the type specific handlers where appropriate. 
<p>

<p>Implements <a class="el" href="classdtn_1_1BundleRouter.html#8c592e5d57adf8287f2b886ba39d5d93">dtn::BundleRouter</a>.</p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00084">84</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="BundleEventHandler_8cc-source.html#l00030">dtn::BundleEventHandler::dispatch_event()</a>.</p>

</div>
</div><p>
<a class="anchor" name="32d765a2b27a3e41273884bf521a9122"></a><!-- doxytag: member="dtn::TableBasedRouter::handle_link_available" ref="32d765a2b27a3e41273884bf521a9122" args="(LinkAvailableEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::handle_link_available           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1LinkAvailableEvent.html">LinkAvailableEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Event handlers. 
<p>

<p>Reimplemented from <a class="el" href="classdtn_1_1BundleEventHandler.html#a97f689c7f0969e186953a145f562076">dtn::BundleEventHandler</a>.</p>

<p>Reimplemented in <a class="el" href="classdtn_1_1TcaRouter.html#b02a4586e8162b8aec0a550113d6c6ee">dtn::TcaRouter</a>.</p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00556">556</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="BundleRouter_8h-source.html#l00204">dtn::BundleRouter::actions_</a>, <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00802">check_next_hop()</a>, <a class="el" href="BundleRouter_8cc-source.html#l00049">dtn::BundleRouter::config_</a>, <a class="el" href="BundleEvent_8h-source.html#l00501">dtn::ContactEvent::DISCOVERY</a>, <a class="el" href="BundleRouter_8h-source.html#l00084">dtn::BundleRouter::BundleRouter::Config::open_discovered_links_</a>, <a class="el" href="BundleActions_8cc-source.html#l00033">dtn::BundleActions::open_link()</a>, and <a class="el" href="contacts_2Link_8h-source.html#l00141">dtn::Link::OPPORTUNISTIC</a>.</p>

</div>
</div><p>
<a class="anchor" name="15d6e91c5362005ef5f5ee2cc9b667b8"></a><!-- doxytag: member="dtn::TableBasedRouter::handle_link_created" ref="15d6e91c5362005ef5f5ee2cc9b667b8" args="(LinkCreatedEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::handle_link_created           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1LinkCreatedEvent.html">LinkCreatedEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Event handlers. 
<p>

<p>Reimplemented from <a class="el" href="classdtn_1_1BundleEventHandler.html#4001d2fcc51a904c6ad2e6d6cc4989de">dtn::BundleEventHandler</a>.</p>

<p>Reimplemented in <a class="el" href="classdtn_1_1DTLSRRouter.html#dec1ea9bcb9c1ef40b596a3a3223d236">dtn::DTLSRRouter</a>, and <a class="el" href="classdtn_1_1FloodBundleRouter.html#211fac9393649fc76ecfd366da0e2a21">dtn::FloodBundleRouter</a>.</p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00577">577</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="TableBasedRouter_8cc-source.html#l00394">add_nexthop_route()</a>, and <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>.</p>

</div>
</div><p>
<a class="anchor" name="f18906e5ecdbe1dc6ff76b3d74bc41b0"></a><!-- doxytag: member="dtn::TableBasedRouter::handle_link_deleted" ref="f18906e5ecdbe1dc6ff76b3d74bc41b0" args="(LinkDeletedEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::handle_link_deleted           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1LinkDeletedEvent.html">LinkDeletedEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Event handlers. 
<p>

<p>Reimplemented from <a class="el" href="classdtn_1_1BundleEventHandler.html#b1d36b777a6f88df4376872662a79efa">dtn::BundleEventHandler</a>.</p>

<p>Reimplemented in <a class="el" href="classdtn_1_1DTLSRRouter.html#ec18a31e07eed67073f7e0fe6a52a8ba">dtn::DTLSRRouter</a>.</p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00590">590</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="RouteTable_8cc-source.html#l00086">dtn::RouteTable::del_entries_for_nexthop()</a>, <a class="el" href="TableBasedRouter_8h-source.html#l00224">reroute_timers_</a>, and <a class="el" href="TableBasedRouter_8h-source.html#l00194">route_table_</a>.</p>

</div>
</div><p>
<a class="anchor" name="fab4ded007eddf5b49c3ff75eea74dd8"></a><!-- doxytag: member="dtn::TableBasedRouter::handle_registration_added" ref="fab4ded007eddf5b49c3ff75eea74dd8" args="(RegistrationAddedEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::handle_registration_added           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1RegistrationAddedEvent.html">RegistrationAddedEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Event handlers. 
<p>

<p>Reimplemented from <a class="el" href="classdtn_1_1BundleEventHandler.html#c20798fc3953df94bf862344d1e84a97">dtn::BundleEventHandler</a>.</p>

<p>Reimplemented in <a class="el" href="classdtn_1_1DTLSRRouter.html#f3483073a5dba77af83cadbee6654100">dtn::DTLSRRouter</a>.</p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l01000">1000</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="Session_8cc-source.html#l00085">dtn::Session::add_subscriber()</a>, <a class="el" href="Session_8h-source.html#l00056">dtn::Session::CUSTODY</a>, <a class="el" href="Registration_8h-source.html#l00115">dtn::Registration::endpoint()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l01227">find_session_upstream()</a>, <a class="el" href="SessionTable_8cc-source.html#l00056">dtn::SessionTable::get_session()</a>, <a class="el" href="Session_8h-source.html#l00055">dtn::Session::PUBLISH</a>, <a class="el" href="Registration_8h-source.html#l00114">dtn::Registration::regid()</a>, <a class="el" href="TableBasedRouter_8h-source.html#l00200">session_custodians_</a>, <a class="el" href="Registration_8h-source.html#l00120">dtn::Registration::session_flags()</a>, <a class="el" href="TableBasedRouter_8h-source.html#l00197">sessions_</a>, <a class="el" href="Session_8h-source.html#l00051">dtn::Session::SUBSCRIBE</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l01038">subscribe_to_session()</a>.</p>

</div>
</div><p>
<a class="anchor" name="777585bc5c45196cd7426c08f47375d5"></a><!-- doxytag: member="dtn::TableBasedRouter::handle_registration_expired" ref="777585bc5c45196cd7426c08f47375d5" args="(RegistrationExpiredEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::handle_registration_expired           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1RegistrationExpiredEvent.html">RegistrationExpiredEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Event handlers. 
<p>

<p>Reimplemented from <a class="el" href="classdtn_1_1BundleEventHandler.html#6b199ca073d4dc019a11d32a25ca0fb3">dtn::BundleEventHandler</a>.</p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l01342">1342</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

</div>
</div><p>
<a class="anchor" name="14f12535527828c3a8e76f97f00c584c"></a><!-- doxytag: member="dtn::TableBasedRouter::handle_registration_removed" ref="14f12535527828c3a8e76f97f00c584c" args="(RegistrationRemovedEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::handle_registration_removed           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1RegistrationRemovedEvent.html">RegistrationRemovedEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Event handlers. 
<p>

<p>Reimplemented from <a class="el" href="classdtn_1_1BundleEventHandler.html#d8753ef11ad60400288689a24abbec1c">dtn::BundleEventHandler</a>.</p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l01335">1335</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

</div>
</div><p>
<a class="anchor" name="7ffd58d58cac80337e17c53869d7f6dd"></a><!-- doxytag: member="dtn::TableBasedRouter::handle_route_add" ref="7ffd58d58cac80337e17c53869d7f6dd" args="(RouteAddEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::handle_route_add           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1RouteAddEvent.html">RouteAddEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Event handlers. 
<p>

<p>Reimplemented from <a class="el" href="classdtn_1_1BundleEventHandler.html#a1086fab8c9463db3c22c15f35d2c7ab">dtn::BundleEventHandler</a>.</p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00380">380</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="TableBasedRouter_8cc-source.html#l00052">add_route()</a>, and <a class="el" href="BundleEvent_8h-source.html#l00757">dtn::RouteAddEvent::entry_</a>.</p>

</div>
</div><p>
<a class="anchor" name="aeaa4b9e5557810958ac0e48768a0a28"></a><!-- doxytag: member="dtn::TableBasedRouter::handle_route_del" ref="aeaa4b9e5557810958ac0e48768a0a28" args="(RouteDelEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::handle_route_del           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1RouteDelEvent.html">RouteDelEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Event handlers. 
<p>

<p>Reimplemented from <a class="el" href="classdtn_1_1BundleEventHandler.html#6b7ca37e14b70a300f6fb9528144672a">dtn::BundleEventHandler</a>.</p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00387">387</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="TableBasedRouter_8cc-source.html#l00060">del_route()</a>, and <a class="el" href="BundleEvent_8h-source.html#l00769">dtn::RouteDelEvent::dest_</a>.</p>

</div>
</div><p>
<a class="anchor" name="14061ba8016fc61a7556d44b1323f36c"></a><!-- doxytag: member="dtn::TableBasedRouter::handle_session_bundle" ref="14061ba8016fc61a7556d44b1323f36c" args="(BundleReceivedEvent *event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> dtn::TableBasedRouter::handle_session_bundle           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1BundleReceivedEvent.html">BundleReceivedEvent</a> *&nbsp;</td>
          <td class="paramname"> <em>event</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classdtn_1_1Session.html" title="Class to manage a session.">Session</a> management helper functions. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l01103">1103</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="ForwardingLog_8cc-source.html#l00204">dtn::ForwardingLog::add_entry()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l01295">add_subscriber()</a>, <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00201">dtn::Bundle::bundleid()</a>, <a class="el" href="EndpointID_8h-source.html#l00264">dtn::EndpointID::c_str()</a>, <a class="el" href="BundleEvent_8h-source.html#l00214">dtn::EVENTSRC_PEER</a>, <a class="el" href="BundleEvent_8h-source.html#l00216">dtn::EVENTSRC_STORE</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l01227">find_session_upstream()</a>, <a class="el" href="Session_8cc-source.html#l00055">dtn::Session::flag_str()</a>, <a class="el" href="ForwardingInfo_8h-source.html#l00045">dtn::ForwardingInfo::FORWARD_ACTION</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00233">dtn::Bundle::fwdlog()</a>, <a class="el" href="SessionTable_8cc-source.html#l00056">dtn::SessionTable::get_session()</a>, <a class="el" href="EndpointID_8h-source.html#l00358">dtn::EndpointID::NULL_EID()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00208">dtn::Bundle::prevhop()</a>, <a class="el" href="Session_8h-source.html#l00052">dtn::Session::RESUBSCRIBE</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00228">dtn::Bundle::sequence_id()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00230">dtn::Bundle::session_eid()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00231">dtn::Bundle::session_flags()</a>, <a class="el" href="TableBasedRouter_8h-source.html#l00197">sessions_</a>, <a class="el" href="BundleEvent_8h-source.html#l00372">dtn::BundleReceivedEvent::source_</a>, <a class="el" href="EndpointID_8h-source.html#l00258">dtn::EndpointID::str()</a>, <a class="el" href="Session_8h-source.html#l00051">dtn::Session::SUBSCRIBE</a>, <a class="el" href="ForwardingInfo_8h-source.html#l00077">dtn::ForwardingInfo::SUPPRESSED</a>, and <a class="el" href="EndpointID_8h-source.html#l00368">dtn::EndpointIDPattern::WILDCARD_EID()</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l00199">handle_bundle_received()</a>.</p>

</div>
</div><p>
<a class="anchor" name="7339ab822d11b9cf8c83ae608e79058e"></a><!-- doxytag: member="dtn::TableBasedRouter::recompute_routes" ref="7339ab822d11b9cf8c83ae608e79058e" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::recompute_routes           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Generic hook in response to the command line indication that we should reroute all bundles. 
<p>

<p>Reimplemented from <a class="el" href="classdtn_1_1BundleRouter.html#b679ffe5062b9bbc936b0e6dd7c6d834">dtn::BundleRouter</a>.</p>

<p>Reimplemented in <a class="el" href="classdtn_1_1DTLSRRouter.html#526947e56ad2813e93b07ba2c4ce1aca">dtn::DTLSRRouter</a>.</p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00902">902</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="TableBasedRouter_8cc-source.html#l00880">reroute_all_bundles()</a>.</p>

</div>
</div><p>
<a class="anchor" name="0999e77477c37efdf9709fd3f0928b05"></a><!-- doxytag: member="dtn::TableBasedRouter::remove_from_deferred" ref="0999e77477c37efdf9709fd3f0928b05" args="(const BundleRef &amp;bundle, int actions)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::remove_from_deferred           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacedtn.html#87094f3b26b9f1d469e616d311ae57b1">BundleRef</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>bundle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>actions</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Remove matching deferred transmission entries. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00253">253</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="ForwardingInfo_8h-source.html#l00159">dtn::ForwardingInfo::action()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00990">deferred_list()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00970">dtn::TableBasedRouter::TableBasedRouter::DeferredList::del()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00926">dtn::TableBasedRouter::TableBasedRouter::DeferredList::find()</a>, <a class="el" href="dtncat_8c-source.html#l00085">info</a>, <a class="el" href="ContactManager_8cc-source.html#l00176">dtn::ContactManager::links()</a>, and <a class="el" href="ContactManager_8h-source.html#l00111">dtn::ContactManager::lock()</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l00342">delete_bundle()</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l00287">handle_bundle_transmitted()</a>.</p>

</div>
</div><p>
<a class="anchor" name="3e5d2926a1b0cf5cabbef44eafd21bb7"></a><!-- doxytag: member="dtn::TableBasedRouter::reroute_all_bundles" ref="3e5d2926a1b0cf5cabbef44eafd21bb7" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::reroute_all_bundles           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Go through all known bundles in the system and try to re-route them. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00880">880</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="BundleList_8cc-source.html#l00475">dtn::BundleList::begin()</a>, <a class="el" href="BundleList_8cc-source.html#l00488">dtn::BundleList::end()</a>, <a class="el" href="bundling_2BundleList_8h-source.html#l00285">dtn::BundleList::lock()</a>, <a class="el" href="BundleRouter_8h-source.html#l00197">dtn::BundleRouter::pending_bundles_</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00728">route_bundle()</a>, and <a class="el" href="BundleList_8cc-source.html#l00459">dtn::BundleList::size()</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l00073">handle_changed_routes()</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l00902">recompute_routes()</a>.</p>

</div>
</div><p>
<a class="anchor" name="5a20afd32a3841641b60c8dab2c55986"></a><!-- doxytag: member="dtn::TableBasedRouter::reroute_all_sessions" ref="5a20afd32a3841641b60c8dab2c55986" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::reroute_all_sessions           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classdtn_1_1Session.html" title="Class to manage a session.">Session</a> management helper functions. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l01213">1213</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="SessionTable_8h-source.html#l00049">dtn::SessionTable::begin()</a>, <a class="el" href="SessionTable_8h-source.html#l00050">dtn::SessionTable::end()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l01227">find_session_upstream()</a>, <a class="el" href="TableBasedRouter_8h-source.html#l00197">sessions_</a>, and <a class="el" href="SessionTable_8h-source.html#l00046">dtn::SessionTable::size()</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l00073">handle_changed_routes()</a>.</p>

</div>
</div><p>
<a class="anchor" name="7ea4067686f50b1656df26c896aea369"></a><!-- doxytag: member="dtn::TableBasedRouter::reroute_bundles" ref="7ea4067686f50b1656df26c896aea369" args="(const LinkRef &amp;link)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::reroute_bundles           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>link</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Helper function for rerouting. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00520">520</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="BundleRouter_8h-source.html#l00204">dtn::BundleRouter::actions_</a>, <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="BundleActions_8cc-source.html#l00174">dtn::BundleActions::cancel_bundle()</a>, <a class="el" href="contacts_2Link_8h-source.html#l00216">dtn::Link::state_to_str()</a>, and <a class="el" href="contacts_2Link_8h-source.html#l00184">dtn::Link::UNAVAILABLE</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l00512">dtn::TableBasedRouter::TableBasedRouter::RerouteTimer::timeout()</a>.</p>

</div>
</div><p>
<a class="anchor" name="2e313494d5804ecac9399a3685e32734"></a><!-- doxytag: member="dtn::TableBasedRouter::route_bundle" ref="2e313494d5804ecac9399a3685e32734" args="(Bundle *bundle)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int dtn::TableBasedRouter::route_bundle           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *&nbsp;</td>
          <td class="paramname"> <em>bundle</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check the route table entries that match the given bundle and have not already been found in the bundle history. 
<p>
If a match is found, call fwd_to_nexthop on it.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>bundle</em>&nbsp;</td><td>the bundle to forward</td></tr>
  </table>
</dl>
Returns the number of links on which the bundle was queued (i.e. the number of matching route entries. 
<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00728">728</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="bundling_2Bundle_8h-source.html#l00201">dtn::Bundle::bundleid()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00802">check_next_hop()</a>, <a class="el" href="dtnping_8c-source.html#l00045">count</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00990">deferred_list()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00205">dtn::Bundle::dest()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00670">fwd_to_nexthop()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00233">dtn::Bundle::fwdlog()</a>, <a class="el" href="ForwardingLog_8cc-source.html#l00133">dtn::ForwardingLog::get_count()</a>, <a class="el" href="RouteTable_8cc-source.html#l00107">dtn::RouteTable::get_matching()</a>, <a class="el" href="RouteEntry_8h-source.html#l00119">dtn::RouteEntry::link()</a>, <a class="el" href="TableBasedRouter_8h-source.html#l00194">route_table_</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00424">should_fwd()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00794">sort_routes()</a>, <a class="el" href="ForwardingInfo_8h-source.html#l00077">dtn::ForwardingInfo::SUPPRESSED</a>, and <a class="el" href="EndpointID_8h-source.html#l00368">dtn::EndpointIDPattern::WILDCARD_EID()</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l01295">add_subscriber()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00366">handle_bundle_cancelled()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00199">handle_bundle_received()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00608">handle_custody_timeout()</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l00880">reroute_all_bundles()</a>.</p>

</div>
</div><p>
<a class="anchor" name="08961b48157a280be9cb160158903a82"></a><!-- doxytag: member="dtn::TableBasedRouter::should_fwd" ref="08961b48157a280be9cb160158903a82" args="(const Bundle *bundle, RouteEntry *route)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> dtn::TableBasedRouter::should_fwd           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *&nbsp;</td>
          <td class="paramname"> <em>bundle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classdtn_1_1RouteEntry.html">RouteEntry</a> *&nbsp;</td>
          <td class="paramname"> <em>route</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check if the bundle should be forwarded to the given next hop. 
<p>
Reasons why it would not be forwarded include that it was already transmitted or is currently in flight on the link, or that the route indicates <a class="el" href="classdtn_1_1ForwardingInfo.html#18ec95dc1b1b8a7e9df9873a0d9b59471efad47dbf6015f5e4458ac355eabbaa" title="Forward the bundle to only this next hop.">ForwardingInfo::FORWARD_ACTION</a> and it is already in flight on another route. 
<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00424">424</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="RouteEntry_8h-source.html#l00125">dtn::RouteEntry::action()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00201">dtn::Bundle::bundleid()</a>, <a class="el" href="RouteEntry_8h-source.html#l00119">dtn::RouteEntry::link()</a>, <a class="el" href="BundleInfoCache_8cc-source.html#l00054">dtn::BundleInfoCache::lookup()</a>, <a class="el" href="EndpointID_8h-source.html#l00358">dtn::EndpointID::NULL_EID()</a>, and <a class="el" href="TableBasedRouter_8h-source.html#l00191">reception_cache_</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l00728">route_bundle()</a>.</p>

</div>
</div><p>
<a class="anchor" name="33e876c5a09869489c60f892a9fbb909"></a><!-- doxytag: member="dtn::TableBasedRouter::sort_routes" ref="33e876c5a09869489c60f892a9fbb909" args="(Bundle *bundle, RouteEntryVec *routes)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::sort_routes           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *&nbsp;</td>
          <td class="paramname"> <em>bundle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classdtn_1_1RouteEntryVec.html">RouteEntryVec</a> *&nbsp;</td>
          <td class="paramname"> <em>routes</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Once a vector of matching routes has been found, sort the vector. 
<p>
The default uses the route priority, breaking ties by using the number of bytes queued. 
<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00794">794</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l00728">route_bundle()</a>.</p>

</div>
</div><p>
<a class="anchor" name="8eefa1b03ae7e19a168205af67d4173b"></a><!-- doxytag: member="dtn::TableBasedRouter::subscribe_to_session" ref="8eefa1b03ae7e19a168205af67d4173b" args="(int action, Session *session)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> dtn::TableBasedRouter::subscribe_to_session           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>action</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classdtn_1_1Session.html">Session</a> *&nbsp;</td>
          <td class="paramname"> <em>session</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classdtn_1_1Session.html" title="Class to manage a session.">Session</a> management helper functions. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l01038">1038</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="SequenceID_8cc-source.html#l00347">dtn::SequenceID::assign()</a>, <a class="el" href="EndpointID_8h-source.html#l00084">dtn::EndpointID::assign()</a>, <a class="el" href="EndpointID_8h-source.html#l00264">dtn::EndpointID::c_str()</a>, <a class="el" href="BundleRouter_8cc-source.html#l00049">dtn::BundleRouter::config_</a>, <a class="el" href="Session_8h-source.html#l00075">dtn::Session::eid()</a>, <a class="el" href="BundleEvent_8h-source.html#l00219">dtn::EVENTSRC_ROUTER</a>, <a class="el" href="Subscriber_8h-source.html#l00060">dtn::Subscriber::is_local()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00245">dtn::Bundle::mutable_custodian()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00243">dtn::Bundle::mutable_dest()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00244">dtn::Bundle::mutable_replyto()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00267">dtn::Bundle::mutable_sequence_id()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00269">dtn::Bundle::mutable_session_eid()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00242">dtn::Bundle::mutable_source()</a>, <a class="el" href="EndpointID_8h-source.html#l00358">dtn::EndpointID::NULL_EID()</a>, <a class="el" href="BundleDaemon_8cc-source.html#l00141">dtn::BundleDaemon::post_at_head()</a>, <a class="el" href="Session_8h-source.html#l00080">dtn::Session::resubscribe_timer()</a>, <a class="el" href="Session_8h-source.html#l00079">dtn::Session::sequence_id()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00249">dtn::Bundle::set_do_not_fragment()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00259">dtn::Bundle::set_expiration()</a>, <a class="el" href="Session_8h-source.html#l00072">dtn::Session::set_resubscribe_timer()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00270">dtn::Bundle::set_session_flags()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00251">dtn::Bundle::set_singleton_dest()</a>, <a class="el" href="EndpointID_8h-source.html#l00258">dtn::EndpointID::str()</a>, <a class="el" href="BundleRouter_8h-source.html#l00098">dtn::BundleRouter::BundleRouter::Config::subscription_timeout_</a>, and <a class="el" href="Session_8h-source.html#l00076">dtn::Session::upstream()</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l01000">handle_registration_added()</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l01091">dtn::TableBasedRouter::TableBasedRouter::ResubscribeTimer::timeout()</a>.</p>

</div>
</div><p>
<a class="anchor" name="b84236fc3f6862121bb83088b2e35d42"></a><!-- doxytag: member="dtn::TableBasedRouter::tcl_dump_state" ref="b84236fc3f6862121bb83088b2e35d42" args="(oasys::StringBuffer *buf)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::TableBasedRouter::tcl_dump_state           </td>
          <td>(</td>
          <td class="paramtype">oasys::StringBuffer *&nbsp;</td>
          <td class="paramname"> <em>buf</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get a tcl version of the routing state. 
<p>

<p>Reimplemented from <a class="el" href="classdtn_1_1BundleRouter.html#2083fea1b1c69c671626c6e71ef78d5d">dtn::BundleRouter</a>.</p>

<p>Definition at line <a class="el" href="TableBasedRouter_8cc-source.html#l00650">650</a> of file <a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a>.</p>

<p>References <a class="el" href="EndpointID_8h-source.html#l00264">dtn::EndpointID::c_str()</a>, <a class="el" href="RouteEntry_8h-source.html#l00117">dtn::RouteEntry::dest_pattern()</a>, <a class="el" href="RouteTable_8h-source.html#l00122">dtn::RouteTable::lock()</a>, <a class="el" href="RouteEntry_8h-source.html#l00127">dtn::RouteEntry::next_hop_str()</a>, <a class="el" href="RouteEntry_8h-source.html#l00121">dtn::RouteEntry::priority()</a>, <a class="el" href="RouteTable_8cc-source.html#l00225">dtn::RouteTable::route_table()</a>, <a class="el" href="TableBasedRouter_8h-source.html#l00194">route_table_</a>, and <a class="el" href="RouteEntry_8h-source.html#l00118">dtn::RouteEntry::source_pattern()</a>.</p>

</div>
</div><p>
<hr><h2>Friends And Related Function Documentation</h2>
<a class="anchor" name="e76c969f4f466488fef519f992eef9e6"></a><!-- doxytag: member="dtn::TableBasedRouter::RerouteTimer" ref="e76c969f4f466488fef519f992eef9e6" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">friend class <a class="el" href="classdtn_1_1TableBasedRouter_1_1RerouteTimer.html">RerouteTimer</a><code> [friend]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8h-source.html#l00217">217</a> of file <a class="el" href="TableBasedRouter_8h-source.html">TableBasedRouter.h</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l00484">handle_contact_down()</a>.</p>

</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="794be5288550f7294907e058fc21a98f"></a><!-- doxytag: member="dtn::TableBasedRouter::reception_cache_" ref="794be5288550f7294907e058fc21a98f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classdtn_1_1BundleInfoCache.html">BundleInfoCache</a> <a class="el" href="classdtn_1_1TableBasedRouter.html#794be5288550f7294907e058fc21a98f">dtn::TableBasedRouter::reception_cache_</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Cache to check for duplicates and to implement a simple RPF check. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8h-source.html#l00191">191</a> of file <a class="el" href="TableBasedRouter_8h-source.html">TableBasedRouter.h</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l00060">del_route()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00199">handle_bundle_received()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00073">handle_changed_routes()</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l00424">should_fwd()</a>.</p>

</div>
</div><p>
<a class="anchor" name="601cf75bb9ad55256211e63b3d34b4d9"></a><!-- doxytag: member="dtn::TableBasedRouter::reroute_timers_" ref="601cf75bb9ad55256211e63b3d34b4d9" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classdtn_1_1TableBasedRouter.html#0f3d17c2f282c283f277f5f5c7f49f95">RerouteTimerMap</a> <a class="el" href="classdtn_1_1TableBasedRouter.html#601cf75bb9ad55256211e63b3d34b4d9">dtn::TableBasedRouter::reroute_timers_</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8h-source.html#l00224">224</a> of file <a class="el" href="TableBasedRouter_8h-source.html">TableBasedRouter.h</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l00484">handle_contact_down()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00450">handle_contact_up()</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l00590">handle_link_deleted()</a>.</p>

</div>
</div><p>
<a class="anchor" name="83939b60c495ff450a1e95787c811297"></a><!-- doxytag: member="dtn::TableBasedRouter::route_table_" ref="83939b60c495ff450a1e95787c811297" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classdtn_1_1RouteTable.html">RouteTable</a>* <a class="el" href="classdtn_1_1TableBasedRouter.html#83939b60c495ff450a1e95787c811297">dtn::TableBasedRouter::route_table_</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The routing table. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8h-source.html#l00194">194</a> of file <a class="el" href="TableBasedRouter_8h-source.html">TableBasedRouter.h</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l00394">add_nexthop_route()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00052">add_route()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l01295">add_subscriber()</a>, <a class="el" href="TcaRouter_8cc-source.html#l00882">dtn::TcaRouter::create_route()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00060">del_route()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l01227">find_session_upstream()</a>, <a class="el" href="TcaRouter_8cc-source.html#l00303">dtn::TcaRouter::fwd_to_all()</a>, <a class="el" href="TcaRouter_8cc-source.html#l00346">dtn::TcaRouter::fwd_to_matching_r()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00622">get_routing_state()</a>, <a class="el" href="TcaRouter_8cc-source.html#l00705">dtn::TcaRouter::handle_del_route()</a>, <a class="el" href="TcaRouter_8cc-source.html#l00657">dtn::TcaRouter::handle_get_routes()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00590">handle_link_deleted()</a>, <a class="el" href="DTLSRRouter_8cc-source.html#l00524">dtn::DTLSRRouter::recompute_routes()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00728">route_bundle()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00035">TableBasedRouter()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00650">tcl_dump_state()</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l00045">~TableBasedRouter()</a>.</p>

</div>
</div><p>
<a class="anchor" name="82bda89e14b56877e7b4dce41ebd5261"></a><!-- doxytag: member="dtn::TableBasedRouter::session_custodians_" ref="82bda89e14b56877e7b4dce41ebd5261" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classdtn_1_1RegistrationList.html">RegistrationList</a> <a class="el" href="classdtn_1_1TableBasedRouter.html#82bda89e14b56877e7b4dce41ebd5261">dtn::TableBasedRouter::session_custodians_</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Vector of session custodian registrations. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8h-source.html#l00200">200</a> of file <a class="el" href="TableBasedRouter_8h-source.html">TableBasedRouter.h</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l01227">find_session_upstream()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00622">get_routing_state()</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l01000">handle_registration_added()</a>.</p>

</div>
</div><p>
<a class="anchor" name="15781c2af48938de09c75f010e40071a"></a><!-- doxytag: member="dtn::TableBasedRouter::sessions_" ref="15781c2af48938de09c75f010e40071a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classdtn_1_1SessionTable.html">SessionTable</a> <a class="el" href="classdtn_1_1TableBasedRouter.html#15781c2af48938de09c75f010e40071a">dtn::TableBasedRouter::sessions_</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classdtn_1_1Session.html" title="Class to manage a session.">Session</a> state management table. 
<p>

<p>Definition at line <a class="el" href="TableBasedRouter_8h-source.html#l00197">197</a> of file <a class="el" href="TableBasedRouter_8h-source.html">TableBasedRouter.h</a>.</p>

<p>Referenced by <a class="el" href="TableBasedRouter_8cc-source.html#l00622">get_routing_state()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l00091">get_session_for_bundle()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l01000">handle_registration_added()</a>, <a class="el" href="TableBasedRouter_8cc-source.html#l01103">handle_session_bundle()</a>, and <a class="el" href="TableBasedRouter_8cc-source.html#l01213">reroute_all_sessions()</a>.</p>

</div>
</div><p>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="TableBasedRouter_8h-source.html">TableBasedRouter.h</a><li><a class="el" href="TableBasedRouter_8cc-source.html">TableBasedRouter.cc</a></ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 30 09:27:05 2009 for DTN Reference Implementation by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
</body>
</html>