<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>DTN Reference Implementation: dtn::IPDiscovery Class Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.5.6 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="main.html"><span>Main Page</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div class="navpath"><a class="el" href="namespacedtn.html">dtn</a>::<a class="el" href="classdtn_1_1IPDiscovery.html">IPDiscovery</a> </div> </div> <div class="contents"> <h1>dtn::IPDiscovery Class Reference</h1><!-- doxytag: class="dtn::IPDiscovery" --><!-- doxytag: inherits="dtn::Discovery" --><code>#include <<a class="el" href="IPDiscovery_8h-source.html">IPDiscovery.h</a>></code> <p> <div class="dynheader"> Inheritance diagram for dtn::IPDiscovery:</div> <div class="dynsection"> <p><center><img src="classdtn_1_1IPDiscovery.png" usemap="#dtn::IPDiscovery_map" border="0" alt=""></center> <map name="dtn::IPDiscovery_map"> <area href="classdtn_1_1Discovery.html" alt="dtn::Discovery" shape="rect" coords="0,0,104,24"> </map> </div> <p> <a href="classdtn_1_1IPDiscovery-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2> <a class="el" href="classdtn_1_1IPDiscovery.html" title="IPDiscovery is the main thread in IP-based neighbor discovery, configured via config...">IPDiscovery</a> is the main thread in IP-based neighbor discovery, configured via config file or command console to listen to a specified UDP port for unicast, broadcast, or multicast beacons from advertising neighbors. <p>Definition at line <a class="el" href="IPDiscovery_8h-source.html#l00035">35</a> of file <a class="el" href="IPDiscovery_8h-source.html">IPDiscovery.h</a>.</p> <table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Public Types</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1IPDiscovery.html#dba811f3518ddee9d6e16317af505e4d">cl_type_t</a> { <a class="el" href="classdtn_1_1IPDiscovery.html#dba811f3518ddee9d6e16317af505e4da1050e8e6503c2c97a1bc73d6a81eef5">UNDEFINED</a> = 0, <a class="el" href="classdtn_1_1IPDiscovery.html#dba811f3518ddee9d6e16317af505e4d6d63305412b48547e0769f25bb2829c9">TCPCL</a> = 1, <a class="el" href="classdtn_1_1IPDiscovery.html#dba811f3518ddee9d6e16317af505e4dab0183b990af8abb3b948d2c35077ead">UDPCL</a> = 2 }</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Enumerate which type of CL is advertised. <a href="classdtn_1_1IPDiscovery.html#dba811f3518ddee9d6e16317af505e4d">More...</a><br></td></tr> <tr><td colspan="2"><br><h2>Public 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="classdtn_1_1IPDiscovery.html#94633c542ce6d031e5583899e0496f00">shutdown</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Close main socket, causing thread to exit. <a href="#94633c542ce6d031e5583899e0496f00"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1IPDiscovery.html#79f93179608551c7c8b2bd8310e979cd">~IPDiscovery</a> ()</td></tr> <tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1IPDiscovery.html#b8d11e70af91ec4342bb5be2016de212">type_to_str</a> (<a class="el" href="classdtn_1_1IPDiscovery.html#dba811f3518ddee9d6e16317af505e4d">cl_type_t</a> t)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classdtn_1_1IPDiscovery.html#dba811f3518ddee9d6e16317af505e4d">cl_type_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1IPDiscovery.html#f3bcef2eded36d54a1411992bebc058c">str_to_type</a> (const char *cltype)</td></tr> <tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct <br> <a class="el" href="structdtn_1_1IPDiscovery_1_1DiscoveryHeader.html">dtn::IPDiscovery::DiscoveryHeader</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1IPDiscovery.html#8f3f429b61a5a093b489aebb5b396cdd">packed</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">On-the-wire (radio, whatever) representation of IP address family's advertisement beacon. <a href="#8f3f429b61a5a093b489aebb5b396cdd"></a><br></td></tr> <tr><td colspan="2"><br><h2>Static Public Attributes</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static const u_int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1IPDiscovery.html#545fd19e7aaca3eab08b4ff279fc63b4">DEFAULT_DST_ADDR</a> = 0xffffffff</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">If no other options are set for destination, default to sending to the IPv4 broadcast address. <a href="#545fd19e7aaca3eab08b4ff279fc63b4"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static const u_int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1IPDiscovery.html#7f1787a9f154ff88952209924f02e273">DEFAULT_SRC_ADDR</a> = INADDR_ANY</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">If no other options are set for source, use this as default local address. <a href="#7f1787a9f154ff88952209924f02e273"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">static const u_int </td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1IPDiscovery.html#dacf3f66ee13744990d8cb0c54c37585">DEFAULT_MCAST_TTL</a> = 1</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">If no other options are set for multicast TTL, set to 1. <a href="#dacf3f66ee13744990d8cb0c54c37585"></a><br></td></tr> <tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1IPDiscovery.html#ac1eecdacc9c8cc817b1fe781d4b8310">IPDiscovery</a> (const std::string &name)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1IPDiscovery.html#3705ccea8c5e02f26aa9082a0bcca0c8">configure</a> (int argc, const char *argv[])</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set internal state using parameter list; return true on success, else false. <a href="#3705ccea8c5e02f26aa9082a0bcca0c8"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1IPDiscovery.html#4ba6e7fe4ee9f19945b4c1aaf7d7ab8a">run</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">virtual from oasys::Thread <a href="#4ba6e7fe4ee9f19945b4c1aaf7d7ab8a"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1IPDiscovery.html#ac535bfa53ab2daf771e65c48db9781c">parse_advertisement</a> (u_char *<a class="el" href="num2sdnv_8c.html#a81cdcc7ff6987bc85c073253e32715f">buf</a>, size_t len, in_addr_t remote_addr, u_int8_t &cl_type, std::string &nexthop, <a class="el" href="classdtn_1_1EndpointID.html">EndpointID</a> &remote_eid)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience method to pull the relevant items out of the inbound packet. <a href="#ac535bfa53ab2daf771e65c48db9781c"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1IPDiscovery.html#f111297820476cf22fc94d9bcd1a0b4b">handle_announce</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Virtual from <a class="el" href="classdtn_1_1Discovery.html" title="Abstraction of neighbor discovery agent.">Discovery</a>. <a href="#f111297820476cf22fc94d9bcd1a0b4b"></a><br></td></tr> <tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">volatile <a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1IPDiscovery.html#004f9f774345cd25eb73ea4558b86bd7">shutdown_</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">signal to close down thread <a href="#004f9f774345cd25eb73ea4558b86bd7"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">in_addr_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1IPDiscovery.html#45216229a536034944802a1bf0e3f866">local_addr_</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">address for bind() to receive beacons <a href="#45216229a536034944802a1bf0e3f866"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">u_int16_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1IPDiscovery.html#54a253ff502020915fa2521ca9a83e3e">port_</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">local and remote <a href="#54a253ff502020915fa2521ca9a83e3e"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">in_addr_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1IPDiscovery.html#92c069ec1b1e15bad6cf52d926442213">remote_addr_</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">whether unicast, multicast, or broadcast <a href="#92c069ec1b1e15bad6cf52d926442213"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">u_int </td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1IPDiscovery.html#83213d3cb154802ff76e9b07763b95d3">mcast_ttl_</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">TTL hop count for multicast option. <a href="#83213d3cb154802ff76e9b07763b95d3"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">oasys::UDPClient </td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1IPDiscovery.html#d2d28582fc8830ca107cc07aa9b79a5e">socket_</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">the socket for beacons in- and out-bound <a href="#d2d28582fc8830ca107cc07aa9b79a5e"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1IPDiscovery.html#18f8ef2702f024cdc5a87cbc2e676b74">persist_</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">whether to exit thread on send/recv failures <a href="#18f8ef2702f024cdc5a87cbc2e676b74"></a><br></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="classdtn_1_1IPDiscovery.html#135e7ff6ba537b610e4d0db2968d9a2a">Discovery</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="structdtn_1_1IPDiscovery_1_1DiscoveryHeader.html">DiscoveryHeader</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">On-the-wire (radio, whatever) representation of IP address family's advertisement beacon. <a href="structdtn_1_1IPDiscovery_1_1DiscoveryHeader.html#_details">More...</a><br></td></tr> </table> <hr><h2>Member Enumeration Documentation</h2> <a class="anchor" name="dba811f3518ddee9d6e16317af505e4d"></a><!-- doxytag: member="dtn::IPDiscovery::cl_type_t" ref="dba811f3518ddee9d6e16317af505e4d" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="classdtn_1_1IPDiscovery.html#dba811f3518ddee9d6e16317af505e4d">dtn::IPDiscovery::cl_type_t</a> </td> </tr> </table> </div> <div class="memdoc"> <p> Enumerate which type of CL is advertised. <p> <dl compact><dt><b>Enumerator: </b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><em><a class="anchor" name="dba811f3518ddee9d6e16317af505e4da1050e8e6503c2c97a1bc73d6a81eef5"></a><!-- doxytag: member="UNDEFINED" ref="dba811f3518ddee9d6e16317af505e4da1050e8e6503c2c97a1bc73d6a81eef5" args="" -->UNDEFINED</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" name="dba811f3518ddee9d6e16317af505e4d6d63305412b48547e0769f25bb2829c9"></a><!-- doxytag: member="TCPCL" ref="dba811f3518ddee9d6e16317af505e4d6d63305412b48547e0769f25bb2829c9" args="" -->TCPCL</em> </td><td> </td></tr> <tr><td valign="top"><em><a class="anchor" name="dba811f3518ddee9d6e16317af505e4dab0183b990af8abb3b948d2c35077ead"></a><!-- doxytag: member="UDPCL" ref="dba811f3518ddee9d6e16317af505e4dab0183b990af8abb3b948d2c35077ead" args="" -->UDPCL</em> </td><td> </td></tr> </table> </dl> <p>Definition at line <a class="el" href="IPDiscovery_8h-source.html#l00076">76</a> of file <a class="el" href="IPDiscovery_8h-source.html">IPDiscovery.h</a>.</p> </div> </div><p> <hr><h2>Constructor & Destructor Documentation</h2> <a class="anchor" name="79f93179608551c7c8b2bd8310e979cd"></a><!-- doxytag: member="dtn::IPDiscovery::~IPDiscovery" ref="79f93179608551c7c8b2bd8310e979cd" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual dtn::IPDiscovery::~IPDiscovery </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [inline, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="IPDiscovery_8h-source.html#l00112">112</a> of file <a class="el" href="IPDiscovery_8h-source.html">IPDiscovery.h</a>.</p> </div> </div><p> <a class="anchor" name="ac1eecdacc9c8cc817b1fe781d4b8310"></a><!-- doxytag: member="dtn::IPDiscovery::IPDiscovery" ref="ac1eecdacc9c8cc817b1fe781d4b8310" args="(const std::string &name)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">dtn::IPDiscovery::IPDiscovery </td> <td>(</td> <td class="paramtype">const std::string & </td> <td class="paramname"> <em>name</em> </td> <td> ) </td> <td><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="IPDiscovery_8cc-source.html#l00037">37</a> of file <a class="el" href="IPDiscovery_8cc-source.html">IPDiscovery.cc</a>.</p> <p>References <a class="el" href="IPDiscovery_8h-source.html#l00044">DEFAULT_DST_ADDR</a>, <a class="el" href="IPDiscovery_8h-source.html#l00055">DEFAULT_MCAST_TTL</a>, <a class="el" href="IPDiscovery_8h-source.html#l00050">DEFAULT_SRC_ADDR</a>, <a class="el" href="IPDiscovery_8h-source.html#l00149">local_addr_</a>, <a class="el" href="IPDiscovery_8h-source.html#l00152">mcast_ttl_</a>, <a class="el" href="IPDiscovery_8h-source.html#l00154">persist_</a>, <a class="el" href="IPDiscovery_8h-source.html#l00150">port_</a>, <a class="el" href="IPDiscovery_8h-source.html#l00151">remote_addr_</a>, and <a class="el" href="IPDiscovery_8h-source.html#l00148">shutdown_</a>.</p> </div> </div><p> <hr><h2>Member Function Documentation</h2> <a class="anchor" name="b8d11e70af91ec4342bb5be2016de212"></a><!-- doxytag: member="dtn::IPDiscovery::type_to_str" ref="b8d11e70af91ec4342bb5be2016de212" args="(cl_type_t t)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static const char* dtn::IPDiscovery::type_to_str </td> <td>(</td> <td class="paramtype"><a class="el" href="classdtn_1_1IPDiscovery.html#dba811f3518ddee9d6e16317af505e4d">cl_type_t</a> </td> <td class="paramname"> <em>t</em> </td> <td> ) </td> <td><code> [inline, static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="IPDiscovery_8h-source.html#l00084">84</a> of file <a class="el" href="IPDiscovery_8h-source.html">IPDiscovery.h</a>.</p> <p>References <a class="el" href="IPDiscovery_8h-source.html#l00079">TCPCL</a>, <a class="el" href="IPDiscovery_8h-source.html#l00080">UDPCL</a>, and <a class="el" href="IPDiscovery_8h-source.html#l00078">UNDEFINED</a>.</p> <p>Referenced by <a class="el" href="IPDiscovery_8cc-source.html#l00122">run()</a>.</p> </div> </div><p> <a class="anchor" name="f3bcef2eded36d54a1411992bebc058c"></a><!-- doxytag: member="dtn::IPDiscovery::str_to_type" ref="f3bcef2eded36d54a1411992bebc058c" args="(const char *cltype)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static <a class="el" href="classdtn_1_1IPDiscovery.html#dba811f3518ddee9d6e16317af505e4d">cl_type_t</a> dtn::IPDiscovery::str_to_type </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>cltype</em> </td> <td> ) </td> <td><code> [inline, static]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="IPDiscovery_8h-source.html#l00095">95</a> of file <a class="el" href="IPDiscovery_8h-source.html">IPDiscovery.h</a>.</p> <p>References <a class="el" href="IPDiscovery_8h-source.html#l00079">TCPCL</a>, and <a class="el" href="IPDiscovery_8h-source.html#l00080">UDPCL</a>.</p> <p>Referenced by <a class="el" href="IPAnnounce_8cc-source.html#l00082">dtn::IPAnnounce::format_advertisement()</a>.</p> </div> </div><p> <a class="anchor" name="94633c542ce6d031e5583899e0496f00"></a><!-- doxytag: member="dtn::IPDiscovery::shutdown" ref="94633c542ce6d031e5583899e0496f00" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void dtn::IPDiscovery::shutdown </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [inline, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Close main socket, causing thread to exit. <p> <p>Implements <a class="el" href="classdtn_1_1Discovery.html#f9d87f0da923ab6ede111146b3348771">dtn::Discovery</a>.</p> <p>Definition at line <a class="el" href="IPDiscovery_8h-source.html#l00110">110</a> of file <a class="el" href="IPDiscovery_8h-source.html">IPDiscovery.h</a>.</p> <p>References <a class="el" href="IPDiscovery_8h-source.html#l00148">shutdown_</a>, and <a class="el" href="IPDiscovery_8h-source.html#l00153">socket_</a>.</p> </div> </div><p> <a class="anchor" name="3705ccea8c5e02f26aa9082a0bcca0c8"></a><!-- doxytag: member="dtn::IPDiscovery::configure" ref="3705ccea8c5e02f26aa9082a0bcca0c8" args="(int argc, const char *argv[])" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> dtn::IPDiscovery::configure </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"> <em>argc</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>argv</em>[]</td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [protected, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Set internal state using parameter list; return true on success, else false. <p> <p>Implements <a class="el" href="classdtn_1_1Discovery.html#ddea830e6b09b41a73d98deaba7733a1">dtn::Discovery</a>.</p> <p>Definition at line <a class="el" href="IPDiscovery_8cc-source.html#l00051">51</a> of file <a class="el" href="IPDiscovery_8cc-source.html">IPDiscovery.cc</a>.</p> <p>References <a class="el" href="num2sdnv_8c-source.html#l00035">buf</a>, <a class="el" href="Discovery_8h-source.html#l00132">dtn::Discovery::local_</a>, <a class="el" href="IPDiscovery_8h-source.html#l00149">local_addr_</a>, <a class="el" href="IPDiscovery_8h-source.html#l00152">mcast_ttl_</a>, <a class="el" href="IPDiscovery_8h-source.html#l00154">persist_</a>, <a class="el" href="IPDiscovery_8h-source.html#l00150">port_</a>, <a class="el" href="IPDiscovery_8h-source.html#l00151">remote_addr_</a>, <a class="el" href="IPDiscovery_8h-source.html#l00153">socket_</a>, and <a class="el" href="Discovery_8h-source.html#l00131">dtn::Discovery::to_addr_</a>.</p> </div> </div><p> <a class="anchor" name="4ba6e7fe4ee9f19945b4c1aaf7d7ab8a"></a><!-- doxytag: member="dtn::IPDiscovery::run" ref="4ba6e7fe4ee9f19945b4c1aaf7d7ab8a" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void dtn::IPDiscovery::run </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p> virtual from oasys::Thread <p> <p>Definition at line <a class="el" href="IPDiscovery_8cc-source.html#l00122">122</a> of file <a class="el" href="IPDiscovery_8cc-source.html">IPDiscovery.cc</a>.</p> <p>References <a class="el" href="Discovery_8cc-source.html#l00108">dtn::Discovery::announce()</a>, <a class="el" href="num2sdnv_8c-source.html#l00035">buf</a>, <a class="el" href="IPAnnounce_8h-source.html#l00042">dtn::IPAnnounce::cl_addr()</a>, <a class="el" href="EndpointID_8h-source.html#l00126">dtn::EndpointID::equals()</a>, <a class="el" href="IPDiscovery_8cc.html#d65a8842cc674e3ddf69355898c0ecbf">errno</a>, <a class="el" href="IPAnnounce_8cc-source.html#l00082">dtn::IPAnnounce::format_advertisement()</a>, <a class="el" href="Discovery_8cc-source.html#l00181">dtn::Discovery::handle_neighbor_discovered()</a>, <a class="el" href="Announce_8h-source.html#l00094">dtn::Announce::interval()</a>, <a class="el" href="Announce_8h-source.html#l00073">dtn::Announce::interval_remaining()</a>, <a class="el" href="num2sdnv_8c-source.html#l00034">len</a>, <a class="el" href="Discovery_8h-source.html#l00133">dtn::Discovery::list_</a>, <a class="el" href="IPDiscovery_8h-source.html#l00149">local_addr_</a>, <a class="el" href="IPDiscovery_8cc-source.html#l00278">parse_advertisement()</a>, <a class="el" href="IPDiscovery_8h-source.html#l00154">persist_</a>, <a class="el" href="IPDiscovery_8h-source.html#l00150">port_</a>, <a class="el" href="IPDiscovery_8h-source.html#l00151">remote_addr_</a>, <a class="el" href="IPDiscovery_8h-source.html#l00148">shutdown_</a>, <a class="el" href="IPDiscovery_8h-source.html#l00153">socket_</a>, and <a class="el" href="IPDiscovery_8h-source.html#l00084">type_to_str()</a>.</p> </div> </div><p> <a class="anchor" name="ac535bfa53ab2daf771e65c48db9781c"></a><!-- doxytag: member="dtn::IPDiscovery::parse_advertisement" ref="ac535bfa53ab2daf771e65c48db9781c" args="(u_char *buf, size_t len, in_addr_t remote_addr, u_int8_t &cl_type, std::string &nexthop, EndpointID &remote_eid)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> dtn::IPDiscovery::parse_advertisement </td> <td>(</td> <td class="paramtype">u_char * </td> <td class="paramname"> <em>buf</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>len</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">in_addr_t </td> <td class="paramname"> <em>remote_addr</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">u_int8_t & </td> <td class="paramname"> <em>cl_type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">std::string & </td> <td class="paramname"> <em>nexthop</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classdtn_1_1EndpointID.html">EndpointID</a> & </td> <td class="paramname"> <em>remote_eid</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Convenience method to pull the relevant items out of the inbound packet. <p> <p>Definition at line <a class="el" href="IPDiscovery_8cc-source.html#l00278">278</a> of file <a class="el" href="IPDiscovery_8cc-source.html">IPDiscovery.cc</a>.</p> <p>References <a class="el" href="EndpointID_8h-source.html#l00084">dtn::EndpointID::assign()</a>, <a class="el" href="num2sdnv_8c-source.html#l00035">buf</a>, <a class="el" href="IPDiscovery_8h-source.html#l00063">dtn::IPDiscovery::DiscoveryHeader::cl_type</a>, <a class="el" href="IPDiscovery_8h-source.html#l00066">dtn::IPDiscovery::DiscoveryHeader::inet_addr</a>, <a class="el" href="IPDiscovery_8h-source.html#l00067">dtn::IPDiscovery::DiscoveryHeader::inet_port</a>, <a class="el" href="IPDiscovery_8h-source.html#l00065">dtn::IPDiscovery::DiscoveryHeader::length</a>, <a class="el" href="IPDiscovery_8h-source.html#l00068">dtn::IPDiscovery::DiscoveryHeader::name_len</a>, and <a class="el" href="IPDiscovery_8h-source.html#l00069">dtn::IPDiscovery::DiscoveryHeader::sender_name</a>.</p> <p>Referenced by <a class="el" href="IPDiscovery_8cc-source.html#l00122">run()</a>.</p> </div> </div><p> <a class="anchor" name="f111297820476cf22fc94d9bcd1a0b4b"></a><!-- doxytag: member="dtn::IPDiscovery::handle_announce" ref="f111297820476cf22fc94d9bcd1a0b4b" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void dtn::IPDiscovery::handle_announce </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [inline, protected, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Virtual from <a class="el" href="classdtn_1_1Discovery.html" title="Abstraction of neighbor discovery agent.">Discovery</a>. <p> <p>Reimplemented from <a class="el" href="classdtn_1_1Discovery.html#08dc1eadc966b0cd59ee5fcc11b8d0d8">dtn::Discovery</a>.</p> <p>Definition at line <a class="el" href="IPDiscovery_8h-source.html#l00143">143</a> of file <a class="el" href="IPDiscovery_8h-source.html">IPDiscovery.h</a>.</p> <p>References <a class="el" href="IPDiscovery_8h-source.html#l00153">socket_</a>.</p> </div> </div><p> <hr><h2>Friends And Related Function Documentation</h2> <a class="anchor" name="135e7ff6ba537b610e4d0db2968d9a2a"></a><!-- doxytag: member="dtn::IPDiscovery::Discovery" ref="135e7ff6ba537b610e4d0db2968d9a2a" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">friend class <a class="el" href="classdtn_1_1Discovery.html">Discovery</a><code> [friend]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="IPDiscovery_8h-source.html#l00115">115</a> of file <a class="el" href="IPDiscovery_8h-source.html">IPDiscovery.h</a>.</p> </div> </div><p> <hr><h2>Member Data Documentation</h2> <a class="anchor" name="545fd19e7aaca3eab08b4ff279fc63b4"></a><!-- doxytag: member="dtn::IPDiscovery::DEFAULT_DST_ADDR" ref="545fd19e7aaca3eab08b4ff279fc63b4" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const u_int32_t <a class="el" href="classdtn_1_1IPDiscovery.html#545fd19e7aaca3eab08b4ff279fc63b4">dtn::IPDiscovery::DEFAULT_DST_ADDR</a> = 0xffffffff<code> [static]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> If no other options are set for destination, default to sending to the IPv4 broadcast address. <p> <p>Definition at line <a class="el" href="IPDiscovery_8h-source.html#l00044">44</a> of file <a class="el" href="IPDiscovery_8h-source.html">IPDiscovery.h</a>.</p> <p>Referenced by <a class="el" href="IPDiscovery_8cc-source.html#l00037">IPDiscovery()</a>.</p> </div> </div><p> <a class="anchor" name="7f1787a9f154ff88952209924f02e273"></a><!-- doxytag: member="dtn::IPDiscovery::DEFAULT_SRC_ADDR" ref="7f1787a9f154ff88952209924f02e273" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const u_int32_t <a class="el" href="classdtn_1_1IPDiscovery.html#7f1787a9f154ff88952209924f02e273">dtn::IPDiscovery::DEFAULT_SRC_ADDR</a> = INADDR_ANY<code> [static]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> If no other options are set for source, use this as default local address. <p> <p>Definition at line <a class="el" href="IPDiscovery_8h-source.html#l00050">50</a> of file <a class="el" href="IPDiscovery_8h-source.html">IPDiscovery.h</a>.</p> <p>Referenced by <a class="el" href="IPDiscovery_8cc-source.html#l00037">IPDiscovery()</a>.</p> </div> </div><p> <a class="anchor" name="dacf3f66ee13744990d8cb0c54c37585"></a><!-- doxytag: member="dtn::IPDiscovery::DEFAULT_MCAST_TTL" ref="dacf3f66ee13744990d8cb0c54c37585" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const u_int <a class="el" href="classdtn_1_1IPDiscovery.html#dacf3f66ee13744990d8cb0c54c37585">dtn::IPDiscovery::DEFAULT_MCAST_TTL</a> = 1<code> [static]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> If no other options are set for multicast TTL, set to 1. <p> <p>Definition at line <a class="el" href="IPDiscovery_8h-source.html#l00055">55</a> of file <a class="el" href="IPDiscovery_8h-source.html">IPDiscovery.h</a>.</p> <p>Referenced by <a class="el" href="IPDiscovery_8cc-source.html#l00037">IPDiscovery()</a>.</p> </div> </div><p> <a class="anchor" name="8f3f429b61a5a093b489aebb5b396cdd"></a><!-- doxytag: member="dtn::IPDiscovery::packed" ref="8f3f429b61a5a093b489aebb5b396cdd" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct <a class="el" href="structdtn_1_1IPDiscovery_1_1DiscoveryHeader.html">dtn::IPDiscovery::DiscoveryHeader</a> <a class="el" href="classdtn_1_1IPDiscovery.html#8f3f429b61a5a093b489aebb5b396cdd">dtn::IPDiscovery::packed</a> </td> </tr> </table> </div> <div class="memdoc"> <p> On-the-wire (radio, whatever) representation of IP address family's advertisement beacon. <p> </div> </div><p> <a class="anchor" name="004f9f774345cd25eb73ea4558b86bd7"></a><!-- doxytag: member="dtn::IPDiscovery::shutdown_" ref="004f9f774345cd25eb73ea4558b86bd7" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">volatile <a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> <a class="el" href="classdtn_1_1IPDiscovery.html#004f9f774345cd25eb73ea4558b86bd7">dtn::IPDiscovery::shutdown_</a><code> [protected]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> signal to close down thread <p> <p>Definition at line <a class="el" href="IPDiscovery_8h-source.html#l00148">148</a> of file <a class="el" href="IPDiscovery_8h-source.html">IPDiscovery.h</a>.</p> <p>Referenced by <a class="el" href="IPDiscovery_8cc-source.html#l00037">IPDiscovery()</a>, <a class="el" href="IPDiscovery_8cc-source.html#l00122">run()</a>, and <a class="el" href="IPDiscovery_8h-source.html#l00110">shutdown()</a>.</p> </div> </div><p> <a class="anchor" name="45216229a536034944802a1bf0e3f866"></a><!-- doxytag: member="dtn::IPDiscovery::local_addr_" ref="45216229a536034944802a1bf0e3f866" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">in_addr_t <a class="el" href="classdtn_1_1IPDiscovery.html#45216229a536034944802a1bf0e3f866">dtn::IPDiscovery::local_addr_</a><code> [protected]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> address for bind() to receive beacons <p> <p>Definition at line <a class="el" href="IPDiscovery_8h-source.html#l00149">149</a> of file <a class="el" href="IPDiscovery_8h-source.html">IPDiscovery.h</a>.</p> <p>Referenced by <a class="el" href="IPDiscovery_8cc-source.html#l00051">configure()</a>, <a class="el" href="IPDiscovery_8cc-source.html#l00037">IPDiscovery()</a>, and <a class="el" href="IPDiscovery_8cc-source.html#l00122">run()</a>.</p> </div> </div><p> <a class="anchor" name="54a253ff502020915fa2521ca9a83e3e"></a><!-- doxytag: member="dtn::IPDiscovery::port_" ref="54a253ff502020915fa2521ca9a83e3e" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">u_int16_t <a class="el" href="classdtn_1_1IPDiscovery.html#54a253ff502020915fa2521ca9a83e3e">dtn::IPDiscovery::port_</a><code> [protected]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> local and remote <p> <p>Definition at line <a class="el" href="IPDiscovery_8h-source.html#l00150">150</a> of file <a class="el" href="IPDiscovery_8h-source.html">IPDiscovery.h</a>.</p> <p>Referenced by <a class="el" href="IPDiscovery_8cc-source.html#l00051">configure()</a>, <a class="el" href="IPDiscovery_8cc-source.html#l00037">IPDiscovery()</a>, and <a class="el" href="IPDiscovery_8cc-source.html#l00122">run()</a>.</p> </div> </div><p> <a class="anchor" name="92c069ec1b1e15bad6cf52d926442213"></a><!-- doxytag: member="dtn::IPDiscovery::remote_addr_" ref="92c069ec1b1e15bad6cf52d926442213" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">in_addr_t <a class="el" href="classdtn_1_1IPDiscovery.html#92c069ec1b1e15bad6cf52d926442213">dtn::IPDiscovery::remote_addr_</a><code> [protected]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> whether unicast, multicast, or broadcast <p> <p>Definition at line <a class="el" href="IPDiscovery_8h-source.html#l00151">151</a> of file <a class="el" href="IPDiscovery_8h-source.html">IPDiscovery.h</a>.</p> <p>Referenced by <a class="el" href="IPDiscovery_8cc-source.html#l00051">configure()</a>, <a class="el" href="IPDiscovery_8cc-source.html#l00037">IPDiscovery()</a>, and <a class="el" href="IPDiscovery_8cc-source.html#l00122">run()</a>.</p> </div> </div><p> <a class="anchor" name="83213d3cb154802ff76e9b07763b95d3"></a><!-- doxytag: member="dtn::IPDiscovery::mcast_ttl_" ref="83213d3cb154802ff76e9b07763b95d3" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">u_int <a class="el" href="classdtn_1_1IPDiscovery.html#83213d3cb154802ff76e9b07763b95d3">dtn::IPDiscovery::mcast_ttl_</a><code> [protected]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> TTL hop count for multicast option. <p> <p>Definition at line <a class="el" href="IPDiscovery_8h-source.html#l00152">152</a> of file <a class="el" href="IPDiscovery_8h-source.html">IPDiscovery.h</a>.</p> <p>Referenced by <a class="el" href="IPDiscovery_8cc-source.html#l00051">configure()</a>, and <a class="el" href="IPDiscovery_8cc-source.html#l00037">IPDiscovery()</a>.</p> </div> </div><p> <a class="anchor" name="d2d28582fc8830ca107cc07aa9b79a5e"></a><!-- doxytag: member="dtn::IPDiscovery::socket_" ref="d2d28582fc8830ca107cc07aa9b79a5e" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">oasys::UDPClient <a class="el" href="classdtn_1_1IPDiscovery.html#d2d28582fc8830ca107cc07aa9b79a5e">dtn::IPDiscovery::socket_</a><code> [protected]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> the socket for beacons in- and out-bound <p> <p>Definition at line <a class="el" href="IPDiscovery_8h-source.html#l00153">153</a> of file <a class="el" href="IPDiscovery_8h-source.html">IPDiscovery.h</a>.</p> <p>Referenced by <a class="el" href="IPDiscovery_8cc-source.html#l00051">configure()</a>, <a class="el" href="IPDiscovery_8h-source.html#l00143">handle_announce()</a>, <a class="el" href="IPDiscovery_8cc-source.html#l00122">run()</a>, and <a class="el" href="IPDiscovery_8h-source.html#l00110">shutdown()</a>.</p> </div> </div><p> <a class="anchor" name="18f8ef2702f024cdc5a87cbc2e676b74"></a><!-- doxytag: member="dtn::IPDiscovery::persist_" ref="18f8ef2702f024cdc5a87cbc2e676b74" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> <a class="el" href="classdtn_1_1IPDiscovery.html#18f8ef2702f024cdc5a87cbc2e676b74">dtn::IPDiscovery::persist_</a><code> [protected]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> whether to exit thread on send/recv failures <p> <p>Definition at line <a class="el" href="IPDiscovery_8h-source.html#l00154">154</a> of file <a class="el" href="IPDiscovery_8h-source.html">IPDiscovery.h</a>.</p> <p>Referenced by <a class="el" href="IPDiscovery_8cc-source.html#l00051">configure()</a>, <a class="el" href="IPDiscovery_8cc-source.html#l00037">IPDiscovery()</a>, and <a class="el" href="IPDiscovery_8cc-source.html#l00122">run()</a>.</p> </div> </div><p> <hr>The documentation for this class was generated from the following files:<ul> <li><a class="el" href="IPDiscovery_8h-source.html">IPDiscovery.h</a><li><a class="el" href="IPDiscovery_8cc-source.html">IPDiscovery.cc</a></ul> </div> <hr size="1"><address style="text-align: right;"><small>Generated on Mon Jul 21 14:09:52 2008 for DTN Reference Implementation by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address> </body> </html>