2024年4月28日发(作者:)
vxworks 对于arp的处理
默认分类 2010-05-22 23:54:15 阅读144 评论0 字号:大中小 订阅
虽然是vxworks2.0.2版本中的,但是与老土的BSD代码基本一样,事实上,最新的ip协
议栈的代码上虽然加上不少新鲜的功能,但是其主体也依旧一样.
ifnet
也就是协议栈中的接口的概念,跟arp相关处理的最重要的三个成员是:
• if_ioctl 用于接口上的ioctl命令;
• if_resolve 用于进行地址解析的函数;
• if_output 用于在接口上发送数据包;
在ipAttach时,这三个值都进行了初始化:
pIfp->if_ioctl = (FUNCPTR) ipIoctl;
pIfp->if_output = ipOutput;
pIfp->if_resolve = muxAddrResFuncGet(, 0x800);
其中if_resolve的值,实际上就是arpresolve函数.
in_ifaddr
in_ifaddr是ifaddr的一种特殊形式,即ipv4版本的的ifaddr.当我们给接口配置ip地
址时,实际上要生成一个in_ifaddr结构体,并与ifnet相关联.那么它与arp最相关的内容实
际上是在ifaddr结构体中,它们是:
• ifa_rtrequest 这是一个处理arp相关的函数,在后面我们就会解释到它的用处.
• ia_ifp 与地址相关联的接口.
sockaddr_dl
数据链路层地址,它的作用就是保存MAC地址,其中与ARP处理相关的内容包括:
• sdl_len 长度,如果为0,表示mac信息无效,否则就是有效.这点很重要
• sdl_data 如果有效,保存有mac信息.
llinfo_arp
它就是arp控制结构,整个系统中的llinfo_arp通过一个双向链表连接起来,链表头就是
全局变量llinfo_arp.(C语言中,总是喜欢将全局变量定义成结构体的名字).其中现在我们关
心的内容包括
• la_rt 指向相关的rtentry,关于rtentry,后面马上就要讲到了.


发布评论