Вы можете использовать следующую функцию (которая находится в net / core / dev.c):
int dev_set_promiscuity(struct net_device *dev, int inc)
Если вы хотите установить устройство в смешанном режиме, inc
должно быть 1. Чтобы сбросить смешанный режим, установите inc
в -1. Чтобы функция работала, вам нужно иметь блокировку rtnl. Чтобы получить его, вам необходимо вызвать следующие функции до и после вызова dev_set_promiscuity()
(функции находятся в net / core / rtnetlink.c):
void rtnl_lock(void);
void rtnl_unlock(void);