Gniazdo pakietowe w trybie swobodnym odbiera tylko ruch lokalny

Mam utworzone gniazdosocket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)), i ustawiłem go w tryb promiscuous przy użyciu:

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);

Problem polega na tym, że kiedy to robięread() z gniazda zwraca tylko dane pochodzące z mojego komputera lub do niego przychodzące.

Jak mogę go odczytać i przetworzyć wszystkie pakiety w sieci?

Wireshark pokazuje wszystkie pakiety w porządku, więc wiem, że nie jest to mój komputer ani karta sieciowa.ifconfig donosi, że takPROMISC kiedy jest uruchomiony.

questionAnswers(4)

yourAnswerToTheQuestion