Sophie

Sophie

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

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>DTN Reference Implementation: dtn::BundleProtocol Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.8 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="namespacedtn.html">dtn</a>::<a class="el" href="classdtn_1_1BundleProtocol.html">BundleProtocol</a>
  </div>
</div>
<div class="contents">
<h1>dtn::BundleProtocol Class Reference</h1><!-- doxytag: class="dtn::BundleProtocol" -->Centralized class used to convert a <a class="el" href="classdtn_1_1Bundle.html" title="The internal representation of a bundle.">Bundle</a> to / from the bundle protocol specification for the "on-the-wire" representation.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="BundleProtocol_8h-source.html">BundleProtocol.h</a>&gt;</code>
<p>

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

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The basic block preamble that's common to all blocks (including the payload block but not the primary block).  <a href="structdtn_1_1BundleProtocol_1_1BlockPreamble.html#_details">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f917">status_report_reason_t</a> { <br>
&nbsp;&nbsp;<a class="el" href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f917eac137290a0338e66ed4a0c1cc09c2f2">REASON_NO_ADDTL_INFO</a> =  0x00, 
<a class="el" href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f91773f35a814d405ad151db78f95422a394">REASON_LIFETIME_EXPIRED</a> =  0x01, 
<a class="el" href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f917e2b2502001dc9ec3108744dc835b6511">REASON_FORWARDED_UNIDIR_LINK</a> =  0x02, 
<a class="el" href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f917fcf8e25210f4249990dad68547f7b993">REASON_TRANSMISSION_CANCELLED</a> =  0x03, 
<br>
&nbsp;&nbsp;<a class="el" href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f9176e886c084e3e545573e435ef04760c1a">REASON_DEPLETED_STORAGE</a> =  0x04, 
<a class="el" href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f917261a9bdbc6f572b8cff433355d191e43">REASON_ENDPOINT_ID_UNINTELLIGIBLE</a> =  0x05, 
<a class="el" href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f917e692ecf914f35ccd754a12534793b7d1">REASON_NO_ROUTE_TO_DEST</a> =  0x06, 
<a class="el" href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f917635c372cffcc51473ade75ebfa02c1f0">REASON_NO_TIMELY_CONTACT</a> =  0x07, 
<br>
&nbsp;&nbsp;<a class="el" href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f917a86c9900fe5641754acdcdb326b79b2c">REASON_BLOCK_UNINTELLIGIBLE</a> =  0x08, 
<a class="el" href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f9177d3cf6e00cf9ebd5eb174355289acaea">REASON_SECURITY_FAILED</a> =  0x09
<br>
 }</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classdtn_1_1Bundle.html" title="The internal representation of a bundle.">Bundle</a> Status Report "Reason Code" flags.  <a href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f917">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#54a44c247b3c20b4ed11e29494284ca7">bundle_block_type_t</a> { <br>
&nbsp;&nbsp;<a class="el" href="classdtn_1_1BundleProtocol.html#54a44c247b3c20b4ed11e29494284ca753097979cfe600d2c1dfb5cf3629b195">PRIMARY_BLOCK</a> =  0x000, 
<a class="el" href="classdtn_1_1BundleProtocol.html#54a44c247b3c20b4ed11e29494284ca711ba3c0a764c41add8e738d757393d60">PAYLOAD_BLOCK</a> =  0x001, 
<a class="el" href="classdtn_1_1BundleProtocol.html#54a44c247b3c20b4ed11e29494284ca73f1cdc11347b58f22299129612a2d5e9">BUNDLE_AUTHENTICATION_BLOCK</a> =  0x002, 
<a class="el" href="classdtn_1_1BundleProtocol.html#54a44c247b3c20b4ed11e29494284ca79404d2b594893251777406fa902fee22">PAYLOAD_SECURITY_BLOCK</a> =  0x003, 
<br>
&nbsp;&nbsp;<a class="el" href="classdtn_1_1BundleProtocol.html#54a44c247b3c20b4ed11e29494284ca78d0ab5c2409c7fce7dc3866ffd2ce12e">CONFIDENTIALITY_BLOCK</a> =  0x004, 
<a class="el" href="classdtn_1_1BundleProtocol.html#54a44c247b3c20b4ed11e29494284ca756496904248edc05c52fd4822663d46b">PREVIOUS_HOP_BLOCK</a> =  0x005, 
<a class="el" href="classdtn_1_1BundleProtocol.html#54a44c247b3c20b4ed11e29494284ca7f69759524468f2b1c3f7f1c2f6619f39">METADATA_BLOCK</a> =  0x008, 
<a class="el" href="classdtn_1_1BundleProtocol.html#54a44c247b3c20b4ed11e29494284ca77663bb00a2f3b1e33c5e501bf2c8c9a8">SESSION_BLOCK</a> =  0x009, 
<br>
&nbsp;&nbsp;<a class="el" href="classdtn_1_1BundleProtocol.html#54a44c247b3c20b4ed11e29494284ca782910c2fe9ca3b672f39e125f46e87b6">SEQUENCE_ID_BLOCK</a> =  0x010, 
<a class="el" href="classdtn_1_1BundleProtocol.html#54a44c247b3c20b4ed11e29494284ca787466c93eee1166b0fa3642ee1360905">OBSOLETES_ID_BLOCK</a> =  0x011, 
<a class="el" href="classdtn_1_1BundleProtocol.html#54a44c247b3c20b4ed11e29494284ca7c6d5db373bab62cd6b726724cdfd68b2">API_EXTENSION_BLOCK</a> =  0x100, 
<a class="el" href="classdtn_1_1BundleProtocol.html#54a44c247b3c20b4ed11e29494284ca7a67858f9537b64d0ca49f8921e496a68">UNKNOWN_BLOCK</a> =  0x101
<br>
 }</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Valid type codes for bundle blocks.  <a href="classdtn_1_1BundleProtocol.html#54a44c247b3c20b4ed11e29494284ca7">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#cd56fabd4393bd86ffc295bafaba540b">block_flag_t</a> { <br>
&nbsp;&nbsp;<a class="el" href="classdtn_1_1BundleProtocol.html#cd56fabd4393bd86ffc295bafaba540b615404458f982d50e1fea01b9d383146">BLOCK_FLAG_REPLICATE</a> =  1 &lt;&lt; 0, 
<a class="el" href="classdtn_1_1BundleProtocol.html#cd56fabd4393bd86ffc295bafaba540b08e26de152eecfd35ff1081abf480309">BLOCK_FLAG_REPORT_ONERROR</a> =  1 &lt;&lt; 1, 
<a class="el" href="classdtn_1_1BundleProtocol.html#cd56fabd4393bd86ffc295bafaba540b0b657a90e3033d112835cf7df7a4855b">BLOCK_FLAG_DISCARD_BUNDLE_ONERROR</a> =  1 &lt;&lt; 2, 
<a class="el" href="classdtn_1_1BundleProtocol.html#cd56fabd4393bd86ffc295bafaba540b60a3533536c98ae651d4533edd238037">BLOCK_FLAG_LAST_BLOCK</a> =  1 &lt;&lt; 3, 
<br>
&nbsp;&nbsp;<a class="el" href="classdtn_1_1BundleProtocol.html#cd56fabd4393bd86ffc295bafaba540b92bb8f5c147c6963041f7bc20cfe6e29">BLOCK_FLAG_DISCARD_BLOCK_ONERROR</a> =  1 &lt;&lt; 4, 
<a class="el" href="classdtn_1_1BundleProtocol.html#cd56fabd4393bd86ffc295bafaba540b780f32e1722378470bd143d2fed9cd29">BLOCK_FLAG_FORWARDED_UNPROCESSED</a> =  1 &lt;&lt; 5, 
<a class="el" href="classdtn_1_1BundleProtocol.html#cd56fabd4393bd86ffc295bafaba540b6616947d5db3ac647eeb6d6f0411a593">BLOCK_FLAG_EID_REFS</a> =  1 &lt;&lt; 6
<br>
 }</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Values for block processing flags that appear in all blocks except the primary block.  <a href="classdtn_1_1BundleProtocol.html#cd56fabd4393bd86ffc295bafaba540b">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#35e3c05cad3ebc9ec0f4d9b0f88ece20">admin_record_type_t</a> { <a class="el" href="classdtn_1_1BundleProtocol.html#35e3c05cad3ebc9ec0f4d9b0f88ece20e4dc69cfbb7fd68487cffea427db7f7f">ADMIN_STATUS_REPORT</a> =  0x01, 
<a class="el" href="classdtn_1_1BundleProtocol.html#35e3c05cad3ebc9ec0f4d9b0f88ece207e6e1a30d0fed8a953bc65802798f7dd">ADMIN_CUSTODY_SIGNAL</a> =  0x02, 
<a class="el" href="classdtn_1_1BundleProtocol.html#35e3c05cad3ebc9ec0f4d9b0f88ece20f8fdc109b1a0407b5a3107a3585f6dc3">ADMIN_ANNOUNCE</a> =  0x05
 }</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Administrative Record Type Codes.  <a href="classdtn_1_1BundleProtocol.html#35e3c05cad3ebc9ec0f4d9b0f88ece20">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#f827c0a9dff8115434bc273dc53b7df1">admin_record_flags_t</a> { <a class="el" href="classdtn_1_1BundleProtocol.html#f827c0a9dff8115434bc273dc53b7df1951511bc017d452550ea77dd9a15306b">ADMIN_IS_FRAGMENT</a> =  0x01
 }</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Administrative Record Flags.  <a href="classdtn_1_1BundleProtocol.html#f827c0a9dff8115434bc273dc53b7df1">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#4e25b9c1d9577e30425bc93a8bc5ddb4">status_report_flag_t</a> { <br>
