From patchwork Mon Mar 7 17:10:43 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: 593054 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 2F50A140273 for ; Tue, 8 Mar 2016 04:11:14 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=riseup.net header.i=@riseup.net header.b=ickKbmQa; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752803AbcCGRLN (ORCPT ); Mon, 7 Mar 2016 12:11:13 -0500 Received: from mx1.riseup.net ([198.252.153.129]:49576 "EHLO mx1.riseup.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752734AbcCGRLJ (ORCPT ); Mon, 7 Mar 2016 12:11:09 -0500 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 C3A1E1A2299; Mon, 7 Mar 2016 17:11:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=riseup.net; s=squak; t=1457370668; bh=c1dDHsutqJQVNShDahSc+h2HT26X7WtVxx91j3moCHQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ickKbmQaalFccv9E9WMogg+FYEtV/5we1Mr9VcJbhJp9scWLK+y2AzhdlMJ0bM3jc bddTDXrsSxz+mHXYr+JFtdo5v7t8IA9WsK6P/VDxueDVENp263e1YXWOUrTtn/uaAf OOAWF2R15hU/2vlNrxHkvznN+Qk5dfbndmmlFaac= Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: carlosfg) with ESMTPSA id 8BAF240095 From: =?UTF-8?q?Carlos=20Falgueras=20Garc=C3=ADa?= To: netfilter-devel@vger.kernel.org Cc: pablo@netfilter.org, kaber@trash.net Subject: [PATCH 3/4] libnftnl: test: Actualize test to check new nftnl_udata features of nftnl_rule Date: Mon, 7 Mar 2016 18:10:43 +0100 Message-Id: <1457370643-14408-4-git-send-email-carlosfg@riseup.net> In-Reply-To: <1457370643-14408-1-git-send-email-carlosfg@riseup.net> References: <1457370643-14408-1-git-send-email-carlosfg@riseup.net> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.98.7 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 Modify nft-rule-test.c to check TLV attribute inclusion in nftnl_rule. Add "*-rule-udata.[json|xml]" to check parsers. Signed-off-by: Carlos Falgueras GarcĂ­a --- tests/jsonfiles/71-rule-udata.json | 1 + tests/nft-rule-test.c | 21 +++++++++++++++++++++ tests/xmlfiles/82-rule-udata.xml | 1 + 3 files changed, 23 insertions(+) create mode 100644 tests/jsonfiles/71-rule-udata.json create mode 100644 tests/xmlfiles/82-rule-udata.xml diff --git a/tests/jsonfiles/71-rule-udata.json b/tests/jsonfiles/71-rule-udata.json new file mode 100644 index 0000000..02d7903 --- /dev/null +++ b/tests/jsonfiles/71-rule-udata.json @@ -0,0 +1 @@ +{"nftables":[{"add":[{"rule":{"family":"ip","table":"filter","chain":"input","handle":71,"expr":[{"type":"counter","pkts":135,"bytes":21655}],"userdata":[{"type":0,"length":12,"value":"68656C6C6F20776F726C6400"},{"type":1,"length":9,"value":"627920776F726C6400"}]}}]}]} diff --git a/tests/nft-rule-test.c b/tests/nft-rule-test.c index dff9634..eb10270 100644 --- a/tests/nft-rule-test.c +++ b/tests/nft-rule-test.c @@ -15,6 +15,7 @@ #include #include #include +#include static int test_ok = 1; @@ -26,6 +27,9 @@ static void print_err(const char *msg) static void cmp_nftnl_rule(struct nftnl_rule *a, struct nftnl_rule *b) { + const void *udata_a, *udata_b; + uint32_t len_a, len_b; + if (nftnl_rule_get_u32(a, NFTNL_RULE_FAMILY) != nftnl_rule_get_u32(b, NFTNL_RULE_FAMILY)) print_err("Rule family mismatches"); @@ -47,6 +51,12 @@ static void cmp_nftnl_rule(struct nftnl_rule *a, struct nftnl_rule *b) if (nftnl_rule_get_u64(a, NFTNL_RULE_POSITION) != nftnl_rule_get_u64(b, NFTNL_RULE_POSITION)) print_err("Rule compat_position mismatches"); + + udata_a = nftnl_rule_get_data(a, NFTNL_RULE_USERDATA, &len_a); + udata_b = nftnl_rule_get_data(b, NFTNL_RULE_USERDATA, &len_b); + + if (len_a != len_b || memcmp(udata_a, udata_b, len_a) != 0) + print_err("Rule userdata mismatches"); } int main(int argc, char *argv[]) @@ -54,12 +64,20 @@ int main(int argc, char *argv[]) struct nftnl_rule *a, *b; char buf[4096]; struct nlmsghdr *nlh; + struct nftnl_udata_buf *udata; a = nftnl_rule_alloc(); b = nftnl_rule_alloc(); if (a == NULL || b == NULL) print_err("OOM"); + udata = nftnl_udata_alloc(NFT_USERDATA_MAXLEN); + if (!udata) + print_err("OOM"); + + if (!nftnl_udata_put_strz(udata, 0, "hello world")) + print_err("User data too big"); + nftnl_rule_set_u32(a, NFTNL_RULE_FAMILY, AF_INET); nftnl_rule_set_str(a, NFTNL_RULE_TABLE, "table"); nftnl_rule_set_str(a, NFTNL_RULE_CHAIN, "chain"); @@ -67,6 +85,9 @@ int main(int argc, char *argv[]) nftnl_rule_set_u32(a, NFTNL_RULE_COMPAT_PROTO, 0x12345678); nftnl_rule_set_u32(a, NFTNL_RULE_COMPAT_FLAGS, 0x12345678); nftnl_rule_set_u64(a, NFTNL_RULE_POSITION, 0x1234567812345678); + nftnl_rule_set_data(a, NFTNL_RULE_USERDATA, + nftnl_udata_data(udata), + nftnl_udata_len(udata)); nlh = nftnl_rule_nlmsg_build_hdr(buf, NFT_MSG_NEWRULE, AF_INET, 0, 1234); nftnl_rule_nlmsg_build_payload(nlh, a); diff --git a/tests/xmlfiles/82-rule-udata.xml b/tests/xmlfiles/82-rule-udata.xml new file mode 100644 index 0000000..b986926 --- /dev/null +++ b/tests/xmlfiles/82-rule-udata.xml @@ -0,0 +1 @@ +ip6filter
input82317701268656C6C6F20776F726C640019627920776F726C6400