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

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

?? ip.lst

?? 單片機(jī)下的TCP/IP協(xié)議棧
?? LST
字號(hào):
C51 COMPILER V8.01   IP                                                                    12/13/2006 20:58:54 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE IP
OBJECT MODULE PLACED IN .\IP.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\TCPIP\IP.c BROWSE DEBUG OBJECTEXTEND PRINT(.\IP.lst) OBJECT(.\IP.obj)

line level    source

   1          /*
   2           * Copyright (c) 2003 Electric Application Laboratory of NAN KAI University
   3           * All rights reserved.
   4           *
   5           * Redistribution and use in source and binary forms, with or without modification,
   6           * are permitted provided that the following conditions are met:
   7           *
   8           * 1. Redistributions of source code must retain the above copyright notice,
   9           *    this list of conditions and the following disclaimer.
  10           * 2. Redistributions in binary form must reproduce the above copyright notice,
  11           *    this list of conditions and the following disclaimer in the documentation
  12           *    and/or other materials provided with the distribution.
  13           * 3. The name of the author may not be used to endorse or promote products
  14           *    derived from this software without specific prior written permission.
  15           *
  16           * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
  17           * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  18           * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
  19           * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  20           * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
  21           * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  22           * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  23           * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
  24           * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
  25           * OF SUCH DAMAGE.
  26           *
  27           * Author: Li Zhanglin <wzzlin@nankai.edu.cn>
  28           *
  29           */
  30          
  31          #include "..\GloblDef\GloblDef.h"
  32          #include "..\TCPIP\TCPIPmem.h"
  33          #include "..\TCPIP\IP.h"
  34          #include "..\TCPIP\icmp.h"
  35          #include "..\TCPIP\Netif.h"
  36          #include "..\TCPIP\TCP.h"
  37          
  38          /* Check sum calulation. data in buff, size, InSum is initial sum */
  39          WORD CheckSum(WORD DT_XDATA * buff,WORD size,DWORD InSum) REENTRANT_SIG
  40          {
  41   1              /* TO DO:in packet memory high part of short is in low memory. add all data in 
  42   1              form of 16 bits get a result of 32 bits, add high 16 bits to low 16 bits two 
  43   1              times.  get a 16 bits result then complement it. */
  44   1      
  45   1              DWORD cksum = InSum; 
  46   1      
  47   1              /* sum all word except the last odd byte(if size is a odd num) */
  48   1              WORD DT_XDATA * EndBuf = buff + size/2;
  49   1              while(buff < EndBuf)
  50   1              { 
  51   2                      /* net order is equeal as host order in mirochip, so no need to change */
  52   2                      cksum += *(buff++); 
  53   2              } 
  54   1              
  55   1              /**((WORD xdata *)CheckSumInParam) = size;
C51 COMPILER V8.01   IP                                                                    12/13/2006 20:58:54 PAGE 2   

  56   1              *((WORD xdata *)(CheckSumInParam+2)) = buff;
  57   1              asmAddCheckSum();
  58   1              cksum = CheckSumOutParm;
  59   1              */
  60   1              
  61   1              /* if has last odd byte. use this byte as the high part of 16 bits, and add. */
  62   1              if((size & 0x0001) != 0) 
  63   1                      cksum += (*buff) & 0xff00;
  64   1      
  65   1              cksum = (cksum >> 16) + (cksum & 0xffff); 
  66   1              cksum += (cksum >>16); 
  67   1              return (WORD)(~cksum); 
  68   1      }
  69          
  70          /* IP input process */
  71          void IPInput(struct SMemHead DT_XDATA *MemHead) REENTRANT_MUL
  72          {
  73   1              struct SIPHead DT_XDATA *pIPHead;
  74   1              struct SNetIf  DT_XDATA *pNetIf;                /* for search netif list */
  75   1      
  76   1              pIPHead = (struct SIPHead DT_XDATA *)(MemHead->pStart);
  77   1      
  78   1              /* check ip version */
  79   1              if(IP_VERSION(pIPHead) != IP_VERSION_4)
  80   1              {
  81   2                      MemFree(MemHead);
  82   2                      return;
  83   2              }
  84   1      
  85   1              /* if checksum is ok */
  86   1              if(CheckSum((WORD DT_XDATA *)pIPHead,(WORD)IP_HEAD_LEN(pIPHead),0) != 0)
  87   1              {
  88   2                      MemFree(MemHead);
  89   2                      return;
  90   2              }
  91   1      
  92   1              /* ip packet with options is not supported */
  93   1              if(IP_HEAD_LEN(pIPHead) != IP_HEAD_MIN_LEN)
  94   1              {
  95   2                      MemFree(MemHead);
  96   2                      return;
  97   2              }
  98   1      
  99   1              /* ip packet fragmented is not supported */
 100   1              if((pIPHead->FragmentFlag_Offset & IP_FRAGMENT_OFFSET_MASK)!= 0)
 101   1              {
 102   2                      MemFree(MemHead);
 103   2                      return;
 104   2              }
 105   1      
 106   1              
 107   1              /* if this packet for us. check all the netif. if a host
 108   1              has tow device(tow ip). This packet may come from one device
 109   1              but send for the IP of the other deviec. In this case we should
 110   1              not drop or forward this packet */
 111   1              
 112   1              /* if this packet is not for us. forward it */
 113   1              if((pNetIf = NetIfFindIP(pIPHead->IPDest)) == NULL)
 114   1              {
 115   2                      #ifdef IP_ENABLE_FORWARD        /* if act as a router */
                              /* We should decrease the IPHead->ttl */
                              if(pIPHead->LifeLength != 0)
C51 COMPILER V8.01   IP                                                                    12/13/2006 20:58:54 PAGE 3   

                              {
                                      pIPHead->LifeLength--;
                                              
                                      /* recaculate IP head checksum. there is a easy method
                                      to recaculate, leave for later version improvment */
                                      CheckSum((WORD DT_XDATA *)pIPHead,(WORD)IP_HEAD_LEN(pIPHead),0);
              
                                      /* find a rout( a interface ) */
                                      if((pNetIf = NetIfFindRout(pIPHead->IPDest)) != NULL)
                                      {
                                              /* forward. send it through this interface. if return FALSE, we
                                              do not care, the soure of the packet will deel with it. */
                                              pNetIf->output(MemHead,pNetIf,pIPHead->IPDest);
                                      }
                              }
                              #endif
 134   2                      
 135   2                      MemFree(MemHead);
 136   2                      return;
 137   2              }
 138   1              else
 139   1              {
 140   2                      /* MemHead->pStart set to point uper layer */
 141   2                      MemHead->pStart += sizeof(struct SIPHead);
 142   2      
 143   2                      /* pass to the uper layer */
 144   2                      switch(pIPHead->Protocol)
 145   2                      {
 146   3                      case IP_PROTOCOL_TCP:
 147   3                              TCPInput(MemHead);
 148   3                              break;
 149   3      #if     ICMP_EN
 150   3                      case IP_PROTOCOL_ICMP:
 151   3                              ICMPInput(MemHead);
 152   3                              break;
 153   3      #endif
 154   3                      default:
 155   3                              MemFree(MemHead);
 156   3                      }
 157   2              }
 158   1      }
 159          
 160          /* out put a ip packet,NOTE:MemHead->pStart point to IPHead.
 161          IPScr IPDest Protocol TotalLen is already filled at uper layer.
 162          To do so TCPCheckSum is easy to generate and pass augument to 
 163          IPOutput is easyer. 
 164          return :
 165                  TURE: send the packt successful. */
 166          BOOL IPOutput(struct SMemHead DT_XDATA * MemHead) REENTRANT_SIG
 167          {
 168   1              struct SNetIf  DT_XDATA *pNetIf;
 169   1              struct SIPHead DT_XDATA *pIPHead;
 170   1              WORD tCheckSum;
 171   1              
 172   1              pIPHead = (struct SIPHead DT_XDATA *)(MemHead->pStart);
 173   1      
 174   1              /* found a rout */
 175   1              if((pNetIf = NetIfFindRout(pIPHead->IPDest)) != NULL)
 176   1              {
 177   2                      /* fill IP head */
 178   2                      pIPHead->CheckSum                               = 0;
 179   2                      pIPHead->FragmentFlag_Offset    = 0;
C51 COMPILER V8.01   IP                                                                    12/13/2006 20:58:54 PAGE 4   

 180   2                      pIPHead->FragmentID                             = 0;
 181   2                      pIPHead->LifeLength                             = IP_INITIAL_LIFE;
 182   2                      pIPHead->ServeType                              = 0;
 183   2                      pIPHead->Ver_HeadLen                    = (IP_VERSION_4 << 4) + IP_HEAD_MIN_LEN/4;
 184   2      
 185   2                      /* checksum */
 186   2                      tCheckSum = CheckSum((WORD DT_XDATA *)pIPHead,(WORD)IP_HEAD_LEN(pIPHead),0);
 187   2                      pIPHead->CheckSum = htons(tCheckSum);
 188   2      
 189   2                      /* output it */
 190   2                      return pNetIf->output(MemHead,pNetIf,pIPHead->IPDest);
 191   2              }
 192   1              else
 193   1                      return FALSE;
 194   1              /* 'MemHead' freeing is at tcp model when it is acked */
 195   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    935    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品福利视频网站| 免费高清视频精品| 中文字幕一区视频| 亚洲人成在线播放网站岛国| 中文字幕一区二区三中文字幕| 日本一区二区三级电影在线观看| 久久精品人人做人人综合| 中文字幕一区二区三区蜜月| 国产精品无人区| 亚洲成a人片在线不卡一二三区| 日韩高清不卡一区二区| 国产精品白丝jk白祙喷水网站| 高清视频一区二区| 欧美高清视频不卡网| 久久久99免费| 午夜国产精品一区| 成人性生交大片免费看在线播放 | 在线一区二区视频| 日韩一级二级三级| 国产精品国模大尺度视频| 日韩精品一区第一页| eeuss鲁一区二区三区| 日韩精品一区二区三区在线播放| 国产精品久久久久影院亚瑟| 蜜乳av一区二区| 欧美日韩免费电影| 一区二区三区在线高清| 国内一区二区在线| 日韩欧美你懂的| 日韩电影免费一区| 91精品国产91综合久久蜜臀| 亚洲女子a中天字幕| 成人免费福利片| 中文字幕亚洲视频| 国产成人av网站| 国产亚洲精品资源在线26u| 日产精品久久久久久久性色| 欧美群妇大交群中文字幕| 樱桃国产成人精品视频| 色综合久久99| 亚洲一区二区三区视频在线播放| 91免费精品国自产拍在线不卡| 国产亚洲一区二区三区四区| 极品美女销魂一区二区三区免费| 欧美一区二区精品在线| 国产一区亚洲一区| 日本一区免费视频| 欧美在线小视频| 偷窥少妇高潮呻吟av久久免费| 91精品婷婷国产综合久久性色 | 欧美高清hd18日本| 午夜精品123| 久久精品欧美一区二区三区不卡| 国产福利一区二区三区视频在线| 国产欧美一区二区精品婷婷| 成人午夜免费av| 免费成人深夜小野草| 欧美一二三区在线| av午夜精品一区二区三区| 亚洲高清不卡在线观看| 精品国产亚洲在线| 精品久久久久99| www.色精品| 国产自产视频一区二区三区| 亚洲乱码国产乱码精品精小说| 欧美精品欧美精品系列| 99vv1com这只有精品| 精品一区二区在线观看| 午夜婷婷国产麻豆精品| 亚洲少妇30p| 一区在线观看免费| 久久伊人蜜桃av一区二区| 欧美日韩亚洲综合在线| 成人午夜精品在线| 国产麻豆精品在线观看| 天天影视网天天综合色在线播放| 国产精品视频一二三| 国产欧美综合在线观看第十页| 91精品免费观看| 欧美日韩免费在线视频| 色999日韩国产欧美一区二区| 成人免费视频国产在线观看| 国产精品888| 成人看片黄a免费看在线| 国产美女精品人人做人人爽| 国产一区二三区好的| 极品少妇一区二区| thepron国产精品| 99在线热播精品免费| 色香蕉成人二区免费| 欧美日韩国产另类一区| 欧美精品免费视频| 日韩视频免费观看高清完整版 | 欧美一区二区精品| 久久综合色婷婷| 国产女主播视频一区二区| 国产精品久久久久久久久晋中| 国产精品免费免费| 五月天激情综合网| 国产乱子轮精品视频| av动漫一区二区| 56国语精品自产拍在线观看| 精品成人a区在线观看| 中文字幕欧美一| 精品一区二区日韩| 色婷婷综合久久久中文字幕| 欧美精品一区二区三区视频| 国产精品久久福利| 国产一区二区日韩精品| 97精品国产97久久久久久久久久久久| 欧美三级中文字| 国产精品美女久久久久久2018| 视频在线在亚洲| 色成年激情久久综合| 久久久精品黄色| 日本va欧美va瓶| 91精品国产欧美一区二区成人| |精品福利一区二区三区| 国内一区二区在线| 精品精品国产高清a毛片牛牛 | 91免费小视频| 国产精品乱码人人做人人爱| 蜜桃一区二区三区在线| 欧美三级电影在线观看| 亚洲欧美一区二区三区孕妇| 国产成人精品综合在线观看 | 乱一区二区av| 91精品啪在线观看国产60岁| 亚洲国产一二三| 精品视频999| 日本女人一区二区三区| 777xxx欧美| 国产在线播精品第三| 久久亚洲私人国产精品va媚药| 国产一区福利在线| 国产精品美女久久久久久久久久久| 国产成人综合精品三级| 中文字幕 久热精品 视频在线| 91在线视频观看| 亚洲第一成年网| 久久综合久久综合久久综合| 国产宾馆实践打屁股91| 亚洲人成小说网站色在线| 欧美日韩亚洲综合一区| 激情综合五月婷婷| 怡红院av一区二区三区| 日韩你懂的在线观看| 成人在线视频一区二区| 香蕉成人伊视频在线观看| 久久久亚洲高清| 欧美老女人第四色| 国产精品一区二区三区99| 亚洲线精品一区二区三区八戒| 69久久夜色精品国产69蝌蚪网| 国产一区二区在线视频| 亚洲成人动漫在线免费观看| 日本一区二区三区四区| 91麻豆精品久久久久蜜臀| 国产精品123区| 日本在线不卡视频一二三区| 成人免费在线视频| 国产欧美一区二区精品性色超碰 | 美女精品一区二区| 亚洲欧美日韩一区二区三区在线观看| 9191久久久久久久久久久| 色域天天综合网| 99在线热播精品免费| 国产成人免费高清| 国产乱码精品一区二区三区忘忧草| 亚洲r级在线视频| 视频在线在亚洲| 日本亚洲电影天堂| 天涯成人国产亚洲精品一区av| 亚洲美女屁股眼交| 一区二区三区小说| 亚洲国产精品人人做人人爽| 综合欧美亚洲日本| 亚洲素人一区二区| 香蕉久久夜色精品国产使用方法| 亚洲一区中文日韩| 蜜桃视频第一区免费观看| 久久精品久久综合| 国产东北露脸精品视频| 丁香六月综合激情| 在线精品视频小说1| 欧美人与禽zozo性伦| xfplay精品久久| 亚洲欧洲中文日韩久久av乱码| 亚洲五码中文字幕| 国产一区二区中文字幕| caoporen国产精品视频| 欧美喷水一区二区| 国产色产综合色产在线视频| 亚洲欧美日韩系列| 精品一二三四区| 欧美日韩精品一区二区三区蜜桃| 久久综合狠狠综合| 亚洲主播在线播放| 成人av资源网站| 日韩毛片视频在线看|