&nbsp;&nbsp;<a class="el" href="classdtn_1_1BundleProtocol.html#4e25b9c1d9577e30425bc93a8bc5ddb45084c0d1b646f1671fa15d90ab25c5c9">STATUS_RECEIVED</a> =  1 &lt;&lt; 14, 
<a class="el" href="classdtn_1_1BundleProtocol.html#4e25b9c1d9577e30425bc93a8bc5ddb4db3d621578bcd84682245b61d2830afe">STATUS_CUSTODY_ACCEPTED</a> =  1 &lt;&lt; 15, 
<a class="el" href="classdtn_1_1BundleProtocol.html#4e25b9c1d9577e30425bc93a8bc5ddb40daebdf298b9f59bfb5f56c2191003a7">STATUS_FORWARDED</a> =  1 &lt;&lt; 16, 
<a class="el" href="classdtn_1_1BundleProtocol.html#4e25b9c1d9577e30425bc93a8bc5ddb42f6dc9b01285b3f7db901319b99de065">STATUS_DELIVERED</a> =  1 &lt;&lt; 17, 
<br>
&nbsp;&nbsp;<a class="el" href="classdtn_1_1BundleProtocol.html#4e25b9c1d9577e30425bc93a8bc5ddb4dddc9465fbf0a1bc602642b99fe03e28">STATUS_DELETED</a> =  1 &lt;&lt; 18, 
<a class="el" href="classdtn_1_1BundleProtocol.html#4e25b9c1d9577e30425bc93a8bc5ddb4994ee560ea74e62ba8eee9c6648f4809">STATUS_ACKED_BY_APP</a> =  1 &lt;&lt; 19, 
<a class="el" href="classdtn_1_1BundleProtocol.html#4e25b9c1d9577e30425bc93a8bc5ddb4e97ac8edac20c401c56fefe09578aa0e">STATUS_UNUSED2</a> =  1 &lt;&lt; 20
<br>
 }</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classdtn_1_1Bundle.html" title="The internal representation of a bundle.">Bundle</a> Status Report Status Flags.  <a href="classdtn_1_1BundleProtocol.html#4e25b9c1d9577e30425bc93a8bc5ddb4">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#e339b3a1104cd188459059e46543490b">custody_signal_reason_t</a> { <br>
&nbsp;&nbsp;<a class="el" href="classdtn_1_1BundleProtocol.html#e339b3a1104cd188459059e46543490bf974eaaa8cbe4e66aeaf238a454cecf1">CUSTODY_NO_ADDTL_INFO</a> =  0x00, 
<a class="el" href="classdtn_1_1BundleProtocol.html#e339b3a1104cd188459059e46543490b0a6d60329683ef33d75edbce647fb245">CUSTODY_REDUNDANT_RECEPTION</a> =  0x03, 
<a class="el" href="classdtn_1_1BundleProtocol.html#e339b3a1104cd188459059e46543490b870861df82a7d42686c4b64887e2e8e7">CUSTODY_DEPLETED_STORAGE</a> =  0x04, 
<a class="el" href="classdtn_1_1BundleProtocol.html#e339b3a1104cd188459059e46543490bf04d881f698e458b945dbefb9163a7a4">CUSTODY_ENDPOINT_ID_UNINTELLIGIBLE</a> =  0x05, 
<br>
&nbsp;&nbsp;<a class="el" href="classdtn_1_1BundleProtocol.html#e339b3a1104cd188459059e46543490bae630a36e16e37e3aec296c18f1a12b2">CUSTODY_NO_ROUTE_TO_DEST</a> =  0x06, 
<a class="el" href="classdtn_1_1BundleProtocol.html#e339b3a1104cd188459059e46543490bbb74fb4f2a0579bd6b56206cfeffaec2">CUSTODY_NO_TIMELY_CONTACT</a> =  0x07, 
<a class="el" href="classdtn_1_1BundleProtocol.html#e339b3a1104cd188459059e46543490bf28ea7f5e87b6196687b5d0f3bf57d4f">CUSTODY_BLOCK_UNINTELLIGIBLE</a> =  0x08
<br>
 }</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Custody Signal Reason Codes.  <a href="classdtn_1_1BundleProtocol.html#e339b3a1104cd188459059e46543490b">More...</a><br></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 void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#a08624ba2b213ce97adfc6b5bc5a054a">register_processor</a> (<a class="el" href="classdtn_1_1BlockProcessor.html">BlockProcessor</a> *bp)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Register a new <a class="el" href="classdtn_1_1BlockProcessor.html" title="Base class for the protocol handling of bundle blocks, including the core primary...">BlockProcessor</a> handler to handle the given block type code when received off the wire.  <a href="#a08624ba2b213ce97adfc6b5bc5a054a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classdtn_1_1BlockProcessor.html">BlockProcessor</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#9baff2ff7f808753a44b05f90a366c61">find_processor</a> (u_int8_t type)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find the appropriate <a class="el" href="classdtn_1_1BlockProcessor.html" title="Base class for the protocol handling of bundle blocks, including the core primary...">BlockProcessor</a> for the given block type code.  <a href="#9baff2ff7f808753a44b05f90a366c61"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#6aa13dcc0ae96b1b832970c3f71678be">init_default_processors</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize the default set of block processors.  <a href="#6aa13dcc0ae96b1b832970c3f71678be"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#77c2dbd79cef726e0234e639e19a34f4">reload_post_process</a> (<a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *bundle)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Give the processors a chance to chew on the bundle after reloading from disk.  <a href="#77c2dbd79cef726e0234e639e19a34f4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classdtn_1_1BlockInfoVec.html">BlockInfoVec</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#ef1c34c75b476f408546f73b4de1f2f5">prepare_blocks</a> (<a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *bundle, const <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> &amp;link)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generate a <a class="el" href="classdtn_1_1BlockInfoVec.html" title="Class for a vector of BlockInfo structures.">BlockInfoVec</a> for the outgoing link and put it into xmit_blocks_.  <a href="#ef1c34c75b476f408546f73b4de1f2f5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#77305bae9d1251ebd42e2b602684f59b">generate_blocks</a> (<a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *bundle, <a class="el" href="classdtn_1_1BlockInfoVec.html">BlockInfoVec</a> *blocks, const <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> &amp;link)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generate contents for the given <a class="el" href="classdtn_1_1BlockInfoVec.html" title="Class for a vector of BlockInfo structures.">BlockInfoVec</a> on the given <a class="el" href="classdtn_1_1Link.html" title="Abstraction for a DTN link, i.e.">Link</a>.  <a href="#77305bae9d1251ebd42e2b602684f59b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#df59b9b818853e07bfb7464312ca7092">delete_blocks</a> (<a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *bundle, const <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> &amp;link)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">static size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#a1dedd9ea4300339bc2a3f7a231ca5dd">total_length</a> (const <a class="el" href="classdtn_1_1BlockInfoVec.html">BlockInfoVec</a> *blocks)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the total length of the formatted bundle block data.  <a href="#a1dedd9ea4300339bc2a3f7a231ca5dd"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#1b5ecc82d428705f3ba067622faace2c">payload_offset</a> (const <a class="el" href="classdtn_1_1BlockInfoVec.html">BlockInfoVec</a> *blocks)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Temporary helper function to find the offset of the first byte of the payload in a block list.  <a href="#1b5ecc82d428705f3ba067622faace2c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#98a0ecbc789e7f84006909b884e70439">produce</a> (const <a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *bundle, const <a class="el" href="classdtn_1_1BlockInfoVec.html">BlockInfoVec</a> *blocks, u_char *data, size_t offset, size_t len, <a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> *last)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copies out a chunk of formatted bundle data at a specified offset from the provided BlockList.  <a href="#98a0ecbc789e7f84006909b884e70439"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#b1641c2fd8771fbda02c9ee59a1474df">consume</a> (<a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *bundle, u_char *data, size_t len, <a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> *last)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parse the supplied chunk of arriving data and append it to the rcvd_blocks_ list in the given bundle, finding the appropriate <a class="el" href="classdtn_1_1BlockProcessor.html" title="Base class for the protocol handling of bundle blocks, including the core primary...">BlockProcessor</a> element and calling its receive() handler.  <a href="#b1641c2fd8771fbda02c9ee59a1474df"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#403d237e6ea6655a5e19b6c8f45dae3b">validate</a> (<a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *bundle, <a class="el" href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f917">status_report_reason_t</a> *reception_reason, <a class="el" href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f917">status_report_reason_t</a> *deletion_reason)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Loop through the bundle's received block list to validate each entry.  <a href="#403d237e6ea6655a5e19b6c8f45dae3b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#c590d33b1e828121f9d096860d4cad9a">set_timestamp</a> (u_char *bp, size_t len, const <a class="el" href="structdtn_1_1BundleTimestamp.html">BundleTimestamp</a> &amp;tv)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Store a DTN timestamp into a 64-bit value suitable for transmission over the network.  <a href="#c590d33b1e828121f9d096860d4cad9a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#09d040740695f886e1e09bd9065767ab">get_timestamp</a> (<a class="el" href="structdtn_1_1BundleTimestamp.html">BundleTimestamp</a> *tv, const u_char *bp, size_t len)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve a DTN timestamp from a 64-bit value that was transmitted over the network.  <a href="#09d040740695f886e1e09bd9065767ab"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#efd5468219b7a40e33d4d6eaa7fa610e">ts_encoding_len</a> (const <a class="el" href="structdtn_1_1BundleTimestamp.html">BundleTimestamp</a> &amp;tv)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the length required to encode the timestamp as two SDNVs.  <a href="#efd5468219b7a40e33d4d6eaa7fa610e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#0100870ed71be16830543b822cfffd2c">get_admin_type</a> (const <a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *bundle, <a class="el" href="classdtn_1_1BundleProtocol.html#35e3c05cad3ebc9ec0f4d9b0f88ece20">admin_record_type_t</a> *type)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assuming the given bundle is an administrative bundle, extract the admin bundle type code from the bundle's payload.  <a href="#0100870ed71be16830543b822cfffd2c"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <br class="typebreak">
