=?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