linux2.6.30里面使用dev_get_by_name通过设备名来获取网络设备实例,但是在之前的dev_get_by_name只有一个参数const char*,现在新版本的dev_get_by_name有两个参数,有如下的函数原型[Linux/net/core/dev.c]:
- 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]
struct net是一个网络名字空间namespace,在不同的名字空间里面可以有自己的转发信息库,有自己的一套net_device等等。默认情况下都是使用 init_net这个全局变量。
dev_get_by_index于此类似。
-
顶
- 0
-
踩