<a class="el" href="structdtn_1_1BundleProtocol_1_1BlockPreamble.html">dtn::BundleProtocol::BlockPreamble</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#0a8eb09d58cff4c5a228fa4bc9d29a11">packed</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The basic block preamble that's common to all blocks (including the payload block but not the primary block).  <a href="#0a8eb09d58cff4c5a228fa4bc9d29a11"></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 int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#65e637cab3ab85a59f8e326a79a83856">CURRENT_VERSION</a> = 0x06</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The current version of the bundling protocol.  <a href="#65e637cab3ab85a59f8e326a79a83856"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static const unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#45c131425fd4c84700dcfe7733c11376">PREAMBLE_FIXED_LENGTH</a> = 1</td></tr>

<tr><td colspan="2"><br><h2>Static Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="classdtn_1_1BlockProcessor.html">BlockProcessor</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtn_1_1BundleProtocol.html#43a86367ca937ca31641d9c57ca38726">processors_</a> [256]</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Array of registered <a class="el" href="classdtn_1_1BlockProcessor.html" title="Base class for the protocol handling of bundle blocks, including the core primary...">BlockProcessor</a> handlers -- fixed size since there can be at most one handler per protocol type.  <a href="#43a86367ca937ca31641d9c57ca38726"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Centralized class used to convert a <a class="el" href="classdtn_1_1Bundle.html" title="The internal representation of a bundle.">Bundle</a> to / from the bundle protocol specification for the "on-the-wire" representation. 
<p>
The actual implementation of this is mostly encapsulated in the <a class="el" href="classdtn_1_1BlockProcessor.html" title="Base class for the protocol handling of bundle blocks, including the core primary...">BlockProcessor</a> class hierarchy. 
<p>Definition at line <a class="el" href="BundleProtocol_8h-source.html#l00040">40</a> of file <a class="el" href="BundleProtocol_8h-source.html">BundleProtocol.h</a>.</p>
<hr><h2>Member Enumeration Documentation</h2>
<a class="anchor" name="f827c0a9dff8115434bc273dc53b7df1"></a><!-- doxytag: member="dtn::BundleProtocol::admin_record_flags_t" ref="f827c0a9dff8115434bc273dc53b7df1" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classdtn_1_1BundleProtocol.html#f827c0a9dff8115434bc273dc53b7df1">dtn::BundleProtocol::admin_record_flags_t</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Administrative Record Flags. 
<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="f827c0a9dff8115434bc273dc53b7df1951511bc017d452550ea77dd9a15306b"></a><!-- doxytag: member="ADMIN_IS_FRAGMENT" ref="f827c0a9dff8115434bc273dc53b7df1951511bc017d452550ea77dd9a15306b" args="" -->ADMIN_IS_FRAGMENT</em>&nbsp;</td><td>
</td></tr>
</table>
</dl>

<p>Definition at line <a class="el" href="BundleProtocol_8h-source.html#l00227">227</a> of file <a class="el" href="BundleProtocol_8h-source.html">BundleProtocol.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="35e3c05cad3ebc9ec0f4d9b0f88ece20"></a><!-- doxytag: member="dtn::BundleProtocol::admin_record_type_t" ref="35e3c05cad3ebc9ec0f4d9b0f88ece20" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classdtn_1_1BundleProtocol.html#35e3c05cad3ebc9ec0f4d9b0f88ece20">dtn::BundleProtocol::admin_record_type_t</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Administrative Record Type Codes. 
<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="35e3c05cad3ebc9ec0f4d9b0f88ece20e4dc69cfbb7fd68487cffea427db7f7f"></a><!-- doxytag: member="ADMIN_STATUS_REPORT" ref="35e3c05cad3ebc9ec0f4d9b0f88ece20e4dc69cfbb7fd68487cffea427db7f7f" args="" -->ADMIN_STATUS_REPORT</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="35e3c05cad3ebc9ec0f4d9b0f88ece207e6e1a30d0fed8a953bc65802798f7dd"></a><!-- doxytag: member="ADMIN_CUSTODY_SIGNAL" ref="35e3c05cad3ebc9ec0f4d9b0f88ece207e6e1a30d0fed8a953bc65802798f7dd" args="" -->ADMIN_CUSTODY_SIGNAL</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="35e3c05cad3ebc9ec0f4d9b0f88ece20f8fdc109b1a0407b5a3107a3585f6dc3"></a><!-- doxytag: member="ADMIN_ANNOUNCE" ref="35e3c05cad3ebc9ec0f4d9b0f88ece20f8fdc109b1a0407b5a3107a3585f6dc3" args="" -->ADMIN_ANNOUNCE</em>&nbsp;</td><td>
</td></tr>
</table>
</dl>

<p>Definition at line <a class="el" href="BundleProtocol_8h-source.html#l00218">218</a> of file <a class="el" href="BundleProtocol_8h-source.html">BundleProtocol.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="cd56fabd4393bd86ffc295bafaba540b"></a><!-- doxytag: member="dtn::BundleProtocol::block_flag_t" ref="cd56fabd4393bd86ffc295bafaba540b" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classdtn_1_1BundleProtocol.html#cd56fabd4393bd86ffc295bafaba540b">dtn::BundleProtocol::block_flag_t</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Values for block processing flags that appear in all blocks except the primary block. 
<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="cd56fabd4393bd86ffc295bafaba540b615404458f982d50e1fea01b9d383146"></a><!-- doxytag: member="BLOCK_FLAG_REPLICATE" ref="cd56fabd4393bd86ffc295bafaba540b615404458f982d50e1fea01b9d383146" args="" -->BLOCK_FLAG_REPLICATE</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="cd56fabd4393bd86ffc295bafaba540b08e26de152eecfd35ff1081abf480309"></a><!-- doxytag: member="BLOCK_FLAG_REPORT_ONERROR" ref="cd56fabd4393bd86ffc295bafaba540b08e26de152eecfd35ff1081abf480309" args="" -->BLOCK_FLAG_REPORT_ONERROR</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="cd56fabd4393bd86ffc295bafaba540b0b657a90e3033d112835cf7df7a4855b"></a><!-- doxytag: member="BLOCK_FLAG_DISCARD_BUNDLE_ONERROR" ref="cd56fabd4393bd86ffc295bafaba540b0b657a90e3033d112835cf7df7a4855b" args="" -->BLOCK_FLAG_DISCARD_BUNDLE_ONERROR</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="cd56fabd4393bd86ffc295bafaba540b60a3533536c98ae651d4533edd238037"></a><!-- doxytag: member="BLOCK_FLAG_LAST_BLOCK" ref="cd56fabd4393bd86ffc295bafaba540b60a3533536c98ae651d4533edd238037" args="" -->BLOCK_FLAG_LAST_BLOCK</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="cd56fabd4393bd86ffc295bafaba540b92bb8f5c147c6963041f7bc20cfe6e29"></a><!-- doxytag: member="BLOCK_FLAG_DISCARD_BLOCK_ONERROR" ref="cd56fabd4393bd86ffc295bafaba540b92bb8f5c147c6963041f7bc20cfe6e29" args="" -->BLOCK_FLAG_DISCARD_BLOCK_ONERROR</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="cd56fabd4393bd86ffc295bafaba540b780f32e1722378470bd143d2fed9cd29"></a><!-- doxytag: member="BLOCK_FLAG_FORWARDED_UNPROCESSED" ref="cd56fabd4393bd86ffc295bafaba540b780f32e1722378470bd143d2fed9cd29" args="" -->BLOCK_FLAG_FORWARDED_UNPROCESSED</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="cd56fabd4393bd86ffc295bafaba540b6616947d5db3ac647eeb6d6f0411a593"></a><!-- doxytag: member="BLOCK_FLAG_EID_REFS" ref="cd56fabd4393bd86ffc295bafaba540b6616947d5db3ac647eeb6d6f0411a593" args="" -->BLOCK_FLAG_EID_REFS</em>&nbsp;</td><td>
</td></tr>
</table>
</dl>

