亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? uip.c

?? IAR IAR IAR IAR IAR IAR IAR IAR IAR IAR IAR IAR IAR IAR IAR IAR IAR IAR IAR IAR IAR IAR IAR IAR IAR
?? C
?? 第 1 頁 / 共 5 頁
字號:
                                                            /* Parse the TCP MSS option, if present. */
                                        if((BUF->tcpoffset & 0xf0) > 0x50) {
                                        	for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) {
                                                                	  opt = uip_buf[40 + UIP_LLH_LEN + c];
                                                                    	  if(opt == 0x00) {
                                                                	    /* End of options. */	
                                                                          	    break;
                                                                    	  }
                                                                          else if(opt == 0x01) {
                                                                                  ++c;
                                                                  	        /* NOP option. */
                                                                    	  }
                                                                          else if(opt == 0x02 &&
                                                                    		    uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0x04) {
                                                                                     /* An MSS option with the right option length. */
                                                                              	    tmp16 = (uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) |
                                                                                    uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 3 + c];
                                                                            	    uip_connr->initialmss =
                                                                                          	      uip_connr->mss = tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16;

                                                                          	    /* And we are done processing options. */
                                                                              	    break;
                                                                          }
                                                                          else {
                                                                        	    /* All other options have a length field, so that we easily
                                                                                	       can skip past them. */
                                                                        	    if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) {
                                                                                              	      /* If the length field is zero, the options are malformed
                                                                                            		 and we don't process them further. */
                                                                                              	      break;
                                                                              	    }
                                                                              	    c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c];
                                                                      	  }
                                                }
                                      }
                                      uip_connr->tcpstateflags = ESTABLISHED;
                                      uip_connr->rcv_nxt[0] = BUF->seqno[0];
                                      uip_connr->rcv_nxt[1] = BUF->seqno[1];
                                      uip_connr->rcv_nxt[2] = BUF->seqno[2];
                                      uip_connr->rcv_nxt[3] = BUF->seqno[3];
                                      uip_add_rcv_nxt(1);
                                      uip_flags = UIP_CONNECTED | UIP_NEWDATA;
                                      uip_connr->len = 0;
                                      uip_len = 0;
                                      uip_slen = 0;
                                      UIP_APPCALL();
                                      goto appsend;
                            }
                            goto reset;
