From patchwork Mon Aug 8 12:42:32 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Carlos_Falgueras_Garc=C3=ADa?= X-Patchwork-Id: 656679 X-Patchwork-Delegate: pablo@netfilter.org 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 3s7HBp5ZmRz9sf9 for ; Mon, 8 Aug 2016 22:43:14 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=riseup.net header.i=@riseup.net header.b=kWicTKel; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752187AbcHHMnN (ORCPT ); Mon, 8 Aug 2016 08:43:13 -0400 Received: from mx1.riseup.net ([198.252.153.129]:50006 "EHLO mx1.riseup.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752169AbcHHMnM (ORCPT ); Mon, 8 Aug 2016 08:43:12 -0400 Received: from cotinga.riseup.net (unknown [10.0.1.164]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client CN "*.riseup.net", Issuer "COMODO RSA Domain Validation Secure Server CA" (verified OK)) by mx1.riseup.net (Postfix) with ESMTPS id 7A04B1A1D96; Mon, 8 Aug 2016 12:43:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=riseup.net; s=squak; t=1470660188; bh=Abv4NgtgF1FQk+7YzCzTxg49VqNJW8TQRzRhBxyCpAs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kWicTKelDKItKTO/qyKlekfjk35RvtrKSXxAITuzSN4Gg+R7qCXjQss4OutjRuWSC C/k/47wJLPbvFklaV9QMLm/66t6MvsW6RL160mhNuSh77GZnGEBU+uygHg6BVSQQwV zpVp/9RMU8lJ9Wgg0/fHC+tcPU8qIwUH5oTDyXgk= Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: carlosfg) with ESMTPSA id 94EB7405CF From: =?UTF-8?q?Carlos=20Falgueras=20Garc=C3=ADa?= To: netfilter-devel@vger.kernel.org Cc: pablo@netfilter.org Subject: [PATCH 2/5, V2, libnftnl] rule: Implement internal expression iterator Date: Mon, 8 Aug 2016 14:42:32 +0200 Message-Id: <20160808124235.11135-2-carlosfg@riseup.net> In-Reply-To: <20160808124235.11135-1-carlosfg@riseup.net> References: <20160808111758.4062-1-carlosfg@riseup.net> <20160808124235.11135-1-carlosfg@riseup.net> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.99.2 at mx1.riseup.net X-Virus-Status: Clean Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org Introduce nftnl_expr_iter_init() to allow stack allocated iterators for internal use. Signed-off-by: Carlos Falgueras GarcĂ­a --- src/rule.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/rule.c b/src/rule.c index 30b8b5e..35b0f29 100644 --- a/src/rule.c +++ b/src/rule.c @@ -29,6 +29,14 @@ #include #include +struct nftnl_expr_iter { + const struct nftnl_rule *r; + struct nftnl_expr *cur; +}; + +static void nftnl_expr_iter_init(const struct nftnl_rule *r, + struct nftnl_expr_iter *iter); + struct nftnl_rule { struct list_head head; @@ -1025,10 +1033,16 @@ int nftnl_expr_foreach(struct nftnl_rule *r, } EXPORT_SYMBOL_ALIAS(nftnl_expr_foreach, nft_rule_expr_foreach); -struct nftnl_expr_iter { - const struct nftnl_rule *r; - struct nftnl_expr *cur; -}; +static void nftnl_expr_iter_init(const struct nftnl_rule *r, + struct nftnl_expr_iter *iter) +{ + iter->r = r; + if (list_empty(&r->expr_list)) + iter->cur = NULL; + else + iter->cur = list_entry(r->expr_list.next, struct nftnl_expr, + head); +} struct nftnl_expr_iter *nftnl_expr_iter_create(const struct nftnl_rule *r) { @@ -1037,13 +1051,7 @@ struct nftnl_expr_iter *nftnl_expr_iter_create(const struct nftnl_rule *r) iter = calloc(1, sizeof(struct nftnl_expr_iter)); if (iter == NULL) return NULL; - - iter->r = r; - if (list_empty(&r->expr_list)) - iter->cur = NULL; - else - iter->cur = list_entry(r->expr_list.next, struct nftnl_expr, - head); + nftnl_expr_iter_init(r, iter); return iter; }