Quantcast
Channel: Linux.org.ru: Форум (тех. форум)
Viewing all articles
Browse latest Browse all 73832

Как узнать сетевой интерфейс от которого пришел пакет на raw socket.

$
0
0

Есть 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 какого интерфейса они пришли.

 , ,


Viewing all articles
Browse latest Browse all 73832

Trending Articles