Provided by: libpcap0.8-dev_1.7.4-2ubuntu0.1_amd64 bug

NAME

       pcap_breakloop - force a pcap_dispatch() or pcap_loop() call to return

SYNOPSIS

       #include <pcap/pcap.h>

       void pcap_breakloop(pcap_t *);

DESCRIPTION

       pcap_breakloop()  sets  a  flag  that  will  force  pcap_dispatch()  or pcap_loop() to return rather than
       looping; they will return the number of packets that have been processed so far, or -2 if no packets have
       been processed so far.

       This routine is safe to use inside a signal handler on UNIX or a console control handler on  Windows,  as
       it merely sets a flag that is checked within the loop.

       The  flag  is  checked  in  loops  reading  packets from the OS - a signal by itself will not necessarily
       terminate those loops - as well as in loops processing a set of packets returned by the OS.  Note that if
       you are catching signals on UNIX systems that support restarting system calls after a signal, and calling
       pcap_breakloop() in the signal handler, you must specify, when catching those signals, that system  calls
       should NOT be restarted by that signal.  Otherwise, if the signal interrupted a call reading packets in a
       live  capture,  when  your  signal  handler  returns  after  calling  pcap_breakloop(),  the call will be
       restarted, and the loop will not terminate until more packets arrive and the call completes.

       Note also  that,  in  a  multi-threaded  application,  if  one  thread  is  blocked  in  pcap_dispatch(),
       pcap_loop(),  pcap_next(),  or  pcap_next_ex(), a call to pcap_breakloop() in a different thread will not
       unblock that thread; you will need to use whatever mechanism the OS provides for breaking a thread out of
       blocking calls in order to unblock the thread, such as thread cancellation in systems that support  POSIX
       threads.

       Note  that pcap_next() and pcap_next_ex() will, on some platforms, loop reading packets from the OS; that
       loop will not necessarily be terminated by a signal, so pcap_breakloop()  should  be  used  to  terminate
       packet processing even if pcap_next() or pcap_next_ex() is being used.

       pcap_breakloop()  does  not  guarantee  that  no  further packets will be processed by pcap_dispatch() or
       pcap_loop() after it is called; at most one more packet might be processed.

       If -2 is returned from pcap_dispatch() or pcap_loop(), the flag is cleared, so  a  subsequent  call  will
       resume  reading packets.  If a positive number is returned, the flag is not cleared, so a subsequent call
       will return -2 and clear the flag.

SEE ALSO

       pcap(3PCAP), pcap_loop(3PCAP), pcap_next_ex(3PCAP)

                                                  5 April 2008                             PCAP_BREAKLOOP(3PCAP)