linux 网桥代码分析 二 网桥初始化
2014-11-04 17:00
316 查看
本节主要分析网桥初始化相关的代码
对于网桥初始化所需要做的功能,主要有以下几项
1、CAM表的初始化
2、注册网桥相关的网络防火墙钩子函数
3、向通知链表中注册网桥的回调函数,处理网桥感兴趣的一些事件
4、设置网桥的ioctl,以便处理应用层添加网桥、删除网桥的需求
5、注册网桥处理回调函数,在接收封包处理函数netif_receive_skb中用来处理网桥设备
而网桥相关的初始化,主要是由函数br_init来完成的。
下面是br_init的代码
其完成的功能有:
1、调用stp_proto_register进行stp相关的初始化
2、调用br_fdb_init进行CAM表的初始化
3、调用register_pernet_subsys,为bridge模块注册网络命名空间。而br_net_ops的 init函数为NULL,所以调用register_pernet_subsys并没有在/proc目录下生成任何与bridge相关的目录,如果我们想在/proc下生成bridge相关的子目录或子文件,我们可以自己写init函数。
关于register_pernet_subsys函数的详细处理流程可看我以前的文档register_pernet_subsys相关学习
static structpernet_operations br_net_ops = {
.exit = br_net_exit,
};
4、调用函数br_netfilter_init,注册网络防火墙相关的钩子函数,主要是实现ebtables相关的功能
5、调用函数register_netdevice_notifier,向通知链中注册网桥感兴趣的信息。
6、调用函数br_netlink_init,进行netlink的初始化
7、调用brioctl_set,设置网桥相关的ioctl回调函数br_ioctl_deviceless_stub,
8、设置br_handle_frame_hook的回调函数
对于网桥初始化所需要做的功能,主要有以下几项
1、CAM表的初始化
2、注册网桥相关的网络防火墙钩子函数
3、向通知链表中注册网桥的回调函数,处理网桥感兴趣的一些事件
4、设置网桥的ioctl,以便处理应用层添加网桥、删除网桥的需求
5、注册网桥处理回调函数,在接收封包处理函数netif_receive_skb中用来处理网桥设备
而网桥相关的初始化,主要是由函数br_init来完成的。
下面是br_init的代码
其完成的功能有:
1、调用stp_proto_register进行stp相关的初始化
2、调用br_fdb_init进行CAM表的初始化
3、调用register_pernet_subsys,为bridge模块注册网络命名空间。而br_net_ops的 init函数为NULL,所以调用register_pernet_subsys并没有在/proc目录下生成任何与bridge相关的目录,如果我们想在/proc下生成bridge相关的子目录或子文件,我们可以自己写init函数。
关于register_pernet_subsys函数的详细处理流程可看我以前的文档register_pernet_subsys相关学习
static structpernet_operations br_net_ops = {
.exit = br_net_exit,
};
4、调用函数br_netfilter_init,注册网络防火墙相关的钩子函数,主要是实现ebtables相关的功能
5、调用函数register_netdevice_notifier,向通知链中注册网桥感兴趣的信息。
6、调用函数br_netlink_init,进行netlink的初始化
7、调用brioctl_set,设置网桥相关的ioctl回调函数br_ioctl_deviceless_stub,
8、设置br_handle_frame_hook的回调函数
相关文章推荐
- linux 网桥代码分析 二 网桥初始化
- Linux-kernel 网桥代码分析(一)
- linux 网桥代码分析 四 网桥转发数据库的代码分析
- Linux-kernel网桥代码分析(二)
- Linux内核初始化高端内存的过程(代码分析)
- linux 网桥代码分析 一 网桥概念与网桥相关的数据结构
- Linux 网桥代码分析 五 网桥端口设备接收数据包的处理分析
- linux 网桥代码分析 三 网桥及网桥端口的添加与删除
- Linux USB Host-Controller的初始化代码框架分析【转】
- Linux-kernel 网桥代码分析
- Linux 网桥代码分析 六 网桥数据转发函数分析
- grant table 相关代码分析(基于linux2.6.32) 初始化与构建部分
- Linux USB Host-Controller的初始化代码框架分析
- linux里的nvme驱动代码分析(加载初始化)
- MBR分析(1): 代码获取与初始化
- 嵌入式Linux内核移植相关代码分析
- Linux操作系统的权限代码分析
- Linux启动代码分析
- linux内核代码分析之asm.s
- Freescale mx27 DDR 初始化代码分析