WEB开发网
开发学院软件开发Java 网桥在内核的实现 阅读

网桥在内核的实现

 2009-09-10 00:00:00 来源:WEB开发网   
核心提示: 通过下面的图能更好的理解这个结构: 图片看不清楚?请点击这里查看原图(大图),接下来简要的介绍一下网桥的初始化,网桥在内核的实现(3), 网桥的初始化和一般网络设备的初始化很相似,只不过由于它是虚拟设备,err=stp_proto_register(&br_stp_proto);if(err&l

通过下面的图能更好的理解这个结构:

网桥在内核的实现

图片看不清楚?请点击这里查看原图(大图)。 

接下来简要的介绍一下网桥的初始化。

网桥的初始化和一般网络设备的初始化很相似,只不过由于它是虚拟设备,因此这里还有一点不同。

首先来看内核的网络模块的初始化br_init,也就是初始化上面介绍的数据结构:

Java代码

static int __init br_init(void) 
{ 
 int err; 
///stp的注册。 
 err = stp_proto_register(&br_stp_proto); 
 if (err < 0) { 
 printk(KERN_ERR "bridge: can't register sap for STP\n"); 
 return err; 
 } 
 
///forwarding database的初始化 
 err = br_fdb_init(); 
 if (err) 
 goto err_out; 
///网桥的netfilter钩子函数的初始化。 
 err = br_netfilter_init(); 
 if (err) 
 goto err_out1; 
///注册到netdevice的通知链上 
 err = register_netdevice_notifier(&br_device_notifier); 
 if (err) 
 goto err_out2; 
 
 err = br_netlink_init(); 
 if (err) 
 goto err_out3; 
///安装网络设备的do_ioctl函数,也就是提供给用户空间ioctl接口。 
 brioctl_set(br_ioctl_deviceless_stub); 
 br_handle_frame_hook = br_handle_frame; 
 
 br_fdb_get_hook = br_fdb_get; 
 br_fdb_put_hook = br_fdb_put; 
 
 return 0; 
......................................... 
 return err; 
}

上一页  1 2 3 4 5  下一页

Tags:网桥 内核 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接