PageRenderTime 65ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 1ms

/Documentation/doxy/class_r_s_v_p.html

https://github.com/vonami/inet-flc
HTML | 5023 lines | 4838 code | 184 blank | 1 comment | 0 complexity | bbe00edb5ed2599208e419813274e645 MD5 | raw file

Large files files are truncated, but you can click here to view the full file

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
  3. <title>INET Framework for OMNeT++/OMNEST: RSVP Class Reference</title>
  4. <link href="opp.css" rel="stylesheet" type="text/css">
  5. </head><body>
  6. <!-- Generated by Doxygen 1.4.0 -->
  7. <div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
  8. <h1>RSVP Class Reference</h1><code>#include &lt;RSVP.h&gt;</code>
  9. <p>
  10. <p>Inheritance diagram for RSVP:
  11. <p><center><img src="class_r_s_v_p.png" usemap="#RSVP_map" border="0" alt=""></center>
  12. <map name="RSVP_map">
  13. <area href="class_i_scriptable.html" alt="IScriptable" shape="rect" coords="0,0,72,24">
  14. </map>
  15. <a href="class_r_s_v_p-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
  16. TODO documentation
  17. <p>
  18. <table border="0" cellpadding="0" cellspacing="0">
  19. <tr><td></td></tr>
  20. <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
  21. <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#a0">RSVP</a> ()</td></tr>
  22. <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#a1">~RSVP</a> ()</td></tr>
  23. <tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
  24. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b0">processSignallingMessage</a> (<a class="el" href="class_signalling_msg.html">SignallingMsg</a> *msg)</td></tr>
  25. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b1">processPSB_TIMER</a> (<a class="el" href="class_psb_timer_msg.html">PsbTimerMsg</a> *msg)</td></tr>
  26. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b2">processPSB_TIMEOUT</a> (<a class="el" href="class_psb_timeout_msg.html">PsbTimeoutMsg</a> *msg)</td></tr>
  27. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b3">processRSB_REFRESH_TIMER</a> (<a class="el" href="class_rsb_refresh_timer_msg.html">RsbRefreshTimerMsg</a> *msg)</td></tr>
  28. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b4">processRSB_COMMIT_TIMER</a> (<a class="el" href="class_rsb_commit_timer_msg.html">RsbCommitTimerMsg</a> *msg)</td></tr>
  29. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b5">processRSB_TIMEOUT</a> (<a class="el" href="class_rsb_timeout_msg.html">RsbTimeoutMsg</a> *msg)</td></tr>
  30. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b6">processHELLO_TIMER</a> (<a class="el" href="class_hello_timer_msg.html">HelloTimerMsg</a> *msg)</td></tr>
  31. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b7">processHELLO_TIMEOUT</a> (<a class="el" href="class_hello_timeout_msg.html">HelloTimeoutMsg</a> *msg)</td></tr>
  32. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b8">processPATH_NOTIFY</a> (<a class="el" href="class_path_notify_msg.html">PathNotifyMsg</a> *msg)</td></tr>
  33. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b9">processRSVPMessage</a> (<a class="el" href="class_r_s_v_p_message.html">RSVPMessage</a> *msg)</td></tr>
  34. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b10">processHelloMsg</a> (<a class="el" href="class_r_s_v_p_hello_msg.html">RSVPHelloMsg</a> *msg)</td></tr>
  35. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b11">processPathMsg</a> (<a class="el" href="class_r_s_v_p_path_msg.html">RSVPPathMsg</a> *msg)</td></tr>
  36. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b12">processResvMsg</a> (<a class="el" href="class_r_s_v_p_resv_msg.html">RSVPResvMsg</a> *msg)</td></tr>
  37. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b13">processPathTearMsg</a> (<a class="el" href="class_r_s_v_p_path_tear.html">RSVPPathTear</a> *msg)</td></tr>
  38. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b14">processPathErrMsg</a> (<a class="el" href="class_r_s_v_p_path_error.html">RSVPPathError</a> *msg)</td></tr>
  39. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="struct_r_s_v_p_1_1_path_state_block__t.html">PathStateBlock_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b15">createPSB</a> (<a class="el" href="class_r_s_v_p_path_msg.html">RSVPPathMsg</a> *msg)</td></tr>
  40. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="struct_r_s_v_p_1_1_path_state_block__t.html">PathStateBlock_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b16">createIngressPSB</a> (const <a class="el" href="struct_r_s_v_p_1_1traffic__session__t.html">traffic_session_t</a> &amp;session, const <a class="el" href="struct_r_s_v_p_1_1traffic__path__t.html">traffic_path_t</a> &amp;path)</td></tr>
  41. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b17">removePSB</a> (<a class="el" href="struct_r_s_v_p_1_1_path_state_block__t.html">PathStateBlock_t</a> *psb)</td></tr>
  42. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="struct_r_s_v_p_1_1_resv_state_block__t.html">ResvStateBlock_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b18">createRSB</a> (<a class="el" href="class_r_s_v_p_resv_msg.html">RSVPResvMsg</a> *msg)</td></tr>
  43. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="struct_r_s_v_p_1_1_resv_state_block__t.html">ResvStateBlock_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b19">createEgressRSB</a> (<a class="el" href="struct_r_s_v_p_1_1_path_state_block__t.html">PathStateBlock_t</a> *psb)</td></tr>
  44. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b20">updateRSB</a> (<a class="el" href="struct_r_s_v_p_1_1_resv_state_block__t.html">ResvStateBlock_t</a> *rsb, <a class="el" href="class_r_s_v_p_resv_msg.html">RSVPResvMsg</a> *msg)</td></tr>
  45. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b21">removeRSB</a> (<a class="el" href="struct_r_s_v_p_1_1_resv_state_block__t.html">ResvStateBlock_t</a> *rsb)</td></tr>
  46. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b22">removeRsbFilter</a> (<a class="el" href="struct_r_s_v_p_1_1_resv_state_block__t.html">ResvStateBlock_t</a> *rsb, unsigned int index)</td></tr>
  47. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b23">refreshPath</a> (<a class="el" href="struct_r_s_v_p_1_1_path_state_block__t.html">PathStateBlock_t</a> *psbEle)</td></tr>
  48. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b24">refreshResv</a> (<a class="el" href="struct_r_s_v_p_1_1_resv_state_block__t.html">ResvStateBlock_t</a> *rsbEle)</td></tr>
  49. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b25">refreshResv</a> (<a class="el" href="struct_r_s_v_p_1_1_resv_state_block__t.html">ResvStateBlock_t</a> *rsbEle, <a class="el" href="class_i_p_address.html">IPAddress</a> PHOP)</td></tr>
  50. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b26">commitResv</a> (<a class="el" href="struct_r_s_v_p_1_1_resv_state_block__t.html">ResvStateBlock_t</a> *rsb)</td></tr>
  51. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b27">scheduleRefreshTimer</a> (<a class="el" href="struct_r_s_v_p_1_1_path_state_block__t.html">PathStateBlock_t</a> *psbEle, double delay)</td></tr>
  52. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b28">scheduleTimeout</a> (<a class="el" href="struct_r_s_v_p_1_1_path_state_block__t.html">PathStateBlock_t</a> *psbEle)</td></tr>
  53. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b29">scheduleRefreshTimer</a> (<a class="el" href="struct_r_s_v_p_1_1_resv_state_block__t.html">ResvStateBlock_t</a> *rsbEle, double delay)</td></tr>
  54. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b30">scheduleCommitTimer</a> (<a class="el" href="struct_r_s_v_p_1_1_resv_state_block__t.html">ResvStateBlock_t</a> *rsbEle)</td></tr>
  55. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b31">scheduleTimeout</a> (<a class="el" href="struct_r_s_v_p_1_1_resv_state_block__t.html">ResvStateBlock_t</a> *rsbEle)</td></tr>
  56. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b32">sendPathErrorMessage</a> (<a class="el" href="struct_r_s_v_p_1_1_path_state_block__t.html">PathStateBlock_t</a> *psb, int errCode)</td></tr>
  57. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b33">sendPathErrorMessage</a> (<a class="el" href="struct_session_obj__t.html">SessionObj_t</a> session, <a class="el" href="struct_sender_template_obj__t.html">SenderTemplateObj_t</a> sender, <a class="el" href="struct_sender_tspec_obj__t.html">SenderTspecObj_t</a> tspec, <a class="el" href="class_i_p_address.html">IPAddress</a> nextHop, int errCode)</td></tr>
  58. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b34">sendPathTearMessage</a> (<a class="el" href="class_i_p_address.html">IPAddress</a> peerIP, const <a class="el" href="struct_session_obj__t.html">SessionObj_t</a> &amp;session, const <a class="el" href="struct_sender_template_obj__t.html">SenderTemplateObj_t</a> &amp;sender, <a class="el" href="class_i_p_address.html">IPAddress</a> LIH, <a class="el" href="class_i_p_address.html">IPAddress</a> NHOP, bool force)</td></tr>
  59. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b35">sendPathNotify</a> (int handler, const <a class="el" href="struct_session_obj__t.html">SessionObj_t</a> &amp;session, const <a class="el" href="struct_sender_template_obj__t.html">SenderTemplateObj_t</a> &amp;sender, int status, double delay)</td></tr>
  60. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b36">setupHello</a> ()</td></tr>
  61. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b37">startHello</a> (<a class="el" href="class_i_p_address.html">IPAddress</a> peer, double delay)</td></tr>
  62. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b38">recoveryEvent</a> (<a class="el" href="class_i_p_address.html">IPAddress</a> peer)</td></tr>
  63. <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b39">allocateResource</a> (<a class="el" href="class_i_p_address.html">IPAddress</a> OI, const <a class="el" href="struct_session_obj__t.html">SessionObj_t</a> &amp;session, double bandwidth)</td></tr>
  64. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b40">preempt</a> (<a class="el" href="class_i_p_address.html">IPAddress</a> OI, int priority, double bandwidth)</td></tr>
  65. <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b41">doCACCheck</a> (const <a class="el" href="struct_session_obj__t.html">SessionObj_t</a> &amp;session, const <a class="el" href="struct_sender_tspec_obj__t.html">SenderTspecObj_t</a> &amp;tspec, <a class="el" href="class_i_p_address.html">IPAddress</a> OI)</td></tr>
  66. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b42">announceLinkChange</a> (int tedlinkindex)</td></tr>
  67. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b43">sendToIP</a> (cMessage *msg, <a class="el" href="class_i_p_address.html">IPAddress</a> destAddr)</td></tr>
  68. <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b44">evalNextHopInterface</a> (<a class="el" href="class_i_p_address.html">IPAddress</a> destAddr, const <a class="el" href="_int_serv__m_8h.html#a2">EroVector</a> &amp;ERO, <a class="el" href="class_i_p_address.html">IPAddress</a> &amp;OI)</td></tr>
  69. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="struct_r_s_v_p_1_1_path_state_block__t.html">PathStateBlock_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b45">findPSB</a> (const <a class="el" href="struct_session_obj__t.html">SessionObj_t</a> &amp;session, const <a class="el" href="struct_sender_template_obj__t.html">SenderTemplateObj_t</a> &amp;sender)</td></tr>
  70. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="struct_r_s_v_p_1_1_resv_state_block__t.html">ResvStateBlock_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b46">findRSB</a> (const <a class="el" href="struct_session_obj__t.html">SessionObj_t</a> &amp;session, const <a class="el" href="struct_sender_template_obj__t.html">SenderTemplateObj_t</a> &amp;sender, unsigned int &amp;index)</td></tr>
  71. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="struct_r_s_v_p_1_1_path_state_block__t.html">PathStateBlock_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b47">findPsbById</a> (int id)</td></tr>
  72. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="struct_r_s_v_p_1_1_resv_state_block__t.html">ResvStateBlock_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b48">findRsbById</a> (int id)</td></tr>
  73. <tr><td class="memItemLeft" nowrap align="right" valign="top">std::vector&lt; <a class="el" href="struct_r_s_v_p_1_1traffic__session__t.html">traffic_session_t</a> <br>
  74. &gt;::iterator&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b49">findSession</a> (const <a class="el" href="struct_session_obj__t.html">SessionObj_t</a> &amp;session)</td></tr>
  75. <tr><td class="memItemLeft" nowrap align="right" valign="top">std::vector&lt; <a class="el" href="struct_r_s_v_p_1_1traffic__path__t.html">traffic_path_t</a> <br>
  76. &gt;::iterator&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b50">findPath</a> (<a class="el" href="struct_r_s_v_p_1_1traffic__session__t.html">traffic_session_t</a> *session, const <a class="el" href="struct_sender_template_obj__t.html">SenderTemplateObj_t</a> &amp;sender)</td></tr>
  77. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="struct_r_s_v_p_1_1_hello_state__t.html">HelloState_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b51">findHello</a> (<a class="el" href="class_i_p_address.html">IPAddress</a> peer)</td></tr>
  78. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b52">print</a> (<a class="el" href="class_r_s_v_p_path_msg.html">RSVPPathMsg</a> *p)</td></tr>
  79. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b53">print</a> (<a class="el" href="class_r_s_v_p_resv_msg.html">RSVPResvMsg</a> *r)</td></tr>
  80. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b54">readTrafficFromXML</a> (const cXMLElement *<a class="el" href="class_r_s_v_p.html#r0">traffic</a>)</td></tr>
  81. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b55">readTrafficSessionFromXML</a> (const cXMLElement *session)</td></tr>
  82. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="_int_serv__m_8h.html#a2">EroVector</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b56">readTrafficRouteFromXML</a> (const cXMLElement *route)</td></tr>
  83. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b57">createPath</a> (const <a class="el" href="struct_session_obj__t.html">SessionObj_t</a> &amp;session, const <a class="el" href="struct_sender_template_obj__t.html">SenderTemplateObj_t</a> &amp;sender)</td></tr>
  84. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b58">pathProblem</a> (<a class="el" href="struct_r_s_v_p_1_1_path_state_block__t.html">PathStateBlock_t</a> *psb)</td></tr>
  85. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b59">addSession</a> (const cXMLElement &amp;node)</td></tr>
  86. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b60">delSession</a> (const cXMLElement &amp;node)</td></tr>
  87. <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b61">numInitStages</a> () const </td></tr>
  88. <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b62">initialize</a> (int stage)</td></tr>
  89. <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b63">handleMessage</a> (cMessage *msg)</td></tr>
  90. <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b64">processCommand</a> (const cXMLElement &amp;node)</td></tr>
  91. <tr><td colspan="2"><br><h2>Private Types</h2></td></tr>
  92. <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::vector&lt; <a class="el" href="struct_r_s_v_p_1_1_path_state_block__t.html">PathStateBlock_t</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#y0">PSBVector</a></td></tr>
  93. <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::vector&lt; <a class="el" href="struct_r_s_v_p_1_1_resv_state_block__t.html">ResvStateBlock_t</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#y1">RSBVector</a></td></tr>
  94. <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::vector&lt; <a class="el" href="struct_r_s_v_p_1_1_hello_state__t.html">HelloState_t</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#y2">HelloVector</a></td></tr>
  95. <tr><td colspan="2"><br><h2>Private Member Functions</h2></td></tr>
  96. <tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#d0">getInLabel</a> (const <a class="el" href="struct_session_obj__t.html">SessionObj_t</a> &amp;session, const <a class="el" href="struct_sender_template_obj__t.html">SenderTemplateObj_t</a> &amp;sender)</td></tr>
  97. <tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr>
  98. <tr><td class="memItemLeft" nowrap align="right" valign="top">std::vector&lt; <a class="el" href="struct_r_s_v_p_1_1traffic__session__t.html">traffic_session_t</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r0">traffic</a></td></tr>
  99. <tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r1">helloInterval</a></td></tr>
  100. <tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r2">helloTimeout</a></td></tr>
  101. <tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r3">retryInterval</a></td></tr>
  102. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_t_e_d.html">TED</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r4">tedmod</a></td></tr>
  103. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_routing_table.html">RoutingTable</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r5">rt</a></td></tr>
  104. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_interface_table.html">InterfaceTable</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r6">ift</a></td></tr>
  105. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_l_i_b_table.html">LIBTable</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r7">lt</a></td></tr>
  106. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_notification_board.html">NotificationBoard</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r8">nb</a></td></tr>
  107. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_i_r_s_v_p_classifier.html">IRSVPClassifier</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r9">rpct</a></td></tr>
  108. <tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r10">maxPsbId</a></td></tr>
  109. <tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r11">maxRsbId</a></td></tr>
  110. <tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r12">maxSrcInstance</a></td></tr>
  111. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_i_p_address.html">IPAddress</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r13">routerId</a></td></tr>
  112. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_r_s_v_p.html#y0">PSBVector</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r14">PSBList</a></td></tr>
  113. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_r_s_v_p.html#y1">RSBVector</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r15">RSBList</a></td></tr>
  114. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_r_s_v_p.html#y2">HelloVector</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r16">HelloList</a></td></tr>
  115. <tr><td colspan="2"><br><h2>Friends</h2></td></tr>
  116. <tr><td class="memItemLeft" nowrap align="right" valign="top">class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#n0">SimpleClassifier</a></td></tr>
  117. <tr><td colspan="2"><br><h2>Classes</h2></td></tr>
  118. <tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_r_s_v_p_1_1_hello_state__t.html">HelloState_t</a></td></tr>
  119. <tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_r_s_v_p_1_1_path_state_block__t.html">PathStateBlock_t</a></td></tr>
  120. <tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_r_s_v_p_1_1_resv_state_block__t.html">ResvStateBlock_t</a></td></tr>
  121. <tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_r_s_v_p_1_1traffic__path__t.html">traffic_path_t</a></td></tr>
  122. <tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_r_s_v_p_1_1traffic__session__t.html">traffic_session_t</a></td></tr>
  123. </table>
  124. <hr><h2>Member Typedef Documentation</h2>
  125. <a class="anchor" name="y2" doxytag="RSVP::HelloVector"></a><p>
  126. <table class="mdTable" cellpadding="2" cellspacing="0">
  127. <tr>
  128. <td class="mdRow">
  129. <table cellpadding="0" cellspacing="0" border="0">
  130. <tr>
  131. <td class="md" nowrap valign="top">typedef std::vector&lt;<a class="el" href="struct_r_s_v_p_1_1_hello_state__t.html">HelloState_t</a>&gt; <a class="el" href="class_r_s_v_p.html#y2">RSVP::HelloVector</a><code> [private]</code> </td>
  132. </tr>
  133. </table>
  134. </td>
  135. </tr>
  136. </table>
  137. <table cellspacing="5" cellpadding="0" border="0">
  138. <tr>
  139. <td>
  140. &nbsp;
  141. </td>
  142. <td>
  143. <p>
  144. </td>
  145. </tr>
  146. </table>
  147. <a class="anchor" name="y0" doxytag="RSVP::PSBVector"></a><p>
  148. <table class="mdTable" cellpadding="2" cellspacing="0">
  149. <tr>
  150. <td class="mdRow">
  151. <table cellpadding="0" cellspacing="0" border="0">
  152. <tr>
  153. <td class="md" nowrap valign="top">typedef std::vector&lt;<a class="el" href="struct_r_s_v_p_1_1_path_state_block__t.html">PathStateBlock_t</a>&gt; <a class="el" href="class_r_s_v_p.html#y0">RSVP::PSBVector</a><code> [private]</code> </td>
  154. </tr>
  155. </table>
  156. </td>
  157. </tr>
  158. </table>
  159. <table cellspacing="5" cellpadding="0" border="0">
  160. <tr>
  161. <td>
  162. &nbsp;
  163. </td>
  164. <td>
  165. <p>
  166. </td>
  167. </tr>
  168. </table>
  169. <a class="anchor" name="y1" doxytag="RSVP::RSBVector"></a><p>
  170. <table class="mdTable" cellpadding="2" cellspacing="0">
  171. <tr>
  172. <td class="mdRow">
  173. <table cellpadding="0" cellspacing="0" border="0">
  174. <tr>
  175. <td class="md" nowrap valign="top">typedef std::vector&lt;<a class="el" href="struct_r_s_v_p_1_1_resv_state_block__t.html">ResvStateBlock_t</a>&gt; <a class="el" href="class_r_s_v_p.html#y1">RSVP::RSBVector</a><code> [private]</code> </td>
  176. </tr>
  177. </table>
  178. </td>
  179. </tr>
  180. </table>
  181. <table cellspacing="5" cellpadding="0" border="0">
  182. <tr>
  183. <td>
  184. &nbsp;
  185. </td>
  186. <td>
  187. <p>
  188. </td>
  189. </tr>
  190. </table>
  191. <hr><h2>Constructor &amp; Destructor Documentation</h2>
  192. <a class="anchor" name="a0" doxytag="RSVP::RSVP"></a><p>
  193. <table class="mdTable" cellpadding="2" cellspacing="0">
  194. <tr>
  195. <td class="mdRow">
  196. <table cellpadding="0" cellspacing="0" border="0">
  197. <tr>
  198. <td class="md" nowrap valign="top">RSVP::RSVP </td>
  199. <td class="md" valign="top">(&nbsp;</td>
  200. <td class="mdname1" valign="top" nowrap> </td>
  201. <td class="md" valign="top">&nbsp;)&nbsp;</td>
  202. <td class="md" nowrap></td>
  203. </tr>
  204. </table>
  205. </td>
  206. </tr>
  207. </table>
  208. <table cellspacing="5" cellpadding="0" border="0">
  209. <tr>
  210. <td>
  211. &nbsp;
  212. </td>
  213. <td>
  214. <p>
  215. <div class="fragment"><pre class="fragment">00042 {
  216. 00043 }
  217. </pre></div>
  218. <p>
  219. </td>
  220. </tr>
  221. </table>
  222. <a class="anchor" name="a1" doxytag="RSVP::~RSVP"></a><p>
  223. <table class="mdTable" cellpadding="2" cellspacing="0">
  224. <tr>
  225. <td class="mdRow">
  226. <table cellpadding="0" cellspacing="0" border="0">
  227. <tr>
  228. <td class="md" nowrap valign="top">RSVP::~<a class="el" href="class_r_s_v_p.html">RSVP</a> </td>
  229. <td class="md" valign="top">(&nbsp;</td>
  230. <td class="mdname1" valign="top" nowrap> </td>
  231. <td class="md" valign="top">&nbsp;)&nbsp;</td>
  232. <td class="md" nowrap><code> [virtual]</code></td>
  233. </tr>
  234. </table>
  235. </td>
  236. </tr>
  237. </table>
  238. <table cellspacing="5" cellpadding="0" border="0">
  239. <tr>
  240. <td>
  241. &nbsp;
  242. </td>
  243. <td>
  244. <p>
  245. <div class="fragment"><pre class="fragment">00046 {
  246. 00047 <span class="comment">// TODO cancelAndDelete timers in all data structures</span>
  247. 00048 }
  248. </pre></div>
  249. <p>
  250. </td>
  251. </tr>
  252. </table>
  253. <hr><h2>Member Function Documentation</h2>
  254. <a class="anchor" name="b59" doxytag="RSVP::addSession"></a><p>
  255. <table class="mdTable" cellpadding="2" cellspacing="0">
  256. <tr>
  257. <td class="mdRow">
  258. <table cellpadding="0" cellspacing="0" border="0">
  259. <tr>
  260. <td class="md" nowrap valign="top">void RSVP::addSession </td>
  261. <td class="md" valign="top">(&nbsp;</td>
  262. <td class="md" nowrap valign="top">const cXMLElement &amp;&nbsp;</td>
  263. <td class="mdname1" valign="top" nowrap> <em>node</em> </td>
  264. <td class="md" valign="top">&nbsp;)&nbsp;</td>
  265. <td class="md" nowrap><code> [protected]</code></td>
  266. </tr>
  267. </table>
  268. </td>
  269. </tr>
  270. </table>
  271. <table cellspacing="5" cellpadding="0" border="0">
  272. <tr>
  273. <td>
  274. &nbsp;
  275. </td>
  276. <td>
  277. <p>
  278. <div class="fragment"><pre class="fragment">01855 {
  279. 01856 Enter_Method_Silent();
  280. 01857
  281. 01858 <a class="code" href="class_r_s_v_p.html#b55">readTrafficSessionFromXML</a>(&amp;node);
  282. 01859 }
  283. </pre></div>
  284. <p>
  285. </td>
  286. </tr>
  287. </table>
  288. <a class="anchor" name="b39" doxytag="RSVP::allocateResource"></a><p>
  289. <table class="mdTable" cellpadding="2" cellspacing="0">
  290. <tr>
  291. <td class="mdRow">
  292. <table cellpadding="0" cellspacing="0" border="0">
  293. <tr>
  294. <td class="md" nowrap valign="top">bool RSVP::allocateResource </td>
  295. <td class="md" valign="top">(&nbsp;</td>
  296. <td class="md" nowrap valign="top"><a class="el" href="class_i_p_address.html">IPAddress</a>&nbsp;</td>
  297. <td class="mdname" nowrap> <em>OI</em>, </td>
  298. </tr>
  299. <tr>
  300. <td class="md" nowrap align="right"></td>
  301. <td class="md"></td>
  302. <td class="md" nowrap>const <a class="el" href="struct_session_obj__t.html">SessionObj_t</a> &amp;&nbsp;</td>
  303. <td class="mdname" nowrap> <em>session</em>, </td>
  304. </tr>
  305. <tr>
  306. <td class="md" nowrap align="right"></td>
  307. <td class="md"></td>
  308. <td class="md" nowrap>double&nbsp;</td>
  309. <td class="mdname" nowrap> <em>bandwidth</em></td>
  310. </tr>
  311. <tr>
  312. <td class="md"></td>
  313. <td class="md">)&nbsp;</td>
  314. <td class="md" colspan="2"><code> [protected]</code></td>
  315. </tr>
  316. </table>
  317. </td>
  318. </tr>
  319. </table>
  320. <table cellspacing="5" cellpadding="0" border="0">
  321. <tr>
  322. <td>
  323. &nbsp;
  324. </td>
  325. <td>
  326. <p>
  327. <div class="fragment"><pre class="fragment">00721 {
  328. 00722 <span class="keywordflow">if</span> (OI.<a class="code" href="class_i_p_address.html#a1">isUnspecified</a>())
  329. 00723 <span class="keywordflow">return</span> <span class="keyword">true</span>;
  330. 00724
  331. 00725 <span class="keywordflow">if</span> (!<a class="code" href="class_r_s_v_p.html#r4">tedmod</a>-&gt;<a class="code" href="class_t_e_d.html#z61_5">isLocalAddress</a>(OI))
  332. 00726 <span class="keywordflow">return</span> <span class="keyword">true</span>;
  333. 00727
  334. 00728 <span class="keywordflow">if</span> (bandwidth == 0.0)
  335. 00729 return true;
  336. 00730
  337. 00731 <span class="keywordtype">int</span> setupPri = session.setupPri;
  338. 00732 <span class="keywordtype">int</span> holdingPri = session.holdingPri;
  339. 00733
  340. 00734 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = tedmod-&gt;linkIndex(OI);
  341. 00735
  342. 00736 <span class="comment">// Note: UnRB[7] &lt;= UnRW[setupPri] &lt;= UnRW[holdingPri] &lt;= BW[0]</span>
  343. 00737 <span class="comment">// UnRW[7] is the actual BW left on the link</span>
  344. 00738
  345. 00739 if (tedmod-&gt;ted[index].UnResvBandwidth[setupPri] &lt; bandwidth)
  346. 00740 return false;
  347. 00741
  348. 00742 for (<span class="keywordtype">int</span> p = holdingPri; p &lt; 8; p++)
  349. 00743 {
  350. 00744 <a class="code" href="class_r_s_v_p.html#r4">tedmod</a>-&gt;<a class="code" href="class_t_e_d.html#o0">ted</a>[index].UnResvBandwidth[p] -= bandwidth;
  351. 00745
  352. 00746 <span class="keywordflow">if</span> (<a class="code" href="class_r_s_v_p.html#r4">tedmod</a>-&gt;<a class="code" href="class_t_e_d.html#o0">ted</a>[index].UnResvBandwidth[p] &lt; 0.0)
  353. 00747 preempt(OI, p, -tedmod-&gt;ted[index].UnResvBandwidth[p]);
  354. 00748 }
  355. 00749
  356. 00750 <span class="comment">// announce changes</span>
  357. 00751
  358. 00752 announceLinkChange(index);
  359. 00753
  360. 00754 return true;
  361. 00755 }
  362. </pre></div>
  363. <p>
  364. </td>
  365. </tr>
  366. </table>
  367. <a class="anchor" name="b42" doxytag="RSVP::announceLinkChange"></a><p>
  368. <table class="mdTable" cellpadding="2" cellspacing="0">
  369. <tr>
  370. <td class="mdRow">
  371. <table cellpadding="0" cellspacing="0" border="0">
  372. <tr>
  373. <td class="md" nowrap valign="top">void RSVP::announceLinkChange </td>
  374. <td class="md" valign="top">(&nbsp;</td>
  375. <td class="md" nowrap valign="top">int&nbsp;</td>
  376. <td class="mdname1" valign="top" nowrap> <em>tedlinkindex</em> </td>
  377. <td class="md" valign="top">&nbsp;)&nbsp;</td>
  378. <td class="md" nowrap><code> [protected]</code></td>
  379. </tr>
  380. </table>
  381. </td>
  382. </tr>
  383. </table>
  384. <table cellspacing="5" cellpadding="0" border="0">
  385. <tr>
  386. <td>
  387. &nbsp;
  388. </td>
  389. <td>
  390. <p>
  391. <div class="fragment"><pre class="fragment">00758 {
  392. 00759 <a class="code" href="class_t_e_d_change_info.html">TEDChangeInfo</a> d;
  393. 00760 d.<a class="code" href="class_t_e_d_change_info.html#a6">setTedLinkIndicesArraySize</a>(1);
  394. 00761 d.<a class="code" href="class_t_e_d_change_info.html#a9">setTedLinkIndices</a>(0, tedlinkindex);
  395. 00762 <a class="code" href="class_r_s_v_p.html#r8">nb</a>-&gt;<a class="code" href="class_notification_board.html#z24_0">fireChangeNotification</a>(NF_TED_CHANGED, &amp;d);
  396. 00763 }
  397. </pre></div>
  398. <p>
  399. </td>
  400. </tr>
  401. </table>
  402. <a class="anchor" name="b26" doxytag="RSVP::commitResv"></a><p>
  403. <table class="mdTable" cellpadding="2" cellspacing="0">
  404. <tr>
  405. <td class="mdRow">
  406. <table cellpadding="0" cellspacing="0" border="0">
  407. <tr>
  408. <td class="md" nowrap valign="top">void RSVP::commitResv </td>
  409. <td class="md" valign="top">(&nbsp;</td>
  410. <td class="md" nowrap valign="top"><a class="el" href="struct_r_s_v_p_1_1_resv_state_block__t.html">ResvStateBlock_t</a> *&nbsp;</td>
  411. <td class="mdname1" valign="top" nowrap> <em>rsb</em> </td>
  412. <td class="md" valign="top">&nbsp;)&nbsp;</td>
  413. <td class="md" nowrap><code> [protected]</code></td>
  414. </tr>
  415. </table>
  416. </td>
  417. </tr>
  418. </table>
  419. <table cellspacing="5" cellpadding="0" border="0">
  420. <tr>
  421. <td>
  422. &nbsp;
  423. </td>
  424. <td>
  425. <p>
  426. <div class="fragment"><pre class="fragment">00766 {
  427. 00767 <a class="code" href="_i_n_e_t_defs_8h.html#a1">EV</a> &lt;&lt; <span class="stringliteral">"commit reservation (RSB "</span> &lt;&lt; rsb-&gt;id &lt;&lt; <span class="stringliteral">")"</span> &lt;&lt; endl;
  428. 00768
  429. 00769 <span class="comment">// allocate bandwidth as needed</span>
  430. 00770
  431. 00771 <a class="code" href="_i_n_e_t_defs_8h.html#a1">EV</a> &lt;&lt; <span class="stringliteral">"currently allocated: "</span> &lt;&lt; rsb-&gt;Flowspec_Object &lt;&lt; endl;
  432. 00772
  433. 00773 <span class="keywordflow">while</span>(<span class="keyword">true</span>)
  434. 00774 {
  435. 00775 <span class="comment">// remove RSB if empty</span>
  436. 00776
  437. 00777 <span class="keywordflow">if</span> (rsb-&gt;FlowDescriptor.size() == 0)
  438. 00778 {
  439. 00779 <a class="code" href="class_r_s_v_p.html#b21">removeRSB</a>(rsb);
  440. 00780 <span class="keywordflow">return</span>;
  441. 00781 }
  442. 00782
  443. 00783 <a class="code" href="struct_flow_spec_obj__t.html">FlowSpecObj_t</a> req;
  444. 00784 req.<a class="code" href="struct_sender_tspec_obj__t.html#o0">req_bandwidth</a> = 0.0;
  445. 00785
  446. 00786 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxFlowIndex;
  447. 00787 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; rsb-&gt;FlowDescriptor.size(); i++)
  448. 00788 {
  449. 00789 <span class="keywordflow">if</span> (rsb-&gt;FlowDescriptor[i].Flowspec_Object.req_bandwidth &gt; req.<a class="code" href="struct_sender_tspec_obj__t.html#o0">req_bandwidth</a>)
  450. 00790 {
  451. 00791 req.<a class="code" href="struct_sender_tspec_obj__t.html#o0">req_bandwidth</a> = rsb-&gt;FlowDescriptor[i].Flowspec_Object.<a class="code" href="struct_sender_tspec_obj__t.html#o0">req_bandwidth</a>;
  452. 00792 maxFlowIndex = i;
  453. 00793 }
  454. 00794 }
  455. 00795
  456. 00796 <a class="code" href="_i_n_e_t_defs_8h.html#a1">EV</a> &lt;&lt; <span class="stringliteral">"currently required: "</span> &lt;&lt; req &lt;&lt; endl;
  457. 00797
  458. 00798 <span class="keywordtype">double</span> needed = req.<a class="code" href="struct_sender_tspec_obj__t.html#o0">req_bandwidth</a> - rsb-&gt;Flowspec_Object.<a class="code" href="struct_sender_tspec_obj__t.html#o0">req_bandwidth</a>;
  459. 00799
  460. 00800 <span class="keywordflow">if</span> (needed != 0.0)
  461. 00801 {
  462. 00802 <span class="keywordflow">if</span> (<a class="code" href="class_r_s_v_p.html#b39">allocateResource</a>(rsb-&gt;OI, rsb-&gt;Session_Object, needed))
  463. 00803 {
  464. 00804 <span class="comment">// allocated (deallocated) successfully</span>
  465. 00805
  466. 00806 <a class="code" href="_i_n_e_t_defs_8h.html#a1">EV</a> &lt;&lt; <span class="stringliteral">"additional bandwidth of "</span> &lt;&lt; needed &lt;&lt; <span class="stringliteral">" allocated sucessfully"</span> &lt;&lt; endl;
  467. 00807
  468. 00808 rsb-&gt;Flowspec_Object.<a class="code" href="struct_sender_tspec_obj__t.html#o0">req_bandwidth</a> += needed;
  469. 00809 }
  470. 00810 <span class="keywordflow">else</span>
  471. 00811 {
  472. 00812 <span class="comment">// bandwidth not available</span>
  473. 00813
  474. 00814 ASSERT(rsb-&gt;inLabelVector.size() == rsb-&gt;FlowDescriptor.size());
  475. 00815
  476. 00816 <a class="code" href="_i_n_e_t_defs_8h.html#a1">EV</a> &lt;&lt; <span class="stringliteral">"not enough bandwidth to accommodate this RSB"</span> &lt;&lt; endl;
  477. 00817
  478. 00818 <span class="keywordtype">int</span> lspid = rsb-&gt;FlowDescriptor[maxFlowIndex].Filter_Spec_Object.Lsp_Id;
  479. 00819 <span class="keywordtype">int</span> oldInLabel = rsb-&gt;inLabelVector[maxFlowIndex];
  480. 00820 PathStateBlock_t *psb = <a class="code" href="class_r_s_v_p.html#b45">findPSB</a>(rsb-&gt;Session_Object, (<a class="code" href="struct_sender_template_obj__t.html">SenderTemplateObj_t</a>&amp;)rsb-&gt;FlowDescriptor[maxFlowIndex].Filter_Spec_Object);
  481. 00821
  482. 00822 <a class="code" href="_i_n_e_t_defs_8h.html#a1">EV</a> &lt;&lt; <span class="stringliteral">"removing filter lspid="</span> &lt;&lt; lspid &lt;&lt; <span class="stringliteral">" (max. flow)"</span> &lt;&lt; endl;
  483. 00823
  484. 00824 rsb-&gt;FlowDescriptor.erase(rsb-&gt;FlowDescriptor.begin() + maxFlowIndex);
  485. 00825 rsb-&gt;inLabelVector.erase(rsb-&gt;inLabelVector.begin() + maxFlowIndex);
  486. 00826
  487. 00827 <span class="keywordflow">if</span> (oldInLabel != -1)
  488. 00828 {
  489. 00829 <span class="comment">// path already existed, this must be preemption</span>
  490. 00830
  491. 00831 <a class="code" href="class_r_s_v_p.html#b32">sendPathErrorMessage</a>(psb, PATH_ERR_PREEMPTED);
  492. 00832
  493. 00833 <a class="code" href="class_r_s_v_p.html#r7">lt</a>-&gt;<a class="code" href="class_l_i_b_table.html#a2">removeLibEntry</a>(oldInLabel);
  494. 00834 }
  495. 00835 <span class="keywordflow">else</span>
  496. 00836 {
  497. 00837 <span class="comment">// path not established yet, report as unfeasible</span>
  498. 00838
  499. 00839 <a class="code" href="class_r_s_v_p.html#b32">sendPathErrorMessage</a>(psb, PATH_ERR_UNFEASIBLE);
  500. 00840 }
  501. 00841
  502. 00842 <span class="keywordflow">continue</span>;
  503. 00843 }
  504. 00844
  505. 00845 }
  506. 00846
  507. 00847 <span class="keywordflow">break</span>;
  508. 00848 }
  509. 00849
  510. 00850 <span class="comment">// install labels into lib</span>
  511. 00851
  512. 00852 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; rsb-&gt;FlowDescriptor.size(); i++)
  513. 00853 {
  514. 00854 <span class="keywordtype">int</span> lspid = rsb-&gt;FlowDescriptor[i].Filter_Spec_Object.Lsp_Id;
  515. 00855
  516. 00856 <a class="code" href="_i_n_e_t_defs_8h.html#a1">EV</a> &lt;&lt; <span class="stringliteral">"processing lspid="</span> &lt;&lt; lspid &lt;&lt; endl;
  517. 00857
  518. 00858 PathStateBlock_t *psb = <a class="code" href="class_r_s_v_p.html#b45">findPSB</a>(rsb-&gt;Session_Object, rsb-&gt;FlowDescriptor[i].Filter_Spec_Object);
  519. 00859
  520. 00860 <a class="code" href="_l_i_b_table_8h.html#a3">LabelOpVector</a> outLabel;
  521. 00861 std::string inInterface, outInterface;
  522. 00862
  523. 00863 <span class="keywordtype">bool</span> IR = (psb-&gt;Previous_Hop_Address == <a class="code" href="class_r_s_v_p.html#r13">routerId</a>);
  524. 00864 <span class="comment">//bool ER = psb-&gt;OutInterface.isUnspecified();</span>
  525. 00865 <span class="keywordflow">if</span> (!IR)
  526. 00866 {
  527. 00867 <a class="code" href="class_i_p_address.html">IPAddress</a> localInf = <a class="code" href="class_r_s_v_p.html#r4">tedmod</a>-&gt;<a class="code" href="class_t_e_d.html#z61_0">interfaceAddrByPeerAddress</a>(psb-&gt;Previous_Hop_Address);
  528. 00868 inInterface = <a class="code" href="class_r_s_v_p.html#r5">rt</a>-&gt;<a class="code" href="class_routing_table.html#z40_1">interfaceByAddress</a>(localInf)-&gt;<a class="code" href="class_interface_entry.html#a5">name</a>();
  529. 00869 }
  530. 00870 <span class="keywordflow">else</span>
  531. 00871 inInterface = <span class="stringliteral">"any"</span>;
  532. 00872
  533. 00873 <span class="comment">// outlabel and outgoing interface</span>
  534. 00874
  535. 00875 <a class="code" href="struct_label_op.html">LabelOp</a> lop;
  536. 00876
  537. 00877 <span class="keywordflow">if</span> (<a class="code" href="class_r_s_v_p.html#r4">tedmod</a>-&gt;<a class="code" href="class_t_e_d.html#z61_5">isLocalAddress</a>(psb-&gt;OutInterface))
  538. 00878 {
  539. 00879 <span class="comment">// regular next hop</span>
  540. 00880
  541. 00881 lop.<a class="code" href="struct_label_op.html#o1">optcode</a> = IR? <a class="code" href="_l_i_b_table_8h.html#a0">PUSH_OPER</a>: <a class="code" href="_l_i_b_table_8h.html#a1">SWAP_OPER</a>;
  542. 00882 lop.<a class="code" href="struct_label_op.html#o0">label</a> = rsb-&gt;FlowDescriptor[i].<a class="code" href="struct_label_op.html#o0">label</a>;
  543. 00883 outLabel.push_back(lop);
  544. 00884
  545. 00885 outInterface = <a class="code" href="class_r_s_v_p.html#r5">rt</a>-&gt;<a class="code" href="class_routing_table.html#z40_1">interfaceByAddress</a>(psb-&gt;OutInterface)-&gt;<a class="code" href="class_interface_entry.html#a5">name</a>();
  546. 00886 }
  547. 00887 <span class="keywordflow">else</span>
  548. 00888 {
  549. 00889 <span class="comment">// egress router</span>
  550. 00890
  551. 00891 lop.<a class="code" href="struct_label_op.html#o0">label</a> = 0;
  552. 00892 lop.<a class="code" href="struct_label_op.html#o1">optcode</a> = <a class="code" href="_l_i_b_table_8h.html#a2">POP_OPER</a>;
  553. 00893 outLabel.push_back(lop);
  554. 00894
  555. 00895 outInterface = <span class="stringliteral">"lo0"</span>;
  556. 00896
  557. 00897 <span class="keywordflow">if</span> (!<a class="code" href="class_r_s_v_p.html#r4">tedmod</a>-&gt;<a class="code" href="class_t_e_d.html#z61_5">isLocalAddress</a>(psb-&gt;Session_Object.DestAddress))
  558. 00898 {
  559. 00899 <a class="code" href="class_interface_entry.html">InterfaceEntry</a> *ie = <a class="code" href="class_r_s_v_p.html#r5">rt</a>-&gt;<a class="code" href="class_routing_table.html#z42_2">interfaceForDestAddr</a>(psb-&gt;Session_Object.DestAddress);
  560. 00900 <span class="keywordflow">if</span> (ie)
  561. 00901 outInterface = ie-&gt;name(); <span class="comment">// FIXME why use name to identify an interface?</span>
  562. 00902 }
  563. 00903 }
  564. 00904
  565. 00905 EV &lt;&lt; "installing label for " &lt;&lt; lspid &lt;&lt; " outLabel=" &lt;&lt; outLabel &lt;&lt;
  566. 00906 " outInterface=" &lt;&lt; outInterface &lt;&lt; endl;
  567. 00907
  568. 00908 ASSERT(rsb-&gt;inLabelVector.size() == rsb-&gt;FlowDescriptor.size());
  569. 00909
  570. 00910 <span class="keywordtype">int</span> inLabel = lt-&gt;installLibEntry(rsb-&gt;inLabelVector[i], inInterface,
  571. 00911 outLabel, outInterface, psb-&gt;color);
  572. 00912
  573. 00913 ASSERT(inLabel &gt;= 0);
  574. 00914
  575. 00915 if (IR &amp;&amp; rsb-&gt;inLabelVector[i] == -1)
  576. 00916 {
  577. 00917 <span class="comment">// path established</span>
  578. 00918 <a class="code" href="class_r_s_v_p.html#b35">sendPathNotify</a>(psb-&gt;handler, psb-&gt;Session_Object, psb-&gt;Sender_Template_Object, PATH_CREATED, 0.0);
  579. 00919 }
  580. 00920
  581. 00921 <span class="keywordflow">if</span> (rsb-&gt;inLabelVector[i] != inLabel)
  582. 00922 {
  583. 00923 <span class="comment">// remember our current label</span>
  584. 00924

Large files files are truncated, but you can click here to view the full file