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