blob: 67e28ce422839ebcf5e921fc02b33621fa6993ef [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/core/ipv6/nd6.c 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('nd6_8c.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="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">nd6.c 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="nd6_8h.html">lwip/nd6.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="nd6__priv_8h.html">lwip/priv/nd6_priv.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="prot_2nd6_8h.html">lwip/prot/nd6.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="prot_2icmp6_8h.html">lwip/prot/icmp6.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="mem_8h.html">lwip/mem.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="memp_8h.html">lwip/memp.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="ip6__addr_8h.html">lwip/ip6_addr.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="inet__chksum_8h.html">lwip/inet_chksum.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="netif_8h.html">lwip/netif.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="icmp6_8h.html">lwip/icmp6.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="mld6_8h.html">lwip/mld6.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="dhcp6_8h.html">lwip/dhcp6.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="ip_8h.html">lwip/ip.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="stats_8h.html">lwip/stats.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="dns_8h.html">lwip/dns.h</a>&quot;</code><br />
<code>#include &lt;string.h&gt;</code><br />
<code>#include &quot;path/to/my/lwip_hooks.h&quot;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:abbb92837e715be0e7d99513a84995831"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nd6_8c.html#abbb92837e715be0e7d99513a84995831">nd6_input</a> (struct <a class="el" href="structpbuf.html">pbuf</a> *p, struct <a class="el" href="structnetif.html">netif</a> *inp)</td></tr>
<tr class="separator:abbb92837e715be0e7d99513a84995831"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a754781b509e69c35a7a4ee7e380399fe"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nd6_8c.html#a754781b509e69c35a7a4ee7e380399fe">nd6_tmr</a> (void)</td></tr>
<tr class="separator:a754781b509e69c35a7a4ee7e380399fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a64d7956cf2b0d45025b02661f3f62377"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nd6_8c.html#a64d7956cf2b0d45025b02661f3f62377">nd6_clear_destination_cache</a> (void)</td></tr>
<tr class="separator:a64d7956cf2b0d45025b02661f3f62377"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5ce11eaecfb486c322641427f47cffe"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structnetif.html">netif</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nd6_8c.html#ac5ce11eaecfb486c322641427f47cffe">nd6_find_route</a> (const <a class="el" href="ip6__addr_8h.html#aaca9e796e93a355294c4954c08d01762">ip6_addr_t</a> *ip6addr)</td></tr>
<tr class="separator:ac5ce11eaecfb486c322641427f47cffe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae447c204ebbf71e6ebbc5ed727a73eb9"><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="nd6_8c.html#ae447c204ebbf71e6ebbc5ed727a73eb9">nd6_get_next_hop_addr_or_queue</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>, struct <a class="el" href="structpbuf.html">pbuf</a> *q, const <a class="el" href="ip6__addr_8h.html#aaca9e796e93a355294c4954c08d01762">ip6_addr_t</a> *ip6addr, const u8_t **hwaddrp)</td></tr>
<tr class="separator:ae447c204ebbf71e6ebbc5ed727a73eb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af226438f4f9b4aa7c3a2bbdf3c1e948c"><td class="memItemLeft" align="right" valign="top">u16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nd6_8c.html#af226438f4f9b4aa7c3a2bbdf3c1e948c">nd6_get_destination_mtu</a> (const <a class="el" href="ip6__addr_8h.html#aaca9e796e93a355294c4954c08d01762">ip6_addr_t</a> *ip6addr, struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:af226438f4f9b4aa7c3a2bbdf3c1e948c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4959990cae26a3996f638ec996f046df"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nd6_8c.html#a4959990cae26a3996f638ec996f046df">nd6_reachability_hint</a> (const <a class="el" href="ip6__addr_8h.html#aaca9e796e93a355294c4954c08d01762">ip6_addr_t</a> *ip6addr)</td></tr>
<tr class="separator:a4959990cae26a3996f638ec996f046df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84f9f52cab7ae37b4dd343536156dc73"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nd6_8c.html#a84f9f52cab7ae37b4dd343536156dc73">nd6_cleanup_netif</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:a84f9f52cab7ae37b4dd343536156dc73"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27224542b8ffab81c2ed9f47752bb51e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nd6_8c.html#a27224542b8ffab81c2ed9f47752bb51e">nd6_adjust_mld_membership</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>, s8_t addr_idx, u8_t new_state)</td></tr>
<tr class="separator:a27224542b8ffab81c2ed9f47752bb51e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73d3192204da20be193e3c00c4a0cb54"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nd6_8c.html#a73d3192204da20be193e3c00c4a0cb54">nd6_restart_netif</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
<tr class="separator:a73d3192204da20be193e3c00c4a0cb54"><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>Neighbor discovery and stateless address autoconfiguration for IPv6. Aims to be compliant with RFC 4861 (Neighbor discovery) and RFC 4862 (Address autoconfiguration). </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a27224542b8ffab81c2ed9f47752bb51e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a27224542b8ffab81c2ed9f47752bb51e">&#9670;&nbsp;</a></span>nd6_adjust_mld_membership()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void nd6_adjust_mld_membership </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">s8_t&#160;</td>
<td class="paramname"><em>addr_idx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">u8_t&#160;</td>
<td class="paramname"><em>new_state</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>The state of a local IPv6 address entry is about to change. If needed, join or leave the solicited-node multicast group for the address.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">netif</td><td>The netif that owns the address. </td></tr>
<tr><td class="paramname">addr_idx</td><td>The index of the address. </td></tr>
<tr><td class="paramname">new_state</td><td>The new (IP6_ADDR_) state for the address. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a84f9f52cab7ae37b4dd343536156dc73"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a84f9f52cab7ae37b4dd343536156dc73">&#9670;&nbsp;</a></span>nd6_cleanup_netif()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void nd6_cleanup_netif </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
<td class="paramname"><em>netif</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove all prefix, neighbor_cache and router entries of the specified netif.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">netif</td><td>points to a network interface </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a64d7956cf2b0d45025b02661f3f62377"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a64d7956cf2b0d45025b02661f3f62377">&#9670;&nbsp;</a></span>nd6_clear_destination_cache()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void nd6_clear_destination_cache </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Clear the destination cache.</p>
<p>This operation may be necessary for consistency in the light of changing local addresses and/or use of the gateway hook. </p>
</div>
</div>
<a id="ac5ce11eaecfb486c322641427f47cffe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac5ce11eaecfb486c322641427f47cffe">&#9670;&nbsp;</a></span>nd6_find_route()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct <a class="el" href="structnetif.html">netif</a>* nd6_find_route </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>ip6addr</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Find a router-announced route to the given destination. This route may be based on an on-link prefix or a default router.</p>
<p>If a suitable route is found, the returned netif is guaranteed to be in a suitable state (up, link up) to be used for packet transmission.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ip6addr</td><td>the destination IPv6 address </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the netif to use for the destination, or NULL if none found </dd></dl>
</div>
</div>
<a id="af226438f4f9b4aa7c3a2bbdf3c1e948c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af226438f4f9b4aa7c3a2bbdf3c1e948c">&#9670;&nbsp;</a></span>nd6_get_destination_mtu()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">u16_t nd6_get_destination_mtu </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>ip6addr</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>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the Path MTU for a destination.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ip6addr</td><td>the destination address </td></tr>
<tr><td class="paramname">netif</td><td>the netif on which the packet will be sent </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the Path MTU, if known, or the netif default MTU </dd></dl>
</div>
</div>
<a id="ae447c204ebbf71e6ebbc5ed727a73eb9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae447c204ebbf71e6ebbc5ed727a73eb9">&#9670;&nbsp;</a></span>nd6_get_next_hop_addr_or_queue()</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> nd6_get_next_hop_addr_or_queue </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">struct <a class="el" href="structpbuf.html">pbuf</a> *&#160;</td>
<td class="paramname"><em>q</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>ip6addr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const u8_t **&#160;</td>
<td class="paramname"><em>hwaddrp</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>A packet is to be transmitted to a specific IPv6 destination on a specific interface. Check if we can find the hardware address of the next hop to use for the packet. If so, give the hardware address to the caller, which should use it to send the packet right away. Otherwise, enqueue the packet for later transmission while looking up the hardware address, if possible.</p>
<p>As such, this function returns one of three different possible results:</p>
<ul>
<li>ERR_OK with a non-NULL 'hwaddrp': the caller should send the packet now.</li>
<li>ERR_OK with a NULL 'hwaddrp': the packet has been enqueued for later.</li>
<li>not ERR_OK: something went wrong; forward the error upward in the stack.</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">netif</td><td>The lwIP network interface on which the IP packet will be sent. </td></tr>
<tr><td class="paramname">q</td><td>The <a class="el" href="structpbuf.html">pbuf(s)</a> containing the IP packet to be sent. </td></tr>
<tr><td class="paramname">ip6addr</td><td>The destination IPv6 address of the packet. </td></tr>
<tr><td class="paramname">hwaddrp</td><td>On success, filled with a pointer to a HW address or NULL (meaning the packet has been queued). </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><ul>
<li>ERR_OK on success, ERR_RTE if no route was found for the packet, or ERR_MEM if low memory conditions prohibit sending the packet at all. </li>
</ul>
</dd></dl>
</div>
</div>
<a id="abbb92837e715be0e7d99513a84995831"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abbb92837e715be0e7d99513a84995831">&#9670;&nbsp;</a></span>nd6_input()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void nd6_input </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>inp</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Process an incoming neighbor discovery message</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p</td><td>the nd packet, p-&gt;payload pointing to the icmpv6 header </td></tr>
<tr><td class="paramname">inp</td><td>the netif on which this packet was received </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a4959990cae26a3996f638ec996f046df"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4959990cae26a3996f638ec996f046df">&#9670;&nbsp;</a></span>nd6_reachability_hint()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void nd6_reachability_hint </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>ip6addr</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Provide the Neighbor discovery process with a hint that a destination is reachable. Called by tcp_receive when ACKs are received or sent (as per RFC). This is useful to avoid sending NS messages every 30 seconds.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ip6addr</td><td>the destination address which is know to be reachable by an upper layer protocol (TCP) </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a73d3192204da20be193e3c00c4a0cb54"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a73d3192204da20be193e3c00c4a0cb54">&#9670;&nbsp;</a></span>nd6_restart_netif()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void nd6_restart_netif </td>
<td>(</td>
<td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> *&#160;</td>
<td class="paramname"><em>netif</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Netif was added, set up, or reconnected (link up) </p>
</div>
</div>
<a id="a754781b509e69c35a7a4ee7e380399fe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a754781b509e69c35a7a4ee7e380399fe">&#9670;&nbsp;</a></span>nd6_tmr()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void nd6_tmr </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Periodic timer for Neighbor discovery functions:</p>
<ul>
<li>Update neighbor reachability states</li>
<li>Update destination cache entries age</li>
<li>Update invalidation timers of default routers and on-link prefixes</li>
<li>Update lifetimes of our addresses</li>
<li>Perform duplicate address detection (DAD) for our addresses</li>
<li>Send router solicitations </li>
</ul>
</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_aebb8dcc11953d78e620bbef0b9e2183.html">core</a></li><li class="navelem"><a class="el" href="dir_da9c6f43d3cd00be3de224bac907a425.html">ipv6</a></li><li class="navelem"><a class="el" href="nd6_8c.html">nd6.c</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>