Beispiel #1
0
    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;
        }
    }
}
Beispiel #2
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;
    }
}