Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.1/patches/2230349/?format=api
{ "id": 2230349, "url": "http://patchwork.ozlabs.org/api/1.1/patches/2230349/?format=api", "web_url": "http://patchwork.ozlabs.org/project/netfilter-devel/patch/20260429152950.12610-1-fw@strlen.de/", "project": { "id": 26, "url": "http://patchwork.ozlabs.org/api/1.1/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 }, "msgid": "<20260429152950.12610-1-fw@strlen.de>", "date": "2026-04-29T15:29:45", "name": "[conntrack-tools] conntrackd-netns-test.sh: rework for CI pipelines", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "e88c5e6ea57367d26f402c25ce7648d2cd89b01c", "submitter": { "id": 1025, "url": "http://patchwork.ozlabs.org/api/1.1/people/1025/?format=api", "name": "Florian Westphal", "email": "fw@strlen.de" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/netfilter-devel/patch/20260429152950.12610-1-fw@strlen.de/mbox/", "series": [ { "id": 502097, "url": "http://patchwork.ozlabs.org/api/1.1/series/502097/?format=api", "web_url": "http://patchwork.ozlabs.org/project/netfilter-devel/list/?series=502097", "date": "2026-04-29T15:29:45", "name": "[conntrack-tools] conntrackd-netns-test.sh: rework for CI pipelines", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/502097/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2230349/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2230349/checks/", "tags": {}, "headers": { "Return-Path": "\n <netfilter-devel+bounces-12300-incoming=patchwork.ozlabs.org@vger.kernel.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "netfilter-devel@vger.kernel.org" ], "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c09:e001:a7::12fc:5321; helo=sto.lore.kernel.org;\n envelope-from=netfilter-devel+bounces-12300-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)", "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=91.216.245.30", "smtp.subspace.kernel.org;\n dmarc=none (p=none dis=none) header.from=strlen.de", "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=Chamillionaire.breakpoint.cc" ], "Received": [ "from sto.lore.kernel.org (sto.lore.kernel.org\n [IPv6:2600:3c09:e001:a7::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g5Lsx3fWjz1yHX\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 01:33:09 +1000 (AEST)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sto.lore.kernel.org (Postfix) with ESMTP id BD5DF30197C7\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 29 Apr 2026 15:30:08 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 0D2E133F8A2;\n\tWed, 29 Apr 2026 15:30:08 +0000 (UTC)", "from Chamillionaire.breakpoint.cc (Chamillionaire.breakpoint.cc\n [91.216.245.30])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id AC80737F015\n\tfor <netfilter-devel@vger.kernel.org>; Wed, 29 Apr 2026 15:30:03 +0000 (UTC)", "by Chamillionaire.breakpoint.cc (Postfix, from userid 1003)\n\tid 3B53F60336; Wed, 29 Apr 2026 17:29:56 +0200 (CEST)" ], "ARC-Seal": "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777476607; cv=none;\n b=VyF+hm90e8qe1jMq0529iNDPgfy5/Zs9MoBvnOEjMlE518FGT3FSZVMFaHs041O8BM0i5cqCmH08M4MkU1KmDYxCUoPZt4wpeD/kLsci5VyVA/2xRHhQb1sVhlxTXsuUE1Q8XMcHc7VwjnhvwGLwcH2bGxZYIM/7I2CQeTz2q6c=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777476607; c=relaxed/simple;\n\tbh=VwmfhluF2JeM9TBa2zHAB8/mq3bzEWet/djKNle3VfU=;\n\th=From:To:Cc:Subject:Date:Message-ID:MIME-Version;\n b=iT1gc8qtwmzP0DbhTuB0IsF2UTPfmaEpzcTfqhllc9osr75d9Sy37IrVZQQ2jnQZF/LEn7f730su57WfGFkxrbUa+xZafWSB0Yq4UWKGbI9L5ygYaDxwAWH51JQKdOLKf+R/eUi83vq2l2fM9HMwM0h11XEWAHuvwZezg0psIRE=", "ARC-Authentication-Results": "i=1; smtp.subspace.kernel.org;\n dmarc=none (p=none dis=none) header.from=strlen.de;\n spf=pass smtp.mailfrom=Chamillionaire.breakpoint.cc;\n arc=none smtp.client-ip=91.216.245.30", "From": "Florian Westphal <fw@strlen.de>", "To": "<netfilter-devel@vger.kernel.org>", "Cc": "Florian Westphal <fw@strlen.de>", "Subject": "[PATCH conntrack-tools] conntrackd-netns-test.sh: rework for CI\n pipelines", "Date": "Wed, 29 Apr 2026 17:29:45 +0200", "Message-ID": "<20260429152950.12610-1-fw@strlen.de>", "X-Mailer": "git-send-email 2.53.0", "Precedence": "bulk", "X-Mailing-List": "netfilter-devel@vger.kernel.org", "List-Id": "<netfilter-devel.vger.kernel.org>", "List-Subscribe": "<mailto:netfilter-devel+subscribe@vger.kernel.org>", "List-Unsubscribe": "<mailto:netfilter-devel+unsubscribe@vger.kernel.org>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit" }, "content": "1. Randomize the netns names so it won't collide with\n other tests that could run in parallel.\n\n2. Exit with 1 if there are errors.\n\n3. Add a 'test' parameter:\n Behaves like 'start' followed by single tcp syn plus check that this\n request can be found in the internal resp. external caches of the two\n conntrackd instances.\n\nThis script can still be used for manual testing:\n'start' will keep the netns/conntrackd instances running.\n\nSigned-off-by: Florian Westphal <fw@strlen.de>\n---\n .../conntrackd/netns/conntrackd-netns-test.sh | 181 +++++++++++++-----\n 1 file changed, 131 insertions(+), 50 deletions(-)", "diff": "diff --git a/tests/conntrackd/netns/conntrackd-netns-test.sh b/tests/conntrackd/netns/conntrackd-netns-test.sh\nindex f6b11e26dcf7..39be56f05b21 100755\n--- a/tests/conntrackd/netns/conntrackd-netns-test.sh\n+++ b/tests/conntrackd/netns/conntrackd-netns-test.sh\n@@ -6,71 +6,152 @@ then\n \texit 0\n fi\n \n+ret=0\n+R1=\"\"\n+R2=\"\"\n+NS1=\"\"\n+NS2=\"\"\n+statedir=\"\"\n+\n+die() {\n+\techo \"Error: $@\"\n+\texit 1\n+}\n+\n+warn() {\n+\techo \"Error: $@\"\n+\tret=1\n+}\n+\n+cleanup() {\n+\tfor n in \"$R1\" \"$R2\" \"$NS1\" \"$NS2\"; do\n+\t\tkill $(ip netns pid \"$n\") 2>/dev/null\n+\t\tip netns del \"$n\"\n+\tdone\n+\ttest -d \"$statedir\" && (\n+\t\trm -f \"$statedir/r1\"\n+\t\trm -f \"$statedir/r2\"\n+\t\trm -f \"$statedir/ns1\"\n+\t\trm -f \"$statedir/ns2\"\n+\t\trmdir \"$statedir\"\n+\t)\n+}\n+\n+dump_state() {\n+\tstatedir=\"$(mktemp -d -t ctd-state-XXXXXXXX)\" || exit 1\n+\n+\techo \"$R1\" > \"$statedir/r1\"\n+\techo \"$R2\" > \"$statedir/r2\"\n+\techo \"$NS1\" > \"$statedir/ns1\"\n+\techo \"$NS2\" > \"$statedir/ns2\"\n+}\n+\n+restore_state() {\n+\tread R1 < \"$statedir/r1\"\n+\tread R2 < \"$statedir/r2\"\n+\tread NS1 < \"$statedir/ns1\"\n+\tread NS2 < \"$statedir/ns2\"\n+}\n+\n start () {\n-\tip netns add ns1\n-\tip netns add ns2\n-\tip netns add nsr1\n-\tip netns add nsr2\n-\n-\tip link add veth0 netns ns1 type veth peer name veth1 netns nsr1\n-\tip link add veth0 netns nsr1 type veth peer name veth0 netns ns2\n-\tip link add veth2 netns nsr1 type veth peer name veth0 netns nsr2\n-\n-\tip -net ns1 addr add 192.168.10.2/24 dev veth0\n-\tip -6 -net ns1 addr add bbbb::2/64 dev veth0\n-\tip -net ns1 link set up dev veth0\n-\tip -net ns1 ro add 10.0.1.0/24 via 192.168.10.1 dev veth0\n-\tip -6 -net ns1 ro add aaaa::/64 via bbbb::1 dev veth0\n-\n-\tip -net nsr1 addr add 10.0.1.1/24 dev veth0\n-\tip -net nsr1 addr add 192.168.10.1/24 dev veth1\n-\tip -6 -net nsr1 addr add aaaa::1/64 dev veth0\n-\tip -6 -net nsr1 addr add bbbb::1/64 dev veth1\n-\tip -net nsr1 link set up dev veth0\n-\tip -net nsr1 link set up dev veth1\n-\tip -net nsr1 route add default via 192.168.10.2\n-\tip -6 -net nsr1 route add default via bbbb::2\n-\tip netns exec nsr1 sysctl net.ipv4.ip_forward=1\n-\tip netns exec nsr1 sysctl net.ipv6.conf.all.forwarding=1\n-\n-\tip -net nsr1 addr add 192.168.100.2/24 dev veth2\n-\tip -6 -net nsr1 addr add cccc::2/96 dev veth2\n-\tip -net nsr1 link set up dev veth2\n-\tip -net nsr2 addr add 192.168.100.3/24 dev veth0\n-\tip -6 -net nsr2 addr add cccc::3/96 dev veth0\n-\tip -net nsr2 link set up dev veth0\n-\n-\tip -net ns2 addr add 10.0.1.2/24 dev veth0\n-\tip -6 -net ns2 addr add aaaa::2/64 dev veth0\n-\tip -net ns2 link set up dev veth0\n-\tip -net ns2 route add default via 10.0.1.1\n-\tip -6 -net ns2 route add default via aaaa::1\n+\tlocal rnd=$(mktemp -u XXXXXXXX)\n+\n+\tR1=\"ctd-r1-$rnd\"\n+\tR2=\"ctd-r2-$rnd\"\n+\tNS1=\"ctd-ns1-$rnd\"\n+\tNS2=\"ctd-ns2-$rnd\"\n+\n+\tfor n in \"$R1\" \"$R2\" \"$NS1\" \"$NS2\"; do\n+\t\tip netns add \"$n\"\n+\tdone\n+\n+\tip link add veth0 netns \"$NS1\" type veth peer name veth1 netns \"$R1\"\n+\tip link add veth0 netns \"$R1\" type veth peer name veth0 netns \"$NS2\"\n+\tip link add veth2 netns \"$R1\" type veth peer name veth0 netns \"$R2\"\n+\n+\tip -net \"$NS1\" addr add 192.168.10.2/24 dev veth0\n+\tip -6 -net \"$NS1\" addr add bbbb::2/64 dev veth0\n+\tip -net \"$NS1\" link set up dev veth0\n+\tip -net \"$NS1\" ro add 10.0.1.0/24 via 192.168.10.1 dev veth0\n+\tip -6 -net \"$NS1\" ro add aaaa::/64 via bbbb::1 dev veth0\n+\n+\tip -net \"$R1\" addr add 10.0.1.1/24 dev veth0\n+\tip -net \"$R1\" addr add 192.168.10.1/24 dev veth1\n+\tip -6 -net \"$R1\" addr add aaaa::1/64 dev veth0\n+\tip -6 -net \"$R1\" addr add bbbb::1/64 dev veth1\n+\tip -net \"$R1\" link set up dev veth0\n+\tip -net \"$R1\" link set up dev veth1\n+\tip -net \"$R1\" route add default via 192.168.10.2\n+\tip -6 -net \"$R1\" route add default via bbbb::2\n+\tip netns exec \"$R1\" sysctl -q net.ipv4.ip_forward=1\n+\tip netns exec \"$R1\" sysctl -q net.ipv6.conf.all.forwarding=1\n+\n+\tip -net \"$R1\" addr add 192.168.100.2/24 dev veth2\n+\tip -6 -net \"$R1\" addr add cccc::2/96 dev veth2\n+\tip -net \"$R1\" link set up dev veth2\n+\tip -net \"$R2\" addr add 192.168.100.3/24 dev veth0\n+\tip -6 -net \"$R2\" addr add cccc::3/96 dev veth0\n+\tip -net \"$R2\" link set up dev veth0\n+\n+\tip -net \"$NS2\" addr add 10.0.1.2/24 dev veth0\n+\tip -6 -net \"$NS2\" addr add aaaa::2/64 dev veth0\n+\tip -net \"$NS2\" link set up dev veth0\n+\tip -net \"$NS2\" route add default via 10.0.1.1\n+\tip -6 -net \"$NS2\" route add default via aaaa::1\n \n \techo 1 > /proc/sys/net/netfilter/nf_log_all_netns\n \n-\tip netns exec nsr1 nft -f ruleset-nsr1.nft\n-\tip netns exec nsr1 conntrackd -C conntrackd-nsr1.conf -d\n-\tip netns exec nsr2 conntrackd -C conntrackd-nsr2.conf -d\n+\tip netns exec \"$R1\" nft -f ruleset-nsr1.nft\n+\tip netns exec \"$R1\" conntrackd -C conntrackd-nsr1.conf -d\n+\tip netns exec \"$R2\" conntrackd -C conntrackd-nsr2.conf -d\n }\n \n-stop () {\n-\tip netns del ns1\n-\tip netns del ns2\n-\tip netns del nsr1\n-\tip netns del nsr2\n-\tkillall -15 conntrackd\n+selftest() {\n+\t# This will time out, but we only want to make sure this appears both in nsr1 and nsr2 conntrackd\n+\t# instances.\n+\ttimeout 10 ip netns exec \"$NS1\" socat -u STDIN TCP-connect:10.0.1.31:12345 > /dev/null &\n+\tlocal pid=$!\n+\n+\tsleep 1\n+\tif ! ip netns exec \"$R1\" conntrackd -C conntrackd-nsr1.conf -i | grep -q \"src=192.168.10.2 dst=10.0.1.31\"; then\n+\t\twarn \"nsr1 had no record in internal cache.\"\n+\tfi\n+\n+\tif ! ip netns exec \"$R2\" conntrackd -C conntrackd-nsr2.conf -e | grep -q \"src=192.168.10.2 dst=10.0.1.31\"; then\n+\t\twarn \"nsr2 had no record in external cache.\"\n+\tfi\n+\n+\tif [ $ret -eq 0 ];then\n+\t\techo \"PASS: Found connection in external cache in nsr2.\"\n+\t\tkill $pid\n+\tfi\n }\n \n case $1 in\n start)\n+\ttrap cleanup EXIT\n \tstart\n+\tdump_state\n+\techo \"Running with: $NS1 $NS2 $R1 $R2, stop with $0 stop $statedir\"\n+\ttrap - EXIT\n \t;;\n stop)\n-\tstop\n+\tif [ \"$2\"x = \"\"x ]; then\n+\t\techo \"$0 stop <statedir>\"\n+\tfi\n+\ttest -d \"$2\" || die \"$2 not found\"\n+\tstatedir=\"$2\"\n+\ttrap cleanup EXIT\n+\trestore_state\n+\t;;\n+test)\n+\ttrap cleanup EXIT\n+\tstart\n+\tselftest\n \t;;\n *)\n-\techo \"$0 [start|stop]\"\n+\techo \"$0 [start|stop|test]\"\n \t;;\n esac\n \n-exit 0\n+exit $ret\n", "prefixes": [ "conntrack-tools" ] }