]> The Tcpdump Group git mirrors - libpcap/blobdiff - pcap.c
Merge branch 'master' into breakloop_poll
[libpcap] / pcap.c
diff --git a/pcap.c b/pcap.c
index 0bc1b1ea09dccaf9ef340b162482870bfe1392a3..394a5e40743d51394fe3fa7f4c34e75e5aebaaf9 100644 (file)
--- a/pcap.c
+++ b/pcap.c
@@ -2107,6 +2107,13 @@ initialize_ops(pcap_t *p)
         * be used for pcap_next()/pcap_next_ex().
         */
        p->oneshot_callback = pcap_oneshot;
+
+    /*
+     * Default breakloop operation - implementations can override
+     * this, but should call pcap_breakloop_common() before doing
+     * their own logic.
+     */
+    p->breakloop_op = pcap_breakloop_common;
 }
 
 static pcap_t *
@@ -2597,7 +2604,7 @@ pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user)
 void
 pcap_breakloop(pcap_t *p)
 {
-       p->break_loop = 1;
+       p->breakloop_op(p);
 }
 
 int
@@ -3600,6 +3607,13 @@ pcap_remove_from_pcaps_to_close(pcap_t *p)
        }
 }
 
+void
+pcap_breakloop_common(pcap_t *p)
+{
+       p->break_loop = 1;
+}
+
+
 void
 pcap_cleanup_live_common(pcap_t *p)
 {