/Documentation/doxy/class_r_s_v_p.html
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
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
- <title>INET Framework for OMNeT++/OMNEST: RSVP Class Reference</title>
- <link href="opp.css" rel="stylesheet" type="text/css">
- </head><body>
- <!-- Generated by Doxygen 1.4.0 -->
- <div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a> | <a class="qindex" href="pages.html">Related Pages</a></div>
- <h1>RSVP Class Reference</h1><code>#include <RSVP.h></code>
- <p>
- <p>Inheritance diagram for RSVP:
- <p><center><img src="class_r_s_v_p.png" usemap="#RSVP_map" border="0" alt=""></center>
- <map name="RSVP_map">
- <area href="class_i_scriptable.html" alt="IScriptable" shape="rect" coords="0,0,72,24">
- </map>
- <a href="class_r_s_v_p-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
- TODO documentation
- <p>
- <table border="0" cellpadding="0" cellspacing="0">
- <tr><td></td></tr>
- <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#a0">RSVP</a> ()</td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#a1">~RSVP</a> ()</td></tr>
- <tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <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> * </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>
- <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> * </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> &session, const <a class="el" href="struct_r_s_v_p_1_1traffic__path__t.html">traffic_path_t</a> &path)</td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <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> * </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>
- <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> * </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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> &session, const <a class="el" href="struct_sender_template_obj__t.html">SenderTemplateObj_t</a> &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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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> &session, const <a class="el" href="struct_sender_template_obj__t.html">SenderTemplateObj_t</a> &sender, int status, double delay)</td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b36">setupHello</a> ()</td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </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> &session, double bandwidth)</td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </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> &session, const <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> OI)</td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b42">announceLinkChange</a> (int tedlinkindex)</td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">bool </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> &ERO, <a class="el" href="class_i_p_address.html">IPAddress</a> &OI)</td></tr>
- <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> * </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> &session, const <a class="el" href="struct_sender_template_obj__t.html">SenderTemplateObj_t</a> &sender)</td></tr>
- <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> * </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> &session, const <a class="el" href="struct_sender_template_obj__t.html">SenderTemplateObj_t</a> &sender, unsigned int &index)</td></tr>
- <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> * </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b47">findPsbById</a> (int id)</td></tr>
- <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> * </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b48">findRsbById</a> (int id)</td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">std::vector< <a class="el" href="struct_r_s_v_p_1_1traffic__session__t.html">traffic_session_t</a> <br>
- >::iterator </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> &session)</td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">std::vector< <a class="el" href="struct_r_s_v_p_1_1traffic__path__t.html">traffic_path_t</a> <br>
- >::iterator </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> &sender)</td></tr>
- <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> * </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b55">readTrafficSessionFromXML</a> (const cXMLElement *session)</td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="_int_serv__m_8h.html#a2">EroVector</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b56">readTrafficRouteFromXML</a> (const cXMLElement *route)</td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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> &session, const <a class="el" href="struct_sender_template_obj__t.html">SenderTemplateObj_t</a> &sender)</td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b59">addSession</a> (const cXMLElement &node)</td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b60">delSession</a> (const cXMLElement &node)</td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b61">numInitStages</a> () const </td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b62">initialize</a> (int stage)</td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b63">handleMessage</a> (cMessage *msg)</td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#b64">processCommand</a> (const cXMLElement &node)</td></tr>
- <tr><td colspan="2"><br><h2>Private Types</h2></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::vector< <a class="el" href="struct_r_s_v_p_1_1_path_state_block__t.html">PathStateBlock_t</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#y0">PSBVector</a></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::vector< <a class="el" href="struct_r_s_v_p_1_1_resv_state_block__t.html">ResvStateBlock_t</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#y1">RSBVector</a></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::vector< <a class="el" href="struct_r_s_v_p_1_1_hello_state__t.html">HelloState_t</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#y2">HelloVector</a></td></tr>
- <tr><td colspan="2"><br><h2>Private Member Functions</h2></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">int </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> &session, const <a class="el" href="struct_sender_template_obj__t.html">SenderTemplateObj_t</a> &sender)</td></tr>
- <tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">std::vector< <a class="el" href="struct_r_s_v_p_1_1traffic__session__t.html">traffic_session_t</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r0">traffic</a></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r1">helloInterval</a></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r2">helloTimeout</a></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r3">retryInterval</a></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_t_e_d.html">TED</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r4">tedmod</a></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_routing_table.html">RoutingTable</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r5">rt</a></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_interface_table.html">InterfaceTable</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r6">ift</a></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_l_i_b_table.html">LIBTable</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r7">lt</a></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_notification_board.html">NotificationBoard</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r8">nb</a></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_i_r_s_v_p_classifier.html">IRSVPClassifier</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r9">rpct</a></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r10">maxPsbId</a></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r11">maxRsbId</a></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r12">maxSrcInstance</a></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_i_p_address.html">IPAddress</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r13">routerId</a></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_r_s_v_p.html#y0">PSBVector</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r14">PSBList</a></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_r_s_v_p.html#y1">RSBVector</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r15">RSBList</a></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_r_s_v_p.html#y2">HelloVector</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#r16">HelloList</a></td></tr>
- <tr><td colspan="2"><br><h2>Friends</h2></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="class_r_s_v_p.html#n0">SimpleClassifier</a></td></tr>
- <tr><td colspan="2"><br><h2>Classes</h2></td></tr>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">struct </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">struct </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">struct </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">struct </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>
- <tr><td class="memItemLeft" nowrap align="right" valign="top">struct </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>
- </table>
- <hr><h2>Member Typedef Documentation</h2>
- <a class="anchor" name="y2" doxytag="RSVP::HelloVector"></a><p>
- <table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">typedef std::vector<<a class="el" href="struct_r_s_v_p_1_1_hello_state__t.html">HelloState_t</a>> <a class="el" href="class_r_s_v_p.html#y2">RSVP::HelloVector</a><code> [private]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- <table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
- <p>
- </td>
- </tr>
- </table>
- <a class="anchor" name="y0" doxytag="RSVP::PSBVector"></a><p>
- <table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">typedef std::vector<<a class="el" href="struct_r_s_v_p_1_1_path_state_block__t.html">PathStateBlock_t</a>> <a class="el" href="class_r_s_v_p.html#y0">RSVP::PSBVector</a><code> [private]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- <table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
- <p>
- </td>
- </tr>
- </table>
- <a class="anchor" name="y1" doxytag="RSVP::RSBVector"></a><p>
- <table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">typedef std::vector<<a class="el" href="struct_r_s_v_p_1_1_resv_state_block__t.html">ResvStateBlock_t</a>> <a class="el" href="class_r_s_v_p.html#y1">RSVP::RSBVector</a><code> [private]</code> </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- <table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
- <p>
- </td>
- </tr>
- </table>
- <hr><h2>Constructor & Destructor Documentation</h2>
- <a class="anchor" name="a0" doxytag="RSVP::RSVP"></a><p>
- <table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">RSVP::RSVP </td>
- <td class="md" valign="top">( </td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- <table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
- <p>
- <div class="fragment"><pre class="fragment">00042 {
- 00043 }
- </pre></div>
- <p>
- </td>
- </tr>
- </table>
- <a class="anchor" name="a1" doxytag="RSVP::~RSVP"></a><p>
- <table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">RSVP::~<a class="el" href="class_r_s_v_p.html">RSVP</a> </td>
- <td class="md" valign="top">( </td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [virtual]</code></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- <table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
- <p>
- <div class="fragment"><pre class="fragment">00046 {
- 00047 <span class="comment">// TODO cancelAndDelete timers in all data structures</span>
- 00048 }
- </pre></div>
- <p>
- </td>
- </tr>
- </table>
- <hr><h2>Member Function Documentation</h2>
- <a class="anchor" name="b59" doxytag="RSVP::addSession"></a><p>
- <table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void RSVP::addSession </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">const cXMLElement & </td>
- <td class="mdname1" valign="top" nowrap> <em>node</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [protected]</code></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- <table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
- <p>
- <div class="fragment"><pre class="fragment">01855 {
- 01856 Enter_Method_Silent();
- 01857
- 01858 <a class="code" href="class_r_s_v_p.html#b55">readTrafficSessionFromXML</a>(&node);
- 01859 }
- </pre></div>
- <p>
- </td>
- </tr>
- </table>
- <a class="anchor" name="b39" doxytag="RSVP::allocateResource"></a><p>
- <table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">bool RSVP::allocateResource </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top"><a class="el" href="class_i_p_address.html">IPAddress</a> </td>
- <td class="mdname" nowrap> <em>OI</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>const <a class="el" href="struct_session_obj__t.html">SessionObj_t</a> & </td>
- <td class="mdname" nowrap> <em>session</em>, </td>
- </tr>
- <tr>
- <td class="md" nowrap align="right"></td>
- <td class="md"></td>
- <td class="md" nowrap>double </td>
- <td class="mdname" nowrap> <em>bandwidth</em></td>
- </tr>
- <tr>
- <td class="md"></td>
- <td class="md">) </td>
- <td class="md" colspan="2"><code> [protected]</code></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- <table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
- <p>
- <div class="fragment"><pre class="fragment">00721 {
- 00722 <span class="keywordflow">if</span> (OI.<a class="code" href="class_i_p_address.html#a1">isUnspecified</a>())
- 00723 <span class="keywordflow">return</span> <span class="keyword">true</span>;
- 00724
- 00725 <span class="keywordflow">if</span> (!<a class="code" href="class_r_s_v_p.html#r4">tedmod</a>-><a class="code" href="class_t_e_d.html#z61_5">isLocalAddress</a>(OI))
- 00726 <span class="keywordflow">return</span> <span class="keyword">true</span>;
- 00727
- 00728 <span class="keywordflow">if</span> (bandwidth == 0.0)
- 00729 return true;
- 00730
- 00731 <span class="keywordtype">int</span> setupPri = session.setupPri;
- 00732 <span class="keywordtype">int</span> holdingPri = session.holdingPri;
- 00733
- 00734 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = tedmod->linkIndex(OI);
- 00735
- 00736 <span class="comment">// Note: UnRB[7] <= UnRW[setupPri] <= UnRW[holdingPri] <= BW[0]</span>
- 00737 <span class="comment">// UnRW[7] is the actual BW left on the link</span>
- 00738
- 00739 if (tedmod->ted[index].UnResvBandwidth[setupPri] < bandwidth)
- 00740 return false;
- 00741
- 00742 for (<span class="keywordtype">int</span> p = holdingPri; p < 8; p++)
- 00743 {
- 00744 <a class="code" href="class_r_s_v_p.html#r4">tedmod</a>-><a class="code" href="class_t_e_d.html#o0">ted</a>[index].UnResvBandwidth[p] -= bandwidth;
- 00745
- 00746 <span class="keywordflow">if</span> (<a class="code" href="class_r_s_v_p.html#r4">tedmod</a>-><a class="code" href="class_t_e_d.html#o0">ted</a>[index].UnResvBandwidth[p] < 0.0)
- 00747 preempt(OI, p, -tedmod->ted[index].UnResvBandwidth[p]);
- 00748 }
- 00749
- 00750 <span class="comment">// announce changes</span>
- 00751
- 00752 announceLinkChange(index);
- 00753
- 00754 return true;
- 00755 }
- </pre></div>
- <p>
- </td>
- </tr>
- </table>
- <a class="anchor" name="b42" doxytag="RSVP::announceLinkChange"></a><p>
- <table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void RSVP::announceLinkChange </td>
- <td class="md" valign="top">( </td>
- <td class="md" nowrap valign="top">int </td>
- <td class="mdname1" valign="top" nowrap> <em>tedlinkindex</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [protected]</code></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- <table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
- <p>
- <div class="fragment"><pre class="fragment">00758 {
- 00759 <a class="code" href="class_t_e_d_change_info.html">TEDChangeInfo</a> d;
- 00760 d.<a class="code" href="class_t_e_d_change_info.html#a6">setTedLinkIndicesArraySize</a>(1);
- 00761 d.<a class="code" href="class_t_e_d_change_info.html#a9">setTedLinkIndices</a>(0, tedlinkindex);
- 00762 <a class="code" href="class_r_s_v_p.html#r8">nb</a>-><a class="code" href="class_notification_board.html#z24_0">fireChangeNotification</a>(NF_TED_CHANGED, &d);
- 00763 }
- </pre></div>
- <p>
- </td>
- </tr>
- </table>
- <a class="anchor" name="b26" doxytag="RSVP::commitResv"></a><p>
- <table class="mdTable" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td class="md" nowrap valign="top">void RSVP::commitResv </td>
- <td class="md" valign="top">( </td>
- <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> * </td>
- <td class="mdname1" valign="top" nowrap> <em>rsb</em> </td>
- <td class="md" valign="top"> ) </td>
- <td class="md" nowrap><code> [protected]</code></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- <table cellspacing="5" cellpadding="0" border="0">
- <tr>
- <td>
-
- </td>
- <td>
- <p>
- <div class="fragment"><pre class="fragment">00766 {
- 00767 <a class="code" href="_i_n_e_t_defs_8h.html#a1">EV</a> << <span class="stringliteral">"commit reservation (RSB "</span> << rsb->id << <span class="stringliteral">")"</span> << endl;
- 00768
- 00769 <span class="comment">// allocate bandwidth as needed</span>
- 00770
- 00771 <a class="code" href="_i_n_e_t_defs_8h.html#a1">EV</a> << <span class="stringliteral">"currently allocated: "</span> << rsb->Flowspec_Object << endl;
- 00772
- 00773 <span class="keywordflow">while</span>(<span class="keyword">true</span>)
- 00774 {
- 00775 <span class="comment">// remove RSB if empty</span>
- 00776
- 00777 <span class="keywordflow">if</span> (rsb->FlowDescriptor.size() == 0)
- 00778 {
- 00779 <a class="code" href="class_r_s_v_p.html#b21">removeRSB</a>(rsb);
- 00780 <span class="keywordflow">return</span>;
- 00781 }
- 00782
- 00783 <a class="code" href="struct_flow_spec_obj__t.html">FlowSpecObj_t</a> req;
- 00784 req.<a class="code" href="struct_sender_tspec_obj__t.html#o0">req_bandwidth</a> = 0.0;
- 00785
- 00786 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxFlowIndex;
- 00787 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < rsb->FlowDescriptor.size(); i++)
- 00788 {
- 00789 <span class="keywordflow">if</span> (rsb->FlowDescriptor[i].Flowspec_Object.req_bandwidth > req.<a class="code" href="struct_sender_tspec_obj__t.html#o0">req_bandwidth</a>)
- 00790 {
- 00791 req.<a class="code" href="struct_sender_tspec_obj__t.html#o0">req_bandwidth</a> = rsb->FlowDescriptor[i].Flowspec_Object.<a class="code" href="struct_sender_tspec_obj__t.html#o0">req_bandwidth</a>;
- 00792 maxFlowIndex = i;
- 00793 }
- 00794 }
- 00795
- 00796 <a class="code" href="_i_n_e_t_defs_8h.html#a1">EV</a> << <span class="stringliteral">"currently required: "</span> << req << endl;
- 00797
- 00798 <span class="keywordtype">double</span> needed = req.<a class="code" href="struct_sender_tspec_obj__t.html#o0">req_bandwidth</a> - rsb->Flowspec_Object.<a class="code" href="struct_sender_tspec_obj__t.html#o0">req_bandwidth</a>;
- 00799
- 00800 <span class="keywordflow">if</span> (needed != 0.0)
- 00801 {
- 00802 <span class="keywordflow">if</span> (<a class="code" href="class_r_s_v_p.html#b39">allocateResource</a>(rsb->OI, rsb->Session_Object, needed))
- 00803 {
- 00804 <span class="comment">// allocated (deallocated) successfully</span>
- 00805
- 00806 <a class="code" href="_i_n_e_t_defs_8h.html#a1">EV</a> << <span class="stringliteral">"additional bandwidth of "</span> << needed << <span class="stringliteral">" allocated sucessfully"</span> << endl;
- 00807
- 00808 rsb->Flowspec_Object.<a class="code" href="struct_sender_tspec_obj__t.html#o0">req_bandwidth</a> += needed;
- 00809 }
- 00810 <span class="keywordflow">else</span>
- 00811 {
- 00812 <span class="comment">// bandwidth not available</span>
- 00813
- 00814 ASSERT(rsb->inLabelVector.size() == rsb->FlowDescriptor.size());
- 00815
- 00816 <a class="code" href="_i_n_e_t_defs_8h.html#a1">EV</a> << <span class="stringliteral">"not enough bandwidth to accommodate this RSB"</span> << endl;
- 00817
- 00818 <span class="keywordtype">int</span> lspid = rsb->FlowDescriptor[maxFlowIndex].Filter_Spec_Object.Lsp_Id;
- 00819 <span class="keywordtype">int</span> oldInLabel = rsb->inLabelVector[maxFlowIndex];
- 00820 PathStateBlock_t *psb = <a class="code" href="class_r_s_v_p.html#b45">findPSB</a>(rsb->Session_Object, (<a class="code" href="struct_sender_template_obj__t.html">SenderTemplateObj_t</a>&)rsb->FlowDescriptor[maxFlowIndex].Filter_Spec_Object);
- 00821
- 00822 <a class="code" href="_i_n_e_t_defs_8h.html#a1">EV</a> << <span class="stringliteral">"removing filter lspid="</span> << lspid << <span class="stringliteral">" (max. flow)"</span> << endl;
- 00823
- 00824 rsb->FlowDescriptor.erase(rsb->FlowDescriptor.begin() + maxFlowIndex);
- 00825 rsb->inLabelVector.erase(rsb->inLabelVector.begin() + maxFlowIndex);
- 00826
- 00827 <span class="keywordflow">if</span> (oldInLabel != -1)
- 00828 {
- 00829 <span class="comment">// path already existed, this must be preemption</span>
- 00830
- 00831 <a class="code" href="class_r_s_v_p.html#b32">sendPathErrorMessage</a>(psb, PATH_ERR_PREEMPTED);
- 00832
- 00833 <a class="code" href="class_r_s_v_p.html#r7">lt</a>-><a class="code" href="class_l_i_b_table.html#a2">removeLibEntry</a>(oldInLabel);
- 00834 }
- 00835 <span class="keywordflow">else</span>
- 00836 {
- 00837 <span class="comment">// path not established yet, report as unfeasible</span>
- 00838
- 00839 <a class="code" href="class_r_s_v_p.html#b32">sendPathErrorMessage</a>(psb, PATH_ERR_UNFEASIBLE);
- 00840 }
- 00841
- 00842 <span class="keywordflow">continue</span>;
- 00843 }
- 00844
- 00845 }
- 00846
- 00847 <span class="keywordflow">break</span>;
- 00848 }
- 00849
- 00850 <span class="comment">// install labels into lib</span>
- 00851
- 00852 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < rsb->FlowDescriptor.size(); i++)
- 00853 {
- 00854 <span class="keywordtype">int</span> lspid = rsb->FlowDescriptor[i].Filter_Spec_Object.Lsp_Id;
- 00855
- 00856 <a class="code" href="_i_n_e_t_defs_8h.html#a1">EV</a> << <span class="stringliteral">"processing lspid="</span> << lspid << endl;
- 00857
- 00858 PathStateBlock_t *psb = <a class="code" href="class_r_s_v_p.html#b45">findPSB</a>(rsb->Session_Object, rsb->FlowDescriptor[i].Filter_Spec_Object);
- 00859
- 00860 <a class="code" href="_l_i_b_table_8h.html#a3">LabelOpVector</a> outLabel;
- 00861 std::string inInterface, outInterface;
- 00862
- 00863 <span class="keywordtype">bool</span> IR = (psb->Previous_Hop_Address == <a class="code" href="class_r_s_v_p.html#r13">routerId</a>);
- 00864 <span class="comment">//bool ER = psb->OutInterface.isUnspecified();</span>
- 00865 <span class="keywordflow">if</span> (!IR)
- 00866 {
- 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>-><a class="code" href="class_t_e_d.html#z61_0">interfaceAddrByPeerAddress</a>(psb->Previous_Hop_Address);
- 00868 inInterface = <a class="code" href="class_r_s_v_p.html#r5">rt</a>-><a class="code" href="class_routing_table.html#z40_1">interfaceByAddress</a>(localInf)-><a class="code" href="class_interface_entry.html#a5">name</a>();
- 00869 }
- 00870 <span class="keywordflow">else</span>
- 00871 inInterface = <span class="stringliteral">"any"</span>;
- 00872
- 00873 <span class="comment">// outlabel and outgoing interface</span>
- 00874
- 00875 <a class="code" href="struct_label_op.html">LabelOp</a> lop;
- 00876
- 00877 <span class="keywordflow">if</span> (<a class="code" href="class_r_s_v_p.html#r4">tedmod</a>-><a class="code" href="class_t_e_d.html#z61_5">isLocalAddress</a>(psb->OutInterface))
- 00878 {
- 00879 <span class="comment">// regular next hop</span>
- 00880
- 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>;
- 00882 lop.<a class="code" href="struct_label_op.html#o0">label</a> = rsb->FlowDescriptor[i].<a class="code" href="struct_label_op.html#o0">label</a>;
- 00883 outLabel.push_back(lop);
- 00884
- 00885 outInterface = <a class="code" href="class_r_s_v_p.html#r5">rt</a>-><a class="code" href="class_routing_table.html#z40_1">interfaceByAddress</a>(psb->OutInterface)-><a class="code" href="class_interface_entry.html#a5">name</a>();
- 00886 }
- 00887 <span class="keywordflow">else</span>
- 00888 {
- 00889 <span class="comment">// egress router</span>
- 00890
- 00891 lop.<a class="code" href="struct_label_op.html#o0">label</a> = 0;
- 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>;
- 00893 outLabel.push_back(lop);
- 00894
- 00895 outInterface = <span class="stringliteral">"lo0"</span>;
- 00896
- 00897 <span class="keywordflow">if</span> (!<a class="code" href="class_r_s_v_p.html#r4">tedmod</a>-><a class="code" href="class_t_e_d.html#z61_5">isLocalAddress</a>(psb->Session_Object.DestAddress))
- 00898 {
- 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>-><a class="code" href="class_routing_table.html#z42_2">interfaceForDestAddr</a>(psb->Session_Object.DestAddress);
- 00900 <span class="keywordflow">if</span> (ie)
- 00901 outInterface = ie->name(); <span class="comment">// FIXME why use name to identify an interface?</span>
- 00902 }
- 00903 }
- 00904
- 00905 EV << "installing label for " << lspid << " outLabel=" << outLabel <<
- 00906 " outInterface=" << outInterface << endl;
- 00907
- 00908 ASSERT(rsb->inLabelVector.size() == rsb->FlowDescriptor.size());
- 00909
- 00910 <span class="keywordtype">int</span> inLabel = lt->installLibEntry(rsb->inLabelVector[i], inInterface,
- 00911 outLabel, outInterface, psb->color);
- 00912
- 00913 ASSERT(inLabel >= 0);
- 00914
- 00915 if (IR && rsb->inLabelVector[i] == -1)
- 00916 {
- 00917 <span class="comment">// path established</span>
- 00918 <a class="code" href="class_r_s_v_p.html#b35">sendPathNotify</a>(psb->handler, psb->Session_Object, psb->Sender_Template_Object, PATH_CREATED, 0.0);
- 00919 }
- 00920
- 00921 <span class="keywordflow">if</span> (rsb->inLabelVector[i] != inLabel)
- 00922 {
- 00923 <span class="comment">// remember our current label</span>
- 00924…
Large files files are truncated, but you can click here to view the full file