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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? uip.lst

?? 運行環(huán)境是keil。這是一個實現(xiàn)嵌入式TCP/IP的程序
?? LST
?? 第 1 頁 / 共 4 頁
字號:
 246   6                  /* We call UIP_APPCALL() with uip_flags set to
 247   6                     UIP_TIMEDOUT to inform the application that the
 248   6                     connection has timed out. */
 249   6                  uip_flags = UIP_TIMEDOUT;
 250   6                  UIP_APPCALL();
 251   6      
 252   6                  /* We also send a reset packet to the remote host. */
 253   6                  BUF->flags = TCP_RST | TCP_ACK;
 254   6                  goto tcp_send_nodata;
 255   6                }
 256   5      
 257   5                /* Exponential backoff. */
 258   5                uip_conn->timer = UIP_RTO << (uip_conn->nrtx > 4? 4: uip_conn->nrtx);
 259   5      
 260   5                ++(uip_conn->nrtx);
 261   5                
 262   5                /* Ok, so we need to retransmit. We do this differently
 263   5                   depending on which state we are in. In ESTABLISHED, we
 264   5                   call upon the application so that it may prepare the
 265   5                   data for the retransmit. In SYN_RCVD, we resend the
 266   5                   SYNACK that we sent earlier and in LAST_ACK we have to
 267   5                   retransmit our FINACK. */
 268   5                UIP_STAT(++uip_stat.tcp.rexmit);
 269   5                switch(uip_conn->tcpstateflags & TS_MASK) {
 270   6                case SYN_RCVD:
 271   6                  /* In the SYN_RCVD state, we should retransmit our
 272   6                     SYNACK. */
 273   6                  goto tcp_send_synack;
 274   6                  
 275   6      #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 */
 281   6                  
 282   6                case ESTABLISHED:
 283   6                  /* In the ESTABLISHED state, we call upon the application
 284   6                     to do the actual retransmit after which we jump into
 285   6                     the code for sending out the packet (the apprexmit
 286   6                     label). */
 287   6                  uip_len = 0;
 288   6                  uip_flags = UIP_REXMIT;
 289   6                  UIP_APPCALL();
 290   6                  goto apprexmit;
 291   6                  
 292   6                case FIN_WAIT_1:
 293   6                case CLOSING:
 294   6                case LAST_ACK:
 295   6                  /* In all these states we should retransmit a FINACK. */
 296   6                  goto tcp_send_finack;
 297   6                  
 298   6                }
 299   5              }
 300   4            } else if((uip_conn->tcpstateflags & TS_MASK) == ESTABLISHED) {
 301   4              /* If there was no need for a retransmission, we poll the
 302   4                 application for new data. */
C51 COMPILER V7.06   UIP                                                                   04/05/2006 12:13:01 PAGE 6   

 303   4              uip_len = 0;
 304   4              uip_flags = UIP_POLL;
 305   4              UIP_APPCALL();
 306   4              goto appsend;
 307   4            }
 308   3          }   
 309   2          goto drop;
 310   2        }
 311   1      
 312   1        /* This is where the input processing starts. */
 313   1        UIP_STAT(++uip_stat.ip.recv);
 314   1        
 315   1        /* Check validity of the IP header. */  
 316   1        if(BUF->vhl != 0x45)  { /* IP version and header length. */
 317   2          UIP_STAT(++uip_stat.ip.drop);
 318   2          UIP_STAT(++uip_stat.ip.vhlerr);
 319   2          UIP_LOG("ip: invalid version or header length.");
 320   2          goto drop;
 321   2        }
 322   1        
 323   1        /* Check the size of the packet. If the size reported to us in
 324   1           uip_len doesn't match the size reported in the IP header, there
 325   1           has been a transmission error and we drop the packet. */
 326   1        
 327   1      #if UIP_BUFSIZE > 255
                if(BUF->len[0] != (uip_len >> 8)) {
                  UIP_STAT(++uip_stat.ip.drop);
                  UIP_STAT(++uip_stat.ip.hblenerr);
                  UIP_LOG("ip: invalid length, high byte.");
                                             /* IP length, high byte. */
                  goto drop;
                }
                if(BUF->len[1] != (uip_len & 0xff)) {
                  UIP_STAT(++uip_stat.ip.drop);
                  UIP_STAT(++uip_stat.ip.lblenerr);
                  UIP_LOG("ip: invalid length, low byte.");
                                             /* IP length, low byte. */
                  goto drop;
                }
              #else
 343   1        if(BUF->len[0] != 0) {        /* IP length, high byte. */
 344   2          UIP_STAT(++uip_stat.ip.drop);
 345   2          UIP_STAT(++uip_stat.ip.hblenerr);
 346   2          UIP_LOG("ip: invalid length, high byte.");
 347   2          goto drop;
 348   2        }
 349   1        if(BUF->len[1] != uip_len) {  /* IP length, low byte. */
 350   2          UIP_STAT(++uip_stat.ip.drop);
 351   2          UIP_STAT(++uip_stat.ip.lblenerr);
 352   2          UIP_LOG("ip: invalid length, low byte.");
 353   2          goto drop;
 354   2        }
 355   1      #endif /* UIP_BUFSIZE > 255 */  
 356   1      
 357   1        if(BUF->ipoffset[0] & 0x3f) { /* We don't allow IP fragments. */
 358   2          UIP_STAT(++uip_stat.ip.drop);
 359   2          UIP_STAT(++uip_stat.ip.fragerr);
 360   2          UIP_LOG("ip: fragment dropped.");    
 361   2          goto drop;
 362   2        }
 363   1      
 364   1        /* Check if the packet is destined for our IP address. */
