diff --git a/src/source-ipfw.c b/src/source-ipfw.c index 787a6a6d51..cb9641ba24 100644 --- a/src/source-ipfw.c +++ b/src/source-ipfw.c @@ -456,19 +456,14 @@ TmEcode IPFWSetVerdict(ThreadVars *tv, IPFWThreadVars *ptv, Packet *p) { IPFWpoll.fd=ipfw_sock; IPFWpoll.events= POLLWRNORM; - /* What to do with the packet? */ - switch (p->action) { - case ACTION_ALERT: - case ACTION_PASS: - verdict = IPFW_ACCEPT; - break; - case ACTION_REJECT: - case ACTION_REJECT_DST: - case ACTION_REJECT_BOTH: - case ACTION_DROP: - default: - /* a verdict we don't know about, drop to be sure */ - verdict = IPFW_DROP; + if (p->action & ACTION_REJECT || p->action & ACTION_REJECT_BOTH || + p->action & ACTION_REJECT_DST || p->action & ACTION_DROP) { + verdict = IPFW_DROP; + } else if (p->action & ACTION_ALERT || p->action & ACTION_ALERT) { + verdict = IPFW_ACCEPT; + } else { + /* a verdict we don't know about, drop to be sure */ + verdict = IPFW_DROP; } if (verdict == IPFW_ACCEPT) {