Есть raw socket.
s = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
Слушаю сокет так
length = recvfrom(s, buffer, BUF_SIZE, 0, NULL, NULL);
Принимаю пакеты со всех интерфейсов. Нужно только с одного.
Пробовал это
if (setsockopt(s, SOL_SOCKET, SO_BINDTODEVICE,
(void *)&ifr_tmp, sizeof(ifr_tmp)) < 0)
{
perror("SO_BINDTODEVICE failed");
}
Ошибки нет, но и эффекта . Собственно вопрос в том получать пакеты только с одного интерфейса или как получать все пакеты , но узнавать c какого интерфейса они пришли.
c++, raw, socket