Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.2/patches/809175/?format=api
{ "id": 809175, "url": "http://patchwork.ozlabs.org/api/1.2/patches/809175/?format=api", "web_url": "http://patchwork.ozlabs.org/project/netfilter-devel/patch/1504395174-15192-1-git-send-email-mayhs11saini@gmail.com/", "project": { "id": 26, "url": "http://patchwork.ozlabs.org/api/1.2/projects/26/?format=api", "name": "Netfilter Development", "link_name": "netfilter-devel", "list_id": "netfilter-devel.vger.kernel.org", "list_email": "netfilter-devel@vger.kernel.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<1504395174-15192-1-git-send-email-mayhs11saini@gmail.com>", "list_archive_url": null, "date": "2017-09-02T23:32:54", "name": "[nft,V2] tests: shell: Add tests for json import", "commit_ref": null, "pull_url": null, "state": "changes-requested", "archived": false, "hash": "48e0d3a1fc9d353d9435b4faea8266c7a2721ca9", "submitter": { "id": 69683, "url": "http://patchwork.ozlabs.org/api/1.2/people/69683/?format=api", "name": "Shyam Saini", "email": "mayhs11saini@gmail.com" }, "delegate": { "id": 6139, "url": "http://patchwork.ozlabs.org/api/1.2/users/6139/?format=api", "username": "pablo", "first_name": "Pablo", "last_name": "Neira", "email": "pablo@netfilter.org" }, "mbox": "http://patchwork.ozlabs.org/project/netfilter-devel/patch/1504395174-15192-1-git-send-email-mayhs11saini@gmail.com/mbox/", "series": [ { "id": 1183, "url": "http://patchwork.ozlabs.org/api/1.2/series/1183/?format=api", "web_url": "http://patchwork.ozlabs.org/project/netfilter-devel/list/?series=1183", "date": "2017-09-02T23:32:54", "name": "[nft,V2] tests: shell: Add tests for json import", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/1183/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/809175/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/809175/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<netfilter-devel-owner@vger.kernel.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org", "Authentication-Results": [ "ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netfilter-devel-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)", "ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"WZmwAlph\"; dkim-atps=neutral" ], "Received": [ "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xlC8p6fMDz9sRW\n\tfor <incoming@patchwork.ozlabs.org>;\n\tSun, 3 Sep 2017 09:33:14 +1000 (AEST)", "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1752786AbdIBXdM (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tSat, 2 Sep 2017 19:33:12 -0400", "from mail-pg0-f65.google.com ([74.125.83.65]:34756 \"EHLO\n\tmail-pg0-f65.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1752776AbdIBXdL (ORCPT\n\t<rfc822;netfilter-devel@vger.kernel.org>);\n\tSat, 2 Sep 2017 19:33:11 -0400", "by mail-pg0-f65.google.com with SMTP id 63so2287758pgc.1\n\tfor <netfilter-devel@vger.kernel.org>;\n\tSat, 02 Sep 2017 16:33:11 -0700 (PDT)", "from localhost.localdomain ([106.222.171.12])\n\tby smtp.gmail.com with ESMTPSA id\n\to27sm539091pgn.59.2017.09.02.16.33.07\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tSat, 02 Sep 2017 16:33:09 -0700 (PDT)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=gmail.com; s=20161025;\n\th=from:to:cc:subject:date:message-id;\n\tbh=HJFtiZTdQxbJoiyimhJQnVs6sqfu/IoJFE0YRLujVeY=;\n\tb=WZmwAlphbrR9Iq9ClbUpbgMhbVuuIfxd4Ws2CJ3nxXZymhkeIiWMvPkXMvPfiH7c7C\n\tjQqLFqm5kIh1kksxs6Yk9GWyTZ7RPSnogNQ8K0eHcD96Refe4TTa69GHr/S7sgHhtZ6Z\n\tSVJx9xpkf1QUFz1vQK5hrP+mSY5pb8NTU3mgV+Suu3dSn/4jGiDSnCWW2zTdA3IWo9sc\n\tEh3/p7IqpjdsXZlj7Ci3TPWvZOmZgxtBQixVV/u+j5sdxtL4+yCG/8RKvA66Vrh/pIZN\n\tr40VLsF41xpem31gWwU09LWlghgG0MNWcSTGhQMJGgdJstl0omWwFeOqBX02LneyPoJG\n\tgB8w==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id;\n\tbh=HJFtiZTdQxbJoiyimhJQnVs6sqfu/IoJFE0YRLujVeY=;\n\tb=V3c9fhHLcpj2gdYclah4tn8ODq8nPwX3o8arofp/SLIgAsoq+8z1NRI2fPajj8Pet7\n\tFBcpCMqLBJ3t9FmXaPuIdmys1wZNqXY6sX6uy6KJtDx2R/6GWCH5yZiiBOKScTJdU2Nt\n\t/vnbo6Xb33SELjIhdlgYtDP40mLdCFBUS//Jor31B3fh70ZhbdsLCD0i+OvkSDiTBOVE\n\t+rxsFVTzjKyqg5ym5ZaEtr3gJ0MjQUrB4yQuR9JKnif9LBoUmqtfyk/T7iQxIwk40glZ\n\tYZ8XhTB1P2Ccmyh6Vng/R4gAEkvutZW0UnBHJVWUPcV3ZMiw1T/D/fYetRo70lMe8w6G\n\tpctQ==", "X-Gm-Message-State": "AHPjjUj4YbDhukdhsWapLd+cAKsEe/qeyhiOy4NJGid19RLVMfTF7hkE\n\ttu79dbdSVQmZj7RZz4g=", "X-Google-Smtp-Source": "ADKCNb5/fPeCg9D4pXO4k3u1IG/QGZCMIEBR1mBhjQ9HehT1KjT2MN9/CJXa5tyWlGaqMNjBgY7ZVw==", "X-Received": "by 10.99.3.137 with SMTP id 131mr4856602pgd.441.1504395190499;\n\tSat, 02 Sep 2017 16:33:10 -0700 (PDT)", "From": "Shyam Saini <mayhs11saini@gmail.com>", "To": "netfilter-devel@vger.kernel.org", "Cc": "Shyam Saini <mayhs11saini@gmail.com>", "Subject": "[nft PATCH V2] tests: shell: Add tests for json import", "Date": "Sun, 3 Sep 2017 05:02:54 +0530", "Message-Id": "<1504395174-15192-1-git-send-email-mayhs11saini@gmail.com>", "X-Mailer": "git-send-email 1.9.1", "Sender": "netfilter-devel-owner@vger.kernel.org", "Precedence": "bulk", "List-ID": "<netfilter-devel.vger.kernel.org>", "X-Mailing-List": "netfilter-devel@vger.kernel.org" }, "content": "These test cases can be used to test upcoming \"import json\" command.\n\nHere is the short description of the files:\nall_ruleset_list -> contains list of all the individual rules\njson_import_0 -> script that runs json run-tests.sh\n\n\tFor Example:\n\t$ ./run-tests.sh testcases/import/json_import_0\n\nBelow mentioned files contains individual rules in json format and\nare added for the reference:\nrules_ipv4* -> ip table rules files\nrules_ipv6* -> ip6 table rules files\nrules_arp* -> arp table rules files\nrules_bridge* -> bridge table rules files\n\nSigned-off-by: Shyam Saini <mayhs11saini@gmail.com>\n---\n tests/shell/testcases/import/all_ruleset_list | 46 ++++++++++++++\n tests/shell/testcases/import/json_import_0 | 72 ++++++++++++++++++++++\n .../testcases/import/rules_arp_hlen_range.json | 1 +\n tests/shell/testcases/import/rules_arp_htype.json | 1 +\n .../testcases/import/rules_arp_operation.json | 1 +\n .../import/rules_arp_operation_check.json | 1 +\n .../shell/testcases/import/rules_arp_ptype_ip.json | 1 +\n .../shell/testcases/import/rules_bridge_vlan.json | 1 +\n .../testcases/import/rules_bridge_vlan_id.json | 1 +\n ...bridge_vlan_id_saddr_udp_dport_drop_domain.json | 1 +\n .../import/rules_ipv4_ct_state_accept.json | 1 +\n .../rules_ipv4_icmp_type_echo-request_accept.json | 1 +\n .../rules_ipv4_icmp_type_echo-request_counter.json | 1 +\n .../import/rules_ipv4_iifname_accept.json | 1 +\n .../import/rules_ipv4_saddr_daddr_counter.json | 1 +\n .../testcases/import/rules_ipv4_set_elements.json | 1 +\n .../import/rules_ipv4_tcp_dport_http_ssh.json | 1 +\n .../testcases/import/rules_ipv4_tcp_flags.json | 1 +\n .../import/rules_ipv6_daddr_udp_dport_counter.json | 1 +\n ...es_ipv6_daddr_udp_dport_counter_masquerade.json | 1 +\n .../testcases/import/rules_ipv6_icmpv6_id.json | 1 +\n ...iifname_ct_state_tcp_dport_vmap_masquerade.json | 1 +\n .../import/rules_ipv6_l4proto_tcp_masquerade.json | 1 +\n ...dport_ssh_daddr_mapping_ether_saddr_accept.json | 1 +\n 24 files changed, 140 insertions(+)\n create mode 100644 tests/shell/testcases/import/all_ruleset_list\n create mode 100755 tests/shell/testcases/import/json_import_0\n create mode 100644 tests/shell/testcases/import/rules_arp_hlen_range.json\n create mode 100644 tests/shell/testcases/import/rules_arp_htype.json\n create mode 100644 tests/shell/testcases/import/rules_arp_operation.json\n create mode 100644 tests/shell/testcases/import/rules_arp_operation_check.json\n create mode 100644 tests/shell/testcases/import/rules_arp_ptype_ip.json\n create mode 100644 tests/shell/testcases/import/rules_bridge_vlan.json\n create mode 100644 tests/shell/testcases/import/rules_bridge_vlan_id.json\n create mode 100644 tests/shell/testcases/import/rules_bridge_vlan_id_saddr_udp_dport_drop_domain.json\n create mode 100644 tests/shell/testcases/import/rules_ipv4_ct_state_accept.json\n create mode 100644 tests/shell/testcases/import/rules_ipv4_icmp_type_echo-request_accept.json\n create mode 100644 tests/shell/testcases/import/rules_ipv4_icmp_type_echo-request_counter.json\n create mode 100644 tests/shell/testcases/import/rules_ipv4_iifname_accept.json\n create mode 100644 tests/shell/testcases/import/rules_ipv4_saddr_daddr_counter.json\n create mode 100644 tests/shell/testcases/import/rules_ipv4_set_elements.json\n create mode 100644 tests/shell/testcases/import/rules_ipv4_tcp_dport_http_ssh.json\n create mode 100644 tests/shell/testcases/import/rules_ipv4_tcp_flags.json\n create mode 100644 tests/shell/testcases/import/rules_ipv6_daddr_udp_dport_counter.json\n create mode 100644 tests/shell/testcases/import/rules_ipv6_daddr_udp_dport_counter_masquerade.json\n create mode 100644 tests/shell/testcases/import/rules_ipv6_icmpv6_id.json\n create mode 100644 tests/shell/testcases/import/rules_ipv6_iifname_ct_state_tcp_dport_vmap_masquerade.json\n create mode 100644 tests/shell/testcases/import/rules_ipv6_l4proto_tcp_masquerade.json\n create mode 100644 tests/shell/testcases/import/rules_ipv6_tcp_dport_ssh_daddr_mapping_ether_saddr_accept.json\n\n--\n1.9.1\n\n--\nTo unsubscribe from this list: send the line \"unsubscribe netfilter-devel\" in\nthe body of a message to majordomo@vger.kernel.org\nMore majordomo info at http://vger.kernel.org/majordomo-info.html", "diff": "diff --git a/tests/shell/testcases/import/all_ruleset_list b/tests/shell/testcases/import/all_ruleset_list\nnew file mode 100644\nindex 000000000000..4e25a76d8016\n--- /dev/null\n+++ b/tests/shell/testcases/import/all_ruleset_list\n@@ -0,0 +1,46 @@\n+table ip mangle {\n+ set blackhole {\n+ type ipv4_addr\n+ elements = { 192.168.1.4, 192.168.1.5 }\n+ }\n+\n+ chain prerouting {\n+ type filter hook prerouting priority 0; policy accept;\n+ tcp dport { ssh, http } accept\n+ ip saddr @blackhole drop\n+ icmp type echo-request accept\n+ iifname \"lo\" accept\n+ icmp type echo-request counter packets 0 bytes 0\n+ ct state established,related accept\n+ tcp flags != syn counter packets 7 bytes 841\n+ ip saddr 192.168.1.100 ip daddr 192.168.1.1 counter packets 0 bytes 0\n+ }\n+}\n+table arp x {\n+ chain y {\n+ arp htype 22\n+ arp ptype ip\n+ arp operation != rrequest\n+ arp operation { request, reply, rrequest, rreply, inrequest, inreply, nak }\n+ arp hlen 33-45\n+ }\n+}\n+table bridge x {\n+ chain y {\n+ type filter hook input priority 0; policy accept;\n+ vlan id 4094\n+ vlan id 4094 vlan cfi 0\n+ vlan id 1 ip saddr 10.0.0.0/23 udp dport domain\n+ }\n+}\n+table ip6 x {\n+ chain y {\n+ type nat hook postrouting priority 0; policy accept;\n+ icmpv6 id 33-45\n+ ip6 daddr fe00::1-fe00::200 udp dport domain counter packets 0 bytes 0\n+ meta l4proto tcp masquerade to :1024\n+ iifname \"wlan0\" ct state established,new tcp dport vmap { ssh : drop, 222 : drop } masquerade\n+ tcp dport ssh ip6 daddr 1::2 ether saddr 00:0f:54:0c:11:04 accept\n+ ip6 daddr fe00::1-fe00::200 udp dport domain counter packets 0 bytes 0 masquerade\n+ }\n+}\ndiff --git a/tests/shell/testcases/import/json_import_0 b/tests/shell/testcases/import/json_import_0\nnew file mode 100755\nindex 000000000000..a469a4dda754\n--- /dev/null\n+++ b/tests/shell/testcases/import/json_import_0\n@@ -0,0 +1,72 @@\n+#!/bin/bash\n+\n+tmpfile=$(mktemp)\n+\n+if [ ! -w $tmpfile ] ; then\n+\techo \"Failed to create tmp file\" >&2\n+\texit 0\n+fi\n+\n+trap \"rm -rf $tmpfile\" EXIT # cleanup if aborted\n+\n+RULESET=\"table ip mangle {\n+\tset blackhole {\n+\t\ttype ipv4_addr\n+\t\telements = { 192.168.1.4, 192.168.1.5 }\n+\t}\n+\n+\tchain prerouting {\n+\t\ttype filter hook prerouting priority 0; policy accept;\n+\t\ttcp dport { ssh, http } accept\n+\t\tip saddr @blackhole drop\n+\t\ticmp type echo-request accept\n+\t\tiifname \\\"lo\\\" accept\n+\t\ticmp type echo-request counter packets 0 bytes 0\n+\t\tct state established,related accept\n+\t\ttcp flags != syn counter packets 7 bytes 841\n+\t\tip saddr 192.168.1.100 ip daddr 192.168.1.1 counter packets 0 bytes 0\n+\t}\n+}\n+table arp x {\n+\tchain y {\n+\t\tarp htype 22\n+\t\tarp ptype ip\n+\t\tarp operation != rrequest\n+\t\tarp operation { request, reply, rrequest, rreply, inrequest, inreply, nak }\n+\t\tarp hlen 33-45\n+\t}\n+}\n+table bridge x {\n+\tchain y {\n+\t\ttype filter hook input priority 0; policy accept;\n+\t\tvlan id 4094\n+\t\tvlan id 4094 vlan cfi 0\n+\t\tvlan id 1 ip saddr 10.0.0.0/23 udp dport domain\n+\t}\n+}\n+table ip6 x {\n+\tchain y {\n+\t\ttype nat hook postrouting priority 0; policy accept;\n+\t\ticmpv6 id 33-45\n+\t\tip6 daddr fe00::1-fe00::200 udp dport domain counter packets 0 bytes 0\n+\t\tmeta l4proto tcp masquerade to :1024\n+\t\tiifname \\\"wlan0\\\" ct state established,new tcp dport vmap { ssh : drop, 222 : drop } masquerade\n+\t\ttcp dport ssh ip6 daddr 1::2 ether saddr 00:0f:54:0c:11:04 accept\n+\t\tip6 daddr fe00::1-fe00::200 udp dport domain counter packets 0 bytes 0 masquerade\n+\t}\n+}\"\n+\n+echo \"$RULESET\" > $tmpfile\n+$NFT -f $tmpfile\n+$NFT export json > $tmpfile\n+$NFT flush ruleset\n+cat $tmpfile | $NFT import json\n+\n+RESULT=\"$($NFT list ruleset)\"\n+\n+\n+if [ \"$RULESET\" != \"$RESULT\" ] ; then\n+\tDIFF=\"$(which diff)\"\n+\t[ -x $DIFF ] && $DIFF -u <(echo \"$RULESET\") <(echo \"$RESULT\")\n+fi\n+\ndiff --git a/tests/shell/testcases/import/rules_arp_hlen_range.json b/tests/shell/testcases/import/rules_arp_hlen_range.json\nnew file mode 100644\nindex 000000000000..d4ad00cd7a54\n--- /dev/null\n+++ b/tests/shell/testcases/import/rules_arp_hlen_range.json\n@@ -0,0 +1 @@\n+{\"nftables\":[{\"add\":[{\"table\":{\"name\":\"x\",\"family\":\"arp\",\"flags\":0,\"use\":1}},{\"chain\":{\"name\":\"y\",\"handle\":1,\"table\":\"x\",\"family\":\"arp\",\"use\":1}},{\"rule\":{\"family\":\"arp\",\"table\":\"x\",\"chain\":\"y\",\"handle\":3,\"expr\":[{\"type\":\"payload\",\"dreg\":1,\"offset\":4,\"len\":1,\"base\":\"network\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"gte\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":1,\"data0\":\"0x00000021\"}}},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"lte\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":1,\"data0\":\"0x0000002d\"}}}]}}]}]}\ndiff --git a/tests/shell/testcases/import/rules_arp_htype.json b/tests/shell/testcases/import/rules_arp_htype.json\nnew file mode 100644\nindex 000000000000..95bd5580676d\n--- /dev/null\n+++ b/tests/shell/testcases/import/rules_arp_htype.json\n@@ -0,0 +1 @@\n+{\"nftables\":[{\"add\":[{\"table\":{\"name\":\"x\",\"family\":\"arp\",\"flags\":0,\"use\":1}},{\"chain\":{\"name\":\"y\",\"handle\":1,\"table\":\"x\",\"family\":\"arp\",\"use\":1}},{\"rule\":{\"family\":\"arp\",\"table\":\"x\",\"chain\":\"y\",\"handle\":5,\"expr\":[{\"type\":\"payload\",\"dreg\":1,\"offset\":0,\"len\":2,\"base\":\"network\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00001600\"}}}]}}]}]}\ndiff --git a/tests/shell/testcases/import/rules_arp_operation.json b/tests/shell/testcases/import/rules_arp_operation.json\nnew file mode 100644\nindex 000000000000..94389a33725e\n--- /dev/null\n+++ b/tests/shell/testcases/import/rules_arp_operation.json\n@@ -0,0 +1 @@\n+{\"nftables\":[{\"add\":[{\"table\":{\"name\":\"x\",\"family\":\"arp\",\"flags\":0,\"use\":1}},{\"chain\":{\"name\":\"y\",\"handle\":1,\"table\":\"x\",\"family\":\"arp\",\"use\":1}},{\"set\":{\"name\":\"__set0\",\"table\":\"x\",\"flags\":3,\"family\":\"arp\",\"key_type\":11,\"key_len\":2,\"desc_size\":7,\"set_elem\":[{\"key\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00000900\"}}},{\"key\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00000400\"}}},{\"key\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00000300\"}}},{\"key\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00000800\"}}},{\"key\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00000200\"}}},{\"key\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00000a00\"}}},{\"key\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00000100\"}}}]}},{\"rule\":{\"family\":\"arp\",\"table\":\"x\",\"chain\":\"y\",\"handle\":3,\"expr\":[{\"type\":\"payload\",\"dreg\":1,\"offset\":6,\"len\":2,\"base\":\"network\"},{\"type\":\"lookup\",\"set\":\"__set0\",\"sreg\":1,\"flags\":0}]}}]}]}\ndiff --git a/tests/shell/testcases/import/rules_arp_operation_check.json b/tests/shell/testcases/import/rules_arp_operation_check.json\nnew file mode 100644\nindex 000000000000..fac7b9447e3c\n--- /dev/null\n+++ b/tests/shell/testcases/import/rules_arp_operation_check.json\n@@ -0,0 +1 @@\n+{\"nftables\":[{\"add\":[{\"table\":{\"name\":\"x\",\"family\":\"arp\",\"flags\":0,\"use\":1}},{\"chain\":{\"name\":\"y\",\"handle\":1,\"table\":\"x\",\"family\":\"arp\",\"use\":1}},{\"rule\":{\"family\":\"arp\",\"table\":\"x\",\"chain\":\"y\",\"handle\":2,\"expr\":[{\"type\":\"payload\",\"dreg\":1,\"offset\":6,\"len\":2,\"base\":\"network\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"neq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00000300\"}}}]}}]}]}\ndiff --git a/tests/shell/testcases/import/rules_arp_ptype_ip.json b/tests/shell/testcases/import/rules_arp_ptype_ip.json\nnew file mode 100644\nindex 000000000000..81d2b6d366cd\n--- /dev/null\n+++ b/tests/shell/testcases/import/rules_arp_ptype_ip.json\n@@ -0,0 +1 @@\n+{\"nftables\":[{\"add\":[{\"table\":{\"name\":\"x\",\"family\":\"arp\",\"flags\":0,\"use\":1}},{\"chain\":{\"name\":\"y\",\"handle\":1,\"table\":\"x\",\"family\":\"arp\",\"use\":1}},{\"rule\":{\"family\":\"arp\",\"table\":\"x\",\"chain\":\"y\",\"handle\":4,\"expr\":[{\"type\":\"payload\",\"dreg\":1,\"offset\":2,\"len\":2,\"base\":\"network\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00000008\"}}}]}}]}]}\ndiff --git a/tests/shell/testcases/import/rules_bridge_vlan.json b/tests/shell/testcases/import/rules_bridge_vlan.json\nnew file mode 100644\nindex 000000000000..375ea9b2e29a\n--- /dev/null\n+++ b/tests/shell/testcases/import/rules_bridge_vlan.json\n@@ -0,0 +1 @@\n+{\"nftables\":[{\"add\":[{\"table\":{\"name\":\"x\",\"family\":\"bridge\",\"flags\":0,\"use\":1}},{\"chain\":{\"name\":\"y\",\"handle\":1,\"bytes\":0,\"packets\":0,\"table\":\"x\",\"family\":\"bridge\",\"use\":1,\"type\":\"filter\",\"hooknum\":\"input\",\"prio\":0,\"policy\":\"accept\"}},{\"rule\":{\"family\":\"bridge\",\"table\":\"x\",\"chain\":\"y\",\"handle\":6,\"expr\":[{\"type\":\"payload\",\"dreg\":1,\"offset\":12,\"len\":2,\"base\":\"link\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00000081\"}}},{\"type\":\"payload\",\"dreg\":1,\"offset\":14,\"len\":2,\"base\":\"link\"},{\"type\":\"bitwise\",\"sreg\":1,\"dreg\":1,\"len\":2,\"mask\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x0000ff0f\"}},\"xor\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00000000\"}}},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x0000fe0f\"}}}]}}]}]}\ndiff --git a/tests/shell/testcases/import/rules_bridge_vlan_id.json b/tests/shell/testcases/import/rules_bridge_vlan_id.json\nnew file mode 100644\nindex 000000000000..8f01fcedf9d2\n--- /dev/null\n+++ b/tests/shell/testcases/import/rules_bridge_vlan_id.json\n@@ -0,0 +1 @@\n+{\"nftables\":[{\"add\":[{\"table\":{\"name\":\"x\",\"family\":\"bridge\",\"flags\":0,\"use\":1}},{\"chain\":{\"name\":\"y\",\"handle\":1,\"bytes\":0,\"packets\":0,\"table\":\"x\",\"family\":\"bridge\",\"use\":1,\"type\":\"filter\",\"hooknum\":\"input\",\"prio\":0,\"policy\":\"accept\"}},{\"rule\":{\"family\":\"bridge\",\"table\":\"x\",\"chain\":\"y\",\"handle\":4,\"expr\":[{\"type\":\"payload\",\"dreg\":1,\"offset\":12,\"len\":2,\"base\":\"link\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00000081\"}}},{\"type\":\"payload\",\"dreg\":1,\"offset\":14,\"len\":2,\"base\":\"link\"},{\"type\":\"bitwise\",\"sreg\":1,\"dreg\":1,\"len\":2,\"mask\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x0000ff0f\"}},\"xor\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00000000\"}}},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x0000fe0f\"}}},{\"type\":\"payload\",\"dreg\":1,\"offset\":14,\"len\":1,\"base\":\"link\"},{\"type\":\"bitwise\",\"sreg\":1,\"dreg\":1,\"len\":1,\"mask\":{\"reg\":{\"type\":\"value\",\"len\":1,\"data0\":\"0x00000010\"}},\"xor\":{\"reg\":{\"type\":\"value\",\"len\":1,\"data0\":\"0x00000000\"}}},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":1,\"data0\":\"0x00000000\"}}}]}}]}]}\ndiff --git a/tests/shell/testcases/import/rules_bridge_vlan_id_saddr_udp_dport_drop_domain.json b/tests/shell/testcases/import/rules_bridge_vlan_id_saddr_udp_dport_drop_domain.json\nnew file mode 100644\nindex 000000000000..69f8446e7622\n--- /dev/null\n+++ b/tests/shell/testcases/import/rules_bridge_vlan_id_saddr_udp_dport_drop_domain.json\n@@ -0,0 +1 @@\n+{\"nftables\":[{\"add\":[{\"table\":{\"name\":\"x\",\"family\":\"bridge\",\"flags\":0,\"use\":1}},{\"chain\":{\"name\":\"y\",\"handle\":1,\"bytes\":0,\"packets\":0,\"table\":\"x\",\"family\":\"bridge\",\"use\":1,\"type\":\"filter\",\"hooknum\":\"input\",\"prio\":0,\"policy\":\"accept\"}},{\"rule\":{\"family\":\"bridge\",\"table\":\"x\",\"chain\":\"y\",\"handle\":9,\"expr\":[{\"type\":\"payload\",\"dreg\":1,\"offset\":12,\"len\":2,\"base\":\"link\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00000081\"}}},{\"type\":\"payload\",\"dreg\":1,\"offset\":14,\"len\":2,\"base\":\"link\"},{\"type\":\"bitwise\",\"sreg\":1,\"dreg\":1,\"len\":2,\"mask\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x0000ff0f\"}},\"xor\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00000000\"}}},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00000100\"}}},{\"type\":\"payload\",\"dreg\":1,\"offset\":16,\"len\":2,\"base\":\"link\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00000008\"}}},{\"type\":\"payload\",\"dreg\":1,\"offset\":12,\"len\":4,\"base\":\"network\"},{\"type\":\"bitwise\",\"sreg\":1,\"dreg\":1,\"len\":4,\"mask\":{\"reg\":{\"type\":\"value\",\"len\":4,\"data0\":\"0x00feffff\"}},\"xor\":{\"reg\":{\"type\":\"value\",\"len\":4,\"data0\":\"0x00000000\"}}},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":4,\"data0\":\"0x0000000a\"}}},{\"type\":\"meta\",\"dreg\":1,\"key\":\"l4proto\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":1,\"data0\":\"0x00000011\"}}},{\"type\":\"payload\",\"dreg\":1,\"offset\":2,\"len\":2,\"base\":\"transport\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00003500\"}}}]}}]}]}\ndiff --git a/tests/shell/testcases/import/rules_ipv4_ct_state_accept.json b/tests/shell/testcases/import/rules_ipv4_ct_state_accept.json\nnew file mode 100644\nindex 000000000000..942f19850026\n--- /dev/null\n+++ b/tests/shell/testcases/import/rules_ipv4_ct_state_accept.json\n@@ -0,0 +1 @@\n+{\"nftables\":[{\"add\":[{\"table\":{\"name\":\"mangle\",\"family\":\"ip\",\"flags\":0,\"use\":1}},{\"chain\":{\"name\":\"prerouting\",\"handle\":1,\"bytes\":696,\"packets\":8,\"table\":\"mangle\",\"family\":\"ip\",\"use\":1,\"type\":\"filter\",\"hooknum\":\"prerouting\",\"prio\":0,\"policy\":\"accept\"}},{\"rule\":{\"family\":\"ip\",\"table\":\"mangle\",\"chain\":\"prerouting\",\"handle\":2,\"expr\":[{\"type\":\"ct\",\"dreg\":1,\"key\":\"state\"},{\"type\":\"bitwise\",\"sreg\":1,\"dreg\":1,\"len\":4,\"mask\":{\"reg\":{\"type\":\"value\",\"len\":4,\"data0\":\"0x00000006\"}},\"xor\":{\"reg\":{\"type\":\"value\",\"len\":4,\"data0\":\"0x00000000\"}}},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"neq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":4,\"data0\":\"0x00000000\"}}},{\"type\":\"immediate\",\"dreg\":0,\"data\":{\"reg\":{\"type\":\"verdict\",\"verdict\":\"accept\"}}}]}}]}]}\ndiff --git a/tests/shell/testcases/import/rules_ipv4_icmp_type_echo-request_accept.json b/tests/shell/testcases/import/rules_ipv4_icmp_type_echo-request_accept.json\nnew file mode 100644\nindex 000000000000..5a1032d0b771\n--- /dev/null\n+++ b/tests/shell/testcases/import/rules_ipv4_icmp_type_echo-request_accept.json\n@@ -0,0 +1 @@\n+{\"nftables\":[{\"add\":[{\"table\":{\"name\":\"mangle\",\"family\":\"ip\",\"flags\":0,\"use\":1}},{\"chain\":{\"name\":\"prerouting\",\"handle\":1,\"bytes\":46200,\"packets\":417,\"table\":\"mangle\",\"family\":\"ip\",\"use\":1,\"type\":\"filter\",\"hooknum\":\"prerouting\",\"prio\":0,\"policy\":\"accept\"}},{\"rule\":{\"family\":\"ip\",\"table\":\"mangle\",\"chain\":\"prerouting\",\"handle\":2,\"expr\":[{\"type\":\"meta\",\"dreg\":1,\"key\":\"l4proto\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":1,\"data0\":\"0x00000001\"}}},{\"type\":\"payload\",\"dreg\":1,\"offset\":0,\"len\":1,\"base\":\"transport\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":1,\"data0\":\"0x00000008\"}}},{\"type\":\"immediate\",\"dreg\":0,\"data\":{\"reg\":{\"type\":\"verdict\",\"verdict\":\"accept\"}}}]}}]}]}\ndiff --git a/tests/shell/testcases/import/rules_ipv4_icmp_type_echo-request_counter.json b/tests/shell/testcases/import/rules_ipv4_icmp_type_echo-request_counter.json\nnew file mode 100644\nindex 000000000000..a95de6759a17\n--- /dev/null\n+++ b/tests/shell/testcases/import/rules_ipv4_icmp_type_echo-request_counter.json\n@@ -0,0 +1 @@\n+{\"nftables\":[{\"add\":[{\"table\":{\"name\":\"mangle\",\"family\":\"ip\",\"flags\":0,\"use\":1}},{\"chain\":{\"name\":\"prerouting\",\"handle\":1,\"bytes\":104,\"packets\":2,\"table\":\"mangle\",\"family\":\"ip\",\"use\":1,\"type\":\"filter\",\"hooknum\":\"prerouting\",\"prio\":0,\"policy\":\"accept\"}},{\"rule\":{\"family\":\"ip\",\"table\":\"mangle\",\"chain\":\"prerouting\",\"handle\":2,\"expr\":[{\"type\":\"meta\",\"dreg\":1,\"key\":\"l4proto\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":1,\"data0\":\"0x00000001\"}}},{\"type\":\"payload\",\"dreg\":1,\"offset\":0,\"len\":1,\"base\":\"transport\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":1,\"data0\":\"0x00000008\"}}},{\"type\":\"counter\",\"pkts\":0,\"bytes\":0}]}}]}]}\ndiff --git a/tests/shell/testcases/import/rules_ipv4_iifname_accept.json b/tests/shell/testcases/import/rules_ipv4_iifname_accept.json\nnew file mode 100644\nindex 000000000000..5a37a017901d\n--- /dev/null\n+++ b/tests/shell/testcases/import/rules_ipv4_iifname_accept.json\n@@ -0,0 +1 @@\n+{\"nftables\":[{\"add\":[{\"table\":{\"name\":\"mangle\",\"family\":\"ip\",\"flags\":0,\"use\":1}},{\"chain\":{\"name\":\"prerouting\",\"handle\":1,\"bytes\":4435,\"packets\":51,\"table\":\"mangle\",\"family\":\"ip\",\"use\":1,\"type\":\"filter\",\"hooknum\":\"prerouting\",\"prio\":0,\"policy\":\"accept\"}},{\"rule\":{\"family\":\"ip\",\"table\":\"mangle\",\"chain\":\"prerouting\",\"handle\":5,\"expr\":[{\"type\":\"meta\",\"dreg\":1,\"key\":\"iifname\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":16,\"data0\":\"0x00006f6c\",\"data1\":\"0x00000000\",\"data2\":\"0x00000000\",\"data3\":\"0x00000000\"}}},{\"type\":\"immediate\",\"dreg\":0,\"data\":{\"reg\":{\"type\":\"verdict\",\"verdict\":\"accept\"}}}]}}]}]}\ndiff --git a/tests/shell/testcases/import/rules_ipv4_saddr_daddr_counter.json b/tests/shell/testcases/import/rules_ipv4_saddr_daddr_counter.json\nnew file mode 100644\nindex 000000000000..396cf2368b94\n--- /dev/null\n+++ b/tests/shell/testcases/import/rules_ipv4_saddr_daddr_counter.json\n@@ -0,0 +1 @@\n+{\"nftables\":[{\"add\":[{\"table\":{\"name\":\"mangle\",\"family\":\"ip\",\"flags\":0,\"use\":1}},{\"chain\":{\"name\":\"prerouting\",\"handle\":1,\"bytes\":2009,\"packets\":15,\"table\":\"mangle\",\"family\":\"ip\",\"use\":1,\"type\":\"filter\",\"hooknum\":\"prerouting\",\"prio\":0,\"policy\":\"accept\"}},{\"rule\":{\"family\":\"ip\",\"table\":\"mangle\",\"chain\":\"prerouting\",\"handle\":2,\"expr\":[{\"type\":\"payload\",\"dreg\":1,\"offset\":12,\"len\":8,\"base\":\"network\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":8,\"data0\":\"0x6401a8c0\",\"data1\":\"0x0101a8c0\"}}},{\"type\":\"counter\",\"pkts\":0,\"bytes\":0}]}}]}]}\ndiff --git a/tests/shell/testcases/import/rules_ipv4_set_elements.json b/tests/shell/testcases/import/rules_ipv4_set_elements.json\nnew file mode 100644\nindex 000000000000..ea641e384047\n--- /dev/null\n+++ b/tests/shell/testcases/import/rules_ipv4_set_elements.json\n@@ -0,0 +1 @@\n+{\"nftables\":[{\"add\":[{\"table\":{\"name\":\"mangle\",\"family\":\"ip\",\"flags\":0,\"use\":2}},{\"chain\":{\"name\":\"prerouting\",\"handle\":1,\"bytes\":15927,\"packets\":169,\"table\":\"mangle\",\"family\":\"ip\",\"use\":1,\"type\":\"filter\",\"hooknum\":\"prerouting\",\"prio\":0,\"policy\":\"accept\"}},{\"set\":{\"name\":\"blackhole\",\"table\":\"mangle\",\"family\":\"ip\",\"key_type\":7,\"key_len\":4,\"set_elem\":[{\"key\":{\"reg\":{\"type\":\"value\",\"len\":4,\"data0\":\"0x0401a8c0\"}}},{\"key\":{\"reg\":{\"type\":\"value\",\"len\":4,\"data0\":\"0x0501a8c0\"}}}]}},{\"rule\":{\"family\":\"ip\",\"table\":\"mangle\",\"chain\":\"prerouting\",\"handle\":2,\"expr\":[{\"type\":\"payload\",\"dreg\":1,\"offset\":12,\"len\":4,\"base\":\"network\"},{\"type\":\"lookup\",\"set\":\"blackhole\",\"sreg\":1,\"flags\":0},{\"type\":\"immediate\",\"dreg\":0,\"data\":{\"reg\":{\"type\":\"verdict\",\"verdict\":\"drop\"}}}]}}]}]}\ndiff --git a/tests/shell/testcases/import/rules_ipv4_tcp_dport_http_ssh.json b/tests/shell/testcases/import/rules_ipv4_tcp_dport_http_ssh.json\nnew file mode 100644\nindex 000000000000..b0f1709b8f49\n--- /dev/null\n+++ b/tests/shell/testcases/import/rules_ipv4_tcp_dport_http_ssh.json\n@@ -0,0 +1 @@\n+{\"nftables\":[{\"add\":[{\"table\":{\"name\":\"mangle\",\"family\":\"ip\",\"flags\":0,\"use\":1}},{\"chain\":{\"name\":\"prerouting\",\"handle\":1,\"bytes\":1308,\"packets\":12,\"table\":\"mangle\",\"family\":\"ip\",\"use\":1,\"type\":\"filter\",\"hooknum\":\"prerouting\",\"prio\":0,\"policy\":\"accept\"}},{\"set\":{\"name\":\"__set0\",\"table\":\"mangle\",\"flags\":3,\"family\":\"ip\",\"key_type\":13,\"key_len\":2,\"desc_size\":2,\"set_elem\":[{\"key\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00001600\"}}},{\"key\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00005000\"}}}]}},{\"rule\":{\"family\":\"ip\",\"table\":\"mangle\",\"chain\":\"prerouting\",\"handle\":2,\"expr\":[{\"type\":\"meta\",\"dreg\":1,\"key\":\"l4proto\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":1,\"data0\":\"0x00000006\"}}},{\"type\":\"payload\",\"dreg\":1,\"offset\":2,\"len\":2,\"base\":\"transport\"},{\"type\":\"lookup\",\"set\":\"__set0\",\"sreg\":1,\"flags\":0},{\"type\":\"immediate\",\"dreg\":0,\"data\":{\"reg\":{\"type\":\"verdict\",\"verdict\":\"accept\"}}}]}}]}]}\ndiff --git a/tests/shell/testcases/import/rules_ipv4_tcp_flags.json b/tests/shell/testcases/import/rules_ipv4_tcp_flags.json\nnew file mode 100644\nindex 000000000000..e0eadddd9528\n--- /dev/null\n+++ b/tests/shell/testcases/import/rules_ipv4_tcp_flags.json\n@@ -0,0 +1 @@\n+{\"nftables\":[{\"add\":[{\"table\":{\"name\":\"mangle\",\"family\":\"ip\",\"flags\":0,\"use\":1}},{\"chain\":{\"name\":\"prerouting\",\"handle\":1,\"bytes\":3886,\"packets\":36,\"table\":\"mangle\",\"family\":\"ip\",\"use\":1,\"type\":\"filter\",\"hooknum\":\"prerouting\",\"prio\":0,\"policy\":\"accept\"}},{\"rule\":{\"family\":\"ip\",\"table\":\"mangle\",\"chain\":\"prerouting\",\"handle\":2,\"expr\":[{\"type\":\"meta\",\"dreg\":1,\"key\":\"l4proto\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":1,\"data0\":\"0x00000006\"}}},{\"type\":\"payload\",\"dreg\":1,\"offset\":13,\"len\":1,\"base\":\"transport\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"neq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":1,\"data0\":\"0x00000002\"}}},{\"type\":\"counter\",\"pkts\":6,\"bytes\":770}]}}]}]}\ndiff --git a/tests/shell/testcases/import/rules_ipv6_daddr_udp_dport_counter.json b/tests/shell/testcases/import/rules_ipv6_daddr_udp_dport_counter.json\nnew file mode 100644\nindex 000000000000..78bf12071042\n--- /dev/null\n+++ b/tests/shell/testcases/import/rules_ipv6_daddr_udp_dport_counter.json\n@@ -0,0 +1 @@\n+{\"nftables\":[{\"add\":[{\"table\":{\"name\":\"x\",\"family\":\"ip6\",\"flags\":0,\"use\":1}},{\"chain\":{\"name\":\"y\",\"handle\":1,\"bytes\":93,\"packets\":1,\"table\":\"x\",\"family\":\"ip6\",\"use\":1,\"type\":\"nat\",\"hooknum\":\"postrouting\",\"prio\":0,\"policy\":\"accept\"}},{\"rule\":{\"family\":\"ip6\",\"table\":\"x\",\"chain\":\"y\",\"handle\":8,\"expr\":[{\"type\":\"payload\",\"dreg\":1,\"offset\":24,\"len\":16,\"base\":\"network\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"gte\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":16,\"data0\":\"0x000000fe\",\"data1\":\"0x00000000\",\"data2\":\"0x00000000\",\"data3\":\"0x01000000\"}}},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"lte\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":16,\"data0\":\"0x000000fe\",\"data1\":\"0x00000000\",\"data2\":\"0x00000000\",\"data3\":\"0x00020000\"}}},{\"type\":\"meta\",\"dreg\":1,\"key\":\"l4proto\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":1,\"data0\":\"0x00000011\"}}},{\"type\":\"payload\",\"dreg\":1,\"offset\":2,\"len\":2,\"base\":\"transport\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00003500\"}}},{\"type\":\"counter\",\"pkts\":0,\"bytes\":0}]}}]}]}\ndiff --git a/tests/shell/testcases/import/rules_ipv6_daddr_udp_dport_counter_masquerade.json b/tests/shell/testcases/import/rules_ipv6_daddr_udp_dport_counter_masquerade.json\nnew file mode 100644\nindex 000000000000..8eda8f4ce1c9\n--- /dev/null\n+++ b/tests/shell/testcases/import/rules_ipv6_daddr_udp_dport_counter_masquerade.json\n@@ -0,0 +1 @@\n+{\"nftables\":[{\"add\":[{\"table\":{\"name\":\"x\",\"family\":\"ip6\",\"flags\":0,\"use\":1}},{\"chain\":{\"name\":\"y\",\"handle\":1,\"bytes\":0,\"packets\":0,\"table\":\"x\",\"family\":\"ip6\",\"use\":1,\"type\":\"nat\",\"hooknum\":\"postrouting\",\"prio\":0,\"policy\":\"accept\"}},{\"rule\":{\"family\":\"ip6\",\"table\":\"x\",\"chain\":\"y\",\"handle\":2,\"expr\":[{\"type\":\"payload\",\"dreg\":1,\"offset\":24,\"len\":16,\"base\":\"network\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"gte\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":16,\"data0\":\"0x000000fe\",\"data1\":\"0x00000000\",\"data2\":\"0x00000000\",\"data3\":\"0x01000000\"}}},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"lte\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":16,\"data0\":\"0x000000fe\",\"data1\":\"0x00000000\",\"data2\":\"0x00000000\",\"data3\":\"0x00020000\"}}},{\"type\":\"meta\",\"dreg\":1,\"key\":\"l4proto\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":1,\"data0\":\"0x00000011\"}}},{\"type\":\"payload\",\"dreg\":1,\"offset\":2,\"len\":2,\"base\":\"transport\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00003500\"}}},{\"type\":\"counter\",\"pkts\":0,\"bytes\":0},{\"type\":\"masq\"}]}}]}]}\ndiff --git a/tests/shell/testcases/import/rules_ipv6_icmpv6_id.json b/tests/shell/testcases/import/rules_ipv6_icmpv6_id.json\nnew file mode 100644\nindex 000000000000..19804c21ee3d\n--- /dev/null\n+++ b/tests/shell/testcases/import/rules_ipv6_icmpv6_id.json\n@@ -0,0 +1 @@\n+{\"nftables\":[{\"add\":[{\"table\":{\"name\":\"x\",\"family\":\"ip6\",\"flags\":0,\"use\":1}},{\"chain\":{\"name\":\"y\",\"handle\":1,\"bytes\":0,\"packets\":0,\"table\":\"x\",\"family\":\"ip6\",\"use\":1,\"type\":\"nat\",\"hooknum\":\"postrouting\",\"prio\":0,\"policy\":\"accept\"}},{\"rule\":{\"family\":\"ip6\",\"table\":\"x\",\"chain\":\"y\",\"handle\":2,\"expr\":[{\"type\":\"meta\",\"dreg\":1,\"key\":\"l4proto\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":1,\"data0\":\"0x0000003a\"}}},{\"type\":\"payload\",\"dreg\":1,\"offset\":4,\"len\":2,\"base\":\"transport\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"gte\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00002100\"}}},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"lte\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00002d00\"}}}]}}]}]}\ndiff --git a/tests/shell/testcases/import/rules_ipv6_iifname_ct_state_tcp_dport_vmap_masquerade.json b/tests/shell/testcases/import/rules_ipv6_iifname_ct_state_tcp_dport_vmap_masquerade.json\nnew file mode 100644\nindex 000000000000..5245041ed619\n--- /dev/null\n+++ b/tests/shell/testcases/import/rules_ipv6_iifname_ct_state_tcp_dport_vmap_masquerade.json\n@@ -0,0 +1 @@\n+{\"nftables\":[{\"add\":[{\"table\":{\"name\":\"x\",\"family\":\"ip6\",\"flags\":0,\"use\":1}},{\"chain\":{\"name\":\"y\",\"handle\":1,\"bytes\":0,\"packets\":0,\"table\":\"x\",\"family\":\"ip6\",\"use\":1,\"type\":\"nat\",\"hooknum\":\"postrouting\",\"prio\":0,\"policy\":\"accept\"}},{\"set\":{\"name\":\"__map0\",\"table\":\"x\",\"flags\":11,\"family\":\"ip6\",\"key_type\":13,\"key_len\":2,\"data_type\":4294967040,\"data_len\":16,\"desc_size\":2,\"set_elem\":[{\"key\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00001600\"}},\"data\":{\"reg\":{\"type\":\"verdict\",\"verdict\":\"drop\"}}},{\"key\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x0000de00\"}},\"data\":{\"reg\":{\"type\":\"verdict\",\"verdict\":\"drop\"}}}]}},{\"rule\":{\"family\":\"ip6\",\"table\":\"x\",\"chain\":\"y\",\"handle\":2,\"expr\":[{\"type\":\"meta\",\"dreg\":1,\"key\":\"iifname\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":16,\"data0\":\"0x6e616c77\",\"data1\":\"0x00000030\",\"data2\":\"0x00000000\",\"data3\":\"0x00000000\"}}},{\"type\":\"ct\",\"dreg\":1,\"key\":\"state\"},{\"type\":\"bitwise\",\"sreg\":1,\"dreg\":1,\"len\":4,\"mask\":{\"reg\":{\"type\":\"value\",\"len\":4,\"data0\":\"0x0000000a\"}},\"xor\":{\"reg\":{\"type\":\"value\",\"len\":4,\"data0\":\"0x00000000\"}}},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"neq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":4,\"data0\":\"0x00000000\"}}},{\"type\":\"meta\",\"dreg\":1,\"key\":\"l4proto\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":1,\"data0\":\"0x00000006\"}}},{\"type\":\"payload\",\"dreg\":1,\"offset\":2,\"len\":2,\"base\":\"transport\"},{\"type\":\"lookup\",\"set\":\"__map0\",\"sreg\":1,\"dreg\":0,\"flags\":0},{\"type\":\"masq\"}]}}]}]}\ndiff --git a/tests/shell/testcases/import/rules_ipv6_l4proto_tcp_masquerade.json b/tests/shell/testcases/import/rules_ipv6_l4proto_tcp_masquerade.json\nnew file mode 100644\nindex 000000000000..c190d7eaa0b6\n--- /dev/null\n+++ b/tests/shell/testcases/import/rules_ipv6_l4proto_tcp_masquerade.json\n@@ -0,0 +1 @@\n+{\"nftables\":[{\"add\":[{\"table\":{\"name\":\"x\",\"family\":\"ip6\",\"flags\":0,\"use\":1}},{\"chain\":{\"name\":\"y\",\"handle\":1,\"bytes\":0,\"packets\":0,\"table\":\"x\",\"family\":\"ip6\",\"use\":1,\"type\":\"nat\",\"hooknum\":\"postrouting\",\"prio\":0,\"policy\":\"accept\"}},{\"rule\":{\"family\":\"ip6\",\"table\":\"x\",\"chain\":\"y\",\"handle\":2,\"expr\":[{\"type\":\"meta\",\"dreg\":1,\"key\":\"l4proto\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":1,\"data0\":\"0x00000006\"}}},{\"type\":\"immediate\",\"dreg\":1,\"data\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00000004\"}}},{\"type\":\"masq\",\"sreg_proto_min\":1,\"sreg_proto_max\":1}]}}]}]}\ndiff --git a/tests/shell/testcases/import/rules_ipv6_tcp_dport_ssh_daddr_mapping_ether_saddr_accept.json b/tests/shell/testcases/import/rules_ipv6_tcp_dport_ssh_daddr_mapping_ether_saddr_accept.json\nnew file mode 100644\nindex 000000000000..9768b770f441\n--- /dev/null\n+++ b/tests/shell/testcases/import/rules_ipv6_tcp_dport_ssh_daddr_mapping_ether_saddr_accept.json\n@@ -0,0 +1 @@\n+{\"nftables\":[{\"add\":[{\"table\":{\"name\":\"x\",\"family\":\"ip6\",\"flags\":0,\"use\":1}},{\"chain\":{\"name\":\"y\",\"handle\":1,\"bytes\":0,\"packets\":0,\"table\":\"x\",\"family\":\"ip6\",\"use\":1,\"type\":\"nat\",\"hooknum\":\"postrouting\",\"prio\":0,\"policy\":\"accept\"}},{\"rule\":{\"family\":\"ip6\",\"table\":\"x\",\"chain\":\"y\",\"handle\":2,\"expr\":[{\"type\":\"meta\",\"dreg\":1,\"key\":\"l4proto\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":1,\"data0\":\"0x00000006\"}}},{\"type\":\"payload\",\"dreg\":1,\"offset\":2,\"len\":2,\"base\":\"transport\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00001600\"}}},{\"type\":\"payload\",\"dreg\":1,\"offset\":24,\"len\":16,\"base\":\"network\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":16,\"data0\":\"0x00000100\",\"data1\":\"0x00000000\",\"data2\":\"0x00000000\",\"data3\":\"0x02000000\"}}},{\"type\":\"meta\",\"dreg\":1,\"key\":\"iiftype\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":2,\"data0\":\"0x00000001\"}}},{\"type\":\"payload\",\"dreg\":1,\"offset\":6,\"len\":6,\"base\":\"link\"},{\"type\":\"cmp\",\"sreg\":1,\"op\":\"eq\",\"data\":{\"reg\":{\"type\":\"value\",\"len\":6,\"data0\":\"0x0c540f00\",\"data1\":\"0x00000411\"}}},{\"type\":\"immediate\",\"dreg\":0,\"data\":{\"reg\":{\"type\":\"verdict\",\"verdict\":\"accept\"}}}]}}]}]}\n", "prefixes": [ "nft", "V2" ] }