📄 dhcp_8c-source.html
字号:
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) < 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<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-><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-><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-><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-><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-><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-><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-><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 <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 + -