dev_get_by_index的使用及struct net*参数
2016-06-29 21:06
295 查看
linux2.6.30里面使用dev_get_by_name通过设备名来获取网络设备实例,但是在之前的dev_get_by_name只有一个参数const char*,现在新版本的dev_get_by_name有两个参数,有如下的函数原型[Linux/net/core/dev.c]:
[cpp] view
plain copy
715 struct net_device *dev_get_by_name(struct net *net, const char *name)
716 {
717 struct net_device *dev;
718
719 rcu_read_lock();
720 dev = dev_get_by_name_rcu(net, name);
721 if (dev)
722 dev_hold(dev);
723 rcu_read_unlock();
724 return dev;
725 }
习惯了使用之前的dev_get_by_name,现在多出个struct net *net参数,感觉不知所措了。
后来发现可以使用init_net,来用做第一个参数。init_net为全局变量[Linux/net/core/net_namespace.c]
[cpp] view
plain copy
32 struct net init_net = {
33 .dev_base_head = LIST_HEAD_INIT(init_net.dev_base_head),
34 };
这样就能够获得到设备实例了:比如 dev_get_by_name(&init_net,"eth0")
struct net是一个网络名字空间namespace,在不同的名字空间里面可以有自己的转发信息库,有自己的一套net_device等等。默认情况下都是使用 init_net这个全局变量。
dev_get_by_index于此类似。
顶
0
踩
[cpp] view
plain copy
715 struct net_device *dev_get_by_name(struct net *net, const char *name)
716 {
717 struct net_device *dev;
718
719 rcu_read_lock();
720 dev = dev_get_by_name_rcu(net, name);
721 if (dev)
722 dev_hold(dev);
723 rcu_read_unlock();
724 return dev;
725 }
习惯了使用之前的dev_get_by_name,现在多出个struct net *net参数,感觉不知所措了。
后来发现可以使用init_net,来用做第一个参数。init_net为全局变量[Linux/net/core/net_namespace.c]
[cpp] view
plain copy
32 struct net init_net = {
33 .dev_base_head = LIST_HEAD_INIT(init_net.dev_base_head),
34 };
这样就能够获得到设备实例了:比如 dev_get_by_name(&init_net,"eth0")
struct net是一个网络名字空间namespace,在不同的名字空间里面可以有自己的转发信息库,有自己的一套net_device等等。默认情况下都是使用 init_net这个全局变量。
dev_get_by_index于此类似。
顶
0
踩
相关文章推荐
- 函数
- HTML网页制作:[12]使用框架结构之frameset
- hdu3578(01背包)
- mysql 5.7安装后没有data文件夹的问题
- Struts2系列:(17)ActionConfig
- Android 西班牙语字幕乱码 && 字符编码
- Sobel边缘检测算法
- 软件工程课设迭代开发第三天
- 我的CodeF水A题之路
- SQL 数据库性能问题排查
- SQL入门经典(十) 之事务
- 时间戳与字符串之间的转换
- 路由器
- HTML网页制作:[12]使用框架结构之frameset
- wordpess多用户
- JavaScript学习笔记
- Java笔记
- windows server 更改默认服务端口
- SQL入门经典(九) 之自定义函数
- LeetCode - 206. Reverse Linked List