From patchwork Fri Aug 9 11:13:31 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Alvaro Neira X-Patchwork-Id: 265998 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 171A42C008E for ; Fri, 9 Aug 2013 21:13:42 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S967749Ab3HILNl (ORCPT ); Fri, 9 Aug 2013 07:13:41 -0400 Received: from mail-wg0-f43.google.com ([74.125.82.43]:36475 "EHLO mail-wg0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S967573Ab3HILNk (ORCPT ); Fri, 9 Aug 2013 07:13:40 -0400 Received: by mail-wg0-f43.google.com with SMTP id z12so3399613wgg.34 for ; Fri, 09 Aug 2013 04:13:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=subject:to:from:cc:date:message-id:in-reply-to:references :user-agent:mime-version:content-type:content-transfer-encoding; bh=TzghttlAnKIwK3XPmuUAr4ImBAHGDxidQ/f7n5NmjDY=; b=FkYY7Oxxorw0kPm74HTADRMCujwoUsyT8kpL4ZDuVo8NpWlXmUXepC7Mh5HW7N/mE3 bJPXIcaFNPilW3IJEKcdXQtd9J4nqIwB4/vx1e3HEtu/I+csdYr3fVjEgxkkampzOgzj WHNv0ulZH+J37L7+wiGIlxm8Yf6V0IJUmQRXE5snc242sSuKDLzbrVdHbTr1Fb/TeT3X NXBjswAFDM+4/Nk2Jz9zBQeo2AcVyVRqPQQOso/lPo1JeF3Kvn2BYJNE9hVPpilD5J0Y MPL0lmgfW4itUOYxgka7fVcSo4ac5vsHtGYMkHwZjJUAgFaIfY0dmza2YWoDYmM+pk9d vbHw== X-Received: by 10.180.95.2 with SMTP id dg2mr58819wib.34.1376046819566; Fri, 09 Aug 2013 04:13:39 -0700 (PDT) Received: from [127.0.1.1] ([90.174.0.186]) by mx.google.com with ESMTPSA id z2sm2177731wiv.11.2013.08.09.04.13.34 for (version=TLSv1.2 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 09 Aug 2013 04:13:38 -0700 (PDT) Subject: [libnftables PATCH 08/13] expr: bytecode: add nft_str2ntoh function To: netfilter-devel@vger.kernel.org From: Alvaro Neira Cc: eric@regit.org Date: Fri, 09 Aug 2013 13:13:31 +0200 Message-ID: <20130809111331.29819.861.stgit@Ph0enix> In-Reply-To: <20130809111148.29819.95689.stgit@Ph0enix> References: <20130809111148.29819.95689.stgit@Ph0enix> User-Agent: StGit/0.15 MIME-Version: 1.0 Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org From: Álvaro Neira Ayuso Add function that will be use in the JSON parser Signed-off-by: Alvaro Neira Ayuso --- src/expr/byteorder.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/src/expr/byteorder.c b/src/expr/byteorder.c index 79ba439..c6c4b91 100644 --- a/src/expr/byteorder.c +++ b/src/expr/byteorder.c @@ -181,13 +181,25 @@ static char *expr_byteorder_str[] = { [NFT_BYTEORDER_NTOH] = "ntoh", }; +static inline int nft_str2ntoh(const char *op) +{ + if (strcmp(op, "ntoh") == 0) + return NFT_BYTEORDER_NTOH; + else if (strcmp(op, "hton") == 0) + return NFT_BYTEORDER_HTON; + else { + errno = EINVAL; + return -1; + } +} + static int nft_rule_expr_byteorder_xml_parse(struct nft_rule_expr *e, mxml_node_t *tree) { #ifdef XML_PARSING struct nft_expr_byteorder *byteorder = nft_expr_data(e); const char *op; - int32_t reg; + int32_t reg, ntoh; reg = nft_mxml_reg_parse(tree, "sreg", MXML_DESCEND_FIRST); if (reg < 0) @@ -207,15 +219,12 @@ nft_rule_expr_byteorder_xml_parse(struct nft_rule_expr *e, mxml_node_t *tree) if (op == NULL) return -1; - if (strcmp(op, "ntoh") == 0) - byteorder->op = NFT_BYTEORDER_NTOH; - else if (strcmp(op, "hton") == 0) - byteorder->op = NFT_BYTEORDER_HTON; - else { - errno = EINVAL; + ntoh = nft_str2ntoh(op); + + if (ntoh < 0) return -1; - } + byteorder->op = ntoh; e->flags |= (1 << NFT_EXPR_BYTEORDER_OP); if (nft_mxml_num_parse(tree, "len", MXML_DESCEND_FIRST, BASE_DEC,