路由相关的初始化(二)

myipv4_dst_ops.gc_thresh是一个无符号数,当路由的哈希表的表项达到这个值时,需要进行理清,从代码来看,它正好被设为 rt_hash_table的入口数,在我们的my_inet模块中为4096。 
    myip_rt_max_size是rt_hash_table的大小。myrt_cache_stat是一个struct rt_cache_stat的数组,每个CPU对应数组的一项,在单CPU系统中,只有一项。 
    完成了这些变量的初始化后,myip_rt_init调用了一个函数mydevinet_init,这是一个网络设备相关的初始化。 gifconf_list是一个gifconf_func_t函数的数组,共有NPROTO项,每个已注册的域都对应有一项,为该域的SIOCGIF处理 函数,MY_PF_INET域的处理函数是myinet_gifconf,关于这个函数的细了,我们在用到时再作分析。mydevinet_init的第 一件事情就是gifconf_list[MY_PF_INET]=myinet_gifconf。 
    myip_netdev_notifier是一个结构体struct notifier_block的变量,其主要成员为一个通知回调函数,当网络设备上有事件发生时,这个函数就会被回调。MY_PF_INET的通知回调函 数是myinetdev_event,关于这个函数,同样,我们在用到时再进行分析。变量netdev_chain是一个所有通知回调函数的链表, mydevinet_init的第二件事情就是把我们的myip_netdev_notifier结构加到这个链表中。 
    rtnetlink_links也是一个具有NPROTO项的数组,每一项都是一个结构体struct rtnetlink_link的数组,结构体含有doit,dumpit两个成员函数。myinet_rtnetlink_table总共含有九项,都是 一些路由表的维护函数,mydevinet_init的第三件事情就是rtnetlink_links[MY_PF_INET] = myinet_rtnetlink_table; 
    接下来的初始化是关于sysctl的,MY_PF_INET域有很多参数可供应用程序查询和修改,mydevinet_sysctl被注册到sysctl 的树型结构中,其结果是net节点下多了一个myipv4节点,结构跟ipv4节点基本一致。 
    最后,myipv4_devconf_dflt是一个myipv4的配置项结构,含有很多相关的配置信息,并且该结构保存的上缺省的配置信息("all" 的配置信息保存在myipv4_devconf中)。mydevinet_init调用 mydevinet_sysctl_register在/proc/sys/net/myipv4/conf下又注册了一个"default"节点。其数 据基本拷贝自myipv4_devconf。mydevinet_sysctl_register还可被设备调用,创建设备自己的节点。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值