231 lines
15 KiB
HTML
231 lines
15 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.20"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>lwIP: src/core/ipv4/autoip.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>
|
|
<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
|
|
 <span id="projectnumber">2.2.1</span>
|
|
</div>
|
|
<div id="projectbrief">Lightweight IP stack</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.8.20 -->
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
|
/* @license-end */
|
|
</script>
|
|
<script type="text/javascript" src="menudata.js"></script>
|
|
<script type="text/javascript" src="menu.js"></script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
$(function() {
|
|
initMenu('',true,false,'search.php','Search');
|
|
$(document).ready(function() { init_search(); });
|
|
});
|
|
/* @license-end */</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">
|
|
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
$(document).ready(function(){initNavTree('autoip_8c.html',''); initResizable(); });
|
|
/* @license-end */
|
|
</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="#define-members">Macros</a> |
|
|
<a href="#func-members">Functions</a> </div>
|
|
<div class="headertitle">
|
|
<div class="title">autoip.c File Reference</div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<div class="textblock"><code>#include "<a class="el" href="opt_8h.html">lwip/opt.h</a>"</code><br />
|
|
<code>#include "<a class="el" href="mem_8h.html">lwip/mem.h</a>"</code><br />
|
|
<code>#include "<a class="el" href="ip__addr_8h.html">lwip/ip_addr.h</a>"</code><br />
|
|
<code>#include "<a class="el" href="netif_8h.html">lwip/netif.h</a>"</code><br />
|
|
<code>#include "<a class="el" href="autoip_8h.html">lwip/autoip.h</a>"</code><br />
|
|
<code>#include "<a class="el" href="acd_8h.html">lwip/acd.h</a>"</code><br />
|
|
<code>#include "<a class="el" href="lwip_2etharp_8h.html">lwip/etharp.h</a>"</code><br />
|
|
<code>#include "<a class="el" href="prot_2autoip_8h.html">lwip/prot/autoip.h</a>"</code><br />
|
|
<code>#include <string.h></code><br />
|
|
</div><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
|
|
Macros</h2></td></tr>
|
|
<tr class="memitem:acec75069f6e6ecbe200c5691e56ecd43"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="autoip_8c.html#acec75069f6e6ecbe200c5691e56ecd43">LWIP_AUTOIP_CREATE_SEED_ADDR</a>(<a class="el" href="structnetif.html">netif</a>)</td></tr>
|
|
<tr class="separator:acec75069f6e6ecbe200c5691e56ecd43"><td class="memSeparator" colspan="2"> </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:ga2122c0b2518b371559fef5ec1d2aed90"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__autoip.html#ga2122c0b2518b371559fef5ec1d2aed90">autoip_set_struct</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>, struct <a class="el" href="structautoip.html">autoip</a> *<a class="el" href="structautoip.html">autoip</a>)</td></tr>
|
|
<tr class="separator:ga2122c0b2518b371559fef5ec1d2aed90"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:gac0c98035795500ede464aa4af2515f30"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__autoip.html#gac0c98035795500ede464aa4af2515f30">autoip_remove_struct</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
|
|
<tr class="separator:gac0c98035795500ede464aa4af2515f30"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ga1461f5826ebefc050e0d63013818d1e8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__autoip.html#ga1461f5826ebefc050e0d63013818d1e8">autoip_start</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
|
|
<tr class="separator:ga1461f5826ebefc050e0d63013818d1e8"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:af2a36aee96cbdf8f4a8f1e69c91ff425"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="autoip_8c.html#af2a36aee96cbdf8f4a8f1e69c91ff425">autoip_network_changed_link_up</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
|
|
<tr class="separator:af2a36aee96cbdf8f4a8f1e69c91ff425"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:af93544c49f2c24b95a3981351d023056"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="autoip_8c.html#af93544c49f2c24b95a3981351d023056">autoip_network_changed_link_down</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
|
|
<tr class="separator:af93544c49f2c24b95a3981351d023056"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ga58a4dce658dd1263e84eb982f62587d4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__infrastructure__errors.html#gaf02d9da80fd66b4f986d2c53d7231ddb">err_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__autoip.html#ga58a4dce658dd1263e84eb982f62587d4">autoip_stop</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
|
|
<tr class="separator:ga58a4dce658dd1263e84eb982f62587d4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a6de97b7dcd98f9039d5c1ad11c257d62"><td class="memItemLeft" align="right" valign="top">u8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="autoip_8c.html#a6de97b7dcd98f9039d5c1ad11c257d62">autoip_supplied_address</a> (struct <a class="el" href="structnetif.html">netif</a> *<a class="el" href="structnetif.html">netif</a>)</td></tr>
|
|
<tr class="separator:a6de97b7dcd98f9039d5c1ad11c257d62"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
<div class="textblock"><p>AutoIP Automatic LinkLocal IP Configuration</p>
|
|
<p>This is a AutoIP implementation for the lwIP TCP/IP stack. It aims to conform with RFC 3927. It uses IPv4 address conflict detection to evaluate the chosen address. The ACD module aims to be conform to RFC 5227. RFC 5227 is extracted out of RFC 3927 so the acd module fits nicely in autoip. </p>
|
|
</div><h2 class="groupheader">Macro Definition Documentation</h2>
|
|
<a id="acec75069f6e6ecbe200c5691e56ecd43"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#acec75069f6e6ecbe200c5691e56ecd43">◆ </a></span>LWIP_AUTOIP_CREATE_SEED_ADDR</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">#define LWIP_AUTOIP_CREATE_SEED_ADDR</td>
|
|
<td>(</td>
|
|
<td class="paramtype"> </td>
|
|
<td class="paramname"><a class="el" href="structnetif.html">netif</a></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<b>Value:</b><div class="fragment"><div class="line"> <a class="code" href="def_8c.html#a14f94347a5b9b9e3602705b75b7ae524">lwip_htonl</a>(AUTOIP_RANGE_START + ((u32_t)(((u8_t)(<a class="code" href="structnetif.html">netif</a>-><a class="code" href="structnetif.html#aee967965d999fc1a4c40a66709304e69">hwaddr</a>[4])) | \</div>
|
|
<div class="line"> ((u32_t)((u8_t)(<a class="code" href="structnetif.html">netif</a>-><a class="code" href="structnetif.html#aee967965d999fc1a4c40a66709304e69">hwaddr</a>[5]))) << 8)))</div>
|
|
</div><!-- fragment --><p>Macro that generates the initial IP address to be tried by AUTOIP. If you want to override this, define it to something else in lwipopts.h. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Function Documentation</h2>
|
|
<a id="af93544c49f2c24b95a3981351d023056"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#af93544c49f2c24b95a3981351d023056">◆ </a></span>autoip_network_changed_link_down()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void autoip_network_changed_link_down </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> * </td>
|
|
<td class="paramname"><em>netif</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>Handle a possible change in the network configuration: link down</p>
|
|
<p>If there is an AutoIP address configured and AutoIP is in cooperation with DHCP, then stop the autoip module. When the link goes up, we do not want the autoip module to start again. DHCP will initiate autoip when needed. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="af2a36aee96cbdf8f4a8f1e69c91ff425"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#af2a36aee96cbdf8f4a8f1e69c91ff425">◆ </a></span>autoip_network_changed_link_up()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void autoip_network_changed_link_up </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> * </td>
|
|
<td class="paramname"><em>netif</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>Handle a possible change in the network configuration: link up</p>
|
|
<p>If there is an AutoIP address configured and AutoIP is not in cooperation with DHCP, start probing for previous address. </p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a6de97b7dcd98f9039d5c1ad11c257d62"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a6de97b7dcd98f9039d5c1ad11c257d62">◆ </a></span>autoip_supplied_address()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">u8_t autoip_supplied_address </td>
|
|
<td>(</td>
|
|
<td class="paramtype">struct <a class="el" href="structnetif.html">netif</a> * </td>
|
|
<td class="paramname"><em>netif</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
<p>check if AutoIP supplied netif-><a class="el" href="structip__addr.html">ip_addr</a></p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">netif</td><td>the netif to check </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>1 if AutoIP supplied netif-><a class="el" href="structip__addr.html">ip_addr</a> (state BOUND), 0 otherwise </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
</div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
<div class="ttc" id="astructnetif_html_aee967965d999fc1a4c40a66709304e69"><div class="ttname"><a href="structnetif.html#aee967965d999fc1a4c40a66709304e69">netif::hwaddr</a></div><div class="ttdeci">u8_t hwaddr[6U]</div><div class="ttdef"><b>Definition:</b> netif.h:350</div></div>
|
|
<div class="ttc" id="astructnetif_html"><div class="ttname"><a href="structnetif.html">netif</a></div><div class="ttdef"><b>Definition:</b> netif.h:269</div></div>
|
|
<div class="ttc" id="adef_8c_html_a14f94347a5b9b9e3602705b75b7ae524"><div class="ttname"><a href="def_8c.html#a14f94347a5b9b9e3602705b75b7ae524">lwip_htonl</a></div><div class="ttdeci">u32_t lwip_htonl(u32_t n)</div><div class="ttdef"><b>Definition:</b> def.c:90</div></div>
|
|
<!-- 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_a32e111ee6805cfc63488fd2d37f2390.html">ipv4</a></li><li class="navelem"><a class="el" href="autoip_8c.html">autoip.c</a></li>
|
|
<li class="footer">Generated by <a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|