1.关于struct hlist_node name_hlist
网络设备名以散列表的形式组织到dev_name_head散列表中,这样就可以通过网络设备名快速地对应到相应的设备。
2.关于网络设备状态state
3.关于netdev_features_t features;
4.关于unsigned int flags;
标识接口特性
这个UP、BROADCAST、RUNNING、MULTICAST就是flags,对应 IEFUP、 IEFBROADCAST、 IEFRUNNING、 IEFMULTICAST。
5.unsigned int priv_flags;
网桥有使用到这个参数,unsigned int priv_flags = IEF_EBRIDGE;
6.关于unsigned int promiscuity;
这是一个整数,每一次操作,这个参数加一或者减一,当promiscuity为0时,网卡退出混杂模式。之所以设置为整数,是因为,多个应用程序都可能会要求混杂模式,因此进入混杂模式时加一,退出混杂模式时减一。
1.dev_get_by_name()
/**
* dev_get_by_name - find a device by its name
* @net: the applicable net namespace
* @name: name to find
*
* Find an interface by name. This can be called from any
* context and does its own locking. The returned handle has
* the usage count incremented and the caller must use dev_put() to
* release it when it is no longer needed. %NULL is returned if no
* matching device is found.
*/
struct net_device *dev_get_by_name(struct net *net, const char *name)
{
struct net_device *dev;
rcu_read_lock();
dev = dev_get_by_name_rcu(net, name);
if (dev)
dev_hold(dev);
rcu_read_unlock();
return