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

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

?? ip.lst

?? 單片機以太網(wǎng)上網(wǎng)代碼(KEIL工程RTS8019)
?? LST
字號:
C51 COMPILER V7.20   IP                                                                    12/25/2007 10:53:00 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE IP
OBJECT MODULE PLACED IN .\IP.obj
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE ..\TCPIP\IP.c BROWSE DEBUG OBJECTEXTEND PRINT(.\IP.lst) OBJEC
                    -T(.\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              
C51 COMPILER V7.20   IP                                                                    12/25/2007 10:53:00 PAGE 2   

  55   1              /**((WORD xdata *)CheckSumInParam) = size;
  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 */
C51 COMPILER V7.20   IP                                                                    12/25/2007 10:53:00 PAGE 3   

                              if(pIPHead->LifeLength != 0)
                              {
                                      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;
C51 COMPILER V7.20   IP                                                                    12/25/2007 10:53:00 PAGE 4   

 179   2                      pIPHead->FragmentFlag_Offset    = 0;
 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)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久国产精华| 欧美精品色综合| 日韩美女一区二区三区| 亚洲一区二区av在线| 欧美一个色资源| 99精品视频在线观看| 亚洲乱码日产精品bd| 国产午夜精品理论片a级大结局| 国产乱子伦视频一区二区三区| 亚洲猫色日本管| 久久女同互慰一区二区三区| 一本到高清视频免费精品| 国产成人啪免费观看软件| 亚洲国产欧美一区二区三区丁香婷| 91精品蜜臀在线一区尤物| 97国产一区二区| 成人丝袜高跟foot| 精品夜夜嗨av一区二区三区| 亚洲美女淫视频| 8v天堂国产在线一区二区| 欧美视频日韩视频在线观看| 色狠狠综合天天综合综合| 粉嫩欧美一区二区三区高清影视| 综合久久久久久| ㊣最新国产の精品bt伙计久久| 欧美高清激情brazzers| 欧美日韩一区二区在线观看 | 精品国产乱子伦一区| 4438x亚洲最大成人网| 欧美色综合久久| 欧洲精品中文字幕| 91激情在线视频| 在线视频你懂得一区二区三区| 亚洲国产精品一区二区www在线| 欧美v国产在线一区二区三区| 91精品国产综合久久久久久久| 精品视频一区二区三区免费| 欧美日韩日本视频| 91麻豆精品国产91久久久久| 日韩一区二区三区三四区视频在线观看| 91视频在线观看免费| 一本色道久久综合亚洲91| 91日韩在线专区| 欧美亚洲禁片免费| 欧美电影影音先锋| 日韩精品一区二区三区在线观看 | 国产成人精品免费一区二区| 欧美aaaaa成人免费观看视频| 亚洲福利一区二区三区| 亚洲成人福利片| 国产免费成人在线视频| 欧美国产精品一区| 亚洲夂夂婷婷色拍ww47| 日本三级亚洲精品| 椎名由奈av一区二区三区| 一区二区三区免费看视频| 午夜精品视频一区| 夜夜爽夜夜爽精品视频| 国产精品色在线| 久久99精品久久久久久国产越南| 国产福利一区二区三区在线视频| av一区二区久久| 欧美日韩成人综合| 337p日本欧洲亚洲大胆精品| 国产精品视频麻豆| 久久久久国产精品厨房| 免费高清在线视频一区·| 国产一区二区精品久久99| 91网址在线看| 欧美一区二区久久| 中文在线免费一区三区高中清不卡| 国产情人综合久久777777| 亚洲一区二区三区四区在线免费观看| 亚洲午夜免费视频| 亚洲图片另类小说| 91玉足脚交白嫩脚丫在线播放| 欧美日本在线看| 国产三级精品在线| 奇米色777欧美一区二区| av电影在线不卡| 精品对白一区国产伦| 91精品国产91久久综合桃花| 亚洲v精品v日韩v欧美v专区| 福利一区二区在线观看| 欧美人体做爰大胆视频| 综合色中文字幕| 国产在线播精品第三| 欧美专区亚洲专区| 久久久国产一区二区三区四区小说 | 国产丝袜在线精品| 午夜一区二区三区视频| 91视视频在线直接观看在线看网页在线看| 欧美一区日本一区韩国一区| 亚洲综合丁香婷婷六月香| 成人美女在线观看| 欧美精品一区二区三区蜜桃视频| 亚洲欧美一区二区三区久本道91 | 精品国产sm最大网站免费看| 精品国产sm最大网站免费看| 日本在线不卡视频一二三区| 国产成a人亚洲| 高清国产一区二区| 日韩一区二区在线看| 天堂蜜桃91精品| 99re热这里只有精品免费视频| 久久女同互慰一区二区三区| 久久av中文字幕片| 国产**成人网毛片九色| 2023国产精品自拍| 肉丝袜脚交视频一区二区| 欧美精品乱码久久久久久| 亚洲国产裸拍裸体视频在线观看乱了| 久久国产精品99精品国产| 日韩片之四级片| 麻豆国产精品一区二区三区| 日韩一区二区高清| 91在线精品一区二区| 奇米精品一区二区三区在线观看| 欧美日韩另类一区| 久久久综合精品| 777久久久精品| 日韩国产在线观看一区| 91精品国产入口| 免费成人小视频| 亚洲欧美激情插| 精品国产乱码久久久久久久久| 韩国三级电影一区二区| 亚洲品质自拍视频| 欧美α欧美αv大片| 欧美男同性恋视频网站| av网站一区二区三区| 美腿丝袜亚洲三区| 亚洲综合偷拍欧美一区色| 国产日韩欧美精品在线| 91麻豆精品国产91久久久更新时间 | 91精品一区二区三区久久久久久 | 亚洲精品一区在线观看| 波多野结衣在线一区| 开心九九激情九九欧美日韩精美视频电影 | 国产亚洲一本大道中文在线| 成人激情综合网站| 免费成人结看片| 一区二区三区四区在线| 国产欧美一区二区精品婷婷| 555夜色666亚洲国产免| 色综合中文字幕国产| 色婷婷综合激情| 欧洲生活片亚洲生活在线观看| av一区二区不卡| 在线观看免费一区| 欧美日韩一区二区电影| 在线91免费看| 99久久精品费精品国产一区二区| 精品国产不卡一区二区三区| 久久人人超碰精品| 日韩精品综合一本久道在线视频| 欧美一区二区女人| 2019国产精品| 久久久久国产一区二区三区四区| 精品少妇一区二区三区在线播放 | 日韩亚洲国产中文字幕欧美| 精品久久久久一区| 国产精品毛片久久久久久久| 亚洲美女屁股眼交3| 久久99精品久久久久久国产越南 | 色婷婷国产精品综合在线观看| 欧美综合一区二区| 精品区一区二区| 亚洲精品国产精华液| 国产不卡高清在线观看视频| 欧美性色黄大片手机版| 欧美国产成人在线| 免费在线观看一区二区三区| 成人av动漫网站| 久久先锋影音av鲁色资源| 天天色综合天天| 欧美性色黄大片手机版| 亚洲精品日韩综合观看成人91| 国产成人av网站| 国产精品免费视频观看| 国产精品亚洲午夜一区二区三区| 欧美日韩精品一区二区天天拍小说| 亚洲日本在线a| 91久久久免费一区二区| 亚洲精品视频一区| 色网站国产精品| 亚洲最大成人综合| 欧美人与性动xxxx| 欧美aⅴ一区二区三区视频| 2欧美一区二区三区在线观看视频| 蜜桃精品视频在线| 欧美大片在线观看一区二区| 国产另类ts人妖一区二区| 国产精品不卡一区| av在线不卡免费看| 日韩综合在线视频| 国产亚洲欧美激情| 91老师片黄在线观看| 亚洲国产综合色| 国产日本欧洲亚洲|