⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 arp_8c.html

📁 Freescale mcu OpenTCP-1.0.4.doc.html.zip 文档
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>arp.c File Reference</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.2.18 --><center><a class="qindex" href="main.html">Main Page</a> &nbsp; <a class="qindex" href="modules.html">Modules</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; <a class="qindex" href="examples.html">Examples</a> &nbsp; </center><hr><h1>/opentcp/arp.c File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2> <dl compact><dt><b>Author: </b></dt><dd> <ul><li> Jari Lahti (<a href="mailto:jari.lahti@violasystems.com">jari.lahti@violasystems.com</a>) <li> Vladan Jovanovic (<a href="mailto:vladan.jovanovic@violasystems.com">vladan.jovanovic@violasystems.com</a>) </ul></dl><dl compact><dt><b>Version: </b></dt><dd>1.0 </dl><dl compact><dt><b>Date: </b></dt><dd>10.7.2002 </dl><dl compact><dt><b><a class="el" href="bug.html#_bug000003">Bug: </a></b></dt><dd></dl> <dl compact><dt><b>Warning: </b></dt><dd> </dl><dl compact><dt><b><a class="el" href="todo.html#_todo000003">Todo: </a></b></dt><dd><ul><li> Offer direct control over ARP (needed in future for DHCP)</dl></ul>OpenTCP ARP protocol implementation. Function declarations can be found in <a class="el" href="arp_8h.html">inet/arp.h</a>.<p><p>Definition in file <a class="el" href="arp_8c-source.html">arp.c</a>.<p><a href="arp_8c-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0><tr><td></td></tr><tr><td colspan=2><br><h2>Functions</h2></td></tr><tr><td nowrap align=right valign=top>UINT8&nbsp;</td><td valign=bottom><a class="el" href="arp_8c.html#a2">process_arp</a> (struct <a class="el" href="structethernet__frame.html">ethernet_frame</a> *frame)</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Process and analyze the received ARP packet.</em> <a href="#a2"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="arp_8c.html#a3">arp_send_response</a> (void)</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Send response to an ARP request.</em> <a href="#a3"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="arp_8c.html#a4">arp_get_response</a> (void)</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Extract data from the received ARP packet.</em> <a href="#a4"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="arp_8c.html#a5">arp_send_req</a> (UINT8 entry)</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Send ARP request based on information in an ARP cache table.</em> <a href="#a5"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>INT8&nbsp;</td><td valign=bottom><a class="el" href="arp_8c.html#a6">arp_alloc</a> (UINT8 type)</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Allocate ARP entry in ARP cache table.</em> <a href="#a6"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>INT8&nbsp;</td><td valign=bottom><a class="el" href="arp_8c.html#a7">arp_add</a> (UINT32 pra, UINT8 *hwadr, UINT8 type)</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Add given IP address and MAC address to ARP cache.</em> <a href="#a7"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top><a class="el" href="structarp__entry.html">arp_entry</a> *&nbsp;</td><td valign=bottom><a class="el" href="arp_8c.html#a8">arp_find</a> (LWORD pra, struct <a class="el" href="structnetif.html">netif</a> *machine, UINT8 type)</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Find an ARP entry given a protocol address.</em> <a href="#a8"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="group__periodic__functions.html#a0">arp_manage</a> (void)</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Manage ARP cache periodically.</em> <a href="group__periodic__functions.html#a0"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="group__core__initializer.html#a0">arp_init</a> (void)</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Initialize data structures for ARP processing.</em> <a href="group__core__initializer.html#a0"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>BYTE&nbsp;</td><td valign=bottom><a class="el" href="arp_8c.html#a11">is_subnet</a> (LWORD ipadr, struct <a class="el" href="structnetif.html">netif</a> *machine)</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Checks if a given IP address belongs to the subnet of a given machine.</em> <a href="#a11"></a><em></em></font><br><br></td></tr><tr><td colspan=2><br><h2>Variables</h2></td></tr><tr><td nowrap align=right valign=top><a class="el" href="structarp__entry.html">arp_entry</a>&nbsp;</td><td valign=bottom><a class="el" href="arp_8c.html#a0">arp_table</a> [ARP_TSIZE]</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>ARP cache table holding ARP_TSIZE cache values.</em> <a href="#a0"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>UINT8&nbsp;</td><td valign=bottom><a class="el" href="arp_8c.html#a1">arp_timer</a></td></tr><tr><td>&nbsp;</td><td><font size=-1><em>ARP timer handle used for measuring timeouts, doing retransmissions,..</em> <a href="#a1"></a><em></em></font><br><br></td></tr></table><hr><h2>Function Documentation</h2><a name="a2" doxytag="arp.c::process_arp"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0">  <tr>    <td class="md">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top"> UINT8 process_arp </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top">struct <a class="el" href="structethernet__frame.html">ethernet_frame</a> *&nbsp;</td>          <td class="mdname1" valign="top" nowrap>&nbsp; <em>frame</em>          </td>          <td class="md" valign="top">)&nbsp;</td>          <td class="md" nowrap></td>        </tr>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p><dl compact><dt><b>Author: </b></dt><dd> <ul><li> Jari Lahti (<a href="mailto:jari.lahti@violasystems.com">jari.lahti@violasystems.com</a>)</ul></dl><dl compact><dt><b>Date: </b></dt><dd>10.07.2002 </dl><dl compact><dt><b>Parameters: </b></dt><dd><table border=0 cellspacing=2 cellpadding=0><tr><td valign=top><em>frame</em>&nbsp;</td><td>Pointer to <a class="el" href="structethernet__frame.html">ethernet_frame</a> structure containing information about the received frame </td></tr></table></dl><dl compact><dt><b>Returns: </b></dt><dd>Return <a class="el" href="system_8h.html#a1">TRUE</a> if Ethernet frame processed held ARP packet, otherwise <a class="el" href="system_8h.html#a2">FALSE</a>.</dl>Invoke process_arp function whenever ARP packet is received  (see <a class="el" href="main__demo_8c.html">main_demo.c</a> for an example loop). This function will process the received packet, analyze it'c content briefly and perform on of the two possible actions: <ul><li> If the received packet is ARP request it will invoke arp_send_reply in order to send ARP reply back <li> If the received packet is ARP response it will iterate through the cache table and try to find ARP entry that is beeing resolved or refreshed </ul><dl compact><dt><b>Examples: </b></dt><dd><a class="el" href="main__demo_8c-example.html#a11">main_demo.c</a>.</dl><p>Definition at line <a class="el" href="arp_8c-source.html#l00116">116</a> of file <a class="el" href="arp_8c-source.html">arp.c</a>.<p>References <a class="el" href="arp_8c-source.html#l00307">arp_get_response()</a>, <a class="el" href="arp_8c-source.html#l00188">arp_send_response()</a>, <a class="el" href="ethernet_8h-source.html#l00161">ethernet_frame::buf_index</a>, <a class="el" href="ethernet_8h-source.html#l00152">ethernet_frame::frame_size</a>, <a class="el" href="arp_8h-source.html#l00074">MAXHWALEN</a>, <a class="el" href="arp_8h-source.html#l00075">MAXPRALEN</a>, <a class="el" href="system_8h-source.html#l00270">NETWORK_RECEIVE_INITIALIZE</a>, <a class="el" href="ethernet_8h-source.html#l00155">ethernet_frame::protocol</a>, and <a class="el" href="system_8h-source.html#l00210">RECEIVE_NETWORK_B</a>.    </td>  </tr></table><a name="a3" doxytag="arp.c::arp_send_response"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0">  <tr>    <td class="md">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top"> void arp_send_response </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top">void&nbsp;</td>          <td class="mdname1" valign="top" nowrap>&nbsp;          </td>          <td class="md" valign="top">)&nbsp;</td>          <td class="md" nowrap></td>        </tr>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p><dl compact><dt><b>Author: </b></dt><dd> <ul><li> Jari Lahti (<a href="mailto:jari.lahti@violasystems.com">jari.lahti@violasystems.com</a>) </ul></dl><dl compact><dt><b>Date: </b></dt><dd>10.07.2002 </dl><dl compact><dt><b>Warning: </b></dt><dd> <ul><li> This function starts reading data from Ethernet controller without initializing it for reading it first, so NIC must already be initialized for reading from correct address (it expects ar$sha field from ARP packet immediately)</ul></dl>This function is invoked from <a class="el" href="arp_8c.html#a2">process_arp()</a> function in order to send a reply to an ARP request. First, incoming packet is checked to see if it is intended for us or not. If not, function does not do anything. Otherwise, ARP reply packet is formed and sent. <p>Definition at line <a class="el" href="arp_8c-source.html#l00188">188</a> of file <a class="el" href="arp_8c-source.html">arp.c</a>.<p>References <a class="el" href="arp_8c-source.html#l00552">arp_add()</a>, <a class="el" href="ethernet_8h-source.html#l00125">ARP_BUFFER</a>, <a class="el" href="arp_8h-source.html#l00196">ARP_TEMP_IP</a>, <a class="el" href="arp_8h-source.html#l00074">MAXHWALEN</a>, <a class="el" href="arp_8h-source.html#l00075">MAXPRALEN</a>, <a class="el" href="system_8h-source.html#l00306">NETWORK_ADD_DATALINK</a>, <a class="el" href="system_8h-source.html#l00288">NETWORK_COMPLETE_SEND</a>, <a class="el" href="system_8h-source.html#l00296">NETWORK_SEND_INITIALIZE</a>, <a class="el" href="ethernet_8h-source.html#l00081">PROTOCOL_ARP</a>, <a class="el" href="system_8h-source.html#l00210">RECEIVE_NETWORK_B</a>, and <a class="el" href="system_8h-source.html#l00240">SEND_NETWORK_B</a>.<p>Referenced by <a class="el" href="arp_8c-source.html#l00116">process_arp()</a>.    </td>  </tr></table><a name="a4" doxytag="arp.c::arp_get_response"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0">  <tr>    <td class="md">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top"> void arp_get_response </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top">void&nbsp;</td>          <td class="mdname1" valign="top" nowrap>&nbsp;          </td>          <td class="md" valign="top">)&nbsp;</td>          <td class="md" nowrap></td>        </tr>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p><dl compact><dt><b>Author: </b></dt><dd> <ul><li> Jari Lahti (<a href="mailto:jari.lahti@violasystems.com">jari.lahti@violasystems.com</a>) </ul></dl><dl compact><dt><b>Date: </b></dt><dd>10.07.2002 </dl><dl compact><dt><b>Warning: </b></dt><dd> <ul><li> This function starts reading data from Ethernet controller without initializing it for reading it first, so NIC must already be initialized for reading from correct address (it expects ar$sha field from ARP packet immediately)</ul></dl>This function is invoked from <a class="el" href="arp_8c.html#a2">process_arp()</a> function when ARP reply packet is detected. Basic checking is performed to see if the packet is intended for us, and if it is, ARP cache table is checked and  corresponding entry is refreshed (resolved). <p>Definition at line <a class="el" href="arp_8c-source.html#l00307">307</a> of file <a class="el" href="arp_8c-source.html">arp.c</a>.<p>References <a class="el" href="arp_8h-source.html#l00185">ARP_FREE</a>, <a class="el" href="arp_8h-source.html#l00126">ARP_MAXRETRY</a>, <a class="el" href="arp_8h-source.html#l00186">ARP_RESERVED</a>, <a class="el" href="arp_8h-source.html#l00188">ARP_RESOLVED</a>, <a class="el" href="arp_8h-source.html#l00102">ARP_TIMEOUT</a>, <a class="el" href="arp_8h-source.html#l00175">arp_entry::hwadr</a>, <a class="el" href="arp_8h-source.html#l00074">MAXHWALEN</a>, <a class="el" href="arp_8h-source.html#l00075">MAXPRALEN</a>, <a class="el" href="arp_8h-source.html#l00179">arp_entry::pradr</a>, <a class="el" href="system_8h-source.html#l00210">RECEIVE_NETWORK_B</a>, <a class="el" href="arp_8h-source.html#l00168">arp_entry::retries</a>, <a class="el" href="arp_8h-source.html#l00157">arp_entry::state</a>, and <a class="el" href="arp_8h-source.html#l00172">arp_entry::ttl</a>.<p>Referenced by <a class="el" href="arp_8c-source.html#l00116">process_arp()</a>.    </td>  </tr></table><a name="a5" doxytag="arp.c::arp_send_req"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0">  <tr>    <td class="md">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top"> void arp_send_req </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top">UINT8&nbsp;</td>          <td class="mdname1" valign="top" nowrap>&nbsp; <em>entry</em>          </td>          <td class="md" valign="top">)&nbsp;</td>          <td class="md" nowrap></td>        </tr>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p><dl compact><dt><b>Author: </b></dt><dd> <ul><li> Jari Lahti (<a href="mailto:jari.lahti@violasystems.com">jari.lahti@violasystems.com</a>) </ul></dl><dl compact><dt><b>Date: </b></dt><dd>1.11.2001 </dl><dl compact><dt><b>Parameters: </b></dt><dd><table border=0 cellspacing=2 cellpadding=0><tr><td valign=top><em>entry</em>&nbsp;</td><td>Index of ARP cache entry that is beeing resolved</td></tr></table></dl>Invoked from <a class="el" href="arp_8c.html#a8">arp_find()</a> and <a class="el" href="group__periodic__functions.html#a0">arp_manage()</a> functions, arp_send_request creates ARP request packet based on data stored in the ARP cache entry who's index is given as a parameter. <p>Definition at line <a class="el" href="arp_8c-source.html#l00390">390</a> of file <a class="el" href="arp_8c-source.html">arp.c</a>.<p>References <a class="el" href="ethernet_8h-source.html#l00125">ARP_BUFFER</a>, <a class="el" href="arp_8h-source.html#l00074">MAXHWALEN</a>, <a class="el" href="arp_8h-source.html#l00075">MAXPRALEN</a>, <a class="el" href="system_8h-source.html#l00306">NETWORK_ADD_DATALINK</a>, <a class="el" href="system_8h-source.html#l00288">NETWORK_COMPLETE_SEND</a>, <a class="el" href="system_8h-source.html#l00296">NETWORK_SEND_INITIALIZE</a>, <a class="el" href="arp_8h-source.html#l00179">arp_entry::pradr</a>, <a class="el" href="ethernet_8h-source.html#l00081">PROTOCOL_ARP</a>, and <a class="el" href="system_8h-source.html#l00240">SEND_NETWORK_B</a>.<p>Referenced by <a class="el" href="arp_8c-source.html#l00639">arp_find()</a>, and <a class="el" href="arp_8c-source.html#l00785">arp_manage()</a>.    </td>  </tr></table><a name="a6" doxytag="arp.c::arp_alloc"></a><p><table width="100%" cellpadding="2" cellspacing="0" border="0">  <tr>    <td class="md">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top"> INT8 arp_alloc </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top">UINT8&nbsp;</td>          <td class="mdname1" valign="top" nowrap>&nbsp; <em>type</em>          </td>          <td class="md" valign="top">)&nbsp;</td>          <td class="md" nowrap></td>        </tr>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p><dl compact><dt><b>Author: </b></dt><dd> <ul><li> Jari Lahti (<a href="mailto:jari.lahti@violasystems.com">jari.lahti@violasystems.com</a>) </ul></dl><dl compact><dt><b>Date: </b></dt><dd>1.11.2001 </dl><dl compact><dt><b>Parameters: </b></dt><dd><table border=0 cellspacing=2 cellpadding=0><tr><td valign=top><em>type</em>&nbsp;</td><td>Type of ARP cache entry beeing allocated. Can be one of the following: <ul><li> <a class="el" href="arp_8h.html#a16">ARP_FIXED_IP</a> <li> <a class="el" href="arp_8h.html#a17">ARP_TEMP_IP</a>  </ul>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -