[Winpcap-users] sniffing multiple interfaces
Vasanth Neel
vsn.vasanth at gmail.com
Wed Nov 21 00:11:24 PST 2012
Hello Everyone,
I had a requirement to sniff multiple interfaces to rtp pckets. Our
application is stable when we sniff single interface but when i try to
sniff multiple interface from single or multiple thread each opens the
pcap_t devices seperately and uses pcap_next_ex to read the packets i got
packet loss in large amount. i have tried to set the timeot to different
levels like from 1 to 500 nothing seems to work.. here is the code sample
that process the the multiple interfaces,
while(IsRunning())
{
pcap_pkthdr* header;
const u_char* pkt_data;
bool bProcess = true;
if(pcap_next_ex(m_hPcap1,&header,&pkt_data) >= 0)
{
ETHERNETHEADER* pEthernetHeader = (ETHERNETHEADER *) pkt_data;
IPHEADER* pIpHeader = (IPHEADER*)((char*)pEthernetHeader +
sizeof(ETHERNETHEADER));
u_char* ipPacketEnd = (u_char*)pIpHeader + ntohs(pIpHeader->ip_len);
PacketSize = (ipPacketEnd - pkt_data)+100; // winpcap padding
u_char* pPacket = (u_char*) malloc(PacketSize);
memcpy(pPacket,pkt_data,PacketSize);
m_SafeQueue.Enqueue(pPacket);
}
if(pcap_next_ex(m_hPcap2,&header,&pkt_data) >= 0)
{
ETHERNETHEADER* pEthernetHeader = (ETHERNETHEADER *) pkt_data;
IPHEADER* pIpHeader = (IPHEADER*)((char*)pEthernetHeader +
sizeof(ETHERNETHEADER));
u_char* ipPacketEnd = (u_char*)pIpHeader + ntohs(pIpHeader->ip_len);
PacketSize = (ipPacketEnd - pkt_data)+100; // winpcap padding
u_char* pPacket = (u_char*) malloc(PacketSize);
memcpy(pPacket,pkt_data,PacketSize);
m_SafeQueue.Enqueue(pPacket);
}
}
What i am doing wrong in this? also i have seems some suggestion to use
waitformultipleevents but i am not sure how to do that. any suggestions
appreciated.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winpcap.org/pipermail/winpcap-users/attachments/20121121/f5bc14ee/attachment.html>
More information about the Winpcap-users
mailing list