C51 COMPILER V7.06   UIP                                                                   04/05/2006 12:13:01 PAGE 7   

 365   1        if(BUF->destipaddr[0] != htons(((u16_t)UIP_IPADDR0 << 8) | UIP_IPADDR1)) {
 366   2          UIP_STAT(++uip_stat.ip.drop);
 367   2          UIP_LOG("ip: packet not for us.");        
 368   2          goto drop;
 369   2        }
 370   1        if(BUF->destipaddr[1] != htons(((u16_t)UIP_IPADDR2 << 8) | UIP_IPADDR3)) {
 371   2          UIP_STAT(++uip_stat.ip.drop);
 372   2          UIP_LOG("ip: packet not for us.");        
 373   2          goto drop;
 374   2        }
 375   1      
 376   1        if(uip_ipchksum() != 0xffff) { /* Compute and check the IP header
 377   2                                          checksum. */
 378   2          UIP_STAT(++uip_stat.ip.drop);
 379   2          UIP_STAT(++uip_stat.ip.chkerr);
 380   2          UIP_LOG("ip: bad checksum.");    
 381   2          goto drop;
 382   2        }
 383   1      
 384   1        if(BUF->proto == IP_PROTO_TCP)  /* Check for TCP packet. If so, jump
 385   1                                           to the tcp_input label. */
 386   1          goto tcp_input;
 387   1      
 388   1        if(BUF->proto != IP_PROTO_ICMP) { /* We only allow ICMP packets from
 389   2                                             here. */
 390   2          UIP_STAT(++uip_stat.ip.drop);
 391   2          UIP_STAT(++uip_stat.ip.protoerr);
 392   2          UIP_LOG("ip: neither tcp nor icmp.");        
 393   2          goto drop;
 394   2        }
 395   1      
 396   1        UIP_STAT(++uip_stat.icmp.recv);
 397   1        
 398   1        /* ICMP echo (i.e., ping) processing. This is simple, we only change
 399   1           the ICMP type from ECHO to ECHO_REPLY and adjust the ICMP
 400   1           checksum before we return the packet. */
 401   1        if(ICMPBUF->type != ICMP_ECHO) {
 402   2          UIP_STAT(++uip_stat.icmp.drop);
 403   2          UIP_STAT(++uip_stat.icmp.typeerr);
 404   2          UIP_LOG("icmp: not icmp echo.");
 405   2          goto drop;
 406   2        }
 407   1      
 408   1        ICMPBUF->type = ICMP_ECHO_REPLY;
 409   1        
 410   1        if(ICMPBUF->icmpchksum >= htons(0xffff - (ICMP_ECHO << 8))) {
 411   2          ICMPBUF->icmpchksum += htons(ICMP_ECHO << 8) + 1;
 412   2        } else {
 413   2          ICMPBUF->icmpchksum += htons(ICMP_ECHO << 8);
 414   2        }
 415   1        
 416   1        /* Swap IP addresses. */
 417   1        tmpport = BUF->destipaddr[0];
 418   1        BUF->destipaddr[0] = BUF->srcipaddr[0];
 419   1        BUF->srcipaddr[0] = tmpport;
 420   1        tmpport = BUF->destipaddr[1];
 421   1        BUF->destipaddr[1] = BUF->srcipaddr[1];
 422   1        BUF->srcipaddr[1] = tmpport;
 423   1      
 424   1        UIP_STAT(++uip_stat.icmp.sent);
 425   1        goto send;
 426   1      