<p>Definition at line <a class="el" href="BundleProtocol_8h-source.html#l00195">195</a> of file <a class="el" href="BundleProtocol_8h-source.html">BundleProtocol.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="54a44c247b3c20b4ed11e29494284ca7"></a><!-- doxytag: member="dtn::BundleProtocol::bundle_block_type_t" ref="54a44c247b3c20b4ed11e29494284ca7" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classdtn_1_1BundleProtocol.html#54a44c247b3c20b4ed11e29494284ca7">dtn::BundleProtocol::bundle_block_type_t</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Valid type codes for bundle blocks. 
<p>
(See <a href="http://www.dtnrg.org/wiki/AssignedNamesAndNumbers">http://www.dtnrg.org/wiki/AssignedNamesAndNumbers</a>) <dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="54a44c247b3c20b4ed11e29494284ca753097979cfe600d2c1dfb5cf3629b195"></a><!-- doxytag: member="PRIMARY_BLOCK" ref="54a44c247b3c20b4ed11e29494284ca753097979cfe600d2c1dfb5cf3629b195" args="" -->PRIMARY_BLOCK</em>&nbsp;</td><td>
INTERNAL ONLY -- NOT IN SPEC. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="54a44c247b3c20b4ed11e29494284ca711ba3c0a764c41add8e738d757393d60"></a><!-- doxytag: member="PAYLOAD_BLOCK" ref="54a44c247b3c20b4ed11e29494284ca711ba3c0a764c41add8e738d757393d60" args="" -->PAYLOAD_BLOCK</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="54a44c247b3c20b4ed11e29494284ca73f1cdc11347b58f22299129612a2d5e9"></a><!-- doxytag: member="BUNDLE_AUTHENTICATION_BLOCK" ref="54a44c247b3c20b4ed11e29494284ca73f1cdc11347b58f22299129612a2d5e9" args="" -->BUNDLE_AUTHENTICATION_BLOCK</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="54a44c247b3c20b4ed11e29494284ca79404d2b594893251777406fa902fee22"></a><!-- doxytag: member="PAYLOAD_SECURITY_BLOCK" ref="54a44c247b3c20b4ed11e29494284ca79404d2b594893251777406fa902fee22" args="" -->PAYLOAD_SECURITY_BLOCK</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="54a44c247b3c20b4ed11e29494284ca78d0ab5c2409c7fce7dc3866ffd2ce12e"></a><!-- doxytag: member="CONFIDENTIALITY_BLOCK" ref="54a44c247b3c20b4ed11e29494284ca78d0ab5c2409c7fce7dc3866ffd2ce12e" args="" -->CONFIDENTIALITY_BLOCK</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="54a44c247b3c20b4ed11e29494284ca756496904248edc05c52fd4822663d46b"></a><!-- doxytag: member="PREVIOUS_HOP_BLOCK" ref="54a44c247b3c20b4ed11e29494284ca756496904248edc05c52fd4822663d46b" args="" -->PREVIOUS_HOP_BLOCK</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="54a44c247b3c20b4ed11e29494284ca7f69759524468f2b1c3f7f1c2f6619f39"></a><!-- doxytag: member="METADATA_BLOCK" ref="54a44c247b3c20b4ed11e29494284ca7f69759524468f2b1c3f7f1c2f6619f39" args="" -->METADATA_BLOCK</em>&nbsp;</td><td>
NOT IN SPEC YET. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="54a44c247b3c20b4ed11e29494284ca77663bb00a2f3b1e33c5e501bf2c8c9a8"></a><!-- doxytag: member="SESSION_BLOCK" ref="54a44c247b3c20b4ed11e29494284ca77663bb00a2f3b1e33c5e501bf2c8c9a8" args="" -->SESSION_BLOCK</em>&nbsp;</td><td>
NOT IN SPEC YET. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="54a44c247b3c20b4ed11e29494284ca782910c2fe9ca3b672f39e125f46e87b6"></a><!-- doxytag: member="SEQUENCE_ID_BLOCK" ref="54a44c247b3c20b4ed11e29494284ca782910c2fe9ca3b672f39e125f46e87b6" args="" -->SEQUENCE_ID_BLOCK</em>&nbsp;</td><td>
NOT IN SPEC YET. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="54a44c247b3c20b4ed11e29494284ca787466c93eee1166b0fa3642ee1360905"></a><!-- doxytag: member="OBSOLETES_ID_BLOCK" ref="54a44c247b3c20b4ed11e29494284ca787466c93eee1166b0fa3642ee1360905" args="" -->OBSOLETES_ID_BLOCK</em>&nbsp;</td><td>
NOT IN SPEC YET. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="54a44c247b3c20b4ed11e29494284ca7c6d5db373bab62cd6b726724cdfd68b2"></a><!-- doxytag: member="API_EXTENSION_BLOCK" ref="54a44c247b3c20b4ed11e29494284ca7c6d5db373bab62cd6b726724cdfd68b2" args="" -->API_EXTENSION_BLOCK</em>&nbsp;</td><td>
INTERNAL ONLY -- NOT IN SPEC. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="54a44c247b3c20b4ed11e29494284ca7a67858f9537b64d0ca49f8921e496a68"></a><!-- doxytag: member="UNKNOWN_BLOCK" ref="54a44c247b3c20b4ed11e29494284ca7a67858f9537b64d0ca49f8921e496a68" args="" -->UNKNOWN_BLOCK</em>&nbsp;</td><td>
INTERNAL ONLY -- NOT IN SPEC. </td></tr>
</table>
</dl>

<p>Definition at line <a class="el" href="BundleProtocol_8h-source.html#l00176">176</a> of file <a class="el" href="BundleProtocol_8h-source.html">BundleProtocol.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="e339b3a1104cd188459059e46543490b"></a><!-- doxytag: member="dtn::BundleProtocol::custody_signal_reason_t" ref="e339b3a1104cd188459059e46543490b" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classdtn_1_1BundleProtocol.html#e339b3a1104cd188459059e46543490b">dtn::BundleProtocol::custody_signal_reason_t</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Custody Signal Reason Codes. 
<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="e339b3a1104cd188459059e46543490bf974eaaa8cbe4e66aeaf238a454cecf1"></a><!-- doxytag: member="CUSTODY_NO_ADDTL_INFO" ref="e339b3a1104cd188459059e46543490bf974eaaa8cbe4e66aeaf238a454cecf1" args="" -->CUSTODY_NO_ADDTL_INFO</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="e339b3a1104cd188459059e46543490b0a6d60329683ef33d75edbce647fb245"></a><!-- doxytag: member="CUSTODY_REDUNDANT_RECEPTION" ref="e339b3a1104cd188459059e46543490b0a6d60329683ef33d75edbce647fb245" args="" -->CUSTODY_REDUNDANT_RECEPTION</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="e339b3a1104cd188459059e46543490b870861df82a7d42686c4b64887e2e8e7"></a><!-- doxytag: member="CUSTODY_DEPLETED_STORAGE" ref="e339b3a1104cd188459059e46543490b870861df82a7d42686c4b64887e2e8e7" args="" -->CUSTODY_DEPLETED_STORAGE</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="e339b3a1104cd188459059e46543490bf04d881f698e458b945dbefb9163a7a4"></a><!-- doxytag: member="CUSTODY_ENDPOINT_ID_UNINTELLIGIBLE" ref="e339b3a1104cd188459059e46543490bf04d881f698e458b945dbefb9163a7a4" args="" -->CUSTODY_ENDPOINT_ID_UNINTELLIGIBLE</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="e339b3a1104cd188459059e46543490bae630a36e16e37e3aec296c18f1a12b2"></a><!-- doxytag: member="CUSTODY_NO_ROUTE_TO_DEST" ref="e339b3a1104cd188459059e46543490bae630a36e16e37e3aec296c18f1a12b2" args="" -->CUSTODY_NO_ROUTE_TO_DEST</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="e339b3a1104cd188459059e46543490bbb74fb4f2a0579bd6b56206cfeffaec2"></a><!-- doxytag: member="CUSTODY_NO_TIMELY_CONTACT" ref="e339b3a1104cd188459059e46543490bbb74fb4f2a0579bd6b56206cfeffaec2" args="" -->CUSTODY_NO_TIMELY_CONTACT</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="e339b3a1104cd188459059e46543490bf28ea7f5e87b6196687b5d0f3bf57d4f"></a><!-- doxytag: member="CUSTODY_BLOCK_UNINTELLIGIBLE" ref="e339b3a1104cd188459059e46543490bf28ea7f5e87b6196687b5d0f3bf57d4f" args="" -->CUSTODY_BLOCK_UNINTELLIGIBLE</em>&nbsp;</td><td>
</td></tr>
</table>
</dl>

<p>Definition at line <a class="el" href="BundleProtocol_8h-source.html#l00247">247</a> of file <a class="el" href="BundleProtocol_8h-source.html">BundleProtocol.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="4e25b9c1d9577e30425bc93a8bc5ddb4"></a><!-- doxytag: member="dtn::BundleProtocol::status_report_flag_t" ref="4e25b9c1d9577e30425bc93a8bc5ddb4" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classdtn_1_1BundleProtocol.html#4e25b9c1d9577e30425bc93a8bc5ddb4">dtn::BundleProtocol::status_report_flag_t</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classdtn_1_1Bundle.html" title="The internal representation of a bundle.">Bundle</a> Status Report Status Flags. 
<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="4e25b9c1d9577e30425bc93a8bc5ddb45084c0d1b646f1671fa15d90ab25c5c9"></a><!-- doxytag: member="STATUS_RECEIVED" ref="4e25b9c1d9577e30425bc93a8bc5ddb45084c0d1b646f1671fa15d90ab25c5c9" args="" -->STATUS_RECEIVED</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="4e25b9c1d9577e30425bc93a8bc5ddb4db3d621578bcd84682245b61d2830afe"></a><!-- doxytag: member="STATUS_CUSTODY_ACCEPTED" ref="4e25b9c1d9577e30425bc93a8bc5ddb4db3d621578bcd84682245b61d2830afe" args="" -->STATUS_CUSTODY_ACCEPTED</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="4e25b9c1d9577e30425bc93a8bc5ddb40daebdf298b9f59bfb5f56c2191003a7"></a><!-- doxytag: member="STATUS_FORWARDED" ref="4e25b9c1d9577e30425bc93a8bc5ddb40daebdf298b9f59bfb5f56c2191003a7" args="" -->STATUS_FORWARDED</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="4e25b9c1d9577e30425bc93a8bc5ddb42f6dc9b01285b3f7db901319b99de065"></a><!-- doxytag: member="STATUS_DELIVERED" ref="4e25b9c1d9577e30425bc93a8bc5ddb42f6dc9b01285b3f7db901319b99de065" args="" -->STATUS_DELIVERED</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="4e25b9c1d9577e30425bc93a8bc5ddb4dddc9465fbf0a1bc602642b99fe03e28"></a><!-- doxytag: member="STATUS_DELETED" ref="4e25b9c1d9577e30425bc93a8bc5ddb4dddc9465fbf0a1bc602642b99fe03e28" args="" -->STATUS_DELETED</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="4e25b9c1d9577e30425bc93a8bc5ddb4994ee560ea74e62ba8eee9c6648f4809"></a><!-- doxytag: member="STATUS_ACKED_BY_APP" ref="4e25b9c1d9577e30425bc93a8bc5ddb4994ee560ea74e62ba8eee9c6648f4809" args="" -->STATUS_ACKED_BY_APP</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="4e25b9c1d9577e30425bc93a8bc5ddb4e97ac8edac20c401c56fefe09578aa0e"></a><!-- doxytag: member="STATUS_UNUSED2" ref="4e25b9c1d9577e30425bc93a8bc5ddb4e97ac8edac20c401c56fefe09578aa0e" args="" -->STATUS_UNUSED2</em>&nbsp;</td><td>
</td></tr>
</table>
</dl>

<p>Definition at line <a class="el" href="BundleProtocol_8h-source.html#l00234">234</a> of file <a class="el" href="BundleProtocol_8h-source.html">BundleProtocol.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="37b000d94172c06970bb8af32889f917"></a><!-- doxytag: member="dtn::BundleProtocol::status_report_reason_t" ref="37b000d94172c06970bb8af32889f917" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f917">dtn::BundleProtocol::status_report_reason_t</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classdtn_1_1Bundle.html" title="The internal representation of a bundle.">Bundle</a> Status Report "Reason Code" flags. 
<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="37b000d94172c06970bb8af32889f917eac137290a0338e66ed4a0c1cc09c2f2"></a><!-- doxytag: member="REASON_NO_ADDTL_INFO" ref="37b000d94172c06970bb8af32889f917eac137290a0338e66ed4a0c1cc09c2f2" args="" -->REASON_NO_ADDTL_INFO</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="37b000d94172c06970bb8af32889f91773f35a814d405ad151db78f95422a394"></a><!-- doxytag: member="REASON_LIFETIME_EXPIRED" ref="37b000d94172c06970bb8af32889f91773f35a814d405ad151db78f95422a394" args="" -->REASON_LIFETIME_EXPIRED</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="37b000d94172c06970bb8af32889f917e2b2502001dc9ec3108744dc835b6511"></a><!-- doxytag: member="REASON_FORWARDED_UNIDIR_LINK" ref="37b000d94172c06970bb8af32889f917e2b2502001dc9ec3108744dc835b6511" args="" -->REASON_FORWARDED_UNIDIR_LINK</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="37b000d94172c06970bb8af32889f917fcf8e25210f4249990dad68547f7b993"></a><!-- doxytag: member="REASON_TRANSMISSION_CANCELLED" ref="37b000d94172c06970bb8af32889f917fcf8e25210f4249990dad68547f7b993" args="" -->REASON_TRANSMISSION_CANCELLED</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="37b000d94172c06970bb8af32889f9176e886c084e3e545573e435ef04760c1a"></a><!-- doxytag: member="REASON_DEPLETED_STORAGE" ref="37b000d94172c06970bb8af32889f9176e886c084e3e545573e435ef04760c1a" args="" -->REASON_DEPLETED_STORAGE</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="37b000d94172c06970bb8af32889f917261a9bdbc6f572b8cff433355d191e43"></a><!-- doxytag: member="REASON_ENDPOINT_ID_UNINTELLIGIBLE" ref="37b000d94172c06970bb8af32889f917261a9bdbc6f572b8cff433355d191e43" args="" -->REASON_ENDPOINT_ID_UNINTELLIGIBLE</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="37b000d94172c06970bb8af32889f917e692ecf914f35ccd754a12534793b7d1"></a><!-- doxytag: member="REASON_NO_ROUTE_TO_DEST" ref="37b000d94172c06970bb8af32889f917e692ecf914f35ccd754a12534793b7d1" args="" -->REASON_NO_ROUTE_TO_DEST</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="37b000d94172c06970bb8af32889f917635c372cffcc51473ade75ebfa02c1f0"></a><!-- doxytag: member="REASON_NO_TIMELY_CONTACT" ref="37b000d94172c06970bb8af32889f917635c372cffcc51473ade75ebfa02c1f0" args="" -->REASON_NO_TIMELY_CONTACT</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="37b000d94172c06970bb8af32889f917a86c9900fe5641754acdcdb326b79b2c"></a><!-- doxytag: member="REASON_BLOCK_UNINTELLIGIBLE" ref="37b000d94172c06970bb8af32889f917a86c9900fe5641754acdcdb326b79b2c" args="" -->REASON_BLOCK_UNINTELLIGIBLE</em>&nbsp;</td><td>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="37b000d94172c06970bb8af32889f9177d3cf6e00cf9ebd5eb174355289acaea"></a><!-- doxytag: member="REASON_SECURITY_FAILED" ref="37b000d94172c06970bb8af32889f9177d3cf6e00cf9ebd5eb174355289acaea" args="" -->REASON_SECURITY_FAILED</em>&nbsp;</td><td>
</td></tr>
</table>
</dl>

<p>Definition at line <a class="el" href="BundleProtocol_8h-source.html#l00123">123</a> of file <a class="el" href="BundleProtocol_8h-source.html">BundleProtocol.h</a>.</p>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="b1641c2fd8771fbda02c9ee59a1474df"></a><!-- doxytag: member="dtn::BundleProtocol::consume" ref="b1641c2fd8771fbda02c9ee59a1474df" args="(Bundle *bundle, u_char *data, size_t len, bool *last)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int dtn::BundleProtocol::consume           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *&nbsp;</td>
          <td class="paramname"> <em>bundle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_char *&nbsp;</td>
          <td class="paramname"> <em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> *&nbsp;</td>
          <td class="paramname"> <em>last</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Parse the supplied chunk of arriving data and append it to the rcvd_blocks_ list in the given bundle, finding the appropriate <a class="el" href="classdtn_1_1BlockProcessor.html" title="Base class for the protocol handling of bundle blocks, including the core primary...">BlockProcessor</a> element and calling its receive() handler. 
<p>
When called repeatedly for arriving chunks of data, this properly fills in the entire bundle, including the in_blocks_ record of the arriving blocks and the payload (which is stored externally).<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the length of data consumed or -1 on protocol error, plus sets *last to true if the bundle is complete. </dd></dl>

<p>Definition at line <a class="el" href="BundleProtocol_8cc-source.html#l00374">374</a> of file <a class="el" href="BundleProtocol_8cc-source.html">BundleProtocol.cc</a>.</p>

<p>References <a class="el" href="BlockInfo_8cc-source.html#l00195">dtn::BlockInfoVec::append_block()</a>, <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="BundleProtocol_8h-source.html#l00199">BLOCK_FLAG_LAST_BLOCK</a>, <a class="el" href="BlockProcessor_8h-source.html#l00082">dtn::BlockProcessor::block_type()</a>, <a class="el" href="BlockInfo_8h-source.html#l00083">dtn::BlockInfo::complete()</a>, <a class="el" href="BlockProcessor_8cc-source.html#l00284">dtn::BlockProcessor::consume()</a>, <a class="el" href="BlockInfo_8h-source.html#l00075">dtn::BlockInfo::contents()</a>, <a class="el" href="BundleProtocol_8cc-source.html#l00062">find_processor()</a>, <a class="el" href="BlockInfo_8cc-source.html#l00118">dtn::BlockInfo::flags()</a>, <a class="el" href="dtncat_8c-source.html#l00085">info</a>, <a class="el" href="BundleProtocol_8cc-source.html#l00047">dtn::LOG</a>, <a class="el" href="SDNV_8cc-source.html#l00054">log_err_p</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00278">dtn::Bundle::mutable_recv_blocks()</a>, <a class="el" href="BlockInfo_8h-source.html#l00072">dtn::BlockInfo::owner()</a>, <a class="el" href="BundleProtocol_8h-source.html#l00177">PRIMARY_BLOCK</a>, and <a class="el" href="BlockInfo_8cc-source.html#l00094">dtn::BlockInfo::type()</a>.</p>

<p>Referenced by <a class="el" href="StreamConvergenceLayer_8cc-source.html#l01160">dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::handle_data_todo()</a>, and <a class="el" href="UDPConvergenceLayer_8cc-source.html#l00361">dtn::UDPConvergenceLayer::UDPConvergenceLayer::Receiver::process_data()</a>.</p>

</div>
</div><p>
<a class="anchor" name="df59b9b818853e07bfb7464312ca7092"></a><!-- doxytag: member="dtn::BundleProtocol::delete_blocks" ref="df59b9b818853e07bfb7464312ca7092" args="(Bundle *bundle, const LinkRef &amp;link)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::BundleProtocol::delete_blocks           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *&nbsp;</td>
          <td class="paramname"> <em>bundle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>link</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="BundleProtocol_8cc-source.html#l00249">249</a> of file <a class="el" href="BundleProtocol_8cc-source.html">BundleProtocol.cc</a>.</p>

<p>References <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="BlockProcessor_8h-source.html#l00082">dtn::BlockProcessor::block_type()</a>, <a class="el" href="BlockInfo_8cc-source.html#l00264">dtn::LinkBlockSet::delete_blocks()</a>, <a class="el" href="BundleProtocol_8cc-source.html#l00062">find_processor()</a>, <a class="el" href="BundleProtocol_8h-source.html#l00183">METADATA_BLOCK</a>, and <a class="el" href="bundling_2Bundle_8h-source.html#l00277">dtn::Bundle::xmit_blocks()</a>.</p>

<p>Referenced by <a class="el" href="BundleDaemon_8cc-source.html#l01083">dtn::BundleDaemon::handle_bundle_cancelled()</a>, and <a class="el" href="BundleDaemon_8cc-source.html#l00785">dtn::BundleDaemon::handle_bundle_transmitted()</a>.</p>

</div>
</div><p>
<a class="anchor" name="9baff2ff7f808753a44b05f90a366c61"></a><!-- doxytag: member="dtn::BundleProtocol::find_processor" ref="9baff2ff7f808753a44b05f90a366c61" args="(u_int8_t type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classdtn_1_1BlockProcessor.html">BlockProcessor</a> * dtn::BundleProtocol::find_processor           </td>
          <td>(</td>
          <td class="paramtype">u_int8_t&nbsp;</td>
          <td class="paramname"> <em>type</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Find the appropriate <a class="el" href="classdtn_1_1BlockProcessor.html" title="Base class for the protocol handling of bundle blocks, including the core primary...">BlockProcessor</a> for the given block type code. 
<p>

<p>Definition at line <a class="el" href="BundleProtocol_8cc-source.html#l00062">62</a> of file <a class="el" href="BundleProtocol_8cc-source.html">BundleProtocol.cc</a>.</p>

<p>References <a class="el" href="BundleProtocol_8h-source.html#l00271">processors_</a>.</p>

<p>Referenced by <a class="el" href="BundleProtocol_8cc-source.html#l00374">consume()</a>, <a class="el" href="BundleProtocol_8cc-source.html#l00249">delete_blocks()</a>, <a class="el" href="BundleProtocol_8cc-source.html#l00191">generate_blocks()</a>, <a class="el" href="BundleProtocol_8cc-source.html#l00105">prepare_blocks()</a>, and <a class="el" href="BlockInfo_8cc-source.html#l00155">dtn::BlockInfo::serialize()</a>.</p>

</div>
</div><p>
<a class="anchor" name="77305bae9d1251ebd42e2b602684f59b"></a><!-- doxytag: member="dtn::BundleProtocol::generate_blocks" ref="77305bae9d1251ebd42e2b602684f59b" args="(Bundle *bundle, BlockInfoVec *blocks, const LinkRef &amp;link)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t dtn::BundleProtocol::generate_blocks           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *&nbsp;</td>
          <td class="paramname"> <em>bundle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classdtn_1_1BlockInfoVec.html">BlockInfoVec</a> *&nbsp;</td>
          <td class="paramname"> <em>blocks</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>link</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Generate contents for the given <a class="el" href="classdtn_1_1BlockInfoVec.html" title="Class for a vector of BlockInfo structures.">BlockInfoVec</a> on the given <a class="el" href="classdtn_1_1Link.html" title="Abstraction for a DTN link, i.e.">Link</a>. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the total length of the formatted blocks for this bundle. </dd></dl>

<p>Definition at line <a class="el" href="BundleProtocol_8cc-source.html#l00191">191</a> of file <a class="el" href="BundleProtocol_8cc-source.html">BundleProtocol.cc</a>.</p>

<p>References <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="BundleProtocol_8h-source.html#l00199">BLOCK_FLAG_LAST_BLOCK</a>, <a class="el" href="BundleProtocol_8cc-source.html#l00062">find_processor()</a>, <a class="el" href="PrimaryBlockProcessor_8cc-source.html#l00595">dtn::PrimaryBlockProcessor::generate_primary()</a>, <a class="el" href="BundleProtocol_8cc-source.html#l00047">dtn::LOG</a>, and <a class="el" href="BundleProtocol_8h-source.html#l00177">PRIMARY_BLOCK</a>.</p>

<p>Referenced by <a class="el" href="BundleActions_8cc-source.html#l00078">dtn::BundleActions::queue_bundle()</a>.</p>

</div>
</div><p>
<a class="anchor" name="0100870ed71be16830543b822cfffd2c"></a><!-- doxytag: member="dtn::BundleProtocol::get_admin_type" ref="0100870ed71be16830543b822cfffd2c" args="(const Bundle *bundle, admin_record_type_t *type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> dtn::BundleProtocol::get_admin_type           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *&nbsp;</td>
          <td class="paramname"> <em>bundle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classdtn_1_1BundleProtocol.html#35e3c05cad3ebc9ec0f4d9b0f88ece20">admin_record_type_t</a> *&nbsp;</td>
          <td class="paramname"> <em>type</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Assuming the given bundle is an administrative bundle, extract the admin bundle type code from the bundle's payload. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>true if successful </dd></dl>

<p>Definition at line <a class="el" href="BundleProtocol_8cc-source.html#l00612">612</a> of file <a class="el" href="BundleProtocol_8cc-source.html">BundleProtocol.cc</a>.</p>

<p>References <a class="el" href="BundleProtocol_8h-source.html#l00221">ADMIN_ANNOUNCE</a>, <a class="el" href="BundleProtocol_8h-source.html#l00220">ADMIN_CUSTODY_SIGNAL</a>, <a class="el" href="BundleProtocol_8h-source.html#l00219">ADMIN_STATUS_REPORT</a>, <a class="el" href="num2sdnv_8c-source.html#l00035">buf</a>, <a class="el" href="dtn__ipc_8c.html#6d24efd83036c2dde8d9100adb9abffd">CASE</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00210">dtn::Bundle::is_admin()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00232">dtn::Bundle::payload()</a>, and <a class="el" href="BundlePayload_8cc-source.html#l00419">dtn::BundlePayload::read_data()</a>.</p>

<p>Referenced by <a class="el" href="TclRegistration_8cc-source.html#l00164">dtn::TclRegistration::parse_bundle_data()</a>, and <a class="el" href="BundleStatusReport_8cc-source.html#l00291">dtn::BundleStatusReport::parse_status_report()</a>.</p>

</div>
</div><p>
<a class="anchor" name="09d040740695f886e1e09bd9065767ab"></a><!-- doxytag: member="dtn::BundleProtocol::get_timestamp" ref="09d040740695f886e1e09bd9065767ab" args="(BundleTimestamp *tv, const u_char *bp, size_t len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int dtn::BundleProtocol::get_timestamp           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structdtn_1_1BundleTimestamp.html">BundleTimestamp</a> *&nbsp;</td>
          <td class="paramname"> <em>tv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const u_char *&nbsp;</td>
          <td class="paramname"> <em>bp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Retrieve a DTN timestamp from a 64-bit value that was transmitted over the network. 
<p>
This does not require the timestamp to be word-aligned. 
<p>Definition at line <a class="el" href="BundleProtocol_8cc-source.html#l00584">584</a> of file <a class="el" href="BundleProtocol_8cc-source.html">BundleProtocol.cc</a>.</p>

<p>References <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="SDNV_8cc-source.html#l00117">decode()</a>, <a class="el" href="BundleTimestamp_8h-source.html#l00031">dtn::BundleTimestamp::seconds_</a>, and <a class="el" href="BundleTimestamp_8h-source.html#l00032">dtn::BundleTimestamp::seqno_</a>.</p>

<p>Referenced by <a class="el" href="CustodySignal_8cc-source.html#l00153">dtn::CustodySignal::parse_custody_signal()</a>, and <a class="el" href="BundleStatusReport_8cc-source.html#l00166">dtn::BundleStatusReport::parse_status_report()</a>.</p>

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

<p>
Initialize the default set of block processors. 
<p>

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

<p>References <a class="el" href="BundleProtocol_8h-source.html#l00186">OBSOLETES_ID_BLOCK</a>, <a class="el" href="BundleProtocol_8cc-source.html#l00053">register_processor()</a>, and <a class="el" href="BundleProtocol_8h-source.html#l00185">SEQUENCE_ID_BLOCK</a>.</p>

<p>Referenced by <a class="el" href="BundleDaemon_8cc-source.html#l00119">dtn::BundleDaemon::do_init()</a>.</p>

</div>
</div><p>
<a class="anchor" name="1b5ecc82d428705f3ba067622faace2c"></a><!-- doxytag: member="dtn::BundleProtocol::payload_offset" ref="1b5ecc82d428705f3ba067622faace2c" args="(const BlockInfoVec *blocks)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t dtn::BundleProtocol::payload_offset           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classdtn_1_1BlockInfoVec.html">BlockInfoVec</a> *&nbsp;</td>
          <td class="paramname"> <em>blocks</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Temporary helper function to find the offset of the first byte of the payload in a block list. 
<p>

<p>Definition at line <a class="el" href="BundleProtocol_8cc-source.html#l00279">279</a> of file <a class="el" href="BundleProtocol_8cc-source.html">BundleProtocol.cc</a>.</p>

<p>References <a class="el" href="BundleProtocol_8h-source.html#l00178">PAYLOAD_BLOCK</a>.</p>

<p>Referenced by <a class="el" href="ConnectionConvergenceLayer_8cc-source.html#l00262">dtn::ConnectionConvergenceLayer::close_contact()</a>, and <a class="el" href="FragmentManager_8cc-source.html#l00327">dtn::FragmentManager::try_to_reactively_fragment()</a>.</p>

</div>
</div><p>
<a class="anchor" name="ef1c34c75b476f408546f73b4de1f2f5"></a><!-- doxytag: member="dtn::BundleProtocol::prepare_blocks" ref="ef1c34c75b476f408546f73b4de1f2f5" args="(Bundle *bundle, const LinkRef &amp;link)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classdtn_1_1BlockInfoVec.html">BlockInfoVec</a> * dtn::BundleProtocol::prepare_blocks           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *&nbsp;</td>
          <td class="paramname"> <em>bundle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespacedtn.html#6efb37e503f8062c537b022eb755b94e">LinkRef</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>link</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Generate a <a class="el" href="classdtn_1_1BlockInfoVec.html" title="Class for a vector of BlockInfo structures.">BlockInfoVec</a> for the outgoing link and put it into xmit_blocks_. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>a pointer to the new block list </dd></dl>

<p>Definition at line <a class="el" href="BundleProtocol_8cc-source.html#l00105">105</a> of file <a class="el" href="BundleProtocol_8cc-source.html">BundleProtocol.cc</a>.</p>

<p>References <a class="el" href="bundling_2Bundle_8h-source.html#l00276">dtn::Bundle::api_blocks()</a>, <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="BlockProcessor_8h-source.html#l00082">dtn::BlockProcessor::block_type()</a>, <a class="el" href="BlockInfo_8cc-source.html#l00235">dtn::LinkBlockSet::create_blocks()</a>, <a class="el" href="BlockInfo_8cc-source.html#l00203">dtn::BlockInfoVec::find_block()</a>, <a class="el" href="BundleProtocol_8cc-source.html#l00062">find_processor()</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00227">dtn::Bundle::fragmented_incoming()</a>, <a class="el" href="BlockInfo_8h-source.html#l00156">dtn::BlockInfoVec::has_block()</a>, <a class="el" href="BlockInfo_8h-source.html#l00066">dtn::BlockInfo::LIST_API</a>, <a class="el" href="BlockInfo_8h-source.html#l00064">dtn::BlockInfo::LIST_NONE</a>, <a class="el" href="BlockInfo_8h-source.html#l00065">dtn::BlockInfo::LIST_RECEIVED</a>, <a class="el" href="BundleProtocol_8cc-source.html#l00047">dtn::LOG</a>, <a class="el" href="BundleProtocol_8h-source.html#l00183">METADATA_BLOCK</a>, <a class="el" href="BundleProtocol_8h-source.html#l00178">PAYLOAD_BLOCK</a>, <a class="el" href="BlockProcessor_8cc-source.html#l00406">dtn::BlockProcessor::prepare()</a>, <a class="el" href="BundleProtocol_8h-source.html#l00177">PRIMARY_BLOCK</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00236">dtn::Bundle::recv_blocks()</a>, and <a class="el" href="bundling_2Bundle_8h-source.html#l00277">dtn::Bundle::xmit_blocks()</a>.</p>

<p>Referenced by <a class="el" href="BundleActions_8cc-source.html#l00078">dtn::BundleActions::queue_bundle()</a>.</p>

</div>
</div><p>
<a class="anchor" name="98a0ecbc789e7f84006909b884e70439"></a><!-- doxytag: member="dtn::BundleProtocol::produce" ref="98a0ecbc789e7f84006909b884e70439" args="(const Bundle *bundle, const BlockInfoVec *blocks, u_char *data, size_t offset, size_t len, bool *last)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t dtn::BundleProtocol::produce           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *&nbsp;</td>
          <td class="paramname"> <em>bundle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classdtn_1_1BlockInfoVec.html">BlockInfoVec</a> *&nbsp;</td>
          <td class="paramname"> <em>blocks</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u_char *&nbsp;</td>
          <td class="paramname"> <em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>offset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> *&nbsp;</td>
          <td class="paramname"> <em>last</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copies out a chunk of formatted bundle data at a specified offset from the provided BlockList. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the length of the chunk produced (up to the supplied length) and sets *last to true if the bundle is complete. </dd></dl>

<p>Definition at line <a class="el" href="BundleProtocol_8cc-source.html#l00299">299</a> of file <a class="el" href="BundleProtocol_8cc-source.html">BundleProtocol.cc</a>.</p>

<p>References <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="BundleProtocol_8h-source.html#l00199">BLOCK_FLAG_LAST_BLOCK</a>, and <a class="el" href="BundleProtocol_8cc-source.html#l00047">dtn::LOG</a>.</p>

<p>Referenced by <a class="el" href="UDPConvergenceLayer_8cc-source.html#l00474">dtn::UDPConvergenceLayer::UDPConvergenceLayer::Sender::send_bundle()</a>, and <a class="el" href="StreamConvergenceLayer_8cc-source.html#l00642">dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::send_data_todo()</a>.</p>

</div>
</div><p>
<a class="anchor" name="a08624ba2b213ce97adfc6b5bc5a054a"></a><!-- doxytag: member="dtn::BundleProtocol::register_processor" ref="a08624ba2b213ce97adfc6b5bc5a054a" args="(BlockProcessor *bp)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::BundleProtocol::register_processor           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1BlockProcessor.html">BlockProcessor</a> *&nbsp;</td>
          <td class="paramname"> <em>bp</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Register a new <a class="el" href="classdtn_1_1BlockProcessor.html" title="Base class for the protocol handling of bundle blocks, including the core primary...">BlockProcessor</a> handler to handle the given block type code when received off the wire. 
<p>

<p>Definition at line <a class="el" href="BundleProtocol_8cc-source.html#l00053">53</a> of file <a class="el" href="BundleProtocol_8cc-source.html">BundleProtocol.cc</a>.</p>

<p>References <a class="el" href="SDNV_8cc-source.html#l00044">ASSERT</a>, <a class="el" href="BlockProcessor_8h-source.html#l00082">dtn::BlockProcessor::block_type()</a>, and <a class="el" href="BundleProtocol_8h-source.html#l00271">processors_</a>.</p>

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

</div>
</div><p>
<a class="anchor" name="77c2dbd79cef726e0234e639e19a34f4"></a><!-- doxytag: member="dtn::BundleProtocol::reload_post_process" ref="77c2dbd79cef726e0234e639e19a34f4" args="(Bundle *bundle)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dtn::BundleProtocol::reload_post_process           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *&nbsp;</td>
          <td class="paramname"> <em>bundle</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Give the processors a chance to chew on the bundle after reloading from disk. 
<p>

<p>Definition at line <a class="el" href="BundleProtocol_8cc-source.html#l00089">89</a> of file <a class="el" href="BundleProtocol_8cc-source.html">BundleProtocol.cc</a>.</p>

<p>References <a class="el" href="bundling_2Bundle_8h-source.html#l00278">dtn::Bundle::mutable_recv_blocks()</a>.</p>

<p>Referenced by <a class="el" href="BundleDaemon_8cc-source.html#l02457">dtn::BundleDaemon::load_bundles()</a>.</p>

</div>
</div><p>
<a class="anchor" name="c590d33b1e828121f9d096860d4cad9a"></a><!-- doxytag: member="dtn::BundleProtocol::set_timestamp" ref="c590d33b1e828121f9d096860d4cad9a" args="(u_char *bp, size_t len, const BundleTimestamp &amp;tv)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int dtn::BundleProtocol::set_timestamp           </td>
          <td>(</td>
          <td class="paramtype">u_char *&nbsp;</td>
          <td class="paramname"> <em>bp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structdtn_1_1BundleTimestamp.html">BundleTimestamp</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>tv</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Store a DTN timestamp into a 64-bit value suitable for transmission over the network. 
<p>

<p>Definition at line <a class="el" href="BundleProtocol_8cc-source.html#l00569">569</a> of file <a class="el" href="BundleProtocol_8cc-source.html">BundleProtocol.cc</a>.</p>

<p>References <a class="el" href="SDNV_8cc-source.html#l00062">encode()</a>, <a class="el" href="BundleTimestamp_8h-source.html#l00031">dtn::BundleTimestamp::seconds_</a>, and <a class="el" href="BundleTimestamp_8h-source.html#l00032">dtn::BundleTimestamp::seqno_</a>.</p>

<p>Referenced by <a class="el" href="CustodySignal_8cc-source.html#l00029">dtn::CustodySignal::create_custody_signal()</a>, and <a class="el" href="BundleStatusReport_8cc-source.html#l00030">dtn::BundleStatusReport::create_status_report()</a>.</p>

</div>
</div><p>
<a class="anchor" name="a1dedd9ea4300339bc2a3f7a231ca5dd"></a><!-- doxytag: member="dtn::BundleProtocol::total_length" ref="a1dedd9ea4300339bc2a3f7a231ca5dd" args="(const BlockInfoVec *blocks)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t dtn::BundleProtocol::total_length           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classdtn_1_1BlockInfoVec.html">BlockInfoVec</a> *&nbsp;</td>
          <td class="paramname"> <em>blocks</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Return the total length of the formatted bundle block data. 
<p>

<p>Definition at line <a class="el" href="BundleProtocol_8cc-source.html#l00264">264</a> of file <a class="el" href="BundleProtocol_8cc-source.html">BundleProtocol.cc</a>.</p>

<p>Referenced by <a class="el" href="NullConvergenceLayer_8cc-source.html#l00128">dtn::NullConvergenceLayer::bundle_queued()</a>, <a class="el" href="BundleActions_8cc-source.html#l00174">dtn::BundleActions::cancel_bundle()</a>, <a class="el" href="StreamConvergenceLayer_8cc-source.html#l01214">dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::check_completed()</a>, <a class="el" href="BundleDaemon_8cc-source.html#l00785">dtn::BundleDaemon::handle_bundle_transmitted()</a>, <a class="el" href="UDPConvergenceLayer_8cc-source.html#l00474">dtn::UDPConvergenceLayer::UDPConvergenceLayer::Sender::send_bundle()</a>, <a class="el" href="StreamConvergenceLayer_8cc-source.html#l00533">dtn::StreamConvergenceLayer::StreamConvergenceLayer::Connection::start_next_bundle()</a>, and <a class="el" href="FragmentManager_8cc-source.html#l00327">dtn::FragmentManager::try_to_reactively_fragment()</a>.</p>

</div>
</div><p>
<a class="anchor" name="efd5468219b7a40e33d4d6eaa7fa610e"></a><!-- doxytag: member="dtn::BundleProtocol::ts_encoding_len" ref="efd5468219b7a40e33d4d6eaa7fa610e" args="(const BundleTimestamp &amp;tv)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t dtn::BundleProtocol::ts_encoding_len           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structdtn_1_1BundleTimestamp.html">BundleTimestamp</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>tv</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Return the length required to encode the timestamp as two SDNVs. 
<p>

<p>Definition at line <a class="el" href="BundleProtocol_8cc-source.html#l00605">605</a> of file <a class="el" href="BundleProtocol_8cc-source.html">BundleProtocol.cc</a>.</p>

<p>References <a class="el" href="SDNV_8cc-source.html#l00107">encoding_len()</a>, <a class="el" href="BundleTimestamp_8h-source.html#l00031">dtn::BundleTimestamp::seconds_</a>, and <a class="el" href="BundleTimestamp_8h-source.html#l00032">dtn::BundleTimestamp::seqno_</a>.</p>

<p>Referenced by <a class="el" href="CustodySignal_8cc-source.html#l00029">dtn::CustodySignal::create_custody_signal()</a>, and <a class="el" href="BundleStatusReport_8cc-source.html#l00030">dtn::BundleStatusReport::create_status_report()</a>.</p>

</div>
</div><p>
<a class="anchor" name="403d237e6ea6655a5e19b6c8f45dae3b"></a><!-- doxytag: member="dtn::BundleProtocol::validate" ref="403d237e6ea6655a5e19b6c8f45dae3b" args="(Bundle *bundle, status_report_reason_t *reception_reason, status_report_reason_t *deletion_reason)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="serialsource_8c.html#1062901a7428fdd9c7f180f5e01ea056">bool</a> dtn::BundleProtocol::validate           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classdtn_1_1Bundle.html">Bundle</a> *&nbsp;</td>
          <td class="paramname"> <em>bundle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f917">status_report_reason_t</a> *&nbsp;</td>
          <td class="paramname"> <em>reception_reason</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classdtn_1_1BundleProtocol.html#37b000d94172c06970bb8af32889f917">status_report_reason_t</a> *&nbsp;</td>
          <td class="paramname"> <em>deletion_reason</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Loop through the bundle's received block list to validate each entry. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>true if the bundle is valid, false if it should be deleted. </dd></dl>

<p>Definition at line <a class="el" href="BundleProtocol_8cc-source.html#l00452">452</a> of file <a class="el" href="BundleProtocol_8cc-source.html">BundleProtocol.cc</a>.</p>

<p>References <a class="el" href="bundling_2Bundle_8h-source.html#l00227">dtn::Bundle::fragmented_incoming()</a>, <a class="el" href="BundleProtocol_8cc-source.html#l00047">dtn::LOG</a>, <a class="el" href="SDNV_8cc-source.html#l00054">log_err_p</a>, <a class="el" href="bundling_2Bundle_8h-source.html#l00278">dtn::Bundle::mutable_recv_blocks()</a>, <a class="el" href="BundleProtocol_8h-source.html#l00178">PAYLOAD_BLOCK</a>, <a class="el" href="BundleProtocol_8h-source.html#l00177">PRIMARY_BLOCK</a>, <a class="el" href="BundleProtocol_8h-source.html#l00132">REASON_BLOCK_UNINTELLIGIBLE</a>, and <a class="el" href="BundleProtocol_8h-source.html#l00133">REASON_SECURITY_FAILED</a>.</p>

<p>Referenced by <a class="el" href="BundleDaemon_8cc-source.html#l00486">dtn::BundleDaemon::handle_bundle_received()</a>.</p>

</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="65e637cab3ab85a59f8e326a79a83856"></a><!-- doxytag: member="dtn::BundleProtocol::CURRENT_VERSION" ref="65e637cab3ab85a59f8e326a79a83856" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const int <a class="el" href="classdtn_1_1BundleProtocol.html#65e637cab3ab85a59f8e326a79a83856">dtn::BundleProtocol::CURRENT_VERSION</a> = 0x06<code> [static]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The current version of the bundling protocol. 
<p>

<p>Definition at line <a class="el" href="BundleProtocol_8h-source.html#l00168">168</a> of file <a class="el" href="BundleProtocol_8h-source.html">BundleProtocol.h</a>.</p>

<p>Referenced by <a class="el" href="PrimaryBlockProcessor_8cc-source.html#l00301">dtn::PrimaryBlockProcessor::consume()</a>, <a class="el" href="PrimaryBlockProcessor_8cc-source.html#l00595">dtn::PrimaryBlockProcessor::generate_primary()</a>, and <a class="el" href="PrimaryBlockProcessor_8cc-source.html#l00177">dtn::PrimaryBlockProcessor::get_primary_len()</a>.</p>

</div>
</div><p>
<a class="anchor" name="0a8eb09d58cff4c5a228fa4bc9d29a11"></a><!-- doxytag: member="dtn::BundleProtocol::packed" ref="0a8eb09d58cff4c5a228fa4bc9d29a11" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structdtn_1_1BundleProtocol_1_1BlockPreamble.html">dtn::BundleProtocol::BlockPreamble</a> <a class="el" href="classdtn_1_1BundleProtocol.html#0a8eb09d58cff4c5a228fa4bc9d29a11">dtn::BundleProtocol::packed</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The basic block preamble that's common to all blocks (including the payload block but not the primary block). 
<p>

</div>
</div><p>
<a class="anchor" name="45c131425fd4c84700dcfe7733c11376"></a><!-- doxytag: member="dtn::BundleProtocol::PREAMBLE_FIXED_LENGTH" ref="45c131425fd4c84700dcfe7733c11376" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const unsigned <a class="el" href="classdtn_1_1BundleProtocol.html#45c131425fd4c84700dcfe7733c11376">dtn::BundleProtocol::PREAMBLE_FIXED_LENGTH</a> = 1<code> [static]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Definition at line <a class="el" href="BundleProtocol_8h-source.html#l00170">170</a> of file <a class="el" href="BundleProtocol_8h-source.html">BundleProtocol.h</a>.</p>

<p>Referenced by <a class="el" href="BlockProcessor_8cc-source.html#l00047">dtn::BlockProcessor::consume_preamble()</a>, and <a class="el" href="BlockProcessor_8cc-source.html#l00206">dtn::BlockProcessor::generate_preamble()</a>.</p>

</div>
</div><p>
<a class="anchor" name="43a86367ca937ca31641d9c57ca38726"></a><!-- doxytag: member="dtn::BundleProtocol::processors_" ref="43a86367ca937ca31641d9c57ca38726" args="[256]" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classdtn_1_1BlockProcessor.html">BlockProcessor</a> * <a class="el" href="classdtn_1_1BundleProtocol.html#43a86367ca937ca31641d9c57ca38726">dtn::BundleProtocol::processors_</a><code> [static, private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Array of registered <a class="el" href="classdtn_1_1BlockProcessor.html" title="Base class for the protocol handling of bundle blocks, including the core primary...">BlockProcessor</a> handlers -- fixed size since there can be at most one handler per protocol type. 
<p>

<p>Definition at line <a class="el" href="BundleProtocol_8h-source.html#l00271">271</a> of file <a class="el" href="BundleProtocol_8h-source.html">BundleProtocol.h</a>.</p>

<p>Referenced by <a class="el" href="BundleProtocol_8cc-source.html#l00062">find_processor()</a>, and <a class="el" href="BundleProtocol_8cc-source.html#l00053">register_processor()</a>.</p>

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