В C я связываю сокет дейтаграммы (AF_INET, SOCK_DGRAM) с INADDR_ANY. Затем я периодически использую этот сокет для отправки и получения дейтаграмм и отслеживаю поток пакетов с помощью pcap. Проблема в том, что я не могу сказать, является ли пакет входящим или исходящим, используя pcap.
Передача/получение и мониторинг pcap выполняются в отдельных потоках, и по причинам синхронизации они не могут обмениваться данными. Я хочу отслеживать только входящие пакеты, а не отправленные, так что у кого-нибудь есть идеи, как я могу это сделать?
Я уже думал о проверке IP-адреса назначения, но не могу найти способ получить свой локальный IP-адрес. машина, на которой это работает, не имеет статического IP-адреса, не говоря уже о назначенном доменном имени, и кажется, что getsockname не работает с сокетами, привязанными к INADDR_ANY. Также пробовал использовать ioctl(sockfd, SIOCGIFCONF, &buffer), что тоже не сработало - устанавливает buffer.ifc_len=0.