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

📄 ip_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>ip.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/ip.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>11.6.2002 </dl><dl compact><dt><b><a class="el" href="bug.html#_bug000015">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#_todo000017">Todo: </a></b></dt><dd><ul><li> Implement stub handler for supporting fragmented datagrams ( may be usefull on MCUs with lots of available RAM)</dl></ul>OpenTCP IP protocol implementation functions. For declaration, constants and data structures refer to <a class="el" href="ip_8h.html">inet/ip.h</a>.<p><p>Definition in file <a class="el" href="ip_8c-source.html">ip.c</a>.<p><a href="ip_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>INT16&nbsp;</td><td valign=bottom><a class="el" href="ip_8c.html#a3">process_ip_in</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 received IP frame.</em> <a href="#a3"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>INT16&nbsp;</td><td valign=bottom><a class="el" href="ip_8c.html#a4">process_ip_out</a> (UINT32 ipadr, UINT8 pcol, UINT8 tos, UINT8 ttl, UINT8 *dat, UINT16 len)</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Try to send out IP frame.</em> <a href="#a4"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>UINT32&nbsp;</td><td valign=bottom><a class="el" href="ip_8c.html#a5">ip_construct_cs</a> (struct <a class="el" href="structip__frame.html">ip_frame</a> *frame)</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Construct checksum of the IP header.</em> <a href="#a5"></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="ip_8c.html#a6">ip_check_cs</a> (struct <a class="el" href="structip__frame.html">ip_frame</a> *frame)</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Check IP frame's checksum.</em> <a href="#a6"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>UINT16&nbsp;</td><td valign=bottom><a class="el" href="ip_8c.html#a7">ip_checksum</a> (UINT16 cs, UINT8 dat, UINT8 count)</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Used for constructuing IP checksum.</em> <a href="#a7"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>UINT32&nbsp;</td><td valign=bottom><a class="el" href="ip_8c.html#a8">ip_checksum_buf</a> (UINT16 cs, UINT8 *buf, UINT16 len)</td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Used for constructuing IP checksum of a data buffer.</em> <a href="#a8"></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="structip__frame.html">ip_frame</a>&nbsp;</td><td valign=bottom><a class="el" href="ip_8c.html#a0">received_ip_packet</a></td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Used for storing various information about the incoming IP packet.</em> <a href="#a0"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top><a class="el" href="structip__frame.html">ip_frame</a>&nbsp;</td><td valign=bottom><a class="el" href="ip_8c.html#a1">send_ip_packet</a></td></tr><tr><td>&nbsp;</td><td><font size=-1><em>Used for storing various information about the outgoing IP packet.</em> <a href="#a1"></a><em></em></font><br><br></td></tr><tr><td nowrap align=right valign=top>UINT16&nbsp;</td><td valign=bottom><a class="el" href="ip_8c.html#a2">ip_id</a></td></tr></table><hr><h2>Function Documentation</h2><a name="a3" doxytag="ip.c::process_ip_in"></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"> INT16 process_ip_in </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 </ul></dl><dl compact><dt><b>Date: </b></dt><dd>11.06.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 holding information about the received frame that carries IP datagram. </td></tr></table></dl><dl compact><dt><b>Returns: </b></dt><dd> <ul><li> -1 - IP packet not OK <li> &gt;0 - Length of next layer data (IP packet OK)</ul></dl>Process received IP packet by checking necessary header information and storing it accordingly to received_ip_packet variable. If everything checks out, return length of the data carried in the IP datagram (for higher-level protocols), otherwise return -1. <p>Definition at line <a class="el" href="ip_8c-source.html#l00115">115</a> of file <a class="el" href="ip_8c-source.html">ip.c</a>.<p>References <a class="el" href="arp_8c-source.html#l00552">arp_add()</a>, <a class="el" href="arp_8h-source.html#l00196">ARP_TEMP_IP</a>, <a class="el" href="ip_8h-source.html#l00126">ip_frame::buf_index</a>, <a class="el" href="ethernet_8h-source.html#l00161">ethernet_frame::buf_index</a>, <a class="el" href="ip_8h-source.html#l00122">ip_frame::checksum</a>, <a class="el" href="ethernet_8h-source.html#l00144">ethernet_frame::destination</a>, <a class="el" href="ip_8h-source.html#l00124">ip_frame::dip</a>, <a class="el" href="ip_8h-source.html#l00119">ip_frame::frags</a>, <a class="el" href="ethernet_8h-source.html#l00152">ethernet_frame::frame_size</a>, <a class="el" href="ip_8h-source.html#l00118">ip_frame::id</a>, <a class="el" href="ip_8c-source.html#l00474">ip_check_cs()</a>, <a class="el" href="ip_8h-source.html#l00072">IP_ICMP</a>, <a class="el" href="system_8h-source.html#l00270">NETWORK_RECEIVE_INITIALIZE</a>, <a class="el" href="ip_8h-source.html#l00125">ip_frame::opt</a>, <a class="el" href="ip_8h-source.html#l00070">PHY_ADR_LEN</a>, <a class="el" href="ip_8h-source.html#l00121">ip_frame::protocol</a>, <a class="el" href="ethernet_8h-source.html#l00155">ethernet_frame::protocol</a>, <a class="el" href="ethernet_8h-source.html#l00080">PROTOCOL_IP</a>, <a class="el" href="system_8h-source.html#l00210">RECEIVE_NETWORK_B</a>, <a class="el" href="ip_8h-source.html#l00123">ip_frame::sip</a>, <a class="el" href="ethernet_8h-source.html#l00148">ethernet_frame::source</a>, <a class="el" href="ip_8h-source.html#l00117">ip_frame::tlen</a>, <a class="el" href="ip_8h-source.html#l00116">ip_frame::tos</a>, <a class="el" href="system_8h-source.html#l00078">TRUE</a>, <a class="el" href="ip_8h-source.html#l00120">ip_frame::ttl</a>, and <a class="el" href="ip_8h-source.html#l00115">ip_frame::vihl</a>.    </td>  </tr></table><a name="a4" doxytag="ip.c::process_ip_out"></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"> INT16 process_ip_out </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top">UINT32&nbsp;</td>          <td class="mdname" nowrap>&nbsp; <em>ipadr</em>, </td>        </tr>        <tr>          <td></td>          <td></td>          <td class="md" nowrap>UINT8&nbsp;</td>          <td class="mdname" nowrap>&nbsp; <em>pcol</em>, </td>        </tr>        <tr>          <td></td>          <td></td>          <td class="md" nowrap>UINT8&nbsp;</td>          <td class="mdname" nowrap>&nbsp; <em>tos</em>, </td>        </tr>        <tr>          <td></td>          <td></td>          <td class="md" nowrap>UINT8&nbsp;</td>          <td class="mdname" nowrap>&nbsp; <em>ttl</em>, </td>        </tr>        <tr>          <td></td>          <td></td>          <td class="md" nowrap>UINT8 *&nbsp;</td>          <td class="mdname" nowrap>&nbsp; <em>dat</em>, </td>        </tr>        <tr>          <td></td>          <td></td>          <td class="md" nowrap>UINT16&nbsp;</td>          <td class="mdname" nowrap>&nbsp; <em>len</em></td>        </tr>        <tr>          <td></td>          <td class="md">)&nbsp;</td>          <td class="md" colspan="2"></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 </ul></dl><dl compact><dt><b>Date: </b></dt><dd>11.06.2002 </dl><dl compact><dt><b>Parameters: </b></dt><dd><table border=0 cellspacing=2 cellpadding=0><tr><td valign=top><em>ipadr</em>&nbsp;</td><td>remote IP address </td></tr><tr><td valign=top><em>pcol</em>&nbsp;</td><td>protocol over IP used. Can be one of the following: <ul><li> <a class="el" href="ip_8h.html#a1">IP_ICMP</a> <li> <a class="el" href="ip_8h.html#a2">IP_UDP</a> <li> <a class="el" href="ip_8h.html#a3">IP_TCP</a> </ul></td></tr><tr><td valign=top><em>tos</em>&nbsp;</td><td>type of service required </td></tr><tr><td valign=top><em>ttl</em>&nbsp;</td><td>time to live header field of IP packet </td></tr><tr><td valign=top><em>dat</em>&nbsp;</td><td>pointer to data buffer </td></tr><tr><td valign=top><em>len</em>&nbsp;</td><td>length of data to be sent in IP datagram </td></tr></table></dl><dl compact><dt><b>Returns: </b></dt><dd> <ul><li> -1 - general error <li> -2 - ARP cache not ready <li> &gt;0 - number of data bytes sent (packet OK)</ul></dl>Invoke this function to perform all of the necessary preparation in order to send out an IP packet. These include: <ul><li> Consulting ARP cache for HW address to send the packet to <li> Filling send_ip_packet variable with correct values <li> Calculating checksum for the IP packet <li> Adding datalink header information <li> Sending IP header and data <li> Instructing NIC to send the data </ul><p>Definition at line <a class="el" href="ip_8c-source.html#l00300">300</a> of file <a class="el" href="ip_8c-source.html">ip.c</a>.<p>References <a class="el" href="arp_8c-source.html#l00639">arp_find()</a>, <a class="el" href="arp_8h-source.html#l00196">ARP_TEMP_IP</a>, <a class="el" href="ip_8h-source.html#l00122">ip_frame::checksum</a>, <a class="el" href="ip_8h-source.html#l00124">ip_frame::dip</a>, <a class="el" href="ip_8h-source.html#l00119">ip_frame::frags</a>, <a class="el" href="arp_8h-source.html#l00175">arp_entry::hwadr</a>, <a class="el" href="ethernet_8h-source.html#l00126">ICMP_BUF</a>, <a class="el" href="ip_8h-source.html#l00118">ip_frame::id</a>, <a class="el" href="ip_8c-source.html#l00417">ip_construct_cs()</a>, <a class="el" href="ip_8h-source.html#l00072">IP_ICMP</a>, <a class="el" href="ip_8c-source.html#l00097">ip_id</a>, <a class="el" href="ip_8h-source.html#l00074">IP_TCP</a>, <a class="el" href="ip_8h-source.html#l00073">IP_UDP</a>, <a class="el" href="arp_8h-source.html#l00074">MAXHWALEN</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="ip_8h-source.html#l00121">ip_frame::protocol</a>, <a class="el" href="ethernet_8h-source.html#l00080">PROTOCOL_IP</a>, <a class="el" href="system_8h-source.html#l00240">SEND_NETWORK_B</a>, <a class="el" href="system_8h-source.html#l00248">SEND_NETWORK_BUF</a>, <a class="el" href="ip_8h-source.html#l00123">ip_frame::sip</a>, <a class="el" href="ethernet_8h-source.html#l00127">TCP_BUF</a>, <a class="el" href="ip_8h-source.html#l00117">ip_frame::tlen</a>, <a class="el" href="ip_8h-source.html#l00116">ip_frame::tos</a>, <a class="el" href="ip_8h-source.html#l00120">ip_frame::ttl</a>, <a class="el" href="ethernet_8h-source.html#l00128">UDP_BUF</a>, and <a class="el" href="ip_8h-source.html#l00115">ip_frame::vihl</a>.<p>Referenced by <a class="el" href="icmp_8c-source.html#l00097">process_icmp_in()</a>, <a class="el" href="tcp_8c-source.html#l02119">process_tcp_out()</a>, and <a class="el" href="udp_8c-source.html#l00395">udp_send()</a>.    </td>  </tr></table><a name="a5" doxytag="ip.c::ip_construct_cs"></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"> UINT32 ip_construct_cs </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top">struct <a class="el" href="structip__frame.html">ip_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 </ul></dl><dl compact><dt><b>Date: </b></dt><dd>08.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="structip__frame.html">ip_frame</a> structure holding header information based on which checksum is calculated </td></tr></table></dl><dl compact><dt><b>Returns: </b></dt><dd>Calculated checksum</dl>Checksum of the supplied IP datagram is calculated. <p>Definition at line <a class="el" href="ip_8c-source.html#l00417">417</a> of file <a class="el" href="ip_8c-source.html">ip.c</a>.<p>References <a class="el" href="ip_8h-source.html#l00124">ip_frame::dip</a>, <a class="el" href="ip_8h-source.html#l00119">ip_frame::frags</a>, <a class="el" href="ip_8h-source.html#l00118">ip_frame::id</a>, <a class="el" href="ip_8c-source.html#l00539">ip_checksum()</a>, <a class="el" href="ip_8h-source.html#l00125">ip_frame::opt</a>, <a class="el" href="ip_8h-source.html#l00121">ip_frame::protocol</a>, <a class="el" href="ip_8h-source.html#l00123">ip_frame::sip</a>, <a class="el" href="ip_8h-source.html#l00117">ip_frame::tlen</a>, <a class="el" href="ip_8h-source.html#l00116">ip_frame::tos</a>, <a class="el" href="ip_8h-source.html#l00120">ip_frame::ttl</a>, and <a class="el" href="ip_8h-source.html#l00115">ip_frame::vihl</a>.<p>Referenced by <a class="el" href="ip_8c-source.html#l00300">process_ip_out()</a>.    </td>  </tr></table><a name="a6" doxytag="ip.c::ip_check_cs"></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 ip_check_cs </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top">struct <a class="el" href="structip__frame.html">ip_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>

⌨️ 快捷键说明

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