亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
狂野欧美性猛交blacked| 国产精品国产三级国产aⅴ无密码| 国产丝袜在线精品| 亚洲一区在线电影| 国产精品99久久久久| 欧美日韩美少妇| 国产精品家庭影院| 国产成人精品一区二区三区四区| 欧美精品久久99久久在免费线 | 麻豆高清免费国产一区| 99riav一区二区三区| 精品国产凹凸成av人网站| 亚洲一区二区成人在线观看| 成人国产精品免费观看动漫 | 中文字幕亚洲视频| 国产麻豆精品视频| 日韩欧美在线网站| 日韩成人精品视频| 欧美日韩国产电影| 亚洲综合男人的天堂| 91免费观看视频在线| 中文字幕亚洲精品在线观看| 福利电影一区二区三区| 国产日韩欧美a| 福利电影一区二区| 韩国v欧美v日本v亚洲v| 久久久一区二区三区捆绑**| 亚洲成av人片一区二区三区| 欧美精品丝袜中出| 亚洲mv在线观看| 欧美日韩五月天| 亚洲成人1区2区| 91精品国产综合久久久久久漫画 | 精品国精品国产| 麻豆精品一区二区| 日韩小视频在线观看专区| 看电视剧不卡顿的网站| 精品国产乱码久久久久久浪潮| 麻豆精品一区二区三区| xvideos.蜜桃一区二区| 久久国产尿小便嘘嘘尿| 国产欧美一区二区精品性色超碰| 粉嫩嫩av羞羞动漫久久久 | 亚洲成人www| 欧美一区二区免费| 看国产成人h片视频| 国产日韩欧美麻豆| 99精品国产91久久久久久| 亚洲自拍偷拍网站| 91精品国产麻豆| 国产乱色国产精品免费视频| 国产精品第一页第二页第三页| 色哟哟国产精品免费观看| 亚洲国产日韩一级| 精品国产污网站| 不卡高清视频专区| 亚洲午夜精品17c| 欧美mv日韩mv国产网站app| 欧美性淫爽ww久久久久无| 全部av―极品视觉盛宴亚洲| 日本一区二区视频在线| 色噜噜狠狠色综合欧洲selulu| 日本特黄久久久高潮| 日本一区二区不卡视频| 欧美色图片你懂的| 国产一区二区三区蝌蚪| 一区二区欧美视频| 久久色在线视频| 91国产免费看| 国内偷窥港台综合视频在线播放| 国产精品乱人伦| 欧美一区二区三区免费在线看| 国产成人日日夜夜| 亚洲成人精品在线观看| 欧美国产激情一区二区三区蜜月| 欧美在线观看禁18| 国产91在线|亚洲| 日韩成人av影视| 亚洲女同女同女同女同女同69| 日韩精品中文字幕一区二区三区| 色婷婷精品久久二区二区蜜臂av| 狠狠色狠狠色综合系列| 亚洲国产精品尤物yw在线观看| 国产日本一区二区| 91麻豆精品91久久久久久清纯| 99re6这里只有精品视频在线观看| 日韩二区在线观看| 一区二区三区中文在线观看| 国产区在线观看成人精品| 日韩视频中午一区| 欧美午夜电影网| 91麻豆精品秘密| 成人国产亚洲欧美成人综合网| 久久成人综合网| 日本亚洲一区二区| 亚洲一区在线观看网站| 亚洲天堂av一区| 久久九九久精品国产免费直播| 日韩一级二级三级| 欧美日韩国产经典色站一区二区三区 | 中文字幕中文字幕在线一区| 精品成人a区在线观看| 在线91免费看| 在线视频你懂得一区二区三区| 成人高清视频在线观看| 国产suv精品一区二区6| 韩国理伦片一区二区三区在线播放| 日韩有码一区二区三区| 午夜欧美大尺度福利影院在线看| 亚洲精品国产无天堂网2021| 亚洲欧洲一区二区三区| 国产精品第13页| 亚洲色图另类专区| 亚洲欧美日韩在线播放| 亚洲男帅同性gay1069| 亚洲人成影院在线观看| **欧美大码日韩| 成人免费小视频| 亚洲精品一卡二卡| 亚洲最大的成人av| 亚洲综合精品久久| 日韩高清不卡在线| 毛片av中文字幕一区二区| 久久99精品久久只有精品| 国产做a爰片久久毛片| 国产福利精品一区二区| av在线不卡免费看| 欧美亚洲一区二区在线| 欧美日韩成人综合| 日韩免费视频一区| 欧美国产激情一区二区三区蜜月| 自拍偷拍国产精品| 香蕉加勒比综合久久| 免费观看一级欧美片| 国产成人啪午夜精品网站男同| 成人三级伦理片| 欧亚一区二区三区| 日韩一区二区三区四区五区六区| 久久久亚洲午夜电影| 亚洲少妇30p| 免费在线成人网| 高清成人免费视频| 欧美日韩一区二区在线观看视频| 日韩三级.com| 国产精品三级av在线播放| 亚洲一二三区在线观看| 国内成+人亚洲+欧美+综合在线| proumb性欧美在线观看| 欧美日韩一级二级三级| 久久久久综合网| 亚洲综合网站在线观看| 精品一区二区三区在线播放 | 久久人人爽人人爽| 亚洲精品成人少妇| 国内国产精品久久| 在线精品视频小说1| 亚洲人成亚洲人成在线观看图片 | 日韩三级精品电影久久久 | 91视频国产资源| 91精品国产综合久久精品app| 欧美激情在线免费观看| 五月天激情综合| av成人免费在线观看| 欧美大黄免费观看| 一区二区理论电影在线观看| 国产精品一级片在线观看| 在线电影国产精品| 中文字幕在线观看不卡| 极品少妇xxxx精品少妇| 欧美撒尿777hd撒尿| 国产精品卡一卡二| 精品一区二区免费视频| 欧美视频精品在线观看| 中文字幕一区二| 国产成人av一区二区| 日韩欧美激情一区| 亚洲高清一区二区三区| 91免费视频大全| 国产欧美一区二区精品秋霞影院| 免费观看日韩电影| 欧美视频三区在线播放| 中文字幕亚洲欧美在线不卡| 国产成人精品三级麻豆| 欧美成人一区二区三区| 日韩不卡一二三区| 欧美日韩一区二区三区在线| 亚洲精品免费看| 成人app网站| 国产精品乱人伦一区二区| 成人开心网精品视频| 欧美高清在线一区| 成人精品免费网站| 欧美国产乱子伦 | 日韩欧美国产高清| 91高清视频在线| 日韩成人伦理电影在线观看| 色综合久久88色综合天天免费| 国产日韩欧美亚洲| 国产盗摄视频一区二区三区| 久久久亚洲国产美女国产盗摄|