From patchwork Sat Aug 10 19:40:39 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Alvaro Neira X-Patchwork-Id: 266270 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 898F72C00DC for ; Sun, 11 Aug 2013 05:41:02 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754180Ab3HJTks (ORCPT ); Sat, 10 Aug 2013 15:40:48 -0400 Received: from mail-wg0-f48.google.com ([74.125.82.48]:42425 "EHLO mail-wg0-f48.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754175Ab3HJTks (ORCPT ); Sat, 10 Aug 2013 15:40:48 -0400 Received: by mail-wg0-f48.google.com with SMTP id f12so4334525wgh.3 for ; Sat, 10 Aug 2013 12:40:46 -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:user-agent:mime-version :content-type:content-transfer-encoding; bh=gZHooh/7pPN5wbRxNLunpxTqmyWrcyzsemc1l0kCxgs=; b=tNapHsDQYwOtk5tNBPPQpY+an0hsLkEsv+bwWHuqCemOj/ufQxij8fQCQxxSyRZpfc H0GzwigCZYZeW5cChMU0CENHT0M2UUrRmCvXuC9wX1Je3eBrgVNwAdbWD2QSAUltVQAO PFNrpoR3FIY1CO8rjOSir8ZBEQQYIBDulGmsh//h13wahb3SaY4bl5l0hWe2VfHyPCcb nwbbZcvpx1/8zRBTiJ8NUB9ccc304QHe0PM5fH+EaQHzwgOCjQGu6iNcqIrRZKyEvQm4 B4SpbqCks9Z3YUbsLlrqHpY0/DkY6rMbAsfrKaUTVdqodjrI1sUNuinQ92eNki9Jt77j VHsw== X-Received: by 10.180.20.116 with SMTP id m20mr3063584wie.46.1376163646557; Sat, 10 Aug 2013 12:40:46 -0700 (PDT) Received: from [127.0.1.1] ([77.208.157.88]) by mx.google.com with ESMTPSA id hb2sm6428807wib.0.2013.08.10.12.40.42 for (version=TLSv1.2 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 10 Aug 2013 12:40:45 -0700 (PDT) Subject: [libnftables PATCH 1/2] src: expr: use the function base2str in payload. To: netfilter-devel@vger.kernel.org From: Alvaro Neira Cc: eric@regit.org Date: Sat, 10 Aug 2013 21:40:39 +0200 Message-ID: <20130810194039.18629.89549.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 Use base2str to refactor code in the function snprintf in payload. Signed-off-by: Alvaro Neira Ayuso --- src/expr/payload.c | 80 ++++++++++++++++------------------------------------ 1 file changed, 24 insertions(+), 56 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/payload.c b/src/expr/payload.c index d00988a..340a0d8 100644 --- a/src/expr/payload.c +++ b/src/expr/payload.c @@ -149,31 +149,31 @@ nft_rule_expr_payload_parse(struct nft_rule_expr *e, struct nlattr *attr) return 0; } +static char *base2str_array[NFT_PAYLOAD_TRANSPORT_HEADER+1] = { + [NFT_PAYLOAD_LL_HEADER] = "link", + [NFT_PAYLOAD_NETWORK_HEADER] = "network", + [NFT_PAYLOAD_TRANSPORT_HEADER] = "transport", +}; + +static const char *base2str(enum nft_payload_bases base) +{ + if (base > NFT_PAYLOAD_TRANSPORT_HEADER) + return "unknown"; + + return base2str_array[base]; +} + static int nft_rule_expr_payload_snprintf_json(char *buf, size_t len, uint32_t flags, struct nft_expr_payload *p) { int size = len, offset = 0, ret; - ret = snprintf(buf, len, "\"dreg\" : %u, \"offset\" : %u, \"len\" : %u, ", - p->dreg, p->offset, p->len); - SNPRINTF_BUFFER_SIZE(ret, size, len, offset); - - switch (p->base) { - case NFT_PAYLOAD_LL_HEADER: - ret = snprintf(buf+offset, len, "\"base\" : \"link\""); - break; - case NFT_PAYLOAD_NETWORK_HEADER: - ret = snprintf(buf+offset, len, "\"base\" : \"network\""); - break; - case NFT_PAYLOAD_TRANSPORT_HEADER: - ret = snprintf(buf+offset, len, "\"base\" : \"transport\""); - break; - default: - ret = snprintf(buf+offset, len, "\"base\" : \"unknown\""); - break; - } - + ret = snprintf(buf, len, "\"dreg\" : %u, " + "\"offset\" : %u, " + "\"len\" : %u, " + "\"base\" : \"%s\"", + p->dreg, p->offset, p->len, base2str(p->base)); SNPRINTF_BUFFER_SIZE(ret, size, len, offset); return offset; @@ -243,48 +243,16 @@ nft_rule_expr_payload_snprintf_xml(char *buf, size_t len, uint32_t flags, { int size = len, offset = 0, ret; - ret = snprintf(buf, len, "%u%u" - "%u", p->dreg, p->offset, p->len); - SNPRINTF_BUFFER_SIZE(ret, size, len, offset); - - /* A default option is not provided. - * The node will be missing; Is not mandatory. - */ - - switch (p->base) { - case NFT_PAYLOAD_LL_HEADER: - ret = snprintf(buf+offset, len, "link"); - break; - case NFT_PAYLOAD_NETWORK_HEADER: - ret = snprintf(buf+offset, len, "network"); - break; - case NFT_PAYLOAD_TRANSPORT_HEADER: - ret = snprintf(buf+offset, len, "transport"); - break; - default: - ret = snprintf(buf+offset, len, "unknown"); - break; - } - + ret = snprintf(buf, len, "%u" + "%u" + "%u" + "%s", + p->dreg, p->offset, p->len, base2str(p->base)); SNPRINTF_BUFFER_SIZE(ret, size, len, offset); return offset; } -static char *base2str_array[NFT_PAYLOAD_TRANSPORT_HEADER+1] = { - [NFT_PAYLOAD_LL_HEADER] = "link", - [NFT_PAYLOAD_NETWORK_HEADER] = "network", - [NFT_PAYLOAD_TRANSPORT_HEADER] = "transport", -}; - -static const char *base2str(enum nft_payload_bases base) -{ - if (base > NFT_PAYLOAD_TRANSPORT_HEADER) - return "unknown"; - - return base2str_array[base]; -} - static int nft_rule_expr_payload_snprintf(char *buf, size_t len, uint32_t type, uint32_t flags, struct nft_rule_expr *e)