From patchwork Tue Dec 4 01:00:49 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Engelhardt X-Patchwork-Id: 203526 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 5FD382C0080 for ; Tue, 4 Dec 2012 12:01:05 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751865Ab2LDBBC (ORCPT ); Mon, 3 Dec 2012 20:01:02 -0500 Received: from ares07.inai.de ([5.9.24.206]:49571 "EHLO ares07.inai.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751817Ab2LDBBA (ORCPT ); Mon, 3 Dec 2012 20:01:00 -0500 Received: by ares07.inai.de (Postfix, from userid 25121) id 51E4896A16B4; Tue, 4 Dec 2012 02:00:56 +0100 (CET) From: Jan Engelhardt To: netfilter-devel@vger.kernel.org Subject: [PATCH 8/8] netfilter: xtables2: execute targets in live rule traversal Date: Tue, 4 Dec 2012 02:00:49 +0100 Message-Id: <1354582849-26888-9-git-send-email-jengelh@inai.de> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1354582849-26888-1-git-send-email-jengelh@inai.de> References: <1354582849-26888-1-git-send-email-jengelh@inai.de> Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org Signed-off-by: Jan Engelhardt --- net/netfilter/xt_core.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/net/netfilter/xt_core.c b/net/netfilter/xt_core.c index 8615fe4..830260c 100644 --- a/net/netfilter/xt_core.c +++ b/net/netfilter/xt_core.c @@ -111,6 +111,14 @@ xt2_do_rule(struct sk_buff *skb, const struct xt2_packed_rule *rule, acpar->matchinfo = pa->data; if (!pa->match_ext->match(skb, acpar)) break; + } else if (pa->type == NFXT_ACTION_TARGET) { + unsigned int verdict; + + acpar->target = pa->target_ext; + acpar->targinfo = pa->data; + verdict = pa->target_ext->target(skb, acpar); + if (verdict != XT_CONTINUE) + return verdict; } return XT_CONTINUE;