181
183
ptv->pcap_state = PCAP_STATE_DOWN;
182
184
pcap_close(ptv->pcap_handle);
184
ptv->pcap_handle = pcap_open_live((char *)ptv->iface, LIBPCAP_SNAPLEN,
186
ptv->pcap_handle = pcap_open_live((char *)ptv->iface, ptv->pcap_snaplen,
185
187
LIBPCAP_PROMISC, LIBPCAP_COPYWAIT, errbuf);
186
188
if (ptv->pcap_handle == NULL) {
187
189
SCLogError(SC_ERR_PCAP_OPEN_LIVE, "Problem creating pcap handler for live mode, error %s", errbuf);
399
401
SCReturnInt(TM_ECODE_FAILED);
402
/* set Snaplen, Promisc, and Timeout. Must be called before pcap_activate */
403
int pcap_set_snaplen_r = pcap_set_snaplen(ptv->pcap_handle,LIBPCAP_SNAPLEN);
404
//printf("ReceivePcapThreadInit: pcap_set_snaplen(%p) returned %" PRId32 "\n", ptv->pcap_handle, pcap_set_snaplen_r);
405
if (pcap_set_snaplen_r != 0) {
406
SCLogError(SC_ERR_PCAP_SET_SNAPLEN, "Couldn't set snaplen, error: %s", pcap_geterr(ptv->pcap_handle));
408
pcapconfig->DerefFunc(pcapconfig);
409
SCReturnInt(TM_ECODE_FAILED);
404
if (pcapconfig->snaplen == 0) {
405
/* We set snaplen if we can get the MTU */
406
ptv->pcap_snaplen = GetIfaceMTU(pcapconfig->iface);
408
ptv->pcap_snaplen = pcapconfig->snaplen;
410
if (ptv->pcap_snaplen > 0) {
411
/* set Snaplen. Must be called before pcap_activate */
412
int pcap_set_snaplen_r = pcap_set_snaplen(ptv->pcap_handle, ptv->pcap_snaplen);
413
if (pcap_set_snaplen_r != 0) {
414
SCLogError(SC_ERR_PCAP_SET_SNAPLEN, "Couldn't set snaplen, error: %s", pcap_geterr(ptv->pcap_handle));
416
pcapconfig->DerefFunc(pcapconfig);
417
SCReturnInt(TM_ECODE_FAILED);
419
SCLogInfo("Set snaplen to %d for '%s'", ptv->pcap_snaplen,
412
int pcap_set_promisc_r = pcap_set_promisc(ptv->pcap_handle,LIBPCAP_PROMISC);
423
/* set Promisc, and Timeout. Must be called before pcap_activate */
424
int pcap_set_promisc_r = pcap_set_promisc(ptv->pcap_handle, pcapconfig->promisc);
413
425
//printf("ReceivePcapThreadInit: pcap_set_promisc(%p) returned %" PRId32 "\n", ptv->pcap_handle, pcap_set_promisc_r);
414
426
if (pcap_set_promisc_r != 0) {
415
427
SCLogError(SC_ERR_PCAP_SET_PROMISC, "Couldn't set promisc mode, error %s", pcap_geterr(ptv->pcap_handle));
537
549
strlcpy(ptv->iface, pcapconfig->iface, PCAP_IFACE_NAME_LENGTH);
551
if (pcapconfig->snaplen == 0) {
552
/* We try to set snaplen from MTU value */
553
ptv->pcap_snaplen = GetIfaceMTU(pcapconfig->iface);
554
/* be conservative with old pcap lib to mimic old tcpdump behavior
555
when MTU was not available. */
556
if (ptv->pcap_snaplen <= 0)
557
ptv->pcap_snaplen = LIBPCAP_SNAPLEN;
559
ptv->pcap_snaplen = pcapconfig->snaplen;
539
562
char errbuf[PCAP_ERRBUF_SIZE] = "";
540
ptv->pcap_handle = pcap_open_live(ptv->iface, LIBPCAP_SNAPLEN,
563
ptv->pcap_handle = pcap_open_live(ptv->iface, ptv->pcap_snaplen,
541
564
LIBPCAP_PROMISC, LIBPCAP_COPYWAIT, errbuf);
542
565
if (ptv->pcap_handle == NULL) {
543
566
SCLogError(SC_ERR_PCAP_OPEN_LIVE, "Problem creating pcap handler for live mode, error %s", errbuf);