#endif /* UIP_ACTIVE_OPEN */

                case ESTABLISHED:
                          /* In the ESTABLISHED state, we call upon the application to feed
                            data into the uip_buf. If the UIP_ACKDATA flag is set, the
                            application should put new data into the buffer, otherwise we are
                            retransmitting an old segment, and the application should put that
                             data into the buffer.

                            If the incoming packet is a FIN, we should close the connection on
                            this side as well, and we send out a FIN and enter the LAST_ACK
                            state. We require that there is no outstanding data; otherwise the
                            sequence numbers will be screwed up. */
  
                            if(BUF->flags & TCP_FIN) {
                                      if(uip_outstanding(uip_connr)) {
                                              	goto drop;
                                      }
                                      uip_add_rcv_nxt(1 + uip_len);
                                      uip_flags = UIP_CLOSE;
                                      if(uip_len > 0) {
                                      	uip_flags |= UIP_NEWDATA;
                                      }
                                      UIP_APPCALL();
                                      uip_connr->len = 1;
                                      uip_connr->tcpstateflags = LAST_ACK;
                                      uip_connr->nrtx = 0;
tcp_send_finack:
                                      BUF->flags = TCP_FIN | TCP_ACK;
                                      goto tcp_send_nodata;
                            }

                            /* Check the URG flag. If this is set, the segment carries urgent
                               data that we must pass to the application. */
                            if(BUF->flags & TCP_URG) {
#if UIP_URGDATA > 0
                                        uip_urglen = (BUF->urgp[0] << 8) | BUF->urgp[1];
                                        if(uip_urglen > uip_len) {
                                          	/* There is more urgent data in the next segment to come. */
                                          	uip_urglen = uip_len;
                                        }
                                        uip_add_rcv_nxt(uip_urglen);
                                        uip_len -= uip_urglen;
                                        uip_urgdata = uip_appdata;
                                        uip_appdata += uip_urglen;
                                        }
                                        else {
                                            uip_urglen = 0;
#endif /* UIP_URGDATA > 0 */
                                             uip_appdata += (BUF->urgp[0] << 8) | BUF->urgp[1];
                                             uip_len -= (BUF->urgp[0] << 8) | BUF->urgp[1];
                                        }


                                        /* If uip_len > 0 we have TCP data in the packet, and we flag this
                                           by setting the UIP_NEWDATA flag and update the sequence number
                                           we acknowledge. If the application has stopped the dataflow
                                           using uip_stop(), we must not accept any data packets from the
                                           remote host. */
                                        if(uip_len > 0 && !(uip_connr->tcpstateflags & UIP_STOPPED)) {
                                                    uip_flags |= UIP_NEWDATA;
                                                    uip_add_rcv_nxt(uip_len);
                                        }

                                      /* Check if the available buffer space advertised by the other end
                                         is smaller than the initial MSS for this connection. If so, we
                                         set the current MSS to the window size to ensure that the
                                         application does not send more data than the other end can
                                         handle.

                                         If the remote host advertises a zero window, we set the MSS to
                                         the initial MSS so that the application will send an entire MSS
                                         of data. This data will not be acknowledged by the receiver,
                                         and the application will retransmit it. This is called the
                                         "persistent timer" and uses the retransmission mechanim.
                                          */
                                        tmp16 = ((u16_t)BUF->wnd[0] << 8) + (u16_t)BUF->wnd[1];
                                        if(tmp16 > uip_connr->initialmss ||  tmp16 == 0) {
                                                          tmp16 = uip_connr->initialmss;
                                        }
                                        uip_connr->mss = tmp16;

                                        /* If this packet constitutes an ACK for outstanding data (flagged
                                           by the UIP_ACKDATA flag, we should call the application since it
                                           might want to send more data. If the incoming packet had data
                                           from the peer (as flagged by the UIP_NEWDATA flag), the
                                           application must also be notified.

                                           When the application is called, the global variable uip_len
                                           contains the length of the incoming data. The application can
                                           access the incoming data through the global pointer
                                           uip_appdata, which usually points 40 bytes into the uip_buf
                                           array.

                                           If the application wishes to send any data, this data should be
                                           put into the uip_appdata and the length of the data should be
                                           put into uip_len. If the application don't have any data to
                                           send, uip_len must be set to 0. */
                                        if(uip_flags & (UIP_NEWDATA | UIP_ACKDATA)) {
                                                        uip_slen = 0;
                                                        UIP_APPCALL();

appsend:

                                                        if(uip_flags & UIP_ABORT) {
                                                            	uip_slen = 0;
                                                            	uip_connr->tcpstateflags = CLOSED;
                                                          	BUF->flags = TCP_RST | TCP_ACK;
                                                            	goto tcp_send_nodata;
                                                       }

                                                 if(uip_flags & UIP_CLOSE) {
                                                      	uip_slen = 0;
                                                  	uip_connr->len = 1;
                                                  	uip_connr->tcpstateflags = FIN_WAIT_1;
                                                  	uip_connr->nrtx = 0;
                                                        BUF->flags = TCP_FIN | TCP_ACK;
                                                  	goto tcp_send_nodata;	
                                                  }

                                                  /* If uip_slen > 0, the application has data to be sent. */
                                                  if(uip_slen > 0) {

                                                	/* If the connection has acknowledged data, the contents of
                                                  	   the ->len variable should be discarded. */
                                                	if((uip_flags & UIP_ACKDATA) != 0) {
                                                              	  uip_connr->len = 0;
                                                    	}

                                                        /* If the ->len variable is non-zero the connection has
                                                           already data in transit and cannot send anymore right
                                                    	   now. */
                                                    	if(uip_connr->len == 0) {

                                                              	  /* The application cannot send more than what is allowed by
                                                                     the mss (the minumum of the MSS and the available
                                                        	     window). */
                                                        	  if(uip_slen > uip_connr->mss) {
                                                              	    uip_slen = uip_connr->mss;
                                                              	  }

                                                        	  /* Remember how much data we send out now so that we know
                                                          	     when everything has been acknowledged. */
                                                        	  uip_connr->len = uip_slen;
                                                  	}
                                                        else {

                                                      	  /* If the application already had unacknowledged data, we
                                                      	     make sure that the application does not send (i.e.,
                                                  	     retransmit) out more than it previously sent out. */
                                                        	  uip_slen = uip_connr->len;
	                                                }
                                                }
                                                else {
                                                	uip_connr->len = 0;
                                                }
                                                uip_connr->nrtx = 0;
apprexmit:
                                                uip_appdata = uip_sappdata;

                                                /* If the application has data to be sent, or if the incoming
                                                 packet had new data in it, we must send out a packet. */
                                                if(uip_slen > 0 && uip_connr->len > 0) {
                                                        	/* Add the length of the IP and TCP headers. */
                                                    	uip_len = uip_connr->len + UIP_TCPIP_HLEN;
                                                        /* We always set the ACK flag in response packets. */
                                                	BUF->flags = TCP_ACK | TCP_PSH;
                                                	/* Send the packet. */
                                                        goto tcp_send_noopts;
                                                }
                                                /* If there is no data to send, just send out a pure ACK if
                                          	 there is newdata. */
                                                if(uip_flags & UIP_NEWDATA) {
                                                      	uip_len = UIP_TCPIP_HLEN;
                                                  	BUF->flags = TCP_ACK;
                                                	goto tcp_send_noopts;
                                                }
                                    }
                                    goto drop;
                case LAST_ACK:
                          /* We can close this connection if the peer has acknowledged our
                             FIN. This is indicated by the UIP_ACKDATA flag. */
                            if(uip_flags & UIP_ACKDATA) {
                                    uip_connr->tcpstateflags = CLOSED;
                                    uip_flags = UIP_CLOSE;
                                    UIP_APPCALL();
                           }
                            break;

                case FIN_WAIT_1:
                        /* The application has closed the connection, but the remote host
                       hasn't closed its end yet. Thus we do nothing but wait for a
                       FIN from the other side. */
                        if(uip_len > 0) {
                                uip_add_rcv_nxt(uip_len);
                        }
                        if(BUF->flags & TCP_FIN) {
                              if(uip_flags & UIP_ACKDATA) {
                                            	uip_connr->tcpstateflags = TIME_WAIT;
                                            	uip_connr->timer = 0;
                                              	uip_connr->len = 0;
                              } else {
                                    	uip_connr->tcpstateflags = CLOSING;
                              }
                              uip_add_rcv_nxt(1);
                              uip_flags = UIP_CLOSE;
                              UIP_APPCALL();
                              goto tcp_send_ack;
                        } else if(uip_flags & UIP_ACKDATA) {
                                          uip_connr->tcpstateflags = FIN_WAIT_2;
                                          uip_connr->len = 0;
                                          goto drop;
                        }
                        if(uip_len > 0) {
                                    goto tcp_send_ack;
                        }
                        goto drop;

                case FIN_WAIT_2:
                            if(uip_len > 0) {
       

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲人成伊人成综合网小说| 国产精品亚洲第一| 亚洲成人av福利| 亚洲风情在线资源站| 亚洲午夜精品网| 亚洲成国产人片在线观看| 亚洲综合一二三区| 亚洲国产aⅴ天堂久久| 亚洲综合一区在线| 天堂精品中文字幕在线| 日韩精品每日更新| 日本不卡123| 国内精品不卡在线| 国产精品一区二区果冻传媒| 国产伦精品一区二区三区在线观看| 国内精品写真在线观看| 丰满放荡岳乱妇91ww| 高清不卡在线观看| 色综合久久中文综合久久牛| 在线一区二区观看| 777xxx欧美| xf在线a精品一区二区视频网站| 国产三区在线成人av| 中文字幕一区二区三区av| 一区二区在线观看av| 亚洲成人第一页| 久久国产麻豆精品| 国产成人免费视频网站| 色综合久久久久久久久| 欧美羞羞免费网站| 欧美大片一区二区三区| 欧美国产禁国产网站cc| 亚洲免费在线视频| 青青草97国产精品免费观看无弹窗版 | 日本韩国精品在线| 欧美日本一区二区三区四区| 欧美成人一区二区三区| 国产精品久久久久久久久图文区 | 国产精品人妖ts系列视频| 一区二区国产视频| 蜜臀av在线播放一区二区三区| 国产精品18久久久久久久久| 在线观看一区日韩| 久久免费精品国产久精品久久久久| 国产精品白丝在线| 日韩高清不卡一区二区| 国产成人av一区二区三区在线观看| 日本电影亚洲天堂一区| 精品免费国产二区三区| 亚洲免费视频中文字幕| 久久99国产精品久久| 91在线视频免费观看| 精品va天堂亚洲国产| 亚洲精品视频在线观看免费| 久久黄色级2电影| 色婷婷一区二区| 欧美精品一区二区三区在线 | 亚洲综合视频在线观看| 国产一区二三区好的| 欧美探花视频资源| 国产欧美日韩一区二区三区在线观看 | 国产精品福利一区| 麻豆久久久久久| 色哟哟亚洲精品| 国产亚洲欧美激情| 日韩精品1区2区3区| 91一区一区三区| 久久久久青草大香线综合精品| 亚洲第一搞黄网站| 99视频在线精品| 久久麻豆一区二区| 日韩国产高清在线| 欧美中文字幕一区| 综合激情成人伊人| 国产剧情av麻豆香蕉精品| 欧美剧情电影在线观看完整版免费励志电影| 国产精品免费人成网站| 狠狠色丁香婷婷综合| 91精品国产综合久久久久久久久久 | 日产国产高清一区二区三区| 在线视频国内一区二区| 中文欧美字幕免费| 国产专区欧美精品| 日韩免费看的电影| 奇米精品一区二区三区在线观看一| 欧美亚一区二区| 亚洲小说春色综合另类电影| 色综合久久久久久久久| 亚洲成人在线网站| 色狠狠综合天天综合综合| 国产精品日产欧美久久久久| 成人免费视频国产在线观看| 久久网站最新地址| 精品在线播放免费| 精品久久久久香蕉网| 美女国产一区二区| 欧美一区二区视频观看视频| 午夜国产精品影院在线观看| 欧美三级电影网站| 亚洲自拍都市欧美小说| 色爱区综合激月婷婷| 亚洲欧美另类小说| 色哟哟精品一区| 亚洲成人动漫精品| 69精品人人人人| 蜜臀av一区二区| 欧美r级在线观看| 激情小说亚洲一区| 久久久青草青青国产亚洲免观| 国产一区二区电影| 欧美极品美女视频| 99re在线精品| 夜夜精品视频一区二区| 欧美三级日本三级少妇99| 亚洲成人免费av| 日韩欧美一级二级| 国产在线视频不卡二| 欧美激情中文不卡| 91一区二区三区在线观看| 一区二区三区中文免费| 欧美日韩国产精选| 黄网站免费久久| 国产精品麻豆一区二区| 91美女视频网站| 视频一区视频二区中文字幕| 精品日韩在线一区| 成人午夜激情影院| 一区二区高清免费观看影视大全 | 国产精品久久久久aaaa樱花| 色综合久久久久久久久久久| 肉色丝袜一区二区| 久久久久久久综合| 91欧美一区二区| 日韩高清在线观看| 日本一区二区三区四区在线视频| 色综合一个色综合亚洲| 日韩高清在线观看| 中文字幕欧美国产| 欧美无砖专区一中文字| 捆绑变态av一区二区三区 | 国产成人免费在线观看不卡| 亚洲色图欧美激情| 日韩欧美区一区二| kk眼镜猥琐国模调教系列一区二区| 亚洲午夜激情网页| 久久久亚洲精品石原莉奈 | 亚洲欧美国产毛片在线| 欧美人妇做爰xxxⅹ性高电影| 九九热在线视频观看这里只有精品 | 亚洲色图.com| 欧美videossexotv100| 972aa.com艺术欧美| 日产国产欧美视频一区精品| 国产精品第一页第二页第三页| 在线观看视频一区二区| 国产乱码精品一区二区三| 一区二区三区美女视频| 欧美精品一区二区精品网| 色婷婷综合久久久久中文一区二区 | 国产毛片精品一区| 一区二区不卡在线播放 | 久久蜜桃一区二区| 欧美日韩国产一区二区三区地区| 成人一区二区三区中文字幕| 五月激情六月综合| 日韩一区日韩二区| 2021久久国产精品不只是精品| 91美女在线看| 国产成人aaaa| 石原莉奈在线亚洲二区| 亚洲视频在线观看一区| 精品88久久久久88久久久| 在线精品国精品国产尤物884a| 国产精品99久久久久久似苏梦涵| 午夜影院在线观看欧美| ...xxx性欧美| 国产夜色精品一区二区av| 7777精品伊人久久久大香线蕉完整版 | 亚洲一区在线观看视频| 亚洲国产精品成人综合| 欧美电影免费观看高清完整版在线 | www.日韩av| 久久精品久久精品| 亚洲欧美国产高清| 国产精品激情偷乱一区二区∴| 日韩欧美国产三级| 欧美午夜不卡在线观看免费| 91污片在线观看| 国产aⅴ精品一区二区三区色成熟| 蜜臀久久99精品久久久久久9| 亚洲午夜电影网| 夜夜操天天操亚洲| 亚洲国产高清aⅴ视频| 久久这里只有精品首页| 日韩视频免费直播| 91精品国产91久久久久久最新毛片 | 欧美日本在线视频| 欧美日韩亚洲高清一区二区| 精品视频一区三区九区| 在线观看日韩电影|