aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/netfilter/nf_tables_core.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/net/netfilter/nf_tables_core.c b/net/netfilter/nf_tables_core.c
index 074067d4fc1e..77165bf023f3 100644
--- a/net/netfilter/nf_tables_core.c
+++ b/net/netfilter/nf_tables_core.c
@@ -170,26 +170,23 @@ next_rule:
170 170
171 switch (data[NFT_REG_VERDICT].verdict) { 171 switch (data[NFT_REG_VERDICT].verdict) {
172 case NFT_JUMP: 172 case NFT_JUMP:
173 nft_trace_packet(pkt, chain, rulenum, NFT_TRACE_RULE);
174
175 BUG_ON(stackptr >= NFT_JUMP_STACK_SIZE); 173 BUG_ON(stackptr >= NFT_JUMP_STACK_SIZE);
176 jumpstack[stackptr].chain = chain; 174 jumpstack[stackptr].chain = chain;
177 jumpstack[stackptr].rule = rule; 175 jumpstack[stackptr].rule = rule;
178 jumpstack[stackptr].rulenum = rulenum; 176 jumpstack[stackptr].rulenum = rulenum;
179 stackptr++; 177 stackptr++;
180 chain = data[NFT_REG_VERDICT].chain; 178 /* fall through */
181 goto do_chain;
182 case NFT_GOTO: 179 case NFT_GOTO:
183 nft_trace_packet(pkt, chain, rulenum, NFT_TRACE_RULE); 180 nft_trace_packet(pkt, chain, rulenum, NFT_TRACE_RULE);
184 181
185 chain = data[NFT_REG_VERDICT].chain; 182 chain = data[NFT_REG_VERDICT].chain;
186 goto do_chain; 183 goto do_chain;
184 case NFT_CONTINUE:
185 rulenum++;
186 /* fall through */
187 case NFT_RETURN: 187 case NFT_RETURN:
188 nft_trace_packet(pkt, chain, rulenum, NFT_TRACE_RETURN); 188 nft_trace_packet(pkt, chain, rulenum, NFT_TRACE_RETURN);
189 break; 189 break;
190 case NFT_CONTINUE:
191 nft_trace_packet(pkt, chain, ++rulenum, NFT_TRACE_RETURN);
192 break;
193 default: 190 default:
194 WARN_ON(1); 191 WARN_ON(1);
195 } 192 }