Я использую libpcap для прослушивания трафика. Я хотел бы сделать это на активном в данный момент сетевом устройстве (например, на том, которому назначен IP-адрес и т. д.). Как лучше всего это сделать? Я предполагаю, что мне нужно будет сделать следующее:
pcap_findalldevs(&alldevs, errbuf)
чтобы получить все сетевые устройства, затем выполните цикл и проверьте, какое из них активно в данный момент.
Изменить: следующая функция
(pcap_lookupnet(dev, &net, &mask, errbuf)
возвращает сетевой адрес и маску подсети для сетевого устройства. Я провел несколько тестов с различными адаптерами Ethernet на своем компьютере, и он возвращает -1, когда я вызываю его на адаптере, который не подключен к сети. Будет ли это пуленепробиваемым способом получить активный интерфейс? Есть ли крайние случаи, которые он пропустит?