net_device.uc_promisc字段的目的是什么?

时间:2011-07-12 14:56:36

标签: linux linux-kernel

为什么struct net_device有一个字段uc_promisc?如何使用此字段?

谢谢大家!

2 个答案:

答案 0 :(得分:2)

当不支持单播过滤的设备必须侦听多个单播地址时,根据dev->uc_countdev->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的方法。