为什么struct net_device
有一个字段uc_promisc
?如何使用此字段?
谢谢大家!
答案 0 :(得分:2)
当不支持单播过滤的设备必须侦听多个单播地址时,根据dev->uc_count
和dev->uc_promisc
,它会被置于promiscous模式。检查__dev_set_rx_mode()
功能。
许多设备实施ndo_set_rx_mode()
,并通过ndo_set_rx_mode()
设置其单播(和多播)过滤器。对于未实现该设备的设备,Linux将设备设置为混杂模式,并使用dev->uc_promisc
跟踪该事实。
因此混杂模式有几个标志:
dev->flags & IFF_PROMISC
表示设备处于混杂模式。dev->gflags & IFF_PROMISC
表示用户已请求混杂模式。dev->uc_promisc
表示已启用混杂模式(实际上,其引用计数已递增),因为需要在未实现ndo_set_rx_mode()
的设备中侦听其他单播地址。答案 1 :(得分:0)
听起来这可能是一种在设备上启用(或跟踪启用/禁用状态)promiscuous mode的方法。