=?UTF-8?Q?Andr=C3=A9=20Hentschel=20?=: wpcap: Implement pcap_loop.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Aug 18 16:08:48 CDT 2014
Module: wine
Branch: master
Commit: d45f9144a14d689ea8563c6f9e91ae7b14c37b82
URL: http://source.winehq.org/git/wine.git/?a=commit;h=d45f9144a14d689ea8563c6f9e91ae7b14c37b82
Author: André Hentschel <nerv at 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
More information about the wine-cvs
mailing list