CN100512324C - 一种网络接口管理的装置及方法 - Google Patents

一种网络接口管理的装置及方法 Download PDF

Info

Publication number
CN100512324C
CN100512324C CNB2004100591582A CN200410059158A CN100512324C CN 100512324 C CN100512324 C CN 100512324C CN B2004100591582 A CNB2004100591582 A CN B2004100591582A CN 200410059158 A CN200410059158 A CN 200410059158A CN 100512324 C CN100512324 C CN 100512324C
Authority
CN
China
Prior art keywords
interface
class
module
interface class
function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2004100591582A
Other languages
English (en)
Other versions
CN1735094A (zh
Inventor
罗汉军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CNB2004100591582A priority Critical patent/CN100512324C/zh
Publication of CN1735094A publication Critical patent/CN1735094A/zh
Application granted granted Critical
Publication of CN100512324C publication Critical patent/CN100512324C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明涉及一种针对通信设备中网络接口管理的装置及方法。本发明由于采用接口管理模块和各接口类型的组成模块相对独立的设置方式,在创建新的接口类时,首先建立待创建接口类的组成模块,通过接口类模板输入接口类注册信息进行接口类的创建,将所述组成模块注册于接口管理模块中;之后,接口管理模块便可以根据输入的接口类注册信息调用接口类对应的组成模块进行相应的接口管理操作。本发明的实现使得网络设备中接口类型的扩展及接口类型的剪裁变得十分方便,有效地解决了现有技术中存在的接口类型扩展及剪裁困难的问题。

Description

一种网络接口管理的装置及方法
技术领域
本发明涉及网络通信技术领域,尤其涉及一种针对通信设备中网络接口管理的装置及方法。
背景技术
在路由器或接入服务器中,通常需要经由其中设置的各网络接口实现业务的接收及转发。以路由器为例,网络接口是路由器内部各层联系的通道,在路由器构架中是承上启下的纽带,即网络接口是联系网络设备驱动程序、链路层协议模块和网络层协议模块的纽带。所述的网络设备驱动程序实际上就是处理硬件和上层协议之间的接口程序。网络传输协议层负责在应用程序接口和网络接口之间分发数据。网络化网络协议(如IP协议)负责在网络主机之间发送数据。
因此,针对各网络接口的有效管理是路由器和接入服务器需要实现的基本功能。对网络接口的管理包括定义网络接口的组成,创建、删除、维护网络接口,响应网络接口各层的信息上报,等等。目前的网络接口管理方式通常为针对具体需要管理的网络接口编写大量代码。例如,一些厂家的路由器类产品的接口管理技术是从FreeBSD(一种可免费使用的UNIX操作系统)派生出来,即从FreeBSD的开放源代码获得相应的管理代码,该管理方式具有基本的分层管理思想。并且,在路由器中基于实时性考虑,通常需要采用C语言实现接口管理。
目前大多数路由器中的接口通常包括上层(即IP/IPX层)、链路层和设备层,每一层接口均具有对应的属性、转发函数和控制函数,具体的接口组成如表1所示:
表1
Figure C200410059158D00061
基于上述接口组成,目前的接口管理方式是在IFNET(网络接口)管理模块中设置组成模块代码,所述组成模块用于进行报文的封装和解封装处理,在组成模块代码中将每一种接口类型的各层函数和属性利用基于C语言的代码直接赋值,公共部分(如增加IP控制块、维护索引等)代码则采用C语言中的case语句进行类型区分。由于所有接口类型都放在同一函数(即接口管理函数)中,因此导致处理过程中判断工作量较大,且编写过程中查找错误也十分困难。
为对现有技术中的接口管理方式有着清楚的了解,下面将给出目前接口管理方式中的部分模块的代码,如下所述的代码便是目前接口管理方式中所采用的基于C语言的组成模块及各层函数、属性代码的赋值方式:
IFNET_S*IF_CreatelfNetByDev(DEVLINK_S*pstDev)
{  /*IFNET根据网络设备创建IFNET结构*/
   switch(stlfName.if_pOp[0])//根据接口类型进行各组成模块的具体创建
{
    case IF_ETHERNET_TYPE://根据接口类型进行具体创建(针对每种接口类型必须增加一个case);
      if((plf=IF_createEthernetlf(pstDev,&stlfName,0))==NULL)//必须有独立的创建函数;
          {
          }
         break;
       case IF_GIGABYTE_ETHERNET_TYPE:
          if((plf=IF_CreateGElf(pstDev,&stlfName,0))==NULL)
          {
          }
         break;
       case IF_CONSOLE_TYPE:
          ...
          break;
     ......
          default:
          return(IFNET_S*)NULL;
     }
   }
   ......
   IFNET_S*IF_CreateEthernetIf(DEVLINK_S*pstDev,IFNAME_S*plfName,
ULONG ullndex)
   {
    IFNET_S*plf=NULL;
    ULONG ulResult;
    ......
    /*私有部分:接口属性赋值,直接利用ethernet的定义ETHERMTU*/
    plf->if_ulMTU          =ETHERMTU;
    plf->if_ulCfgMTU       =ETHERMTU;
    plf->if_ulPhyType      =PHY_ETHERNET;
    plf->if_ulLineProtocol =LINE_ETHERNET;
    plf->if_ulPortType     =PORT_ETHERNET;
  /*公有部分:增加IP控制块,直接调用IP模块的函数IP_IF_Attach*/
  if(IP_IF_Attach(plf))
  {
         return(NULL);
  }
  if(IP6_SH_IF_Attach/*IP6_IF_Attach*/(plf))
  {
         return(NULL);
  }
  /*私有部分:增加ethernet控制块、转发函数、控制函数*/
  if(!IF_lsTemplf(plf->if_ullflndex))
  {
         /*临时接口不必挂控制块*/
         (VOID)ETHARP_AddMtsoft(plf);
  }
  /*私有部分:VLAN特性维护*/
  if(IF_InitialL2Lanlf(plf))
  {
         return NULL;
  }
  return plf;
}
ULONG ETHARP_AddMtsoft(IFNET_S*plf)
{
 /*注册IFNET函数*/
 plf->if_PfLinkReceived=ETHARP_Etherlnput;/*分析函数*/
 plf->if_pfLLCOutput=ETHARP_EtherOutput;/*以太网输出*/
  plf->if_pfLLCIOCtl  =ETHARP_LinkloCtl;/*上行控制*/
  plf->if_pfLinkDownlOCtl=ETHARP_loCtl;/*下行控制*/
  return0;
}
另外,在接口管理过程中,除了包括组成模块之外,还要与各中特性模块(如ACL(接入控制列表)、防火墙、QoS(服务质量)、ND(邻居发现)等)进行信息通知,目前,在网络接口管理的函数中同样是直接调用所述的各特性模块,所有特性模块与组成模块间的关联都是采用代码直接编写,导致模块间具有较强的藕合性。
由上述针对现有接口管理技术的描述可以总结出现有的接口管理方法存在以下的问题:
1、代码复杂、烦琐,缺乏通用性:接口管理功能扩展性差,新的需求或新的功能支持的实现修改量非常大;例如,若新增加接口类型,必须修改接口管理模块代码,通过增加代码的方式增加接口,因此,接口管理代码量是随着接口类型累加的,随着接口类型的增多而显著增加,代码量越大后续的代码修改便越烦琐;
2、裁剪困难:每种类型的接口即有公共部分,也有私有部分(如不同的接口类的接口赋不同的转发函数、控制函数、私有属性值等),并且直接引用接口组成模块的函数,因此,要删除某类接口,代码修改量大,接口类型的裁剪异常复杂;
3、控制流程复杂:由于每中接口类型的控制命令是不同的,只能采用大量的case语句区分不同接口类型的控制命令,导致效率低下。
发明内容
鉴于上述现有技术所存在的问题,本发明的目的是提供一种网络接口管理的装置及方法,使得接口类型的扩展、剪裁及管理维护十分方便。
本发明的目的是通过以下技术方案实现的:
本发明提供了一种网络接口管理的装置,包括:
接口类创建模块:提供创建各种接口类的接口类模板,根据所述的接口类模板进行接口类注册信息的输入,创建相应的接口类,包括设定针对所述接口类对应的组成模块及其回调函数;
接口管理模块:用于对接口类及其包含的接口实例进行管理,并根据接口类创建模块确定的回调函数分别调用各个接口类对应的组成模块;
组成模块:与接口类创建模块创建的接口类对应,分别用于对网络中各自接口类的各层报文进行封装或解封装处理。
所述的接口管理模块还包括:
接口创建模块:用于根据输入的需要创建的接口的接口信息确定与其对应的接口类,根据所述接口类的接口类注册信息及对应的组成模块进行接口实例的创建。
所述的接口类模板用于描述一个接口类的组成,且需要通过所述的接口类模板输入的接口类注册信息包括:
描述接口类属性的接口类属性信息;
用于调用该接口类组成模块的组成模块回调函数;
用于根据接口事件调用对应处理操作命令字的接口事件回调函数。
所述的接口管理模块仅通过接口类对应的组成模块的回调函数调用所述的接口类对应的组成模块,所述的组成模块还包括在创建接口实例时负责接口实例属性、转发函数和控制函数的初始化处理,并将所述属性及函数分别下挂于对应的组成模块上。
本发明还提供了一种基于上述装置的网络接口管理的方法,包括:
A、建立待创建接口类的组成模块,通过接口类模板输入接口类注册信息进行接口类的创建,将所述组成模块基于所述的接口类注册信息注册于接口管理模块中;所述组成模块与接口类创建模块创建的接口类对应,分别用于对网络中各自接口类的各层报文进行封装或解封装处理;
B、接口管理模块根据输入的接口类注册信息调用接口类对应的组成模块进行对应的接口管理操作。
所述的步骤A进一步包括:
通过接口类模板输入需要创建的接口类的属性信息和回调函数,并建立该接口类对应的组成模块,所述的回调函数包括组成模块的回调函数和接口事件的回调函数,且所述的组成模块的回调函数包括组成模块包含的各个子模块各自对应的回调函数。
所述的接口类的属性信息包括:接口类型和接口名称。
所述的网络接口管理的方法中,步骤B所述的接口管理操作包括:
定义接口的组成;
创建、删除、维护接口;
响应各层接口上报的信息。
所述的步骤B包括接口实例的创建过程,具体为:
根据输入的待创建接口实例的属性信息确定其所属的接口类;
由所属的接口类对应的组成模块根据所述的接口实例的属性信息对所述接口实例进行初始化,包括针对接口属性及对应的控制函数、转发函数和接口事件函数的初始化,并设置各属性及函数的回调函数,通过所述的回调函数将各属性及函数下挂于组成模块上;
上报创建接口实例事件,激活接口实例。
所述的步骤B包括删除接口类的操作,具体为:
根据待删除接口类的属性信息确定其接口类注册代码和对应的接口组成模块,将确定的接口类注册代码和对应的接口组成模块删除。
所述的步骤B包括触发接口事件的处理过程,具体为:
接口管理模块感知接口对象事件发生后,根据接口对象确定其所属的接口类;
根据确定的接口类的接口类注册信息获得接口事件的回调函数,并调用该接口事件的回调函数进行接口事件的处理。
由上述本发明提供的技术方案可以看出,本发明由于采用接口管理模块和各接口类型的组成模块相对独立的设置方式,从而使得网络设备中接口类型的扩展及接口类型的剪裁变得十分方便,有效地解决了现有技术中存在的接口类型扩展及剪裁困难的问题。
附图说明
图1为本发明所述的装置的结构示意图;
图2为本发明所述的方法的流程图;
图3为本发明中创建接口类的示意图。
具体实施方式
本发明的基本原理是利用面向对象思想,用C语言模拟C++的类,按类的方式对路由器网络接口进行管理。
本发明提供了一种网络接口管理的装置,如图1所示,其具体结构包括:
接口类创建模块:提供创建各种接口类的接口类模板,根据所述的接口类模板进行接口类注册信息的输入,创建相应的接口类,包括设定针对所述接口类对应的组成模块及其回调函数;
所述的接口类模板用于描述一个接口类的组成,创建接口类时需要通过所述的接口类模板输入的接口类注册信息包括但不限于以下信息:
描述接口类属性的接口类属性信息;
用于调用该接口类组成模块的组成模块回调函数;
用于根据接口事件调用对应处理操作命令字(即外部处理模块)的接口事件回调函数(简称事件函数);
当通过接口类模板输入上述接口类注册信息后,便可以将针对该接口类设置生成的组成模块通过其回调函数挂于接口管理模块上,此时,接口管理模块就可以通过其回调函数调用相应的接口类对应的组成模块;
本发明中,设定每一种接口类型均对应一个接口类,并且接口类是由外部模块按接口模板注册生成的,也就是说,所述的接口类是动态注册而成,每注册一个接口类,路由器等网络设备就增加一种接口类型,接口类模拟面向对象思想,具有类的多态性,此处所述多态性是指对不同的对象调用相同的函数可以执行不同的操作;
所述的接口类通常包括多个具有相应特征的接口实例,例如:IP、Ethernet、Ethdrv等接口实例可以组合注册为Ethernet接口类;IP、ppp、serialdrv等接口实例可以组合注册为serial接口类。
接口管理模块:用于对接口类及其包含的接口实例进行管理,并根据接口类创建模块确定的回调函数分别调用各个接口类对应的组成模块,接口管理模块分别负责创建接口对象及调用接口对象的各处理函数,创建接口对象时首先确定相应接口的接口属性,然后根据所述的接口属性确定相应的各处理函数,所述的各处理函数包括转发函数、控制函数及事件函数,所述的各处理函数均挂靠于对应的组成模块,从而便于接口管理模块通过组成模块对其进行调用,以进行相应的控制处理;
即,所述的接口管理模块还包括接口创建模块:用于根据输入的需要创建的接口的接口信息确定与其对应的接口类,根据所述接口类的接口类注册信息及对应的组成模块进行接口实例(即接口对象)的创建;
由于接口的结构是统一的,所以接口管理可以通过统一的方式操作,例如,接口管理模块可以直接调用接口类的链路层组成模块,通知链路层进行初始化,当调用的接口类是Ethernet接口类时,接口管理模块实际直接调用的是Ethernet接口类的链路层模块(Ethernet模块)注册的函数指针,若调用的接口类是serial接口类时,则接口管理模块实际直接调用的是PPP接口类的链路层PPP模块注册的函数指针,从而实现多态性,即通过统一的调用方式,实际上是调用不同链路层的组成模块注册的函数指针,执行不同链路层的初始化函数;
也就是说,本发明中所述的接口类可以派生出接口实例,即可以基于相应的接口类创建具体网络接口对象,接口对象的属性初始化由接口管理模块通知该接口类的各个组成模块,要求各个组成模块完成各自相关部分的初始化;
所述接口管理模块进行接口管理所包括的内容如表2所示:
表2
Figure C200410059158D00141
在本发明中,是将接口组成部分按层进行划分:接口本身的属性和函数、链路层的属性和函数、设备层的属性和函数。这些属性的赋值不是由IFNET在代码中赋值,而是根据注册信息通知各层的组成模块自己来赋值。
组成模块:用于对网络中各层报文进行封装或解封装处理,且组成模块分别与接口类创建模块创建的接口类对应;
本发明提供的装置中,所述的接口管理模块仅通过接口类对应的组成模块的回调函数调用所述的接口类对应的组成模块,从而为便于接口类的剪裁提供了基础。
各接口类的组成模块分别包括相应的子模块:网络层和链路层子模块,并可选地包括设备层子模块,各子模块分别用于完成各层报文的封装/解封装处理,各层子模块分别下挂着各自的处理函数,包括转发函数和控制函数等,且各层子模块在接口管理模块中分别记录着各自的回调函数;本发明中,所述组成模块的组成及功能与现有技术描述的组成模块的组成及功能是完全一样的,只是所述组成模块与接口管理模块的关系不再是在接口管理模块中通过代码写死,必须修改代码才能实现针对组成模块的修改,而是采用将组成模块与接口管理模块分离的技术方案,组成模块通过注册,生成一个接口类,接口管理模块只操作注册的接口类,对应的各接口类中的指针是指向具体的组成模块的,所以接口管理模块操作所述指针时就相当于操作接口类对应的组成模块;
同时,对于接口对象不仅有属性,而且具有事件,当事件发生时,IFNET管理模块(即接口管理模块)需要主动调用相应的事件函数,这样,每个接口类均能处理自己的命令字,而其他接口类的命令字则不可能处理该接口类的命令字,从而减少了命令字的判断,提高系统效率;因此,在各组成模块下还需要下挂相应的事件函数。
基于上述本发明提供的装置,本发明还提供了一种网络接口管理的方法,下面将结合附图对本发明所述的方法作进一步的说明。
所述的方法主要包括以下步骤:
通过接口类模板输入需要创建的接口类的属性信息和回调函数,并建立与该接口类对应的组成模块,所述的接口类的属性信息包括但不限于接口类型和接口名称,所述的回调函数包括网络层子模块的回调函数、链路层子模块的回调函数和接口事件的回调函数,并可选地包括设备层子模块的回调函数;
接口管理模块初始化过程中,根据接口类模板字段,填充所述的属性信息和回调函数信息,将接口类模板保存在IFNET中,形成接口类注册表,所述的接口类注册表只记录接口的组成模块的接口指针(即回调函数)、接口类型以及路由类型等,而接口本身的属性由链路层组成模块赋值。
完成上述接口类创建过程后,则由接口管理模块根据输入的接口类注册信息调用接口类对应的组成模块进行对应的接口管理操作。
所述的接口管理操作包括:
(1)定义接口的组成,例如:
typedef struct tagIFNET
{
//基本属性
  long ulType;
  char szName[48];
  long ulFlag;
  ...
//接收发送函数指针
  long(*if_pfReceived)(struct tagIFNET*,mbuf*);
  long(*if_pfOutput)(mbuf*);
  ...
//控制函数指针
  long(*if_pfLinkDownlOCtl)(struct tagIFNET*,long,void*);
  long(*if_pfLinkUplOCtl)(struct tagIFNET*,long,void*);
 ...
}
(2)创建、删除、维护接口;
(3)响应接口各层上报的信息。
下面将对涉及的部分接口管理过程作进一步说明:
如图2所示,接口实例的创建过程,具体包括以下步骤:
步骤21:输入待创建接口实例的属性信息,所述的接口实例的属性信息包括接口的名称或设备节点;
步骤22:根据输入的接口实例的属性信息确定该接口实例所属的接口类,具体可以为:根据接口命名规则解析输入的接口名称,遍历注册的接口类,便可以找到该接口实例所属的接口类;
步骤23:由所属的接口类对应的组成模块根据所述的接口实例的属性信息对所述接口实例进行初始化,具体包括:
步骤231:申请内存赋给接口对象指针,根据接口类的属性给接口对象进行初始化,通知各个组成模块各自进行初始化,也就是各自对该接口对象的属性、函数指针赋值,以便于根据相应的指针调用各属性、函数;
步骤232:根据接口类注册表中的信息,调用接口组成模块的回调函数,通知接口组成模块对接口进行初始化,组成模块给自己所管辖的属性赋值,挂靠相应的转发函数和控制函数;所述的对接口进行初始化具体为给接口实例的属性赋值,IP层只赋IP相关的,链路层只赋与链路层有关的,给接口实例的转发函数、控制函数赋值,同样也是只给各自相关的赋值;
步骤24:上报创建接口实例事件,激活接口实例,具体处理过程为:要求设备驱动报UP(挂起)事件,表示接口开始活动,若设备驱动认为底层已经就绪,则主动向链路层报UP事件,若链路层也认为就绪,则向接口管理报UP事件,此时接口便已经激活,并可以正常使用。
为对本发明有进一步的了解,下面给出一个Ethernet(以太网)接口创建实例的部分代码:
IFNET_S*IF_CreateByDev(DEVLINK_S*pstDev)//创建IFNET结构;
{
  IF_CLASS_S*pstlfClass;
  pstlfClass=stlfName.if_pClass;//获得接口类指针
  //增加到配置链、索引树
  ...
  //调用接口类公共接口(即组成模块的回调函数)对接口初始化,公共接口是注册接口类的时候注册上来的接口,通过该接口可以调用通知组成模块来初始化接口实例的相关部分,如:通知ethernet模块来对接口实例进行初始化,由于是注册的类,接口管理模块会按统一的方式处理,也就是不管是Ethernet接口还是其他类型的接口,都是按照这种方式处理,也就模拟类的“抽象类中的函数名进行调用,但执行的是派生类的具体实例,从而实现多态性”;
  for(i=0;i<3;i++)
  {
      pstlfClass->if_pstLayer(i)->pflF_InitlF(plf,i,&ulRet);//红色为IP层ethernet、驱动注册的组件接口,pflF_InitlF为接口中的方法;
  }
  /*通知注册函数,通知接口创建*/
  pstAddNotifyFnLink=if_gpstAddlfNotifyHead;
  while(pstAddNotifyFnLink)/*逐个调用接口创建通知函数*/
  {
         ((IF_PTR_NOTIFYFN)pstAddNotifyFnLink->if_pfNotifyFn)(plf);
         pstAddNotifyFnLink=pstAddNotifyFnLink->if_pNext;
  }
  return plf;
}
可以看出,在创建接口过程中,首先需要根据接口名称解析出是创建Ethernet接口,则定位到Ethernet接口类指针pstlfClass,申请内存后调用pstlfClass中保存的链路层接口:pstlfClass->if pstLayer(i)->pflF_InitlF(plf,i,&ulRet);要求链路层进行初始化,也就是通知Ethernet模块(本接口的链路层=Ethernet)对该接口进行初始化,也就是接口管理通知链路层进行初始化,接口管理模块并不知道目前的链路层是哪个模块,从而实现统一化调用,符合多态性要求。
接口对象事件触发的处理过程包括:
接口管理模块通过相应的控制函数感知接口对象发生某个事件时,根据接口对象确定其所属的接口类,并根据该接口类对应的接口类注册信息获得相应的接口事件的回调函数,最后,根据所述接口事件的回调函数调用该接口类型的事件函数,触发接口对象事件的相应处理过程。接口对象事件触发是指通知外部处理模块对相应的事件进行处理,例如:一个windows窗口上有一个按钮,单击按钮时,窗口类产生一个click事件,我们可以在click事件中编写代码,如:弹出hello world,但实际上窗口类本身有大量的事件处理代码,只是提供了一个可以捕获该事件的并编写需要代码的地方。也就是说,接口本身的事件处理,内部已经处理,接口对象事件触发是解决如何通知外部模块进行事件处理的过程,本发明中采用回调函数通知外部模块,回调函数是由外部提供的,外部处理模块可以在模块中添加自己的具体处理方式,在外部看起来是就是事件触发了。
本发明中,可以根据产品的不同在接口类事件回调函数中,调用其他模块的通知函数,由于已经细化到具体接口类型,因此通知函数有针对性,减少了判断层次,提高了运行效率。
例如可以通过下述代码创建接口事件通知函数:
/*通知注册函数,通知接口创建*/
   pstAddNotifyFnLink=if_gpstAddlfNotifyHead;
while(pstAddNotifyFnLink)/*逐个调用接口创建通知函数*/
{
      ((IF_PTR_NOTlFYFN)pstAddNotifyFnLink->if_pfNotifyFn)(plf);
      pstAddNotifyFnLink=pstAddNotifyFnLink->if_pNext;
}
这样,外部模块在初始化时将自己的通知函数注册上去,注册后形成一个单向链表,使得接口管理模块可以方便地逐个调用链上的通知函数,对外部模块来说就是触发了相应的接口事件。
本发明中,接口类型扩展的处理过程包括:
如图3所示,当需要进行接口类型的扩展,即创建新的接口类时,首先需要针对该接口类创建相应的组成模块,基于不同的组成模块便可以组建不同的接口类,增加相关组成模块,即编写新的组成模块是创建新的接口类的必要条件,通常组成模块可能包括网络层子模块和链路层子模块,如图3中的IP模块、Ethernet模块、PPP模块等;然后,将所述组成模块的各接口(即回调函数)通过接口类模板在接口管理模块中注册,即将组成模块包含的各子模块下挂于接口管理模块上,便于接口管理模块的调用和管理,如图3中接口类注册表中相应表项的网络层回调函数指向IP模块,链路层回调函数分别指向Ethernet模块和PPP模块,这样,便实现了扩展创建一种新的接口类,而不需要修改编译IFNET管理模块内部代码就可以完成接口类的扩展,从而完美实现封装性。
假如要扩展一个目前不存在的接口类型K16,K16的组成模块=IP+KK+KKDrv,其中KK是K16类型对应的链路层模块,由于IP是大家共用的,已经存在,那么就编写KK模块和KKDrv模块,编写好后在接口管理模块中注册即可,具体代码如下:
stlfClass.if_ulType=K16;
     stlfClass.if_pstLayer(0)=IPlnitlF;//IP模块的接口指针
     stlfClass.if_pstLayer(1)=KKlnitlF;//KK模块的接口指针
     stlfClass.if_pstLayer(2)=KKDrvlnitlF;//KK驱动的接口指针
     //属性赋值
     stlfClass.if_ulVTFlag=0;/*VT接口标志0:普通接口类型1:是VT接
口2:VA接口*/
     stlfClass.if_ulProperty
IF_FLAG_ETHERNETllF_FLAG_INTERFACE;
     ......
     g_pstlfCfgVtbl->pflF_Register_IFClass(&stlfClass);//向接口管理模块注册;
可以看出,本发明中接口类的扩展仅需要编写上述代码即可。
本发明中,接口管理中涉及的接口类型裁剪的处理过程为:
根据待删除接口类的属性信息确定其接口类注册代码和对应的接口组成模块,删除相应接口类的组成模块,并在注册函数中删除接口类注册行代码就实现接口类型的裁剪,不需要改动IFNET管理模块内部代码。
例如,要删除注册的K16类型,则直接删除上面的注册代码就行!而不需要接口管理模块的参与。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。

Claims (11)

1、一种网络接口管理的装置,其特征在于包括:
接口类创建模块:提供创建各种接口类的接口类模板,根据所述的接口类模板进行接口类注册信息的输入,创建相应的接口类,包括设定针对所述接口类对应的组成模块及其回调函数;
接口管理模块:用于对接口类及其包含的接口实例进行管理,并根据接口类创建模块确定的回调函数分别调用各个接口类对应的组成模块;
组成模块:与接口类创建模块创建的接口类对应,分别用于对网络中各自接口类的各层报文进行封装或解封装处理。
2、根据权利要求1所述的网络接口管理的装置,其特征在于,所述的接口管理模块还包括:
接口创建模块:用于根据输入的需要创建的接口的接口信息确定与其对应的接口类,根据所述接口类的接口类注册信息及对应的组成模块进行接口实例的创建。
3、根据权利要求1或2所述的网络接口管理的装置,其特征在于,所述的接口类模板用于描述一个接口类的组成,且需要通过所述的接口类模板输入的接口类注册信息包括:
描述接口类属性的接口类属性信息;
用于调用该接口类组成模块的组成模块回调函数;
用于根据接口事件调用对应处理操作命令字的接口事件回调函数。
4、根据权利要求1或2所述的网络接口管理的装置,其特征在于,所述的接口管理模块仅通过接口类对应的组成模块的回调函数调用所述的接口类对应的组成模块,所述的组成模块还包括在创建接口实例时负责接口实例属性、转发函数和控制函数的初始化处理,并将所述属性及函数分别下挂于对应的组成模块上。
5、一种基于上述装置的网络接口管理的方法,其特征在于包括:
A、建立待创建接口类的组成模块,通过接口类模板输入接口类注册信息进行接口类的创建,将所述组成模块基于所述的接口类注册信息注册于接口管理模块中;所述组成模块与接口类创建模块创建的接口类对应,分别用于对网络中各自接口类的各层报文进行封装或解封装处理;
B、接口管理模块根据输入的接口类注册信息调用接口类对应的组成模块进行对应的接口管理操作。
6、根据权利要求5所述的网络接口管理的方法,其特征在于,所述的步骤A进一步包括:
通过接口类模板输入需要创建的接口类的属性信息和回调函数,并建立该接口类对应的组成模块,所述的回调函数包括组成模块的回调函数和接口事件的回调函数,且所述的组成模块的回调函数包括组成模块包含的各个子模块各自对应的回调函数。
7、根据权利要求6所述的网络接口管理的方法,其特征在于,所述的接口类的属性信息包括:接口类型和接口名称。
8、根据权利要求5所述的网络接口管理的方法,其特征在于,步骤B所述的接口管理操作包括:
定义接口的组成;
创建、删除、维护接口;
响应各层接口上报的信息。
9、根据权利要求5或8所述的网络接口管理的方法,其特征在于,所述的步骤B包括接口实例的创建过程,具体为:
根据输入的待创建接口实例的属性信息确定其所属的接口类;
由所属的接口类对应的组成模块根据所述的接口实例的属性信息对所述接口实例进行初始化,包括针对接口属性及对应的控制函数、转发函数和接口事件函数的初始化,并设置各属性及函数的回调函数,通过所述的回调函数将各属性及函数下挂于组成模块上;
上报创建接口实例事件,激活接口实例。
10、根据权利要求5或8所述的网络接口管理的方法,其特征在于,所述的步骤B包括删除接口类的操作,具体为:
根据待删除接口类的属性信息确定其接口类注册代码和对应的接口组成模块,将确定的接口类注册代码和对应的接口组成模块删除。
11、根据权利要求5或8所述的网络接口管理的方法,其特征在于,所述的步骤B包括触发接口事件的处理过程,具体为:
接口管理模块感知接口对象事件发生后,根据接口对象确定其所属的接口类;
根据确定的接口类的接口类注册信息获得接口事件的回调函数,并调用该接口事件的回调函数进行接口事件的处理。
CNB2004100591582A 2004-08-11 2004-08-11 一种网络接口管理的装置及方法 Expired - Fee Related CN100512324C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2004100591582A CN100512324C (zh) 2004-08-11 2004-08-11 一种网络接口管理的装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2004100591582A CN100512324C (zh) 2004-08-11 2004-08-11 一种网络接口管理的装置及方法

Publications (2)

Publication Number Publication Date
CN1735094A CN1735094A (zh) 2006-02-15
CN100512324C true CN100512324C (zh) 2009-07-08

Family

ID=36077287

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100591582A Expired - Fee Related CN100512324C (zh) 2004-08-11 2004-08-11 一种网络接口管理的装置及方法

Country Status (1)

Country Link
CN (1) CN100512324C (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2731300B1 (en) 2011-07-21 2019-02-13 Huawei Technologies Co., Ltd. Interface register method and device for network device to join cluster system
CN104539506A (zh) * 2015-01-27 2015-04-22 浪潮集团有限公司 一种网络传输服务构件及网络传输系统
CN108076007A (zh) * 2016-11-10 2018-05-25 阿里巴巴集团控股有限公司 一种接口的实现方法、装置和设备
CN109918061B (zh) * 2019-02-13 2022-06-14 福建星网智慧软件有限公司 基于安卓系统的跨平台接口中间件实现方法和装置
CN111478805B (zh) * 2020-04-01 2023-02-21 北京中科网威信息技术有限公司 一种防火墙的硬件面板状态监测方法及装置
CN114006927B (zh) * 2021-11-01 2024-02-02 中国工商银行股份有限公司 业务报文的处理方法及其处理装置、电子设备、存储介质

Also Published As

Publication number Publication date
CN1735094A (zh) 2006-02-15

Similar Documents

Publication Publication Date Title
CN104932364B (zh) 一种Modbus通讯协议的OPC UA转换装置及方法
US7865597B2 (en) Method for smart device network application infrastructure (SDNA)
AU685335B2 (en) A system for use with a computer network
CN104243265B (zh) 一种基于虚拟机迁移的网关控制方法、装置及系统
CN103560943B (zh) 支持海量数据实时处理的网络分析系统和方法
CN101420437B (zh) 一种原型系统与hla仿真系统的接口设备
CN108616506B (zh) 一种智能建筑实时数据分布式集成控制方法
CN107819742A (zh) 一种动态部署网络安全服务的系统架构及其方法
CN108092803A (zh) 网络功能虚拟化环境中实现网元级并行化服务功能的方法
CN105871643B (zh) 基于路由协议的网络运行仿真方法
CN1063898C (zh) 模拟移动通信网的集中操作维护方法
CN100364275C (zh) 一种通信网络管理方法
CN104683190A (zh) 一种网管被管网络模拟系统及其模拟方法
CN108768714A (zh) 一种数据中心综合管理系统及其网络安全实现方法
CN100512324C (zh) 一种网络接口管理的装置及方法
CN101924658B (zh) 一种接入设备的告警屏蔽方法
CN106130897A (zh) 基于路由模拟的性能优化方法
CN114385126B (zh) 一种基于K8s的多租户深度学习模型研发系统及方法
CN110661629B (zh) 一种网络拓扑发现方法和装置
CN106850614A (zh) 多功能数字化网络联调装置
GB2344963A (en) Object-oriented network management system
CN108768701A (zh) 一种物联网传感器节点故障标记方法及装置
CN103684904A (zh) 基于ip三网融合网络监控系统
AU7558094A (en) A management agent system for the support of multiple network managers, and a method for operating such a system
CN103684881B (zh) 一种网络建模方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090708

Termination date: 20170811