标签:混杂 模式 promisc device 网络设备 net uc
如果设备不支持单播过滤,并且要监听多个单播地址时,就要使用net_device->uc_count和net_device->uc_promisc来设置混杂模式,具体见__dev_set_rx_mode函数。
多数设备实现了ndo_set_rx_mode,并且通过该函数设置了单播过滤,没有实现这个函数的设备,由系统决定是否开启混杂模式,并且将值保存在net_device->uc_promisc中。
以下几个flags来标记混杂模式:
1. net_device->flags & IFF_PROMISC 表示设备开启混杂模式;
2. net_device->gflags & IFF_PROMISC 表示用户请求设置混杂模式;
3. net_device->uc_promisc 表示设备需要监听多个单播地址,但没有实现ndo_set_rx_mode函数,需要用此字段表示混杂模式开启状态;
如果设备支持ndo_set_rx_mode,就不会用到net_device->uc_promisc。
如果net_device->uc_promisc != 0,则设备处于混杂模式,用于监听net_device->uc列表中的地址。
当设备处于混杂模式时,net_device->flags & IFF_PROMISC为真,但是用户空间只能看见net_device->gflags & IFF_PROMISC,所以不要相信用户空间。
关于该问题,请参考StackOverflow中的讨论:
https://stackoverflow.com/questions/6666257/what-is-the-purpose-of-net-device-uc-promisc-field
标签:混杂,模式,promisc,device,网络设备,net,uc 来源: https://www.cnblogs.com/wanpengcoder/p/11748724.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。