Replace use of deprecated pcap_lookupdev()

libpcap 1.9.0 has started deprecating this function in favor
of pcap_findalldevs()
This commit is contained in:
Jon Siwek 2019-08-06 18:04:10 -07:00
parent 7521fec5b3
commit 6af1bf18ac

View file

@ -57,15 +57,38 @@ void PcapSource::OpenLive()
// Determine interface if not specified. // Determine interface if not specified.
if ( props.path.empty() ) if ( props.path.empty() )
props.path = pcap_lookupdev(tmp_errbuf); {
pcap_if_t* devs;
if ( pcap_findalldevs(&devs, tmp_errbuf) < 0 )
{
safe_snprintf(errbuf, sizeof(errbuf),
"pcap_findalldevs: %s", tmp_errbuf);
Error(errbuf);
return;
}
if ( devs )
{
props.path = devs->name;
pcap_freealldevs(devs);
if ( props.path.empty() ) if ( props.path.empty() )
{ {
safe_snprintf(errbuf, sizeof(errbuf), safe_snprintf(errbuf, sizeof(errbuf),
"pcap_lookupdev: %s", tmp_errbuf); "pcap_findalldevs: empty device name");
Error(errbuf); Error(errbuf);
return; return;
} }
}
else
{
safe_snprintf(errbuf, sizeof(errbuf),
"pcap_findalldevs: no devices found");
Error(errbuf);
return;
}
}
// Determine network and netmask. // Determine network and netmask.
uint32 net; uint32 net;