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

📄 dhcp_8c-source.html

📁 avr应用测试程序
💻 HTML
📖 第 1 页 / 共 3 页
字号:
00202 <a name="l00203"></a><a class="code" href="group__dhcp.html#ga5">00203</a> <span class="keywordtype">void</span> <a class="code" href="group__dhcp.html#ga5">dhcpTimer</a>(<span class="keywordtype">void</span>)00204 {00205     <span class="comment">// this function to be called once per second</span>00206 00207     <span class="comment">// decrement lease time</span>00208     <span class="keywordflow">if</span>(<a class="code" href="dhcp_8c.html#a2">DhcpLeaseTime</a>)00209         <a class="code" href="dhcp_8c.html#a2">DhcpLeaseTime</a>--;00210 }00211 <a name="l00212"></a><a class="code" href="group__dhcp.html#ga6">00212</a> uint8_t <a class="code" href="group__dhcp.html#ga6">dhcpGetOption</a>(uint8_t* <a class="code" href="structnetDhcpHeader.html#o2">options</a>, uint8_t optcode, uint8_t optlen, <span class="keywordtype">void</span>* optvalptr)00213 {00214     uint8_t i;00215 00216     <span class="comment">// parse for desired option</span>00217     <span class="keywordflow">for</span> (;;)00218     {00219         <span class="comment">// skip pad characters</span>00220         <span class="keywordflow">if</span>(*options == <a class="code" href="group__dhcp.html#ga17">DHCP_OPT_PAD</a>)00221             options++;00222         <span class="comment">// break if end reached</span>00223         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(*options == <a class="code" href="group__dhcp.html#ga32">DHCP_OPT_END</a>)00224             <span class="keywordflow">break</span>;00225         <span class="comment">// check for desired option</span>00226         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(*options == optcode)00227         {00228             <span class="comment">// found desired option</span>00229             <span class="comment">// limit size to actual option length</span>00230             optlen = MIN(optlen, *(options+1));00231             <span class="comment">//if(*(options+1) &lt; optlen)</span>00232             <span class="comment">//  optlen = *(options+1);</span>00233             00234             <span class="comment">// copy contents of option</span>00235             <span class="keywordflow">for</span>(i=0; i&lt;optlen; i++)00236                 *(((uint8_t*)optvalptr)+i) = *(options+i+2);00237             <span class="comment">// return length of option</span>00238             <span class="keywordflow">return</span> *(options+1);00239         }00240         <span class="keywordflow">else</span>00241         {00242             <span class="comment">// skip to next option</span>00243             options++;00244             options+=*options;00245             options++;00246         }00247     }00248     <span class="comment">// failed to find desired option</span>00249     <span class="keywordflow">return</span> 0;00250 }00251 00252 <a name="l00253"></a><a class="code" href="group__dhcp.html#ga7">00253</a> uint8_t* <a class="code" href="group__dhcp.html#ga7">dhcpSetOption</a>(uint8_t* <a class="code" href="structnetDhcpHeader.html#o2">options</a>, uint8_t optcode, uint8_t optlen, <span class="keywordtype">void</span>* optvalptr)00254 {00255     <span class="comment">// use current options address as write point</span>00256 00257     <span class="comment">// set optcode</span>00258     *options++ = optcode;00259     <span class="comment">// set optlen</span>00260     *options++ = optlen;00261     <span class="comment">// copy in argument/data</span>00262     <span class="keywordflow">while</span>(optlen--)00263     {00264         *options++ = *(uint8_t*)optvalptr++;00265     }00266     <span class="comment">// write end marker</span>00267     *options = <a class="code" href="group__dhcp.html#ga32">DHCP_OPT_END</a>;00268 00269     <span class="comment">// return address of end marker, to be used as a future write point</span>00270     <span class="keywordflow">return</span> options;00271 }00272 00273 00274 <span class="preprocessor">#ifdef DHCP_DEBUG_PRINT</span>00275 <span class="preprocessor"></span><span class="keywordtype">void</span> <a class="code" href="group__dhcp.html#ga8">dhcpPrintHeader</a>(<span class="keyword">struct</span> <a class="code" href="structnetDhcpHeader.html">netDhcpHeader</a>* packet)00276 {00277     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"DHCP Packet:\r\n"</span>);00278     <span class="comment">// print op</span>00279     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"Op      : "</span>);00280     <span class="keywordflow">switch</span>(packet-&gt;<a class="code" href="structnetDhcpHeader.html#o0">bootp</a>.<a class="code" href="structnetBootpHeader.html#o0">op</a>)00281     {00282     <span class="keywordflow">case</span> <a class="code" href="group__dhcp.html#ga10">BOOTP_OP_BOOTREQUEST</a>:  <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"BOOTREQUEST"</span>); <span class="keywordflow">break</span>;00283     <span class="keywordflow">case</span> <a class="code" href="group__dhcp.html#ga11">BOOTP_OP_BOOTREPLY</a>:    <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"BOOTREPLY"</span>); <span class="keywordflow">break</span>;00284     <span class="keywordflow">default</span>:                    <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"UNKNOWN"</span>); <span class="keywordflow">break</span>;00285     }00286     <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00287     <span class="comment">// print transaction ID</span>00288     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"XID     : 0x"</span>);    <a class="code" href="group__rprintf.html#ga9">rprintfu32</a>(packet-&gt;<a class="code" href="structnetDhcpHeader.html#o0">bootp</a>.<a class="code" href="structnetBootpHeader.html#o4">xid</a>);              <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00289     <span class="comment">// print client IP address</span>00290     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"ClIpAddr: "</span>);  <a class="code" href="group__net.html#ga6">netPrintIPAddr</a>(<a class="code" href="group__net.html#ga3">htonl</a>(packet-&gt;<a class="code" href="structnetDhcpHeader.html#o0">bootp</a>.<a class="code" href="structnetBootpHeader.html#o7">ciaddr</a>));    <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00291     <span class="comment">// print 'your' IP address</span>00292     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"YrIpAddr: "</span>);  <a class="code" href="group__net.html#ga6">netPrintIPAddr</a>(<a class="code" href="group__net.html#ga3">htonl</a>(packet-&gt;<a class="code" href="structnetDhcpHeader.html#o0">bootp</a>.<a class="code" href="structnetBootpHeader.html#o8">yiaddr</a>));    <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00293     <span class="comment">// print server IP address</span>00294     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"SvIpAddr: "</span>);  <a class="code" href="group__net.html#ga6">netPrintIPAddr</a>(<a class="code" href="group__net.html#ga3">htonl</a>(packet-&gt;<a class="code" href="structnetDhcpHeader.html#o0">bootp</a>.<a class="code" href="structnetBootpHeader.html#o9">siaddr</a>));    <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00295     <span class="comment">// print gateway IP address</span>00296     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"GwIpAddr: "</span>);  <a class="code" href="group__net.html#ga6">netPrintIPAddr</a>(<a class="code" href="group__net.html#ga3">htonl</a>(packet-&gt;<a class="code" href="structnetDhcpHeader.html#o0">bootp</a>.<a class="code" href="structnetBootpHeader.html#o10">giaddr</a>));    <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00297     <span class="comment">// print client hardware address</span>00298     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"ClHwAddr: "</span>);  <a class="code" href="group__net.html#ga5">netPrintEthAddr</a>((<span class="keyword">struct</span> netEthAddr*)packet-&gt;<a class="code" href="structnetDhcpHeader.html#o0">bootp</a>.<a class="code" href="structnetBootpHeader.html#o11">chaddr</a>);  <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00299 }00300 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="align: right;"><small>Generated on Sun Oct 29 03:41:07 2006 for Procyon AVRlib by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.2 </small></address></body></html>

⌨️ 快捷键说明

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