void epcap_loop(EPCAP_STATE *ep) { pcap_t *p = ep->p; struct pcap_pkthdr *hdr = NULL; const u_char *pkt = NULL; int read_packet = 1; int datalink = pcap_datalink(p); while (read_packet) { switch (pcap_next_ex(p, &hdr, &pkt)) { case 0: /* timeout */ VERBOSE(1, "timeout reading packet"); break; case 1: /* got packet */ epcap_response(hdr, pkt, datalink); break; case -2: /* eof */ VERBOSE(1, "end of file"); epcap_ctrl("eof"); read_packet = 0; break; case -1: /* error reading packet */ VERBOSE(1, "error reading packet"); /* fall through */ default: read_packet = 0; } } }
static void epcap_loop(EPCAP_STATE *ep) { int rv = -1; rv = pcap_loop(ep->p, -1, epcap_response, (u_char *)ep); switch (rv) { case -2: break; case -1: /* error reading packet */ VERBOSE(1, "%s", pcap_geterr(ep->p)); break; default: if (ep->file) epcap_ctrl("eof"); break; } }