From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 691253A4AD9 for ; Tue, 20 Jan 2026 19:53:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768938804; cv=none; b=ax9lslUHFrENE5bzJPIqtvuTmXW5/UeVvWJbvwbsJeFEFoWZKn452maNn384wXadITOA6iGHH9Tj0ayiEzyOOS4zq3QYu7KnsEcPGnuYZc4qhpqr/zOxx8J1Y2P1a3yN10cGwUnkR+a/dkbkmBCZzdDGdZIhlTby+xhJRrpiPOg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768938804; c=relaxed/simple; bh=Wc0zOQESfE5s5ecNdG6NBVdoEN3SMMcN/yL4E4wazq8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BwKRvHSrZbp4V8TA4aO2jSjNsAYTC6gRgs4H61P9zCke2cghlrGHNJFzwgtkDfpRPPRXtFvR97WL581hSTQ93mAbTvTXXKzHhHM5279Vlt6JkarIZR+GejdKPwr4PIqsp7IVALLx7VIdSiteBdFHgDsvfuAjBSb7Z7vxFYNLYzk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=jdvIKvsQ; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jdvIKvsQ" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-47f5c2283b6so38334955e9.1 for ; Tue, 20 Jan 2026 11:53:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768938800; x=1769543600; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=HNBIGa1MHbrQfLi7mQ/sZTBMUnQSbSCoiwS9SfLj2Sg=; b=jdvIKvsQcPY9NG/EloPDdQxCcgA7XQsW+yQoC+dPsr6A6NdMnDqPzP0d0eNYT8dXg3 oop3gQkG0c6JM/WaOSiYFsz3vewzjtb+urdrPBWnh1pZaYAOQOceQ2g/S6AuuFV5M3Mb EymsGdm4pz7jrCoUeUXa9f4QdVyYtQRbDSF5h81phOCsG+eiU22mh45DYDGtC1gYU48Y 9evNqArpP0wm4OSgHFK4196ClCMbbZtvfur60dehXCBBXtjvIHM69OSIL9K13E01hi8Y sr48+P9R1pjQj2AR4QZhQ9c0DGwhLmFJDNE/2ssZ1Tr/uKQAPvtigundPkSbuDRPdpja JiGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768938800; x=1769543600; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=HNBIGa1MHbrQfLi7mQ/sZTBMUnQSbSCoiwS9SfLj2Sg=; b=L6qjcWNDC0pZtb2Kyc/5AxHpk7/zvuWx1LEjVYk4cdbEi/dgSz8AopjTBfXfMMhi4i lmU/3915nU+j12qSYMJEkS2D+g7f09gSflEC6fzD9Xm4YSITweipxPaqNHHvrBQ1uGDD CdDA1RyOq9w0YrlZrdzPZAaay/5EotozpjH6GDxxpuAZwH98x9JkLa+7fz6FQKdwBNr9 Hk++D4cRvMCUQ6/li0gHduOMpRkgmmSY5h8j+JwXdE6+nfppaQFnwEYekZ0unmKQmY8E FsHOVXi5EHIH4n6GE02AbLybmfqDwWMlOaHPAW4XrZb7QE2tmnkaqXC88UUn0MvqP6iw TLeQ== X-Gm-Message-State: AOJu0YyRR+F3al+2ty8umWH9Z5e/zH5Y2jQAOCpGYoEmVTHg+v0+11JV 58szWC4Vvw7T/Gk+ZEE/G9xWgIn4CYcLNPu4fG1rtjk7JCh4Se6V9wGsBblV0Q== X-Gm-Gg: AY/fxX7SG+fSNDi3zCB9hvxdooN/u9viddoRgBh0hZJTwM2tI4IesIPd96QVtB12vns W5xPFlOADdYOzCer1feOPW5yOvxC16abToCejK80jgPur3y+oPdWhZNdE1OM+WiykoWXC7hHBq0 LIAebLsFTjK/FzQv8X8HsjTkXjB21TqmJXPijotXODnEW5MKJOShAWGRIpS/jdRWAM54RnVHvHk 7bU2NDN0lDq/t/Hygic1K0gKN22+hecZN8uSx5Qx441+8UneDIkhOwSTiL2F/cy8nw/CvIPIrkf pHsKKaOXLt6BolMncrlU1bB+khAO8dF7R+zog6ox6MivCcVyS0Y2SuxRO5BhyshdHbaPhZKKRfu OTELpBssQNVxjEI1xPw997kDe6a/oNfzX+bELl2bPJ1K9Zaunl0fYZg1i0Ulrd996AmWXsbOHwH mmA5bqjAmcyotp/CMvzvKrsK4me36WvlI= X-Received: by 2002:a05:600c:34d3:b0:479:1348:c614 with SMTP id 5b1f17b1804b1-4803e7f03fdmr41967325e9.26.1768938799963; Tue, 20 Jan 2026 11:53:19 -0800 (PST) Received: from bluefin ([2a01:cb1c:8441:2b00:c694:3c2c:878b:f4c0]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47f4289b789sm320114165e9.1.2026.01.20.11.53.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Jan 2026 11:53:19 -0800 (PST) From: Alexandre Knecht To: netfilter-devel@vger.kernel.org Cc: phil@nwl.cc, fw@strlen.de, Alexandre Knecht Subject: [PATCH v6 3/3] tests: shell: add JSON test for handle-based rule positioning Date: Tue, 20 Jan 2026 20:53:03 +0100 Message-ID: <20260120195303.1987192-4-knecht.alexandre@gmail.com> X-Mailer: git-send-email 2.51.1 In-Reply-To: <20260120195303.1987192-1-knecht.alexandre@gmail.com> References: <20260120195303.1987192-1-knecht.alexandre@gmail.com> Precedence: bulk X-Mailing-List: netfilter-devel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Add comprehensive test for JSON handle-based rule positioning to verify the handle field correctly positions rules with explicit add/insert commands while being ignored in implicit format. Test coverage: 1. ADD with handle positions AFTER the specified handle 2. INSERT with handle positions BEFORE the specified handle 3. INSERT without handle positions at beginning 4. Multiple commands in single transaction (batch behavior) 5. Implicit format ignores handle field for portability The test uses sed for handle extraction and nft -f format for setup as suggested in code review. Final state is a table with two rules from the implicit format test. Signed-off-by: Alexandre Knecht --- .../testcases/json/0008rule_position_handle_0 | 162 ++++++++++++++++++ .../dumps/0008rule_position_handle_0.json-nft | 76 ++++++++ .../json/dumps/0008rule_position_handle_0.nft | 6 + 3 files changed, 244 insertions(+) create mode 100755 tests/shell/testcases/json/0008rule_position_handle_0 create mode 100644 tests/shell/testcases/json/dumps/0008rule_position_handle_0.json-nft create mode 100644 tests/shell/testcases/json/dumps/0008rule_position_handle_0.nft diff --git a/tests/shell/testcases/json/0008rule_position_handle_0 b/tests/shell/testcases/json/0008rule_position_handle_0 new file mode 100755 index 00000000..32a3752c --- /dev/null +++ b/tests/shell/testcases/json/0008rule_position_handle_0 @@ -0,0 +1,162 @@ +#!/bin/bash + +# NFT_TEST_REQUIRES(NFT_TEST_HAVE_json) + +# Test JSON handle-based rule positioning +# Verifies explicit format uses handle for positioning while implicit format ignores it + +set -e + +$NFT flush ruleset + +echo "Test 1: ADD with handle positions AFTER" +$NFT -f - <