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

/Documentation/doxy/class_i_pv6_neighbour_discovery.html

https://github.com/vonami/inet-flc
HTML | 4413 lines | 4263 code | 149 blank | 1 comment | 0 complexity | e90bd3c96e9628898545888cb61c5900 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: IPv6NeighbourDiscovery 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>IPv6NeighbourDiscovery Class Reference</h1><code>#include &lt;IPv6NeighbourDiscovery.h&gt;</code>
  9. <p>
  10. <a href="class_i_pv6_neighbour_discovery-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
  11. Implements RFC 2461 Neighbor Discovery for <a class="el" href="class_i_pv6.html">IPv6</a>.
  12. <p>
  13. <table border="0" cellpadding="0" cellspacing="0">
  14. <tr><td></td></tr>
  15. <tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
  16. <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::vector&lt; cMessage * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#w0">MsgPtrVector</a></td></tr>
  17. <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="struct_i_pv6_neighbour_cache_1_1_key.html">IPv6NeighbourCache::Key</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#w1">Key</a></td></tr>
  18. <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="struct_i_pv6_neighbour_cache_1_1_neighbour.html">IPv6NeighbourCache::Neighbour</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#w2">Neighbour</a></td></tr>
  19. <tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
  20. <tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#a0">IPv6NeighbourDiscovery</a> ()</td></tr>
  21. <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#a1">~IPv6NeighbourDiscovery</a> ()</td></tr>
  22. <tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="class_m_a_c_address.html">MACAddress</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#a2">resolveNeighbour</a> (const <a class="el" href="class_i_pv6_address.html">IPv6Address</a> &amp;nextHop, int interfaceId)</td></tr>
  23. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#a3">reachabilityConfirmed</a> (const <a class="el" href="class_i_pv6_address.html">IPv6Address</a> &amp;neighbour, int interfaceId)</td></tr>
  24. <tr><td colspan="2"><br><h2>Protected Types</h2></td></tr>
  25. <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::set&lt; cMessage * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#x0">RATimerList</a></td></tr>
  26. <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::set&lt; <a class="el" href="struct_i_pv6_neighbour_discovery_1_1_d_a_d_entry.html">DADEntry</a> * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#x1">DADList</a></td></tr>
  27. <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::set&lt; <a class="el" href="struct_i_pv6_neighbour_discovery_1_1_r_d_entry.html">RDEntry</a> * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#x2">RDList</a></td></tr>
  28. <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef std::set&lt; <a class="el" href="struct_i_pv6_neighbour_discovery_1_1_adv_if_entry.html">AdvIfEntry</a> * &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#x3">AdvIfList</a></td></tr>
  29. <tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr>
  30. <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b0">numInitStages</a> () const </td></tr>
  31. <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b1">initialize</a> (int stage)</td></tr>
  32. <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b2">handleMessage</a> (cMessage *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_i_pv6_neighbour_discovery.html#b3">processNDMessage</a> (<a class="el" href="class_i_c_m_pv6_message.html">ICMPv6Message</a> *msg, <a class="el" href="class_i_pv6_control_info.html">IPv6ControlInfo</a> *ctrlInfo)</td></tr>
  34. <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b4">finish</a> ()</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_i_pv6_neighbour_discovery.html#b5">processIPv6Datagram</a> (<a class="el" href="class_i_pv6_datagram.html">IPv6Datagram</a> *datagram)</td></tr>
  36. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="struct_i_pv6_neighbour_discovery_1_1_adv_if_entry.html">IPv6NeighbourDiscovery::AdvIfEntry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b6">fetchAdvIfEntry</a> (<a class="el" href="class_interface_entry.html">InterfaceEntry</a> *ie)</td></tr>
  37. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="struct_i_pv6_neighbour_discovery_1_1_r_d_entry.html">IPv6NeighbourDiscovery::RDEntry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b7">fetchRDEntry</a> (<a class="el" href="class_interface_entry.html">InterfaceEntry</a> *ie)</td></tr>
  38. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_i_pv6_address.html">IPv6Address</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b8">determineNextHop</a> (const <a class="el" href="class_i_pv6_address.html">IPv6Address</a> &amp;destAddr, int &amp;outIfID)</td></tr>
  39. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b9">initiateNeighbourUnreachabilityDetection</a> (<a class="el" href="struct_i_pv6_neighbour_cache_1_1_neighbour.html">Neighbour</a> *neighbour)</td></tr>
  40. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b10">processNUDTimeout</a> (cMessage *timeoutMsg)</td></tr>
  41. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_i_pv6_address.html">IPv6Address</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b11">selectDefaultRouter</a> (int &amp;outIfID)</td></tr>
  42. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b12">timeoutPrefixEntry</a> (const <a class="el" href="class_i_pv6_address.html">IPv6Address</a> &amp;destPrefix, int prefixLength)</td></tr>
  43. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b13">timeoutDefaultRouter</a> (const <a class="el" href="class_i_pv6_address.html">IPv6Address</a> &amp;addr, int interfaceID)</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_i_pv6_neighbour_discovery.html#b14">initiateAddressResolution</a> (const <a class="el" href="class_i_pv6_address.html">IPv6Address</a> &amp;dgSrcAddr, <a class="el" href="struct_i_pv6_neighbour_cache_1_1_neighbour.html">Neighbour</a> *nce)</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_i_pv6_neighbour_discovery.html#b15">processARTimeout</a> (cMessage *arTimeoutMsg)</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_i_pv6_neighbour_discovery.html#b16">dropQueuedPacketsAwaitingAR</a> (<a class="el" href="struct_i_pv6_neighbour_cache_1_1_neighbour.html">Neighbour</a> *nce)</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_i_pv6_neighbour_discovery.html#b17">sendPacketToIPv6Module</a> (cMessage *msg, const <a class="el" href="class_i_pv6_address.html">IPv6Address</a> &amp;destAddr, const <a class="el" href="class_i_pv6_address.html">IPv6Address</a> &amp;srcAddr, int interfaceId)</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_i_pv6_neighbour_discovery.html#b18">sendQueuedPacketsToIPv6Module</a> (<a class="el" href="struct_i_pv6_neighbour_cache_1_1_neighbour.html">Neighbour</a> *nce)</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_i_pv6_neighbour_discovery.html#b19">initiateDAD</a> (const <a class="el" href="class_i_pv6_address.html">IPv6Address</a> &amp;tentativeAddr, <a class="el" href="class_interface_entry.html">InterfaceEntry</a> *ie)</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_i_pv6_neighbour_discovery.html#b20">processDADTimeout</a> (cMessage *msg)</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_i_pv6_neighbour_discovery.html#b21">assignLinkLocalAddress</a> (cMessage *timerMsg)</td></tr>
  52. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_i_pv6_router_solicitation.html">IPv6RouterSolicitation</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b22">createAndSendRSPacket</a> (<a class="el" href="class_interface_entry.html">InterfaceEntry</a> *ie)</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_i_pv6_neighbour_discovery.html#b23">initiateRouterDiscovery</a> (cMessage *msg)</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_i_pv6_neighbour_discovery.html#b24">cancelRouterDiscovery</a> (<a class="el" href="class_interface_entry.html">InterfaceEntry</a> *ie)</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_i_pv6_neighbour_discovery.html#b25">processRDTimeout</a> (cMessage *msg)</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_i_pv6_neighbour_discovery.html#b26">processRSPacket</a> (<a class="el" href="class_i_pv6_router_solicitation.html">IPv6RouterSolicitation</a> *rs, <a class="el" href="class_i_pv6_control_info.html">IPv6ControlInfo</a> *rsCtrlInfo)</td></tr>
  57. <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b27">validateRSPacket</a> (<a class="el" href="class_i_pv6_router_solicitation.html">IPv6RouterSolicitation</a> *rs, <a class="el" href="class_i_pv6_control_info.html">IPv6ControlInfo</a> *rsCtrlInfo)</td></tr>
  58. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_i_pv6_router_advertisement.html">IPv6RouterAdvertisement</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b28">createAndSendRAPacket</a> (const <a class="el" href="class_i_pv6_address.html">IPv6Address</a> &amp;destAddr, <a class="el" href="class_interface_entry.html">InterfaceEntry</a> *ie)</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_i_pv6_neighbour_discovery.html#b29">processRAPacket</a> (<a class="el" href="class_i_pv6_router_advertisement.html">IPv6RouterAdvertisement</a> *ra, <a class="el" href="class_i_pv6_control_info.html">IPv6ControlInfo</a> *raCtrlInfo)</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_i_pv6_neighbour_discovery.html#b30">processRAForRouterUpdates</a> (<a class="el" href="class_i_pv6_router_advertisement.html">IPv6RouterAdvertisement</a> *ra, <a class="el" href="class_i_pv6_control_info.html">IPv6ControlInfo</a> *raCtrlInfo)</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_i_pv6_neighbour_discovery.html#b31">processRAPrefixInfo</a> (<a class="el" href="class_i_pv6_router_advertisement.html">IPv6RouterAdvertisement</a> *ra, <a class="el" href="class_interface_entry.html">InterfaceEntry</a> *ie)</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_i_pv6_neighbour_discovery.html#b32">processRAPrefixInfoForAddrAutoConf</a> (<a class="el" href="class_i_pv6_n_d_prefix_information.html">IPv6NDPrefixInformation</a> &amp;prefixInfo, <a class="el" href="class_interface_entry.html">InterfaceEntry</a> *ie)</td></tr>
  63. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b33">createRATimer</a> (<a class="el" href="class_interface_entry.html">InterfaceEntry</a> *ie)</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_i_pv6_neighbour_discovery.html#b34">resetRATimer</a> (<a class="el" href="class_interface_entry.html">InterfaceEntry</a> *ie)</td></tr>
  65. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b35">sendPeriodicRA</a> (cMessage *msg)</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_i_pv6_neighbour_discovery.html#b36">sendSolicitedRA</a> (cMessage *msg)</td></tr>
  67. <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b37">validateRAPacket</a> (<a class="el" href="class_i_pv6_router_advertisement.html">IPv6RouterAdvertisement</a> *ra, <a class="el" href="class_i_pv6_control_info.html">IPv6ControlInfo</a> *raCtrlInfo)</td></tr>
  68. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_i_pv6_neighbour_solicitation.html">IPv6NeighbourSolicitation</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b38">createAndSendNSPacket</a> (const <a class="el" href="class_i_pv6_address.html">IPv6Address</a> &amp;nsTargetAddr, const <a class="el" href="class_i_pv6_address.html">IPv6Address</a> &amp;dgDestAddr, const <a class="el" href="class_i_pv6_address.html">IPv6Address</a> &amp;dgSrcAddr, <a class="el" href="class_interface_entry.html">InterfaceEntry</a> *ie)</td></tr>
  69. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b39">processNSPacket</a> (<a class="el" href="class_i_pv6_neighbour_solicitation.html">IPv6NeighbourSolicitation</a> *ns, <a class="el" href="class_i_pv6_control_info.html">IPv6ControlInfo</a> *naCtrlInfo)</td></tr>
  70. <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b40">validateNSPacket</a> (<a class="el" href="class_i_pv6_neighbour_solicitation.html">IPv6NeighbourSolicitation</a> *ns, <a class="el" href="class_i_pv6_control_info.html">IPv6ControlInfo</a> *nsCtrlInfo)</td></tr>
  71. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b41">processNSForTentativeAddress</a> (<a class="el" href="class_i_pv6_neighbour_solicitation.html">IPv6NeighbourSolicitation</a> *ns, <a class="el" href="class_i_pv6_control_info.html">IPv6ControlInfo</a> *ctrlInfo)</td></tr>
  72. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b42">processNSForNonTentativeAddress</a> (<a class="el" href="class_i_pv6_neighbour_solicitation.html">IPv6NeighbourSolicitation</a> *ns, <a class="el" href="class_i_pv6_control_info.html">IPv6ControlInfo</a> *ctrlInfo, <a class="el" href="class_interface_entry.html">InterfaceEntry</a> *ie)</td></tr>
  73. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b43">processNSWithSpecifiedSrcAddr</a> (<a class="el" href="class_i_pv6_neighbour_solicitation.html">IPv6NeighbourSolicitation</a> *ns, <a class="el" href="class_i_pv6_control_info.html">IPv6ControlInfo</a> *ctrlInfo, <a class="el" href="class_interface_entry.html">InterfaceEntry</a> *ie)</td></tr>
  74. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_i_pv6_neighbour_advertisement.html">IPv6NeighbourAdvertisement</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b44">createAndSendNAPacket</a> (<a class="el" href="class_i_pv6_neighbour_solicitation.html">IPv6NeighbourSolicitation</a> *ns, const <a class="el" href="class_i_pv6_address.html">IPv6Address</a> &amp;nsSrcAddr, const <a class="el" href="class_i_pv6_address.html">IPv6Address</a> &amp;nsDestAddr, <a class="el" href="class_interface_entry.html">InterfaceEntry</a> *ie)</td></tr>
  75. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b45">sendSolicitedNA</a> (<a class="el" href="class_i_pv6_neighbour_solicitation.html">IPv6NeighbourSolicitation</a> *ns, <a class="el" href="class_i_pv6_control_info.html">IPv6ControlInfo</a> *nsCtrlInfo, <a class="el" href="class_interface_entry.html">InterfaceEntry</a> *ie)</td></tr>
  76. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b46">sendUnsolicitedNA</a> (<a class="el" href="class_interface_entry.html">InterfaceEntry</a> *ie)</td></tr>
  77. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b47">processNAPacket</a> (<a class="el" href="class_i_pv6_neighbour_advertisement.html">IPv6NeighbourAdvertisement</a> *na, <a class="el" href="class_i_pv6_control_info.html">IPv6ControlInfo</a> *naCtrlInfo)</td></tr>
  78. <tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b48">validateNAPacket</a> (<a class="el" href="class_i_pv6_neighbour_advertisement.html">IPv6NeighbourAdvertisement</a> *na, <a class="el" href="class_i_pv6_control_info.html">IPv6ControlInfo</a> *naCtrlInfo)</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_i_pv6_neighbour_discovery.html#b49">processNAForIncompleteNCEState</a> (<a class="el" href="class_i_pv6_neighbour_advertisement.html">IPv6NeighbourAdvertisement</a> *na, <a class="el" href="struct_i_pv6_neighbour_cache_1_1_neighbour.html">IPv6NeighbourCache::Neighbour</a> *nce)</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_i_pv6_neighbour_discovery.html#b50">processNAForOtherNCEStates</a> (<a class="el" href="class_i_pv6_neighbour_advertisement.html">IPv6NeighbourAdvertisement</a> *na, <a class="el" href="struct_i_pv6_neighbour_cache_1_1_neighbour.html">IPv6NeighbourCache::Neighbour</a> *nce)</td></tr>
  81. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_i_pv6_redirect.html">IPv6Redirect</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b51">createAndSendRedirectPacket</a> (<a class="el" href="class_interface_entry.html">InterfaceEntry</a> *ie)</td></tr>
  82. <tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#b52">processRedirectPacket</a> (<a class="el" href="class_i_pv6_redirect.html">IPv6Redirect</a> *redirect, <a class="el" href="class_i_pv6_control_info.html">IPv6ControlInfo</a> *ctrlInfo)</td></tr>
  83. <tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
  84. <tr><td class="memItemLeft" nowrap align="right" valign="top">cQueue&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#p0">pendingQueue</a></td></tr>
  85. <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_i_pv6_neighbour_discovery.html#p1">ift</a></td></tr>
  86. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_routing_table6.html">RoutingTable6</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#p2">rt6</a></td></tr>
  87. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_i_c_m_pv6.html">ICMPv6</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#p3">icmpv6</a></td></tr>
  88. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_i_pv6_neighbour_cache.html">IPv6NeighbourCache</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#p4">neighbourCache</a></td></tr>
  89. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_i_pv6_neighbour_discovery.html#x0">RATimerList</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#p5">raTimerList</a></td></tr>
  90. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_i_pv6_neighbour_discovery.html#x1">DADList</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#p6">dadList</a></td></tr>
  91. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_i_pv6_neighbour_discovery.html#x2">RDList</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#p7">rdList</a></td></tr>
  92. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="class_i_pv6_neighbour_discovery.html#x3">AdvIfList</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_pv6_neighbour_discovery.html#p8">advIfList</a></td></tr>
  93. <tr><td colspan="2"><br><h2>Classes</h2></td></tr>
  94. <tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_i_pv6_neighbour_discovery_1_1_adv_if_entry.html">AdvIfEntry</a></td></tr>
  95. <tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_i_pv6_neighbour_discovery_1_1_d_a_d_entry.html">DADEntry</a></td></tr>
  96. <tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_i_pv6_neighbour_discovery_1_1_r_d_entry.html">RDEntry</a></td></tr>
  97. </table>
  98. <hr><h2>Member Typedef Documentation</h2>
  99. <a class="anchor" name="x3" doxytag="IPv6NeighbourDiscovery::AdvIfList"></a><p>
  100. <table class="mdTable" cellpadding="2" cellspacing="0">
  101. <tr>
  102. <td class="mdRow">
  103. <table cellpadding="0" cellspacing="0" border="0">
  104. <tr>
  105. <td class="md" nowrap valign="top">typedef std::set&lt;<a class="el" href="struct_i_pv6_neighbour_discovery_1_1_adv_if_entry.html">AdvIfEntry</a>*&gt; <a class="el" href="class_i_pv6_neighbour_discovery.html#x3">IPv6NeighbourDiscovery::AdvIfList</a><code> [protected]</code> </td>
  106. </tr>
  107. </table>
  108. </td>
  109. </tr>
  110. </table>
  111. <table cellspacing="5" cellpadding="0" border="0">
  112. <tr>
  113. <td>
  114. &nbsp;
  115. </td>
  116. <td>
  117. <p>
  118. </td>
  119. </tr>
  120. </table>
  121. <a class="anchor" name="x1" doxytag="IPv6NeighbourDiscovery::DADList"></a><p>
  122. <table class="mdTable" cellpadding="2" cellspacing="0">
  123. <tr>
  124. <td class="mdRow">
  125. <table cellpadding="0" cellspacing="0" border="0">
  126. <tr>
  127. <td class="md" nowrap valign="top">typedef std::set&lt;<a class="el" href="struct_i_pv6_neighbour_discovery_1_1_d_a_d_entry.html">DADEntry</a>*&gt; <a class="el" href="class_i_pv6_neighbour_discovery.html#x1">IPv6NeighbourDiscovery::DADList</a><code> [protected]</code> </td>
  128. </tr>
  129. </table>
  130. </td>
  131. </tr>
  132. </table>
  133. <table cellspacing="5" cellpadding="0" border="0">
  134. <tr>
  135. <td>
  136. &nbsp;
  137. </td>
  138. <td>
  139. <p>
  140. </td>
  141. </tr>
  142. </table>
  143. <a class="anchor" name="w1" doxytag="IPv6NeighbourDiscovery::Key"></a><p>
  144. <table class="mdTable" cellpadding="2" cellspacing="0">
  145. <tr>
  146. <td class="mdRow">
  147. <table cellpadding="0" cellspacing="0" border="0">
  148. <tr>
  149. <td class="md" nowrap valign="top">typedef <a class="el" href="struct_i_pv6_neighbour_cache_1_1_key.html">IPv6NeighbourCache::Key</a> <a class="el" href="struct_i_pv6_neighbour_cache_1_1_key.html">IPv6NeighbourDiscovery::Key</a> </td>
  150. </tr>
  151. </table>
  152. </td>
  153. </tr>
  154. </table>
  155. <table cellspacing="5" cellpadding="0" border="0">
  156. <tr>
  157. <td>
  158. &nbsp;
  159. </td>
  160. <td>
  161. <p>
  162. </td>
  163. </tr>
  164. </table>
  165. <a class="anchor" name="w0" doxytag="IPv6NeighbourDiscovery::MsgPtrVector"></a><p>
  166. <table class="mdTable" cellpadding="2" cellspacing="0">
  167. <tr>
  168. <td class="mdRow">
  169. <table cellpadding="0" cellspacing="0" border="0">
  170. <tr>
  171. <td class="md" nowrap valign="top">typedef std::vector&lt;cMessage*&gt; <a class="el" href="class_i_pv6_neighbour_discovery.html#w0">IPv6NeighbourDiscovery::MsgPtrVector</a> </td>
  172. </tr>
  173. </table>
  174. </td>
  175. </tr>
  176. </table>
  177. <table cellspacing="5" cellpadding="0" border="0">
  178. <tr>
  179. <td>
  180. &nbsp;
  181. </td>
  182. <td>
  183. <p>
  184. </td>
  185. </tr>
  186. </table>
  187. <a class="anchor" name="w2" doxytag="IPv6NeighbourDiscovery::Neighbour"></a><p>
  188. <table class="mdTable" cellpadding="2" cellspacing="0">
  189. <tr>
  190. <td class="mdRow">
  191. <table cellpadding="0" cellspacing="0" border="0">
  192. <tr>
  193. <td class="md" nowrap valign="top">typedef <a class="el" href="struct_i_pv6_neighbour_cache_1_1_neighbour.html">IPv6NeighbourCache::Neighbour</a> <a class="el" href="struct_i_pv6_neighbour_cache_1_1_neighbour.html">IPv6NeighbourDiscovery::Neighbour</a> </td>
  194. </tr>
  195. </table>
  196. </td>
  197. </tr>
  198. </table>
  199. <table cellspacing="5" cellpadding="0" border="0">
  200. <tr>
  201. <td>
  202. &nbsp;
  203. </td>
  204. <td>
  205. <p>
  206. </td>
  207. </tr>
  208. </table>
  209. <a class="anchor" name="x0" doxytag="IPv6NeighbourDiscovery::RATimerList"></a><p>
  210. <table class="mdTable" cellpadding="2" cellspacing="0">
  211. <tr>
  212. <td class="mdRow">
  213. <table cellpadding="0" cellspacing="0" border="0">
  214. <tr>
  215. <td class="md" nowrap valign="top">typedef std::set&lt;cMessage*&gt; <a class="el" href="class_i_pv6_neighbour_discovery.html#x0">IPv6NeighbourDiscovery::RATimerList</a><code> [protected]</code> </td>
  216. </tr>
  217. </table>
  218. </td>
  219. </tr>
  220. </table>
  221. <table cellspacing="5" cellpadding="0" border="0">
  222. <tr>
  223. <td>
  224. &nbsp;
  225. </td>
  226. <td>
  227. <p>
  228. </td>
  229. </tr>
  230. </table>
  231. <a class="anchor" name="x2" doxytag="IPv6NeighbourDiscovery::RDList"></a><p>
  232. <table class="mdTable" cellpadding="2" cellspacing="0">
  233. <tr>
  234. <td class="mdRow">
  235. <table cellpadding="0" cellspacing="0" border="0">
  236. <tr>
  237. <td class="md" nowrap valign="top">typedef std::set&lt;<a class="el" href="struct_i_pv6_neighbour_discovery_1_1_r_d_entry.html">RDEntry</a>*&gt; <a class="el" href="class_i_pv6_neighbour_discovery.html#x2">IPv6NeighbourDiscovery::RDList</a><code> [protected]</code> </td>
  238. </tr>
  239. </table>
  240. </td>
  241. </tr>
  242. </table>
  243. <table cellspacing="5" cellpadding="0" border="0">
  244. <tr>
  245. <td>
  246. &nbsp;
  247. </td>
  248. <td>
  249. <p>
  250. </td>
  251. </tr>
  252. </table>
  253. <hr><h2>Constructor &amp; Destructor Documentation</h2>
  254. <a class="anchor" name="a0" doxytag="IPv6NeighbourDiscovery::IPv6NeighbourDiscovery"></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">IPv6NeighbourDiscovery::IPv6NeighbourDiscovery </td>
  261. <td class="md" valign="top">(&nbsp;</td>
  262. <td class="mdname1" valign="top" nowrap> </td>
  263. <td class="md" valign="top">&nbsp;)&nbsp;</td>
  264. <td class="md" nowrap></td>
  265. </tr>
  266. </table>
  267. </td>
  268. </tr>
  269. </table>
  270. <table cellspacing="5" cellpadding="0" border="0">
  271. <tr>
  272. <td>
  273. &nbsp;
  274. </td>
  275. <td>
  276. <p>
  277. <div class="fragment"><pre class="fragment">00036 {
  278. 00037 }
  279. </pre></div>
  280. <p>
  281. </td>
  282. </tr>
  283. </table>
  284. <a class="anchor" name="a1" doxytag="IPv6NeighbourDiscovery::~IPv6NeighbourDiscovery"></a><p>
  285. <table class="mdTable" cellpadding="2" cellspacing="0">
  286. <tr>
  287. <td class="mdRow">
  288. <table cellpadding="0" cellspacing="0" border="0">
  289. <tr>
  290. <td class="md" nowrap valign="top">IPv6NeighbourDiscovery::~<a class="el" href="class_i_pv6_neighbour_discovery.html">IPv6NeighbourDiscovery</a> </td>
  291. <td class="md" valign="top">(&nbsp;</td>
  292. <td class="mdname1" valign="top" nowrap> </td>
  293. <td class="md" valign="top">&nbsp;)&nbsp;</td>
  294. <td class="md" nowrap><code> [virtual]</code></td>
  295. </tr>
  296. </table>
  297. </td>
  298. </tr>
  299. </table>
  300. <table cellspacing="5" cellpadding="0" border="0">
  301. <tr>
  302. <td>
  303. &nbsp;
  304. </td>
  305. <td>
  306. <p>
  307. <div class="fragment"><pre class="fragment">00040 {
  308. 00041 <span class="comment">// FIXME delete the following data structures, cancelAndDelete timers in them etc.</span>
  309. 00042 <span class="comment">// Deleting the data structures my become unnecessary if the lists store the</span>
  310. 00043 <span class="comment">// structs themselves and not pointers.</span>
  311. 00044 <span class="comment">// RATimerList raTimerList;</span>
  312. 00045 <span class="comment">// DADList dadList;</span>
  313. 00046 <span class="comment">// RDList rdList;</span>
  314. 00047 <span class="comment">// AdvIfList advIfList;</span>
  315. 00048 }
  316. </pre></div>
  317. <p>
  318. </td>
  319. </tr>
  320. </table>
  321. <hr><h2>Member Function Documentation</h2>
  322. <a class="anchor" name="b21" doxytag="IPv6NeighbourDiscovery::assignLinkLocalAddress"></a><p>
  323. <table class="mdTable" cellpadding="2" cellspacing="0">
  324. <tr>
  325. <td class="mdRow">
  326. <table cellpadding="0" cellspacing="0" border="0">
  327. <tr>
  328. <td class="md" nowrap valign="top">void IPv6NeighbourDiscovery::assignLinkLocalAddress </td>
  329. <td class="md" valign="top">(&nbsp;</td>
  330. <td class="md" nowrap valign="top">cMessage *&nbsp;</td>
  331. <td class="mdname1" valign="top" nowrap> <em>timerMsg</em> </td>
  332. <td class="md" valign="top">&nbsp;)&nbsp;</td>
  333. <td class="md" nowrap><code> [protected]</code></td>
  334. </tr>
  335. </table>
  336. </td>
  337. </tr>
  338. </table>
  339. <table cellspacing="5" cellpadding="0" border="0">
  340. <tr>
  341. <td>
  342. &nbsp;
  343. </td>
  344. <td>
  345. <p>
  346. as it is not possbile to explicitly define RFC 2462. ND is the next best place to do this.<p>
  347. RFC 2462-IPv6 Stateless Address Autoconfiguration: Section 1 The autoconfiguration process specified in this document applies only to hosts and not routers. Since host autoconfiguration uses information advertised by routers, routers will need to be configured by some other means. However, it is expected that routers will generate link-local addresses using the mechanism described in this document. In addition, routers are expected to successfully pass the Duplicate Address Detection procedure described in this document on all addresses prior to assigning them to an interface. <div class="fragment"><pre class="fragment">00732 {
  348. 00733 <span class="comment">//Node has booted up. Start assigning a link-local address for each</span>
  349. 00734 <span class="comment">//interface in this node.</span>
  350. 00735 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i &lt; ift-&gt;numInterfaces(); i++)
  351. 00736 {
  352. 00737 <a class="code" href="class_interface_entry.html">InterfaceEntry</a> *ie = <a class="code" href="class_i_pv6_neighbour_discovery.html#p1">ift</a>-&gt;<a class="code" href="class_interface_table.html#a5">interfaceAt</a>(i);
  353. 00738
  354. 00739 <span class="comment">//Skip the loopback interface.</span>
  355. 00740 <span class="keywordflow">if</span> (ie-&gt;<a class="code" href="class_interface_entry.html#a15">isLoopback</a>()) <span class="keywordflow">continue</span>;
  356. 00741
  357. 00742 <a class="code" href="class_i_pv6_address.html">IPv6Address</a> linkLocalAddr = ie-&gt;<a class="code" href="class_interface_entry.html#a34">ipv6</a>()-&gt;<a class="code" href="class_i_pv6_interface_data.html#z48_10">linkLocalAddress</a>();
  358. 00743 <span class="keywordflow">if</span> (linkLocalAddr.<a class="code" href="class_i_pv6_address.html#a22">isUnspecified</a>())
  359. 00744 {
  360. 00745 <span class="comment">//if no link local address exists for this interface, we assign one to it.</span>
  361. 00746 <a class="code" href="_i_n_e_t_defs_8h.html#a1">EV</a> &lt;&lt; <span class="stringliteral">"No link local address exists. Forming one"</span> &lt;&lt; endl;
  362. 00747 linkLocalAddr = <a class="code" href="class_i_pv6_address.html">IPv6Address</a>().<a class="code" href="class_i_pv6_address.html#e2">formLinkLocalAddress</a>(ie-&gt;<a class="code" href="class_interface_entry.html#a18">interfaceToken</a>());
  363. 00748 ie-&gt;<a class="code" href="class_interface_entry.html#a34">ipv6</a>()-&gt;<a class="code" href="class_i_pv6_interface_data.html#z48_0">assignAddress</a>(linkLocalAddr, <span class="keyword">true</span>, 0, 0);
  364. 00749 }
  365. 00750
  366. 00751 <span class="comment">//Before we can use this address, we MUST initiate DAD first.</span>
  367. 00752 <a class="code" href="class_i_pv6_neighbour_discovery.html#b19">initiateDAD</a>(linkLocalAddr, ie);
  368. 00753 }
  369. 00754 <span class="keyword">delete</span> timerMsg;
  370. 00755 }
  371. </pre></div>
  372. <p>
  373. </td>
  374. </tr>
  375. </table>
  376. <a class="anchor" name="b24" doxytag="IPv6NeighbourDiscovery::cancelRouterDiscovery"></a><p>
  377. <table class="mdTable" cellpadding="2" cellspacing="0">
  378. <tr>
  379. <td class="mdRow">
  380. <table cellpadding="0" cellspacing="0" border="0">
  381. <tr>
  382. <td class="md" nowrap valign="top">void IPv6NeighbourDiscovery::cancelRouterDiscovery </td>
  383. <td class="md" valign="top">(&nbsp;</td>
  384. <td class="md" nowrap valign="top"><a class="el" href="class_interface_entry.html">InterfaceEntry</a> *&nbsp;</td>
  385. <td class="mdname1" valign="top" nowrap> <em>ie</em> </td>
  386. <td class="md" valign="top">&nbsp;)&nbsp;</td>
  387. <td class="md" nowrap><code> [protected]</code></td>
  388. </tr>
  389. </table>
  390. </td>
  391. </tr>
  392. </table>
  393. <table cellspacing="5" cellpadding="0" border="0">
  394. <tr>
  395. <td>
  396. &nbsp;
  397. </td>
  398. <td>
  399. <p>
  400. RFC 2461: Section 6.3.7 4th paragraph Once the host sends a Router Solicitation, and receives a valid Router Advertisement with a non-zero Router Lifetime, the host MUST desist from sending additional solicitations on that interface,<p>
  401. Cancel Router Discovery on the Interface where a RA was received with the given Interface Entry. <div class="fragment"><pre class="fragment">00891 {
  402. 00892 <span class="comment">//Next we retrieve the rdEntry with the Interface Entry.</span>
  403. 00893 RDEntry *rdEntry = <a class="code" href="class_i_pv6_neighbour_discovery.html#b7">fetchRDEntry</a>(ie);
  404. 00894 <span class="keywordflow">if</span> (rdEntry != NULL)
  405. 00895 {
  406. 00896 <a class="code" href="_i_n_e_t_defs_8h.html#a1">EV</a> &lt;&lt; <span class="stringliteral">"rdEntry is not NULL, RD cancelled!"</span> &lt;&lt; endl;
  407. 00897 cancelEvent(rdEntry-&gt;timeoutMsg);
  408. 00898 <a class="code" href="class_i_pv6_neighbour_discovery.html#p7">rdList</a>.erase(rdEntry);
  409. 00899 <span class="keyword">delete</span> rdEntry;
  410. 00900 }
  411. 00901 <span class="keywordflow">else</span>
  412. 00902 <a class="code" href="_i_n_e_t_defs_8h.html#a1">EV</a> &lt;&lt; <span class="stringliteral">"rdEntry is NULL, not cancelling RD!"</span> &lt;&lt; endl;
  413. 00903 }
  414. </pre></div>
  415. <p>
  416. </td>
  417. </tr>
  418. </table>
  419. <a class="anchor" name="b44" doxytag="IPv6NeighbourDiscovery::createAndSendNAPacket"></a><p>
  420. <table class="mdTable" cellpadding="2" cellspacing="0">
  421. <tr>
  422. <td class="mdRow">
  423. <table cellpadding="0" cellspacing="0" border="0">
  424. <tr>
  425. <td class="md" nowrap valign="top"><a class="el" href="class_i_pv6_neighbour_advertisement.html">IPv6NeighbourAdvertisement</a>* IPv6NeighbourDiscovery::createAndSendNAPacket </td>
  426. <td class="md" valign="top">(&nbsp;</td>
  427. <td class="md" nowrap valign="top"><a class="el" href="class_i_pv6_neighbour_solicitation.html">IPv6NeighbourSolicitation</a> *&nbsp;</td>
  428. <td class="mdname" nowrap> <em>ns</em>, </td>
  429. </tr>
  430. <tr>
  431. <td class="md" nowrap align="right"></td>
  432. <td class="md"></td>
  433. <td class="md" nowrap>const <a class="el" href="class_i_pv6_address.html">IPv6Address</a> &amp;&nbsp;</td>
  434. <td class="mdname" nowrap> <em>nsSrcAddr</em>, </td>
  435. </tr>
  436. <tr>
  437. <td class="md" nowrap align="right"></td>
  438. <td class="md"></td>
  439. <td class="md" nowrap>const <a class="el" href="class_i_pv6_address.html">IPv6Address</a> &amp;&nbsp;</td>
  440. <td class="mdname" nowrap> <em>nsDestAddr</em>, </td>
  441. </tr>
  442. <tr>
  443. <td class="md" nowrap align="right"></td>
  444. <td class="md"></td>
  445. <td class="md" nowrap><a class="el" href="class_interface_entry.html">InterfaceEntry</a> *&nbsp;</td>
  446. <td class="mdname" nowrap> <em>ie</em></td>
  447. </tr>
  448. <tr>
  449. <td class="md"></td>
  450. <td class="md">)&nbsp;</td>
  451. <td class="md" colspan="2"><code> [protected]</code></td>
  452. </tr>
  453. </table>
  454. </td>
  455. </tr>
  456. </table>
  457. <table cellspacing="5" cellpadding="0" border="0">
  458. <tr>
  459. <td>
  460. &nbsp;
  461. </td>
  462. <td>
  463. <p>
  464. </td>
  465. </tr>
  466. </table>
  467. <a class="anchor" name="b38" doxytag="IPv6NeighbourDiscovery::createAndSendNSPacket"></a><p>
  468. <table class="mdTable" cellpadding="2" cellspacing="0">
  469. <tr>
  470. <td class="mdRow">
  471. <table cellpadding="0" cellspacing="0" border="0">
  472. <tr>
  473. <td class="md" nowrap valign="top"><a class="el" href="class_i_pv6_neighbour_solicitation.html">IPv6NeighbourSolicitation</a> * IPv6NeighbourDiscovery::createAndSendNSPacket </td>
  474. <td class="md" valign="top">(&nbsp;</td>
  475. <td class="md" nowrap valign="top">const <a class="el" href="class_i_pv6_address.html">IPv6Address</a> &amp;&nbsp;</td>
  476. <td class="mdname" nowrap> <em>nsTargetAddr</em>, </td>
  477. </tr>
  478. <tr>
  479. <td class="md" nowrap align="right"></td>
  480. <td class="md"></td>
  481. <td class="md" nowrap>const <a class="el" href="class_i_pv6_address.html">IPv6Address</a> &amp;&nbsp;</td>
  482. <td class="mdname" nowrap> <em>dgDestAddr</em>, </td>
  483. </tr>
  484. <tr>
  485. <td class="md" nowrap align="right"></td>
  486. <td class="md"></td>
  487. <td class="md" nowrap>const <a class="el" href="class_i_pv6_address.html">IPv6Address</a> &amp;&nbsp;</td>
  488. <td class="mdname" nowrap> <em>dgSrcAddr</em>, </td>
  489. </tr>
  490. <tr>
  491. <td class="md" nowrap align="right"></td>
  492. <td class="md"></td>
  493. <td class="md" nowrap><a class="el" href="class_interface_entry.html">InterfaceEntry</a> *&nbsp;</td>
  494. <td class="mdname" nowrap> <em>ie</em></td>
  495. </tr>
  496. <tr>
  497. <td class="md"></td>
  498. <td class="md">)&nbsp;</td>
  499. <td class="md" colspan="2"><code> [protected]</code></td>
  500. </tr>
  501. </table>
  502. </td>
  503. </tr>
  504. </table>
  505. <table cellspacing="5" cellpadding="0" border="0">
  506. <tr>
  507. <td>
  508. &nbsp;
  509. </td>
  510. <td>
  511. <p>
  512. <div class="fragment"><pre class="fragment">01571 {
  513. 01572 <a class="code" href="class_m_a_c_address.html">MACAddress</a> myMacAddr = ie-&gt;<a class="code" href="class_interface_entry.html#a17">macAddress</a>();
  514. 01573
  515. 01574 <span class="comment">//Construct a Neighbour Solicitation message</span>
  516. 01575 <a class="code" href="class_i_pv6_neighbour_solicitation.html">IPv6NeighbourSolicitation</a> *ns = <span class="keyword">new</span> <a class="code" href="class_i_pv6_neighbour_solicitation.html">IPv6NeighbourSolicitation</a>(<span class="stringliteral">"NSpacket"</span>);
  517. 01576 ns-&gt;<a class="code" href="class_i_c_m_pv6_message.html#a8">setType</a>(ICMPv6_NEIGHBOUR_SOL);
  518. 01577
  519. 01578 <span class="comment">//Neighbour Solicitation Specific Information</span>
  520. 01579 ns-&gt;<a class="code" href="class_i_pv6_neighbour_solicitation.html#a9">setTargetAddress</a>(nsTargetAddr);
  521. 01580
  522. 01581 <span class="comment">/*If the solicitation is being sent to a solicited-node multicast</span>
  523. 01582 <span class="comment"> address, the sender MUST include its link-layer address (if it has</span>
  524. 01583 <span class="comment"> one) as a Source Link-Layer Address option.*/</span>
  525. 01584 <span class="keywordflow">if</span> (dgDestAddr.<a class="code" href="class_i_pv6_address.html#a21">matches</a>(<a class="code" href="class_i_pv6_address.html">IPv6Address</a>(<span class="stringliteral">"FF02::1:FF00:0"</span>),104) &amp;&amp; <span class="comment">// FIXME what's this? make constant...</span>
  526. 01585 !dgSrcAddr.<a class="code" href="class_i_pv6_address.html#a22">isUnspecified</a>())
  527. 01586 ns-&gt;<a class="code" href="class_i_pv6_neighbour_solicitation.html#a12">setSourceLinkLayerAddress</a>(myMacAddr);
  528. 01587
  529. 01588 <a class="code" href="class_i_pv6_neighbour_discovery.html#b17">sendPacketToIPv6Module</a>(ns, dgDestAddr, dgSrcAddr, ie-&gt;<a class="code" href="class_interface_entry.html#a4">interfaceId</a>());
  530. 01589
  531. 01590 <span class="keywordflow">return</span> ns;
  532. 01591 }
  533. </pre></div>
  534. <p>
  535. </td>
  536. </tr>
  537. </table>
  538. <a class="anchor" name="b28" doxytag="IPv6NeighbourDiscovery::createAndSendRAPacket"></a><p>
  539. <table class="mdTable" cellpadding="2" cellspacing="0">
  540. <tr>
  541. <td class="mdRow">
  542. <table cellpadding="0" cellspacing="0" border="0">
  543. <tr>
  544. <td class="md" nowrap valign="top"><a class="el" href="class_i_pv6_router_advertisement.html">IPv6RouterAdvertisement</a> * IPv6NeighbourDiscovery::createAndSendRAPacket </td>
  545. <td class="md" valign="top">(&nbsp;</td>
  546. <td class="md" nowrap valign="top">const <a class="el" href="class_i_pv6_address.html">IPv6Address</a> &amp;&nbsp;</td>
  547. <td class="mdname" nowrap> <em>destAddr</em>, </td>
  548. </tr>
  549. <tr>
  550. <td class="md" nowrap align="right"></td>
  551. <td class="md"></td>
  552. <td class="md" nowrap><a class="el" href="class_interface_entry.html">InterfaceEntry</a> *&nbsp;</td>
  553. <td class="mdname" nowrap> <em>ie</em></td>
  554. </tr>
  555. <tr>
  556. <td class="md"></td>
  557. <td class="md">)&nbsp;</td>
  558. <td class="md" colspan="2"><code> [protected]</code></td>
  559. </tr>
  560. </table>
  561. </td>
  562. </tr>
  563. </table>
  564. <table cellspacing="5" cellpadding="0" border="0">
  565. <tr>
  566. <td>
  567. &nbsp;
  568. </td>
  569. <td>
  570. <p>
  571. <div class="fragment"><pre class="fragment">01047 {
  572. 01048 <a class="code" href="_i_n_e_t_defs_8h.html#a1">EV</a> &lt;&lt; <span class="stringliteral">"Create and send RA invoked!\n"</span>;
  573. 01049 <span class="comment">//Must use link-local addr. See: RFC2461 Section 6.1.2</span>
  574. 01050 <a class="code" href="class_i_pv6_address.html">IPv6Address</a> sourceAddr = ie-&gt;<a class="code" href="class_interface_entry.html#a34">ipv6</a>()-&gt;<a class="code" href="class_i_pv6_interface_data.html#z48_10">linkLocalAddress</a>();
  575. 01051
  576. 01052 <span class="comment">//This operation includes all options, regardless whether it is solicited or unsolicited.</span>
  577. 01053 <span class="keywordflow">if</span> (ie-&gt;<a class="code" href="class_interface_entry.html#a34">ipv6</a>()-&gt;<a class="code" href="class_i_pv6_interface_data.html#z48_58">advSendAdvertisements</a>()) <span class="comment">//if this is an advertising interface</span>
  578. 01054 {
  579. 01055 <span class="comment">//Construct a Router Advertisment message</span>
  580. 01056 <a class="code" href="class_i_pv6_router_advertisement.html">IPv6RouterAdvertisement</a> *ra = <span class="keyword">new</span> <a class="code" href="class_i_pv6_router_advertisement.html">IPv6RouterAdvertisement</a>(<span class="stringliteral">"RApacket"</span>);
  581. 01057 ra-&gt;<a class="code" href="class_i_c_m_pv6_message.html#a8">setType</a>(ICMPv6_ROUTER_AD);
  582. 01058
  583. 01059 <span class="comment">//RFC 2461: Section 6.2.3 Router Advertisment Message Content</span>
  584. 01060 <span class="comment">/*A router sends periodic as well as solicited Router Advertisements out</span>
  585. 01061 <span class="comment"> its advertising interfaces. Outgoing Router Advertisements are filled</span>
  586. 01062 <span class="comment"> with the following values consistent with the message format given in</span>
  587. 01063 <span class="comment"> Section 4.2:*/</span>
  588. 01064
  589. 01065 <span class="comment">//- In the Router Lifetime field: the interface's configured AdvDefaultLifetime.</span>
  590. 01066 ra-&gt;<a class="code" href="class_i_pv6_router_advertisement.html#a14">setRouterLifetime</a>(ie-&gt;<a class="code" href="class_interface_entry.html#a34">ipv6</a>()-&gt;<a class="code" href="class_i_pv6_interface_data.html#z48_67">advDefaultLifetime</a>());
  591. 01067
  592. 01068 <span class="comment">//- In the M and O flags: the interface's configured AdvManagedFlag and</span>
  593. 01069 <span class="comment">//AdvOtherConfigFlag, respectively. See [ADDRCONF].</span>
  594. 01070 ra-&gt;<a class="code" href="class_i_pv6_router_advertisement.html#a10">setManagedAddrConfFlag</a>(ie-&gt;<a class="code" href="class_interface_entry.html#a34">ipv6</a>()-&gt;<a class="code" href="class_i_pv6_interface_data.html#z48_61">advManagedFlag</a>());
  595. 01071 ra-&gt;<a class="code" href="class_i_pv6…

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