在内核设置混杂,直接调用dev_set_promiscuity
()函数即可,唯一需要注意的是:
调用前必须使用rtnl_lock
()加锁;调用后必须使用rtnl_unlock()解锁。
设置混杂模式:
-
struct net_device *dev;
-
if( (dev = dev_get_by_name( &init_net, "eth0")) != NULL) {
-
rtnl_lock(); //必须在设置前加锁
-
dev_set_promiscuity( dev, 1);
-
rtnl_unlock();
-
}
取消混杂模式:
-
struct net_device *dev;
-
if( (dev = dev_get_by_name( &init_net, "eth0")) != NULL) {
-
rtnl_lock();
-
dev_set_promiscuity( dev, -1);
-
rtnl_unlock();
-
}
//END
阅读(2045) | 评论(0) | 转发(0) |