为什么 struct net_device
有一个字段 uc_promisc
?这个字段怎么用?
谢谢大家!
最佳答案
当不支持单播过滤的设备必须监听多个单播地址时,根据 dev->uc_count
和 dev->uc_promisc<,它会被置于混杂模式
。检查 __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()
.
关于linux - net_device.uc_promisc 字段的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6666257/