Chinaunix首页 | 论坛 | 博客
  • 博客访问: 519620
  • 博文数量: 398
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 14
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-21 16:02
个人简介

嵌入式屌丝

文章分类

全部博文(398)

文章存档

2013年(398)

我的朋友

分类: LINUX

2013-08-21 17:17:12

原文地址:路由相关的初始化(二) 作者:lwchsz

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还可被设备调用,创建设备自己的节点。
阅读(506) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~