⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 netif.lst

📁 单片机以太网上网代码(KEIL工程RTS8019)
💻 LST
字号:
C51 COMPILER V7.20   NETIF                                                                 12/25/2007 10:53:00 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE NETIF
OBJECT MODULE PLACED IN .\NetIf.obj
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE ..\TCPIP\NetIf.c BROWSE DEBUG OBJECTEXTEND PRINT(.\NetIf.lst)
                    - OBJECT(.\NetIf.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\Netif.h"
  35          
  36          /* You can get a new netif from NetIfPool */
  37          static struct SNetIf DT_XDATA NetIfPool[NET_IF_MAX_NUM];
  38          
  39          /* list hearder of free Netifs buffer */
  40          static struct SNetIf DT_XDATA * DT_XDATA NetIfFreeList;
  41          
  42          /* list header of Netifs */
  43          static struct SNetIf DT_XDATA * DT_XDATA NetIfList;
  44          
  45          void NetIfInit() REENTRANT_MUL
  46          {
  47   1              WORD count;
  48   1      
  49   1              /* inti NetIfList */
  50   1              NetIfList = NULL;
  51   1      
  52   1              /* inti FreeList, chain up NetIfPool */
  53   1              for(count = 0, NetIfFreeList = NULL; count < NET_IF_MAX_NUM; count++)
  54   1              {
C51 COMPILER V7.20   NETIF                                                                 12/25/2007 10:53:00 PAGE 2   

  55   2                      NetIfPool[count].pNext = NetIfFreeList;
  56   2                      NetIfFreeList = &NetIfPool[count];
  57   2              }
  58   1      }
  59          
  60          /* add a netif to list, return NULL if insufficient mem */
  61          struct SNetIf DT_XDATA * NetIfAdd(DWORD IPAddr, DWORD NetMask,DWORD GateWay,
  62                                                           void (DT_CODE * input)(struct SNetIf DT_XDATA * NetIf) REENTRANT_SIG,
  63                                                           BOOL (DT_CODE * output)(struct SMemHead DT_XDATA *MemHead,struct SNetIf DT_XDATA* NetIf,DWORD DestI
             -P) REENTRANT_SIG,
  64                                                           void DT_XDATA * Info) REENTRANT_MUL
  65          {
  66   1              struct SNetIf DT_XDATA * NetIf;
  67   1      
  68   1              /* get netif from free list */
  69   1              NetIf = NetIfFreeList;
  70   1              NetIfFreeList = NetIfFreeList->pNext;
  71   1      
  72   1              /* if add more than NET_IF_MAX_NUM return NULL */
  73   1              if(NetIf == NULL)
  74   1                      return NULL;
  75   1              else
  76   1              {
  77   2                      NetIf->IPAddr   = htonl(IPAddr);
  78   2                      NetIf->NetMask  = htonl(NetMask);
  79   2                      NetIf->GateWay  = htonl(GateWay);
  80   2                      NetIf->input    = input;
  81   2                      NetIf->output   = output;
  82   2                      NetIf->Info             = Info;
  83   2      
  84   2                      /* add to the head of the list */
  85   2                      NetIf->pNext = NetIfList;
  86   2                      NetIfList = NetIf;
  87   2      
  88   2                      return NetIf;
  89   2              }
  90   1      }
  91          
  92          /* find a netif which NetIf->NetMask & NetIf->NetAddr == 
  93          NetIf->NetMask & IPAddr */
  94          struct SNetIf DT_XDATA * NetIfFindRout(IP_ADDR IPAddr) REENTRANT_SIG
  95          {
  96   1              struct SNetIf DT_XDATA *NetIf;
  97   1              for(NetIf = NetIfList; NetIf != NULL; NetIf = NetIf->pNext)
  98   1              {
  99   2                      if((NetIf->NetMask & NetIf->IPAddr) == (NetIf->NetMask & IPAddr))
 100   2                              return NetIf;
 101   2              }
 102   1      
 103   1              /* if can't find any suitable Netif, return NetIfList. That is the 
 104   1              first netif is the default Netif*/
 105   1              return NetIfList;       
 106   1      }
 107          
 108          struct SNetIf DT_XDATA * NetIfFindIP(IP_ADDR IPAddr) REENTRANT_MUL
 109          {
 110   1              struct SNetIf DT_XDATA *pNetIf;
 111   1              for(pNetIf = NetIfList; pNetIf != NULL; pNetIf = pNetIf->pNext)
 112   1              {
 113   2                      if(pNetIf->IPAddr == IPAddr)
 114   2                              break;
 115   2              }
C51 COMPILER V7.20   NETIF                                                                 12/25/2007 10:53:00 PAGE 3   

 116   1              return pNetIf;
 117   1      }
 118          
 119          /* net inteftimer. use to packup packet from every net interface */
 120          void NetIfTimer() REENTRANT_MUL
 121          {
 122   1              struct SNetIf DT_XDATA * NetIf;
 123   1      
 124   1              /* if netif has data to come in */
 125   1              for(NetIf = NetIfList; NetIf != NULL; NetIf = NetIf->pNext)
 126   1                      NetIf->input(NetIf);
 127   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    598    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     24    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      26
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -