struct net_device的promiscuity域

     struct net_device的promiscuity域表示混杂模式的计数器。默写网络管理任务要求网络设备接收所有经过网格设备的数据包,而不仅仅是目的地址与该网络设备匹配的数据包,这种工作模式称为混杂模式。

    这种模式可以用于局域网段上检查网络性能或安全性,台也用于 桥接器代码中。promiscuity用于指明当前网络设备是否处于混杂模式。之所以使用计数器而不是用一个标志变量来表明混杂模式,是因为某一时刻可以有多个任务需要使用混杂模式,每个任务在进入该模式时,对promiscuity计数器加1,在退出混杂模式时对计数器减1,直到计数器的值为0时,设备才退出混杂模式,,我们可以调用函数dev_set_promiscuity函数来操作promiscuity数据域。

   无论什么时候当promiscuity的值为非零值是,struct net_device数据结构中flags域的IFF_PROMISC标志位都应置位,查看接口配置的函数需要使用flags的位值。

`struct net_device_ops` 是 Linux 内核中的一个结构体,用于定义网络设备驱动程序的操作函数。它包含了多个函数指针,这些函数指针指向网络设备驱动程序需要实现的各种操作函数。以下是 `struct net_device_ops` 的一个典型定义: ```c struct net_device_ops { int (*ndo_init)(struct net_device *dev); void (*ndo_uninit)(struct net_device *dev); int (*ndo_open)(struct net_device *dev); int (*ndo_stop)(struct net_device *dev); netdev_tx_t (*ndo_start_xmit)(struct sk_buff *skb, struct net_device *dev); u16 (*ndo_select_queue)(struct net_device *dev, struct sk_buff *skb, void *accel_priv); void (*ndo_change_rx_flags)(struct net_device *dev, int flags); void (*ndo_set_rx_mode)(struct net_device *dev); int (*ndo_set_mac_address)(struct net_device *dev, void *addr); int (*ndo_do_ioctl)(struct net_device *dev, struct ifreq *ifr, int cmd); int (*ndo_set_config)(struct net_device *dev, struct net_device *dev_old); int (*ndo_change_mtu)(struct net_device *dev, int new_mtu); int (*ndo_neigh_setup)(struct net_device *dev, struct neigh_parms *); void (*ndo_tx_timeout)(struct net_device *dev, unsigned int txqueue); struct rtnl_link_stats64* (*ndo_get_stats64)(struct net_device *dev, struct rtnl_link_stats64 *storage); // ... 其他函数指针 }; ``` 这个结构体中的每个函数指针都对应一个特定的网络设备操作,例如初始化设备、打开设备、发送数据包等。驱动程序需要实现这些函数,并在注册网络设备时将其传递给内核。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值