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

📄 dhcpc_8c-source.html

📁 Freescale mcu OpenTCP-1.0.4.doc.html.zip 文档
💻 HTML
📖 第 1 页 / 共 5 页
字号:
00218 00219                 <span class="keywordflow">case</span> DHCP_STATE_REBOOTING:00220                         <span class="keywordflow">if</span>(sec)00221                                 <a class="code" href="dhcpc_8c.html#a4">dhcpc_t1</a>--;00222                         00223                         <span class="keywordflow">if</span>(!<a class="code" href="dhcpc_8c.html#a4">dhcpc_t1</a>){00224                                 <span class="keywordflow">if</span>(<a class="code" href="dhcpc_8c.html#a5">dhcpc_t2</a>&gt;=32){00225                                         <span class="comment">/* we need to restart, we don't want to wait more</span>00226 <span class="comment">                                         * than 30 secs for retransmissions</span>00227 <span class="comment">                                         */</span>00228                                          <a class="code" href="dhcpc_8c.html#a0">dhcpc_state</a>=DHCP_STATE_INIT_REBOOT;00229                                 }<span class="keywordflow">else</span>{00230                                         <a class="code" href="dhcpc_8c.html#a4">dhcpc_t1</a>=<a class="code" href="dhcpc_8c.html#a5">dhcpc_t2</a>;00231                                         <a class="code" href="dhcpc_8c.html#a5">dhcpc_t2</a>&lt;&lt;=1;   <span class="comment">/* exponential backoff retransmission */</span>00232                                         <a class="code" href="dhcpc_8c.html#a9">dhcpc_send_message</a>(DHCP_REQUEST);00233                                 }                       00234                         }               00235                         <span class="keywordflow">break</span>;00236                 <span class="keywordflow">case</span> DHCP_STATE_INIT:00237                         <span class="comment">/* switch to selecting, send DHCPDISCOVER and initialize</span>00238 <span class="comment">                         * timeout timer</span>00239 <span class="comment">                         */</span>00240                         DEBUGOUT(<span class="stringliteral">"DHCP State=INIT; Sending DHCPDISCOVER message; State INIT--&gt;SELECTING\r\n"</span>);00241                         <a class="code" href="dhcpc_8c.html#a0">dhcpc_state</a>=DHCP_STATE_SELECTING;00242                         <a class="code" href="dhcpc_8c.html#a9">dhcpc_send_message</a>(DHCP_DISCOVER);00243                         <span class="comment">/* T1 will be timeout timer. T2 will hold next timeout value */</span>00244                         <a class="code" href="dhcpc_8c.html#a4">dhcpc_t1</a>=4;     <span class="comment">/* next retransmission after 4 secs */</span>00245                         <a class="code" href="dhcpc_8c.html#a5">dhcpc_t2</a>=8;     <span class="comment">/* after 4 secs expire, this will be next timeout */</span>00246                         <span class="keywordflow">break</span>;00247                 <span class="keywordflow">case</span> DHCP_STATE_SELECTING:00248                         <span class="comment">/* one second expired ? */</span>00249                         <span class="keywordflow">if</span>(sec)00250                                 <a class="code" href="dhcpc_8c.html#a4">dhcpc_t1</a>--;00251                         00252                         <span class="comment">/* timeout expired without receiving DHCPOFFER ? */</span>00253                         <span class="keywordflow">if</span>(!<a class="code" href="dhcpc_8c.html#a4">dhcpc_t1</a>){00254                                 DEBUGOUT(<span class="stringliteral">"DHCP State=SELECTING; "</span>);00255                                 <span class="comment">/* yes, retransmit or restart the process */</span>00256                                 <span class="keywordflow">if</span>(<a class="code" href="dhcpc_8c.html#a5">dhcpc_t2</a>&gt;=32){00257                                         <span class="comment">/* we need to restart, we don't want to wait more</span>00258 <span class="comment">                                         * than 30 secs for retransmissions</span>00259 <span class="comment">                                         */</span>00260                                          <a class="code" href="dhcpc_8c.html#a0">dhcpc_state</a>=DHCP_STATE_INIT;00261                                          DEBUGOUT(<span class="stringliteral">"Timeout for retransmissions too big; State SELECTING--&gt;INIT\r\n"</span>);00262                                 }<span class="keywordflow">else</span>{00263                                         DEBUGOUT(<span class="stringliteral">"Retransmitting DHCPDISCOVER\r\n"</span>);00264                                         <a class="code" href="dhcpc_8c.html#a4">dhcpc_t1</a>=<a class="code" href="dhcpc_8c.html#a5">dhcpc_t2</a>;00265                                         <a class="code" href="dhcpc_8c.html#a5">dhcpc_t2</a>&lt;&lt;=1;   <span class="comment">/* exponential backoff retransmission */</span>00266                                         <a class="code" href="dhcpc_8c.html#a9">dhcpc_send_message</a>(DHCP_DISCOVER);00267                                 }00268                         }00269                         <span class="keywordflow">break</span>;00270                 <span class="keywordflow">case</span> DHCP_STATE_REQUESTING:00271                         <span class="comment">/* DHCPREQUEST sent, waiting for proper response. Retransmit</span>00272 <span class="comment">                         * if necessary</span>00273 <span class="comment">                         */</span>00274                         <span class="keywordflow">if</span>(sec)00275                                 <a class="code" href="dhcpc_8c.html#a4">dhcpc_t1</a>--;00276                          00277                         <span class="keywordflow">if</span>(!<a class="code" href="dhcpc_8c.html#a4">dhcpc_t1</a>){00278                                 <span class="comment">/* timeout occured without receiving DHCPACK */</span>00279                                 DEBUGOUT(<span class="stringliteral">"DHCP State=REQUESTING; "</span>);00280                                 <span class="keywordflow">if</span>(<a class="code" href="dhcpc_8c.html#a5">dhcpc_t2</a>&gt;=32){00281                                         <span class="comment">/* we need to restart, we don't want to wait more</span>00282 <span class="comment">                                         * than 30 secs for retransmissions. Restart whole</span>00283 <span class="comment">                                         * process</span>00284 <span class="comment">                                         */</span>00285                                          <a class="code" href="dhcpc_8c.html#a0">dhcpc_state</a>=DHCP_STATE_INIT;00286                                          DEBUGOUT(<span class="stringliteral">"Timeout for retransmits too big; State REQUESTING--&gt;INIT\r\n"</span>);00287                                 }<span class="keywordflow">else</span>{00288                                         DEBUGOUT(<span class="stringliteral">"Retransmitting DHCPREQUEST\r\n"</span>);00289                                         <a class="code" href="dhcpc_8c.html#a4">dhcpc_t1</a>=<a class="code" href="dhcpc_8c.html#a5">dhcpc_t2</a>;00290                                         <a class="code" href="dhcpc_8c.html#a5">dhcpc_t2</a>&lt;&lt;=1;   <span class="comment">/* exponential backoff retransmission */</span>00291                                         <a class="code" href="dhcpc_8c.html#a9">dhcpc_send_message</a>(DHCP_REQUEST);00292                                 }                               00293                         } 00294                         <span class="keywordflow">break</span>;00295                 <span class="keywordflow">case</span> DHCP_STATE_BOUND:00296                         <span class="comment">/* wait for T1 to expire */</span>00297                         <span class="keywordflow">if</span>(sec){00298                                 <a class="code" href="dhcpc_8c.html#a4">dhcpc_t1</a>--;00299                                 <a class="code" href="dhcpc_8c.html#a5">dhcpc_t2</a>--;00300                         }00301                         <span class="keywordflow">if</span>(!<a class="code" href="dhcpc_8c.html#a4">dhcpc_t1</a>){00302                                 DEBUGOUT(<span class="stringliteral">"DHCP State=BOUND; Starting renewing process; State BOUND--&gt;RENEWING\r\n"</span>);00303                                 <span class="comment">/* T1 expired, start renewing process */</span>00304                                 <a class="code" href="dhcpc_8c.html#a0">dhcpc_state</a>=DHCP_STATE_RENEWING;00305                                 00306                                 <a class="code" href="dhcpc_8c.html#a9">dhcpc_send_message</a>(DHCP_REQUEST);00307                                 00308                                 <span class="comment">/* T1 will be used for retransmissions untill we</span>00309 <span class="comment">                                 * return to BOUND state or reset to INIT state</span>00310 <span class="comment">                                 */</span>00311                                 <a class="code" href="dhcpc_8c.html#a4">dhcpc_t1</a>=10;    <span class="comment">/* fixed 10sec retransmissions */</span>00312                         }00313                         <span class="keywordflow">break</span>;00314                 <span class="keywordflow">case</span> DHCP_STATE_RENEWING:00315                         <span class="keywordflow">if</span>(sec){00316                                 <a class="code" href="dhcpc_8c.html#a4">dhcpc_t1</a>--;00317                                 <a class="code" href="dhcpc_8c.html#a5">dhcpc_t2</a>--;00318                         }00319                         00320                         <span class="keywordflow">if</span>(!<a class="code" href="dhcpc_8c.html#a5">dhcpc_t2</a>){00321                                 DEBUGOUT(<span class="stringliteral">"DHCP State=RENEWING; T2 expired; State RENEWING--&gt;REBINDING\r\n"</span>);00322                                 <span class="comment">/* oh no, T2 also expired. switch to rebinding state. This</span>00323 <span class="comment">                                 * is our last attempt to retain this IP address.</span>00324 <span class="comment">                                 */</span>00325                                 <a class="code" href="dhcpc_8c.html#a0">dhcpc_state</a>=DHCP_STATE_REBINDING;00326                                 00327                                 <a class="code" href="dhcpc_8c.html#a9">dhcpc_send_message</a>(DHCP_REQUEST);00328                                 00329                                 <span class="comment">/* dhcpc_t1 will be used for timeouts */</span>00330                                 <a class="code" href="dhcpc_8c.html#a4">dhcpc_t1</a>=5;     <span class="comment">/* 5 second retransmits */</span>00331                                 00332                                 <span class="comment">/* dhcpc_t2 will be used for fixed numer of retries. This</span>00333 <span class="comment">                                 * is a bit different than per RFC, but we don't want </span>00334 <span class="comment">                                 * another 32-bit timer value for keeping lease time.</span>00335 <span class="comment">                                 */</span>00336                                 <a class="code" href="dhcpc_8c.html#a5">dhcpc_t2</a>=10;00337                         }<span class="keywordflow">else</span>00338                                 <span class="keywordflow">if</span>(!<a class="code" href="dhcpc_8c.html#a4">dhcpc_t1</a>){00339                                         DEBUGOUT(<span class="stringliteral">"DHCP State=RENEWING; Retransmitting DHCPREQUEST\r\n"</span>);        00340                                         <span class="comment">/* retransmit DHCP REQUEST messages */</span>00341                                         <a class="code" href="dhcpc_8c.html#a9">dhcpc_send_message</a>(DHCP_REQUEST);00342                                         <a class="code" href="dhcpc_8c.html#a4">dhcpc_t1</a>=10;00343                                 }00344                         <span class="keywordflow">break</span>;00345                 <span class="keywordflow">case</span> DHCP_STATE_REBINDING:00346                         <span class="keywordflow">if</span>(sec)00347                                 <a class="code" href="dhcpc_8c.html#a4">dhcpc_t1</a>--;00348                         00349                         <span class="keywordflow">if</span>(!<a class="code" href="dhcpc_8c.html#a4">dhcpc_t1</a>){00350                         00351                                 <a class="code" href="dhcpc_8c.html#a4">dhcpc_t1</a>=5;     <span class="comment">/* 5 second retransmits */</span>00352                                 00353                                 <a class="code" href="dhcpc_8c.html#a5">dhcpc_t2</a>--;     <span class="comment">/* retransmit count */</span>00354                                 00355                                 <span class="keywordflow">if</span>(!<a class="code" href="dhcpc_8c.html#a5">dhcpc_t2</a>){00356                                         DEBUGOUT(<span class="stringliteral">"DHCP State=REBINDING; Lease time expired; State REBINDING--&gt;INIT\r\n"</span>);00357                                         <span class="comment">/* used up retransmission. Assume that lease time</span>

⌨️ 快捷键说明

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