Module: wine Branch: master Commit: d45f9144a14d689ea8563c6f9e91ae7b14c37b82 URL: http://source.winehq.org/git/wine.git/?a=commit;h=d45f9144a14d689ea8563c6f9e...
Author: André Hentschel nerv@dawncrow.de Date: Fri Aug 15 22:48:14 2014 +0200
wpcap: Implement pcap_loop.
---
dlls/wpcap/wpcap.c | 18 ++++++++++++++++++ dlls/wpcap/wpcap.spec | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/dlls/wpcap/wpcap.c b/dlls/wpcap/wpcap.c index b80a4e0..ab1de8f 100644 --- a/dlls/wpcap/wpcap.c +++ b/dlls/wpcap/wpcap.c @@ -123,6 +123,24 @@ int CDECL wine_pcap_lookupnet(const char *device, unsigned int *netp, unsigned i return pcap_lookupnet(device, netp, maskp, errbuf); }
+int CDECL wine_pcap_loop(pcap_t *p, int cnt, + void (CALLBACK *callback)(u_char *, const struct pcap_pkthdr *, const u_char *), + unsigned char *user) +{ + TRACE("(%p %i %p %p)\n", p, cnt, callback, user); + + if (callback) + { + PCAP_HANDLER_CALLBACK *pcb; + pcb = HeapAlloc(GetProcessHeap(), 0, sizeof(PCAP_HANDLER_CALLBACK)); + pcb->pfn_cb = callback; + pcb->user_data = user; + return pcap_loop(p, cnt, pcap_handler_callback, (unsigned char*)pcb); + } + + return pcap_loop(p, cnt, NULL, user); +} + int CDECL wine_pcap_major_version(pcap_t *p) { TRACE("(%p)\n", p); diff --git a/dlls/wpcap/wpcap.spec b/dlls/wpcap/wpcap.spec index 92b5052..d6116d2 100644 --- a/dlls/wpcap/wpcap.spec +++ b/dlls/wpcap/wpcap.spec @@ -39,7 +39,7 @@ @ stub pcap_live_dump_ended @ cdecl pcap_lookupdev(ptr) wine_pcap_lookupdev @ cdecl pcap_lookupnet(str ptr ptr ptr) wine_pcap_lookupnet -@ stub pcap_loop +@ cdecl pcap_loop(ptr long ptr ptr) wine_pcap_loop @ cdecl pcap_major_version(ptr) wine_pcap_major_version @ cdecl pcap_minor_version(ptr) wine_pcap_minor_version @ stub pcap_next