Commit 556077e6 authored by Roman Pišl's avatar Roman Pišl Committed by Alexandre Julliard

wpcap: Implement pcap_dispatch.

parent 569c2794
......@@ -99,15 +99,6 @@ const char * CDECL pcap_datalink_val_to_name( int link )
return ret;
}
int CDECL pcap_dispatch( struct pcap *pcap, int count,
void (CALLBACK *callback)(unsigned char *, const struct pcap_pkthdr_win32 *, const unsigned char *),
unsigned char *user )
{
/* FIXME: reimplement on top of pcap_next_ex */
FIXME( "%p, %d, %p, %p: not implemented\n", pcap, count, callback, user );
return -1;
}
void CDECL pcap_dump( unsigned char *user, const struct pcap_pkthdr_win32 *hdr, const unsigned char *packet )
{
struct dump_params params = { user, hdr, packet };
......@@ -543,6 +534,38 @@ const unsigned char * CDECL pcap_next( struct pcap *pcap, struct pcap_pkthdr_win
return data;
}
int CDECL pcap_dispatch( struct pcap *pcap, int count,
void (CALLBACK *callback)(unsigned char *, const struct pcap_pkthdr_win32 *, const unsigned char *),
unsigned char *user )
{
int processed = 0;
TRACE( "%p, %d, %p, %p\n", pcap, count, callback, user );
while (processed < count)
{
struct pcap_pkthdr_win32 *hdr = NULL;
const unsigned char *data = NULL;
int ret = pcap_next_ex( pcap, &hdr, &data );
if (ret == 1)
processed++;
else if (ret == 0)
break;
else if (ret == -2)
{
if (processed == 0) return -2;
break;
}
else
return ret;
callback( user, hdr, data );
}
return processed;
}
static char *strdupWA( const WCHAR *src )
{
char *dst;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment