blob: 35db10f0f4e6ef8279ddd5f5354fcfcc99f98329 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>lwIP: src/include/lwip/ip6_frag.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">lwIP
&#160;<span id="projectnumber">2.1.2</span>
</div>
<div id="projectbrief">Lightweight IP stack</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('ip6__frag_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">ip6_frag.h File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="opt_8h.html">lwip/opt.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="pbuf_8h.html">lwip/pbuf.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="ip6__addr_8h.html">lwip/ip6_addr.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="ip6_8h.html">lwip/ip6.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="netif_8h.html">lwip/netif.h</a>&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structip6__reassdata.html">ip6_reassdata</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpbuf__custom__ref.html">pbuf_custom_ref</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ad0730ee4db9fbebdf071bb33d75698a2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ip6__frag_8h.html#ad0730ee4db9fbebdf071bb33d75698a2">IP6_REASS_TMR_INTERVAL</a>&#160;&#160;&#160;1000</td></tr>
<tr class="separator:ad0730ee4db9fbebdf071bb33d75698a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a151e742cf7f0e5c3a08f31db0370cea7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ip6__frag_8h.html#a151e742cf7f0e5c3a08f31db0370cea7">IPV6_FRAG_COPYHEADER</a>&#160;&#160;&#160;0</td></tr>
<tr class="separator:a151e742cf7f0e5c3a08f31db0370cea7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:adbd666d01adcbbbc5966938f02025b7c"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structpbuf.html">pbuf</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ip6__frag_8h.html#adbd666d01adcbbbc5966938f02025b7c">ip6_reass</a> (struct <a class="el" href="structpbuf.html">pbuf</a> *p)</td></tr>
<tr class="separator:adbd666d01adcbbbc5966938f02025b7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ef87acbc615d5eb015104f83bbe7d37"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ip6__frag_8h.html#a3ef87acbc615d5eb015104f83bbe7d37">ip6_frag</a> (struct <a class="el" href="structpbuf.html">pbuf</a> *p, struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>, const <a class="el" href="ip6__addr_8h.html#aaca9e796e93a355294c4954c08d01762">ip6_addr_t</a> *dest)</td></tr>
<tr class="separator:a3ef87acbc615d5eb015104f83bbe7d37"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>IPv6 fragmentation and reassembly. </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="ad0730ee4db9fbebdf071bb33d75698a2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad0730ee4db9fbebdf071bb33d75698a2">&#9670;&nbsp;</a></span>IP6_REASS_TMR_INTERVAL</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define IP6_REASS_TMR_INTERVAL&#160;&#160;&#160;1000</td>
</tr>
</table>
</div><div class="memdoc">
<p>The IPv6 reassembly timer interval in milliseconds. </p>
</div>
</div>
<a id="a151e742cf7f0e5c3a08f31db0370cea7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a151e742cf7f0e5c3a08f31db0370cea7">&#9670;&nbsp;</a></span>IPV6_FRAG_COPYHEADER</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define IPV6_FRAG_COPYHEADER&#160;&#160;&#160;0</td>
</tr>
</table>
</div><div class="memdoc">
<p>IP6_FRAG_COPYHEADER==1: for platforms where sizeof(void*) &gt; 4, "struct
ip6_reass_helper" is too large to be stored in the IPv6 fragment header, and will bleed into the header before it, which may be the IPv6 header or an extension header. This means that for each first fragment packet, we need to 1) make a copy of some IPv6 header fields (src+dest) that we need later on, just in case we do overwrite part of the IPv6 header, and 2) make a copy of the header data that we overwrote, so that we can restore it before either completing reassembly or sending an ICMPv6 reply. The last part is true even if this setting is disabled, but if it is enabled, we need to save a bit more data (up to the size of a pointer) because we overwrite more. </p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a3ef87acbc615d5eb015104f83bbe7d37"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ef87acbc615d5eb015104f83bbe7d37">&#9670;&nbsp;</a></span>ip6_frag()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a> ip6_frag </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structpbuf.html">pbuf</a> *&#160;</td>
<td class="paramname"><em>p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
<td class="paramname"><em>netif</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="ip6__addr_8h.html#aaca9e796e93a355294c4954c08d01762">ip6_addr_t</a> *&#160;</td>
<td class="paramname"><em>dest</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Fragment an IPv6 datagram if too large for the netif or path MTU.</p>
<p>Chop the datagram in MTU sized chunks and send them in order by pointing PBUF_REFs into p</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p</td><td>ipv6 packet to send </td></tr>
<tr><td class="paramname">netif</td><td>the netif on which to send </td></tr>
<tr><td class="paramname">dest</td><td>destination ipv6 address to which to send</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ERR_OK if sent successfully, err_t otherwise </dd></dl>
</div>
</div>
<a id="adbd666d01adcbbbc5966938f02025b7c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adbd666d01adcbbbc5966938f02025b7c">&#9670;&nbsp;</a></span>ip6_reass()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct <a class="el" href="structpbuf.html">pbuf</a>* ip6_reass </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structpbuf.html">pbuf</a> *&#160;</td>
<td class="paramname"><em>p</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Reassembles incoming IPv6 fragments into an IPv6 datagram.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p</td><td>points to the IPv6 Fragment Header </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>NULL if reassembly is incomplete, pbuf pointing to IPv6 Header if reassembly is complete </dd></dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li><li class="navelem"><a class="el" href="dir_4e6b3cf33a61b6caac9c8ac30c866f37.html">lwip</a></li><li class="navelem"><a class="el" href="ip6__frag_8h.html">ip6_frag.h</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>