C51 COMPILER V7.06   UIP                                                                   04/05/2006 12:13:01 PAGE 8   

 427   1        /* TCP input processing. */  
 428   1       tcp_input:
 429   1        UIP_STAT(++uip_stat.tcp.recv);
 430   1          
 431   1        if(uip_tcpchksum() != 0xffff) {   /* Compute and check the TCP
 432   2                                             checksum. */
 433   2          UIP_STAT(++uip_stat.tcp.drop);
 434   2          UIP_STAT(++uip_stat.tcp.chkerr);
 435   2          UIP_LOG("tcp: bad checksum.");    
 436   2          goto drop;
 437   2        }
 438   1        
 439   1        /* Demultiplex this segment. */
 440   1        /* First check any active connections. */
 441   1        for(uip_conn = &uip_conns[0]; uip_conn < &uip_conns[UIP_CONNS]; ++uip_conn) {
 442   2          if(uip_conn->tcpstateflags != CLOSED &&
 443   2             BUF->srcipaddr[0] == uip_conn->ripaddr[0] &&
 444   2             BUF->srcipaddr[1] == uip_conn->ripaddr[1] &&
 445   2             BUF->destport == uip_conn->lport &&
 446   2             BUF->srcport == uip_conn->rport)
 447   2            goto found;    
 448   2        }
 449   1      
 450   1        /* If we didn't find and active connection that expected the packet,
 451   1           either this packet is an old duplicate, or this is a SYN packet
 452   1           destined for a connection in LISTEN. If the SYN flag isn't set,
 453   1           it is an old packet and we send a RST. */
 454   1        if(BUF->flags != TCP_SYN)
 455   1          goto reset;
 456   1        
 457   1        tmpport = BUF->destport;
 458   1        /* Next, check listening connections. */  
 459   1        for(c = 0; c < UIP_LISTENPORTS && uip_listenports[c] != 0; ++c) {
 460   2          if(tmpport == uip_listenports[c])
 461   2            goto found_listen;
 462   2        }
 463   1        
 464   1        /* No matching connection found, so we send a RST packet. */
 465   1        UIP_STAT(++uip_stat.tcp.synrst);
 466   1       reset:
 467   1      
 468   1        /* We do not send resets in response to resets. */
 469   1        if(BUF->flags & TCP_RST) 
 470   1          goto drop;
 471   1      
 472   1        UIP_STAT(++uip_stat.tcp.rst);
 473   1        
 474   1        BUF->flags = TCP_RST | TCP_ACK;
 475   1        uip_len = 40;
 476   1        BUF->tcpoffset = 5 << 4;
 477   1      
 478   1        /* Flip the seqno and ackno fields in the TCP header. */
 479   1        c = BUF->seqno[3];
 480   1        BUF->seqno[3] = BUF->ackno[3];  
 481   1        BUF->ackno[3] = c;
 482   1        
 483   1        c = BUF->seqno[2];
 484   1        BUF->seqno[2] = BUF->ackno[2];  
 485   1        BUF->ackno[2] = c;
 486   1        
 487   1        c = BUF->seqno[1];
 488   1        BUF->seqno[1] = BUF->ackno[1];
