Soquete de pacote no modo promíscuo recebendo apenas tráfego local

Eu tenho um soquete criado comsocket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)), e eu configurei em modo promíscuo usando:

struct ifreq ifr;
strncpy((char*)ifr.ifr_name, interface, IF_NAMESIZE);
if(ioctl(sock, SIOCGIFINDEX, &ifr)<0) fail(2);

struct packet_mreq mr;
memset(&mr, 0, sizeof(mr));
mr.mr_ifindex = ifr.ifr_ifindex;
mr.mr_type = PACKET_MR_PROMISC;
if(setsockopt(sock, SOL_PACKET, PACKET_ADD_MEMBERSHIP, &mr, sizeof(mr)) < 0) fail(2);

O problema é que quando eu faço umread() a partir do soquete, ele só retorna os dados que chegam ou chegam ao meu computador.

Como faço para ler e processar todos os pacotes na rede?

Wireshark mostra todos os pacotes bem, então eu sei que não é o meu computador ou NIC.ifconfig relata que éPROMISC quando está correndo.

questionAnswers(4)

yourAnswerToTheQuestion