From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.openvz.org (unknown [69.168.225.77]) by lore.virtuozzo.com (Postfix) with ESMTPS id D0905802E4 for ; Mon, 31 Aug 2026 22:52:57 +0000 (UTC) Received: from mail.openvz.org (localhost [127.0.0.1]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 67VMpgb3031034; Tue, 1 Sep 2026 01:51:43 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 67VMpgb3031034 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="T5D1kzKM" Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 67VMpeqZ031018 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Tue, 1 Sep 2026 01:51:40 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 67VMpeqZ031018 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-4843313047eso1359650f8f.1 for ; Mon, 31 Aug 2026 15:51:40 -0700 (PDT) X-Gm-Message-State: AFuF++mZp2YscihKSbaDzFduG95Mo9heD1JlI7IIXz7dxjRigVmVdqpo NBvBdo459LX0XRwkuevDp/ruYpcfLsM6ZDe7rzlsPyCIAOTW6OHV6/TfdP9z8MhKrBsc1LcilRZ tnHkCpdbwAejQxhl4rly7S0Lm0AT5MeIxRdnroKxxexqYh/Rv+OgDyA== X-Gm-Gg: AYBFou2zD0U82/5qUNPCgM1XjVL/YL/Hz6mmWOWUVm54rUjEYSlcka+KQBiJmEQqLiY SF1MG8C7Fr5kUSqu/ESA4tvubxdBBq96XzP+hBzUyOgsqPFrgtJX7y0JLzY2Jc6gSc5HLMSjYDB 8e9K9FNFxJo+I4yk33vDsw5XoBygoOdGfQ23dSYhHtUggEtpddjVTchJfJ4BXAy7A/yvKNRdFtp 4qfoiF9VXkpJCO/fp6IYwqkGnORG8mdu7Y+S5FET30jCx8rpAX5mjg5fJht2ZZtGnA55iUy9M29 kXI4OnHpvUckIg6RkjQnObjsLGno8RH7P6r2zZhHasoe6fpTRRA+duD7qOigv6u4QE9QnRbckMD YJRiprPWL94nkkGixNskSoez5 X-Received: by 2002:a05:6000:4305:b0:484:3647:d977 with SMTP id ffacd0b85a97d-484410431f7mr6402507f8f.27.1788216700404; Mon, 31 Aug 2026 15:51:40 -0700 (PDT) X-Received: by 2002:a05:6000:4305:b0:484:3647:d977 with SMTP id ffacd0b85a97d-484410431f7mr6402455f8f.27.1788216699886; Mon, 31 Aug 2026 15:51:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1788216699; cv=none; d=google.com; s=arc-20260327; b=AHFxbDWXG66B95Q9btRuefaX86AWVrMwySN9N2+oC40nCgNXpK04GaCT79yzaM0/OG eZIV1GagRhAbS9kIy7SNxSgZDBxlftuQfJeRgHkP0ooxvf50tZgBAoIOSCJFBXYof4Co ohs+uhaIoKvppX84U5jR7UQaXLiP8s7r5Og39LH0uxEaV1SAicM4ZxkF/q7MnPy0cSov Y85yVUwZOFUpFI4pVJn6pbA+Re1YLT+j2J4B1tUZ3gxG3n+jJ9418zyDlqTxEdfJt9vY gzUpZo2uaYum/+nj3n4Xti/4tfyRUuiTZUxG+3hPE03M4YbEydvJWBIKRVxmIlfKAY5z ZS/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:dkim-signature; bh=BYP4JkLtxYs2dLSGwrG2bKaFDwJlu+LoRNTdvQcqxb8=; fh=WpT6aB7RBAGHZeWZzqAr71yzRFbPTYkPWKsRagLn48Q=; b=S9oBtyakpbJ/MkMtTXukM5pCsd0oy80QyoNdY8LfU0etyUTPtDwO5i2SIC9E/mhuNj 6vP2JorXQWuqgXf0Sq4BIlKxozcxNzfN0fwx05ZQo5tVzJf03Rrs+wt9WA+M742WJGxl z/Gw2RF0Fj+1oAvrQ7ixQHq8z9B/P7KJ/khc6YoBpt8emKP/Nssx50AdGBXjJGJHbkPA uqA0zmKVRS6I/D+ChGwP7cu+WhXCOrzOUOsKahM+Cy1DnB8gY+bhUqYy22Ik5cPv5gDU kZPR8wDWCZIuTmgESd9C1+rPrU0sBJeRh5qI5urymVYX1Iki/ZjNWat9A/WZSrl3/mqA WlZA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=T5D1kzKM; spf=pass (google.com: domain of eva.kurchatova@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=eva.kurchatova@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: from relay.virtuozzo.com (relay.virtuozzo.com. [130.117.225.111]) by mx.google.com with ESMTPS id ffacd0b85a97d-48442d3842csi1046980f8f.3.2026.08.31.15.51.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 31 Aug 2026 15:51:39 -0700 (PDT) Received-SPF: pass (google.com: domain of eva.kurchatova@virtuozzo.com designates 130.117.225.111 as permitted sender) client-ip=130.117.225.111; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=T5D1kzKM; spf=pass (google.com: domain of eva.kurchatova@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=eva.kurchatova@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=BYP4JkLtxYs2dLSGwrG2bKaFDwJlu+LoRNTdvQcqxb8=; b=T5D1kzKM8mKy lxgA59moGMAI4qPlO56jzVwpEBRsq5JXIqG2PPYTMorJHwC3ajroYQYrWiV/RRStF3xhJF57wH9Xq aYCc6+A4ocOLjYR7aSXQ619iEP3CuLAbqF4W6atHgNOaUucusgXT4p0xtIBiWEs81fHr0XzzXjh8M sjKxqyckHIf+wZzkeuRbDjda7UyJCsk08iNHNMih0g5D7DqLUGNEFF6V6gjWX7N1wBEVi2lszUcE5 Be+2zDVAixttN6Ht/ZR1DIExZCt/nY2bCWn/9go5KOF4JhuQDqgbaPnnTSHzQB91TU8hS18xW6/wk W401aoPS52SLanbf3d9k5Q==; Received: from ch-vpn.virtuozzo.com ([130.117.225.6] helo=LekKit-T14) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1x1AoS-009n0b-2D; Tue, 01 Sep 2026 00:51:30 +0200 From: Eva Kurchatova To: khorenko@virtuozzo.com Date: Tue, 1 Sep 2026 01:50:51 +0300 Message-ID: <20260831225137.1642608-1-eva.kurchatova@virtuozzo.com> X-Mailer: git-send-email 2.55.0 MIME-Version: 1.0 X-OZ-Fwd: true Cc: devel@openvz.org Subject: [Devel] [PATCH vz10 1/4] ms/selftests: net: Add python context manager for netns entering X-BeenThere: devel@openvz.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: OpenVZ development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: devel-bounces@openvz.org Errors-To: devel-bounces@openvz.org From: Xiao Liang Change netns of current thread and switch back on context exit. For example: with NetNSEnter("ns1"): ip("link add dummy0 type dummy") The command be executed in netns "ns1". Signed-off-by: Xiao Liang Link: https://patch.msgid.link/20250219125039.18024-13-shaw.leon@gmail.com Signed-off-by: Jakub Kicinski (cherry picked from commit 030329416232ff9f2e3e4bb065b29e6c9a7d5050) https://virtuozzo.atlassian.net/browse/VSTOR-139651 Feature: fix selftests Signed-off-by: Eva Kurchatova --- tools/testing/selftests/net/lib/py/__init__.py | 2 +- tools/testing/selftests/net/lib/py/netns.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/net/lib/py/__init__.py b/tools/testing/selftests/net/lib/py/__init__.py index bffe01d5ee2d..02be28dcc089 100644 --- a/tools/testing/selftests/net/lib/py/__init__.py +++ b/tools/testing/selftests/net/lib/py/__init__.py @@ -2,7 +2,7 @@ from .consts import KSRC from .ksft import * -from .netns import NetNS +from .netns import NetNS, NetNSEnter from .nsim import * from .utils import * from .ynl import NlError, YnlFamily, EthtoolFamily, NetdevFamily, RtnlFamily, RtnlAddrFamily diff --git a/tools/testing/selftests/net/lib/py/netns.py b/tools/testing/selftests/net/lib/py/netns.py index ecff85f9074f..8e9317044eef 100644 --- a/tools/testing/selftests/net/lib/py/netns.py +++ b/tools/testing/selftests/net/lib/py/netns.py @@ -1,9 +1,12 @@ # SPDX-License-Identifier: GPL-2.0 from .utils import ip +import ctypes import random import string +libc = ctypes.cdll.LoadLibrary('libc.so.6') + class NetNS: def __init__(self, name=None): @@ -29,3 +32,18 @@ class NetNS: def __repr__(self): return f"NetNS({self.name})" + + +class NetNSEnter: + def __init__(self, ns_name): + self.ns_path = f"/run/netns/{ns_name}" + + def __enter__(self): + self.saved = open("/proc/thread-self/ns/net") + with open(self.ns_path) as ns_file: + libc.setns(ns_file.fileno(), 0) + return self + + def __exit__(self, exc_type, exc_value, traceback): + libc.setns(self.saved.fileno(), 0) + self.saved.close() -- 2.55.0 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel