Bug #2201: af_packet - treat BPF filter error as fatal

There is no need to try to set erroneous BPF filter again and again. Such attempts
lead to constant mmap() calls without corresponding munmap() when 'use-mmap' is enabled.
pull/2880/head
Alexander Gozman 8 years ago committed by alg
parent f27b4fc8fe
commit 39807b47cb

@ -2045,21 +2045,14 @@ static int AFPCreateSocket(AFPThreadVars *ptv, char *devname, int verbose)
rc = AFPSetBPFFilter(ptv); rc = AFPSetBPFFilter(ptv);
if (rc == TM_ECODE_FAILED) { if (rc == TM_ECODE_FAILED) {
SCLogError(SC_ERR_AFP_CREATE, "Set AF_PACKET bpf filter \"%s\" failed.", ptv->bpf_filter); SCLogError(SC_ERR_AFP_CREATE, "Set AF_PACKET bpf filter \"%s\" failed.", ptv->bpf_filter);
goto frame_err; ret = AFP_FATAL_ERROR;
goto socket_err;
} }
/* Init is ok */ /* Init is ok */
AFPSwitchState(ptv, AFP_STATE_UP); AFPSwitchState(ptv, AFP_STATE_UP);
return 0; return 0;
frame_err:
if (ptv->flags & AFP_TPACKET_V3) {
if (ptv->ring_v3)
SCFree(ptv->ring_v3);
} else {
if (ptv->ring_v2)
SCFree(ptv->ring_v2);
}
socket_err: socket_err:
close(ptv->socket); close(ptv->socket);
ptv->socket = -1; ptv->socket = -1;
@ -2112,7 +2105,6 @@ TmEcode AFPSetBPFFilter(AFPThreadVars *ptv)
return TM_ECODE_OK; return TM_ECODE_OK;
} }
/** /**
* \brief Init function for ReceiveAFP. * \brief Init function for ReceiveAFP.
* *

Loading…
Cancel
Save