manpagez: man(ual) pages & more
man pcap_breakloop(3)
Home | html | info | man
pcap_breakloop(3)                                    pcap_breakloop(3)




NAME

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


SYNOPSIS

       #include <pcap/pcap.h>

       pcap_breakloop(3) *);


DESCRIPTION

       pcap_breakloop(3)  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  con-
       sole  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
       pcap_breakloop(3) 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
       pcap_breakloop(3) the call will be restarted, and
       the loop will not terminate until more packets arrive and the call com-
       pletes.

       Note also that, in a  multi-threaded  application,  if  one  thread  is
       blocked    in    pcap_dispatch(),    pcap_loop(),    pcap_next(),    or
       pcap_breakloop(3) 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 termi-
       nated by a signal, so pcap_breakloop(3)  should  be  used  to  terminate
       packet  processing even if pcap_next() or pcap_next_ex() is being used.

       pcap_breakloop(3) 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 posi-
       tive number is returned, the flag is not cleared, so a subsequent  call
       will return -2 and clear the flag.


SEE ALSO

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



                                 5 April 2008            pcap_breakloop(3)

libpcap 1.7.2 - Generated Sat Mar 14 06:23:05 CDT 2015
© manpagez.com 2000-2017
Individual documents may contain additional copyright information.