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

📄 netif.lst

📁 我的网口控制程序
💻 LST
字号:
C51 COMPILER V7.06   NETIF                                                                 11/06/2008 08:54:10 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE NETIF
OBJECT MODULE PLACED IN .\NetIf.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\TCPIP\NetIf.c BROWSE DEBUG OBJECTEXTEND PRINT(.\NetIf.lst) OBJECT(.\NetI
                    -f.obj)

stmt 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          //初始化网络接口
  46          void NetIfInit() REENTRANT_MUL
  47          {
  48   1              WORD count;
  49   1      
  50   1              /* inti NetIfList */
  51   1              NetIfList = NULL;
  52   1      
  53   1              /* inti FreeList, chain up NetIfPool */
  54   1              for(count = 0, NetIfFreeList = NULL; count < NET_IF_MAX_NUM; count++)
C51 COMPILER V7.06   NETIF                                                                 11/06/2008 08:54:10 PAGE 2   

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

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