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

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

?? uip.c

?? 58enc28j06protuesuip09.rar
?? C
?? 第 1 頁 / 共 4 頁
字號:
       reassembly buffer, we discard the entire packet. */    if(offset > UIP_REASS_BUFSIZE ||       offset + len > UIP_REASS_BUFSIZE) {      uip_reasstmr = 0;      goto nullreturn;    }    /* Copy the fragment into the reassembly buffer, at the right       offset. */    memcpy(&uip_reassbuf[IP_HLEN + offset],	   (char *)BUF + (int)((BUF->vhl & 0x0f) * 4),	   len);          /* Update the bitmap. */    if(offset / (8 * 8) == (offset + len) / (8 * 8)) {      /* If the two endpoints are in the same byte, we only update	 that byte. */	           uip_reassbitmap[offset / (8 * 8)] |=	     bitmap_bits[(offset / 8 ) & 7] &	     ~bitmap_bits[((offset + len) / 8 ) & 7];    } else {      /* If the two endpoints are in different bytes, we update the	 bytes in the endpoints and fill the stuff inbetween with	 0xff. */      uip_reassbitmap[offset / (8 * 8)] |=	bitmap_bits[(offset / 8 ) & 7];      for(i = 1 + offset / (8 * 8); i < (offset + len) / (8 * 8); ++i) {	uip_reassbitmap[i] = 0xff;      }            uip_reassbitmap[(offset + len) / (8 * 8)] |=	~bitmap_bits[((offset + len) / 8 ) & 7];    }        /* If this fragment has the More Fragments flag set to zero, we       know that this is the last fragment, so we can calculate the       size of the entire packet. We also set the       IP_REASS_FLAG_LASTFRAG flag to indicate that we have received       the final fragment. */    if((BUF->ipoffset[0] & IP_MF) == 0) {      uip_reassflags |= UIP_REASS_FLAG_LASTFRAG;      uip_reasslen = offset + len;    }        /* Finally, we check if we have a full packet in the buffer. We do       this by checking if we have the last fragment and if all bits       in the bitmap are set. */    if(uip_reassflags & UIP_REASS_FLAG_LASTFRAG) {      /* Check all bytes up to and including all but the last byte in	 the bitmap. */      for(i = 0; i < uip_reasslen / (8 * 8) - 1; ++i) {	if(uip_reassbitmap[i] != 0xff) {	  goto nullreturn;	}      }      /* Check the last byte in the bitmap. It should contain just the	 right amount of bits. */      if(uip_reassbitmap[uip_reasslen / (8 * 8)] !=	 (u8_t)~bitmap_bits[uip_reasslen / 8 & 7]) {	goto nullreturn;      }      /* If we have come this far, we have a full packet in the	 buffer, so we allocate a pbuf and copy the packet into it. We	 also reset the timer. */      uip_reasstmr = 0;      memcpy(BUF, FBUF, uip_reasslen);      /* Pretend to be a "normal" (i.e., not fragmented) IP packet	 from now on. */      BUF->ipoffset[0] = BUF->ipoffset[1] = 0;      BUF->len[0] = uip_reasslen >> 8;      BUF->len[1] = uip_reasslen & 0xff;      BUF->ipchksum = 0;      BUF->ipchksum = ~(uip_ipchksum());      return uip_reasslen;    }  } nullreturn:  return 0;}#endif /* UIP_REASSEMBL *//*-----------------------------------------------------------------------------------*/static voiduip_add_rcv_nxt(u16_t n){  uip_add32(uip_conn->rcv_nxt, n);  uip_conn->rcv_nxt[0] = uip_acc32[0];  uip_conn->rcv_nxt[1] = uip_acc32[1];  uip_conn->rcv_nxt[2] = uip_acc32[2];  uip_conn->rcv_nxt[3] = uip_acc32[3];}/*-----------------------------------------------------------------------------------*/voiduip_process(u8_t flag){
  u8_t gjk_iptemp;  register struct uip_conn *uip_connr = uip_conn;    uip_appdata = &uip_buf[40 + UIP_LLH_LEN];    /* Check if we were invoked because of the perodic timer fireing. */  if(flag == UIP_TIMER) {#if UIP_REASSEMBLY    if(uip_reasstmr != 0) {      --uip_reasstmr;    }#endif /* UIP_REASSEMBLY */    /* Increase the initial sequence number. */    if(++iss[3] == 0) {      if(++iss[2] == 0) {	if(++iss[1] == 0) {	  ++iss[0];	}      }    }        uip_len = 0;    if(uip_connr->tcpstateflags == TIME_WAIT ||       uip_connr->tcpstateflags == FIN_WAIT_2) {      ++(uip_connr->timer);      if(uip_connr->timer == UIP_TIME_WAIT_TIMEOUT) {	uip_connr->tcpstateflags = CLOSED;      }    } else if(uip_connr->tcpstateflags != CLOSED) {      /* If the connection has outstanding data, we increase the	 connection's timer and see if it has reached the RTO value	 in which case we retransmit. */      if(uip_outstanding(uip_connr)) {	if(uip_connr->timer-- == 0) {	  if(uip_connr->nrtx == UIP_MAXRTX ||	     ((uip_connr->tcpstateflags == SYN_SENT ||	       uip_connr->tcpstateflags == SYN_RCVD) &&	      uip_connr->nrtx == UIP_MAXSYNRTX)) {	    uip_connr->tcpstateflags = CLOSED;	    /* We call UIP_APPCALL() with uip_flags set to	       UIP_TIMEDOUT to inform the application that the	       connection has timed out. */	    uip_flags = UIP_TIMEDOUT;	    UIP_APPCALL();	    /* We also send a reset packet to the remote host. */	    BUF->flags = TCP_RST | TCP_ACK;	    goto tcp_send_nodata;	  }	  /* Exponential backoff. */	  uip_connr->timer = UIP_RTO << (uip_connr->nrtx > 4?					 4:					 uip_connr->nrtx);	  ++(uip_connr->nrtx);	  	  /* Ok, so we need to retransmit. We do this differently	     depending on which state we are in. In ESTABLISHED, we	     call upon the application so that it may prepare the	     data for the retransmit. In SYN_RCVD, we resend the	     SYNACK that we sent earlier and in LAST_ACK we have to	     retransmit our FINACK. */	  UIP_STAT(++uip_stat.tcp.rexmit);	  switch(uip_connr->tcpstateflags & TS_MASK) {	  case SYN_RCVD:	    /* In the SYN_RCVD state, we should retransmit our               SYNACK. */	    goto tcp_send_synack;	    #if UIP_ACTIVE_OPEN	  case SYN_SENT:	    /* In the SYN_SENT state, we retransmit out SYN. */	    BUF->flags = 0;	    goto tcp_send_syn;#endif /* UIP_ACTIVE_OPEN */	    	  case ESTABLISHED:	    /* In the ESTABLISHED state, we call upon the application               to do the actual retransmit after which we jump into               the code for sending out the packet (the apprexmit               label). */	    uip_len = 0;	    uip_slen = 0;	    uip_flags = UIP_REXMIT;	    UIP_APPCALL();	    goto apprexmit;	    	  case FIN_WAIT_1:	  case CLOSING:	  case LAST_ACK:	    /* In all these states we should retransmit a FINACK. */	    goto tcp_send_finack;	    	  }	}      } else if((uip_connr->tcpstateflags & TS_MASK) == ESTABLISHED) {	/* If there was no need for a retransmission, we poll the           application for new data. */	uip_len = 0;	uip_slen = 0;	uip_flags = UIP_POLL;	UIP_APPCALL();	goto appsend;      }    }    goto drop;  }#if UIP_UDP   if(flag == UIP_UDP_TIMER) {    if(uip_udp_conn->lport != 0) {      uip_appdata = &uip_buf[UIP_LLH_LEN + 28];      uip_len = uip_slen = 0;      uip_flags = UIP_POLL;      UIP_UDP_APPCALL();      goto udp_send;    } else {      goto drop;    }  }#endif  /* This is where the input processing starts. */  UIP_STAT(++uip_stat.ip.recv);  /* Start of IPv4 input header processing code. */    /* Check validity of the IP header. */    if(BUF->vhl != 0x45)  { /* IP version and header length. */    UIP_STAT(++uip_stat.ip.drop);    UIP_STAT(++uip_stat.ip.vhlerr);    Printf_String("\r\n[MSG:] ip: invalid version or header length.");    goto drop;  }    /* Check the size of the packet. If the size reported to us in     uip_len doesn't match the size reported in the IP header, there     has been a transmission error and we drop the packet. */    if(BUF->len[0] != (uip_len >> 8)) { /* IP length, high byte. */    uip_len = (uip_len & 0xff) | (BUF->len[0] << 8);  }  if(BUF->len[1] != (uip_len & 0xff)) { /* IP length, low byte. */    uip_len = (uip_len & 0xff00) | BUF->len[1];  }  /* Check the fragment flag. */  if((BUF->ipoffset[0] & 0x3f) != 0 ||     BUF->ipoffset[1] != 0) { #if UIP_REASSEMBLY    uip_len = uip_reass();    if(uip_len == 0) {      goto drop;    }#else    UIP_STAT(++uip_stat.ip.drop);    UIP_STAT(++uip_stat.ip.fragerr);    Printf_String("\r\n[MSG:] ip: fragment dropped.");        goto drop;#endif /* UIP_REASSEMBLY */  }  /* If we are configured to use ping IP address configuration and     hasn't been assigned an IP address yet, we accept all ICMP     packets. */#if UIP_PINGADDRCONF  if((uip_hostaddr[0] | uip_hostaddr[1]) == 0) {    if(BUF->proto == UIP_PROTO_ICMP) {      Printf_String("\r\n[MSG:] ip: possible ping config packet received.");      goto icmp_input;    } else {      Printf_String("\r\n[MSG:] ip: packet dropped since no address assigned.");      goto drop;    }  }#endif /* UIP_PINGADDRCONF */    /* Check if the packet is destined for our IP address. */    if(BUF->destipaddr[0] != uip_hostaddr[0]) {    UIP_STAT(++uip_stat.ip.drop);   // Printf_String("\r\n ->ip: packet not for us.");            goto drop;  }  if(BUF->destipaddr[1] != uip_hostaddr[1]) {    UIP_STAT(++uip_stat.ip.drop);   // Printf_String("\r\n ->ip: packet not for us.");            goto drop;  }  if(uip_ipchksum() != 0xffff) { /* Compute and check the IP header				    checksum. */    UIP_STAT(++uip_stat.ip.drop);    UIP_STAT(++uip_stat.ip.chkerr);    Printf_String("\r\n[MSG:] ip: bad checksum.");        goto drop;  }  if(BUF->proto == UIP_PROTO_TCP)  /* Check for TCP packet. If so, jump                                     to the tcp_input label. */    goto tcp_input;#if UIP_UDP  if(BUF->proto == UIP_PROTO_UDP)    goto udp_input;#endif /* UIP_UDP */  if(BUF->proto != UIP_PROTO_ICMP) { /* We only allow ICMP packets from					here. */    UIP_STAT(++uip_stat.ip.drop);    UIP_STAT(++uip_stat.ip.protoerr);    Printf_String("\r\n[MSG:] ip: neither tcp nor icmp.");            goto drop;  }   icmp_input:  UIP_STAT(++uip_stat.icmp.recv);    /* ICMP echo (i.e., ping) processing. This is simple, we only change     the ICMP type from ECHO to ECHO_REPLY and adjust the ICMP     checksum before we return the packet. */  if(ICMPBUF->type != ICMP_ECHO) {    UIP_STAT(++uip_stat.icmp.drop);    UIP_STAT(++uip_stat.icmp.typeerr);    Printf_String("\r\n[MSG:] icmp: not icmp echo.");    goto drop;  }  /* If we are configured to use ping IP address assignment, we use     the destination IP address of this ping packet and assign it to     ourself. */#if UIP_PINGADDRCONF  if((uip_hostaddr[0] | uip_hostaddr[1]) == 0) {    uip_hostaddr[0] = BUF->destipaddr[0];    uip_hostaddr[1] = BUF->destipaddr[1];  }#endif /* UIP_PINGADDRCONF */      ICMPBUF->type = ICMP_ECHO_REPLY;    if(ICMPBUF->icmpchksum >= HTONS(0xffff - (ICMP_ECHO << 8))) {    ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8) + 1;  } else {    ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8);  }    /* Swap IP addresses. */  tmp16 = BUF->destipaddr[0];  BUF->destipaddr[0] = BUF->srcipaddr[0];  BUF->srcipaddr[0] = tmp16;  tmp16 = BUF->destipaddr[1];  BUF->destipaddr[1] = BUF->srcipaddr[1];  BUF->srcipaddr[1] = tmp16;  UIP_STAT(++uip_stat.icmp.sent);


   /*@test by jerkoh  ping debug@*/
   gjk_iptemp=BUF->srcipaddr[0]>>8;

   Printf_String("\r\n[MSG:] Reply from ");

   Printf_Str(gjk_iptemp);
   Printf_String(".");
   Printf_Str(BUF->srcipaddr[0]);
   Printf_String(".");
   gjk_iptemp=BUF->srcipaddr[1]>>8;

   Printf_Str(gjk_iptemp);
   Printf_String(".");
   Printf_Str(BUF->srcipaddr[1]);

   Printf_String(": byte=32 time<37ms TTL=64 ");

   /*@test by jerkoh  ping debug@*/


  goto send;  /* End of IPv4 input header processing code. */  #if UIP_UDP

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品1区2区3区| 国产亚洲女人久久久久毛片| 亚洲一区二区三区三| 色屁屁一区二区| 亚洲第一在线综合网站| 欧美丰满高潮xxxx喷水动漫| 男女男精品视频| 欧美成人艳星乳罩| 国产成+人+日韩+欧美+亚洲| 欧美国产欧美亚州国产日韩mv天天看完整| 国产成人av一区| 亚洲欧美色一区| 欧美老女人在线| 精品一区二区久久| 中文字幕人成不卡一区| 欧美无人高清视频在线观看| 日产国产高清一区二区三区 | 成人h动漫精品一区二区| 国产精品美女久久久久av爽李琼| 色综合天天综合狠狠| 天堂av在线一区| 国产夜色精品一区二区av| 欧美一区二区三区视频免费 | 国产精品美女www爽爽爽| 色88888久久久久久影院按摩| 日韩精品免费视频人成| 国产午夜精品久久| 欧美日韩中文精品| 国产精品自拍毛片| 亚洲一区二区不卡免费| 久久久久青草大香线综合精品| 99视频一区二区| 美腿丝袜在线亚洲一区| 亚洲三级在线看| 亚洲精品一区在线观看| 色综合久久久网| 经典三级一区二区| 亚洲bdsm女犯bdsm网站| 国产欧美日韩精品一区| 在线播放国产精品二区一二区四区 | 黄页视频在线91| 一区二区高清视频在线观看| 欧美成va人片在线观看| 一本一道波多野结衣一区二区| 九九视频精品免费| 亚洲综合丁香婷婷六月香| 国产亚洲女人久久久久毛片| 在线成人免费观看| 色久优优欧美色久优优| 国产成人在线视频播放| 麻豆久久久久久久| 午夜不卡在线视频| 亚洲色图丝袜美腿| 日本一区二区电影| 久久久亚洲综合| 日韩欧美美女一区二区三区| 91蜜桃网址入口| 成人深夜福利app| 久色婷婷小香蕉久久| 午夜成人免费电影| 亚洲国产精品自拍| 亚洲激情图片小说视频| 国产精品久久久久aaaa樱花| 久久精品一区二区三区四区| 91精品欧美久久久久久动漫| 欧美日韩精品欧美日韩精品一| 99久久免费国产| 成人av午夜影院| 懂色av一区二区在线播放| 国产酒店精品激情| 韩国一区二区在线观看| 精品一区精品二区高清| 激情文学综合丁香| 国产麻豆9l精品三级站| 精品一区二区影视| 精品一区二区三区视频| 黄页网站大全一区二区| 激情六月婷婷久久| 国产精品18久久久久久vr| 国产伦精品一区二区三区免费| 蜜乳av一区二区三区| 美女视频黄久久| 韩国毛片一区二区三区| 国产精品一区二区久激情瑜伽| 九九精品一区二区| 国产91露脸合集magnet | 久久国内精品视频| 久久99国产精品麻豆| 国产福利精品导航| 成人激情文学综合网| 99精品欧美一区二区三区小说| 99久久久精品| 欧美日韩中文国产| 精品国内片67194| 国产日韩欧美亚洲| 一区av在线播放| 日韩中文字幕av电影| 久久99精品国产麻豆婷婷| 成人av在线资源网| 91国偷自产一区二区开放时间| 美女视频免费一区| 国产毛片精品一区| 国产精品一区免费视频| 韩日欧美一区二区三区| 国产999精品久久久久久绿帽| 99久久精品国产网站| 欧美视频三区在线播放| 精品久久久久久久久久久院品网| 国产香蕉久久精品综合网| 国产精品久久久久久久久动漫| 亚洲免费观看高清| 蜜桃精品视频在线观看| 成人午夜在线视频| 精品视频在线免费看| 日韩美女在线视频| 亚洲视频免费在线| 麻豆91在线观看| 91丨porny丨国产入口| 欧美一区二区高清| 国产精品成人一区二区艾草 | 国产成人午夜视频| 一本大道综合伊人精品热热| 日韩欧美亚洲国产另类| 亚洲丝袜另类动漫二区| 日本欧洲一区二区| 95精品视频在线| 26uuu国产电影一区二区| 亚洲卡通欧美制服中文| 精品一区二区成人精品| 欧美在线观看视频一区二区| 欧美mv日韩mv国产网站| 亚洲免费观看在线观看| 国产精品一区在线观看乱码| 精品污污网站免费看| 国产精品久久久久久久久免费桃花| 蜜桃一区二区三区在线| 色呦呦一区二区三区| 久久久www免费人成精品| 午夜精品久久久久久久久久久| 国产99久久精品| 欧美本精品男人aⅴ天堂| 亚洲最新在线观看| av亚洲精华国产精华精华| 精品成人a区在线观看| 亚洲成a人v欧美综合天堂| 91免费看视频| 国产精品成人免费| 成人精品国产一区二区4080| 日韩午夜精品电影| 午夜激情久久久| 欧美午夜精品理论片a级按摩| 国产精品乱码一区二三区小蝌蚪| 激情图片小说一区| 欧美一区二区三区在线电影| 一级精品视频在线观看宜春院 | 国产一区在线观看麻豆| 日韩一二在线观看| 午夜精品久久久久久久| 欧洲视频一区二区| 亚洲综合在线免费观看| 99久久免费精品高清特色大片| 久久久久久电影| 国产成人免费视频精品含羞草妖精 | 久久国产免费看| 欧美肥胖老妇做爰| 天天色综合成人网| 欧美日韩高清一区| 日韩va亚洲va欧美va久久| 欧洲精品视频在线观看| 亚洲一区二区视频| 欧美日韩一区小说| 丝袜诱惑亚洲看片| 欧美酷刑日本凌虐凌虐| 日日摸夜夜添夜夜添精品视频| 欧美一区国产二区| 久久不见久久见中文字幕免费| 日韩亚洲欧美高清| 精品一区二区三区免费| 久久综合色婷婷| 成人免费av网站| 亚洲视频在线一区观看| 欧美在线视频你懂得| 午夜精品一区在线观看| 日韩欧美成人一区| 国产精品一品视频| 亚洲欧洲性图库| 欧美日韩国产在线观看| 青青国产91久久久久久| 26uuu亚洲综合色| 成人av网站免费| 亚洲午夜国产一区99re久久| 这里只有精品99re| 国产91精品一区二区麻豆网站| 亚洲精品中文字幕乱码三区| 欧美日韩激情一区二区三区| 久久99最新地址| 欧美国产精品中文字幕| 欧美性受xxxx| 国产一区二区三区日韩| 亚洲视频电影在线|