diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2014-05-15 17:18:26 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2014-05-15 19:44:20 +0200 |
commit | 3b084e99a3fabaeb0f9c65a0806cde30f0b2835e (patch) | |
tree | 5125063b91417a8a74967ea4469fdde1bf4f2e89 | |
parent | 7e9bc10db275b22a9db0f976b33b5aeed288da73 (diff) | |
download | op-kernel-dev-3b084e99a3fabaeb0f9c65a0806cde30f0b2835e.zip op-kernel-dev-3b084e99a3fabaeb0f9c65a0806cde30f0b2835e.tar.gz |
netfilter: nf_tables: fix trace of matching non-terminal rule
Add the corresponding trace if we have a full match in a non-terminal
rule. Note that the traces will look slightly different than in
x_tables since the log message after all expressions have been
evaluated (contrary to x_tables, that emits it before the target
action). This manifests in two differences in nf_tables wrt. x_tables:
1) The rule that enables the tracing is included in the trace.
2) If the rule emits some log message, that is shown before the
trace log message.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
-rw-r--r-- | net/netfilter/nf_tables_core.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/netfilter/nf_tables_core.c b/net/netfilter/nf_tables_core.c index 421c36a..345acfb 100644 --- a/net/netfilter/nf_tables_core.c +++ b/net/netfilter/nf_tables_core.c @@ -144,8 +144,10 @@ next_rule: switch (data[NFT_REG_VERDICT].verdict) { case NFT_BREAK: data[NFT_REG_VERDICT].verdict = NFT_CONTINUE; - /* fall through */ + continue; case NFT_CONTINUE: + if (unlikely(pkt->skb->nf_trace)) + nft_trace_packet(pkt, chain, rulenum, NFT_TRACE_RULE); continue; } break; |