C51 COMPILER V7.06   UIP                                                                   04/05/2006 12:13:01 PAGE 9   

 489   1        BUF->ackno[1] = c;
 490   1        
 491   1        c = BUF->seqno[0];
 492   1        BUF->seqno[0] = BUF->ackno[0];  
 493   1        BUF->ackno[0] = c;
 494   1      
 495   1        /* We also have to increase the sequence number we are
 496   1           acknowledging. If the least significant byte overflowed, we need
 497   1           to propagate the carry to the other bytes as well. */
 498   1        if(++BUF->ackno[3] == 0) {
 499   2          if(++BUF->ackno[2] == 0) {
 500   3            if(++BUF->ackno[1] == 0) {

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人黄色免费短视频| 国产欧美中文在线| 久久免费视频色| 亚洲成人在线网站| 成人性生交大片免费看在线播放| 欧美伊人久久大香线蕉综合69 | 免费看黄色91| 91小宝寻花一区二区三区| 欧美成人一区二区三区片免费| 亚洲人一二三区| 国产在线精品一区二区三区不卡| 制服丝袜亚洲播放| 亚洲啪啪综合av一区二区三区| 国产乱淫av一区二区三区| 日韩小视频在线观看专区| 亚洲一区二区三区四区五区黄| 成人高清视频免费观看| 精品动漫一区二区三区在线观看| 丝袜美腿亚洲一区二区图片| 欧美自拍偷拍一区| 亚洲视频免费观看| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 在线影院国内精品| 国产精品久久毛片av大全日韩| 欧美日韩成人综合在线一区二区| 国产精品伦一区二区三级视频| 激情综合色综合久久| 日韩欧美国产电影| 轻轻草成人在线| 日韩一卡二卡三卡国产欧美| 青娱乐精品在线视频| 欧美xfplay| 国模一区二区三区白浆| 精品免费一区二区三区| 国产在线播放一区三区四| 久久综合狠狠综合| 国产一区二区三区视频在线播放| 日韩精品专区在线影院重磅| 免费在线观看精品| 精品国产乱码久久久久久夜甘婷婷 | 国内国产精品久久| 2欧美一区二区三区在线观看视频| 久久超碰97人人做人人爱| 精品国产一区a| 丁香啪啪综合成人亚洲小说 | 成人免费高清在线| 自拍偷拍欧美激情| 欧美又粗又大又爽| 免费人成在线不卡| 国产日产精品1区| 色综合色狠狠综合色| 亚洲成人av电影| 精品久久久久久久人人人人传媒 | 国产精品久久看| 欧美视频一区二区三区四区 | 韩国女主播成人在线观看| 久久久久久久久久久久久女国产乱| 成人免费视频caoporn| 日韩伦理免费电影| 欧美美女黄视频| 国产福利一区二区三区在线视频| 亚洲日穴在线视频| 日韩三级av在线播放| 成人黄页毛片网站| 日韩综合小视频| 中文字幕av一区二区三区免费看 | 久久久久久综合| 日本道精品一区二区三区 | 精品成人私密视频| 91在线观看美女| 蜜桃精品视频在线观看| 国产精品不卡视频| 精品久久国产老人久久综合| 91在线国产观看| 91超碰这里只有精品国产| 国产成人免费视频网站 | 国产suv精品一区二区三区| 夜夜嗨av一区二区三区网页| 欧美不卡一区二区三区四区| 一本到不卡免费一区二区| 国产综合色视频| 亚洲综合久久久久| 国产精品毛片无遮挡高清| 欧美精品亚洲一区二区在线播放| 99在线精品观看| 麻豆精品精品国产自在97香蕉| 亚洲视频一区二区在线| 精品日韩99亚洲| 91精品国产黑色紧身裤美女| 91免费看`日韩一区二区| 韩国成人在线视频| 日韩**一区毛片| 亚洲狠狠丁香婷婷综合久久久| 国产日韩欧美电影| 欧美精品一区二区精品网| 欧美剧在线免费观看网站 | 欧美日韩一区视频| 国产成都精品91一区二区三| 美女任你摸久久 | 亚洲自拍偷拍av| 综合久久综合久久| 国产三级一区二区| 欧美精品一区二区三区高清aⅴ| 欧美日韩一区二区不卡| 色婷婷激情综合| 91美女在线视频| av电影在线不卡| 99久久精品国产毛片| 风流少妇一区二区| 国产美女精品在线| 国产在线看一区| 国产成人综合亚洲91猫咪| 国产在线播精品第三| 国产精品一卡二卡在线观看| 久久99九九99精品| 国产呦萝稀缺另类资源| 韩日av一区二区| 国产自产视频一区二区三区| 蜜臀av一区二区三区| 久久99深爱久久99精品| 国产在线一区二区| 成人动漫视频在线| 在线观看av不卡| 7777精品伊人久久久大香线蕉| 欧美一区二区三区四区在线观看| 欧美高清视频不卡网| 欧美成人bangbros| 欧美激情中文字幕| 综合久久久久综合| 天堂一区二区在线| 九九热在线视频观看这里只有精品| 国产精品综合视频| 色婷婷综合久久久久中文| 欧美日韩国产成人在线91| 精品国产一区二区精华| 国产精品国产a| 色av成人天堂桃色av| 国产精品一区三区| 亚洲成在人线免费| 久久av资源站| 菠萝蜜视频在线观看一区| 91黄色免费看| 日韩亚洲欧美在线| 国产精品入口麻豆九色| 亚洲一区二区三区美女| 美国欧美日韩国产在线播放| 成av人片一区二区| 日韩一区二区三区视频在线| 国产日韩欧美一区二区三区乱码| 自拍偷拍欧美激情| 免费美女久久99| 色噜噜夜夜夜综合网| 欧美一区二区三区四区久久| 国产精品美女久久久久高潮| 日韩av一级片| 99久久综合狠狠综合久久| 欧美一区二区三区在线观看| 亚洲视频免费在线观看| 国内成人自拍视频| 欧美日韩国产高清一区| 国产精品白丝在线| 国内精品视频一区二区三区八戒| 欧美撒尿777hd撒尿| 久久精子c满五个校花| 欧美自拍偷拍一区| 亚洲1区2区3区视频| 久久av中文字幕片| 欧美天堂一区二区三区| 久久久精品黄色| 日韩激情视频在线观看| 日本乱码高清不卡字幕| 久久精品免费在线观看| 天堂成人免费av电影一区| 福利电影一区二区| 精品美女被调教视频大全网站| 亚洲影院在线观看| 91色视频在线| 欧美激情在线观看视频免费| 精品一区二区久久| 91精品国产综合久久福利软件| 一区二区三区四区蜜桃| 99精品热视频| 日本一区二区三区dvd视频在线| 久久国产欧美日韩精品| 欧美军同video69gay| 亚洲成人综合视频| 在线观看视频91| 亚洲六月丁香色婷婷综合久久| 白白色 亚洲乱淫| 国产农村妇女精品| 国产激情一区二区三区四区| 久久综合中文字幕| 激情国产一区二区| 亚洲国产一区二区三区| 丰满岳乱妇一区二区三区| 777久久久精品| 午夜欧美视频在线观看| 欧美日韩国产影片| 欧美成人一区二区三区在线观看| 大胆欧美人体老妇|