Я использую libpcap (и winpcap в Windows) в приложении C для мониторинга сетевого трафика. Мне нужно различать трафик загрузки и выгрузки на каждом сетевом адаптере, чтобы получить статистику скорости соединения, но выражения фильтра, используемые библиотекой, не очень легко это поддерживают (т. Е. Нет никаких операторов «входящих» / «исходящих»). ).
Один из подходов, который я рассмотрел, состоит в том, чтобы запросить IP-адрес каждого адаптера, а затем использовать фильтры, такие как src host 1.2.3.4
(для измерения загрузок) и dst host 1.2.3.4
(для измерения загрузок).
Мои вопросы:
Есть ли лучший / более простой подход, чем приведенный выше (что-то, что позволило бы мне использовать одно и то же выражение фильтра для каждого адаптера, было бы неплохо)?
Если вышеуказанный подход является подходом, то есть ли вероятность, что с одним адаптером может быть связано более 1 IP-адреса? Причина, по которой я спрашиваю, состоит в том, что структура pcap_addr
, в которой хранятся сведения об адресе одного адаптера (в struct pcap_if
), имеет следующий элемент, предполагающий, что это возможно.