From nobody Mon Nov 25 04:31:03 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=solinno.co.uk ARC-Seal: i=1; a=rsa-sha256; t=1715204366; cv=none; d=zohomail.com; s=zohoarc; b=c4O1imcoODBKot8ya8/QvXi2Yr45y8c+7M7nVV0Kauto4MEs/HV7L9rARILZ8y+hizukqzrfRExRHuE24B+gc8VZhzZaz0hZQgba77BPGGem+wcA3tLpbFHG+dVbY5LEI2JJo2fNFkyAOgnT+mNSNEg4EUX/MHeo2QIwRQ1xbvk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1715204366; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=eRnnXn5XhsgrpYEPPhyvWdUHIHyRTJGbif1ljXsfECk=; b=EGBLsO/X6je/lvdoF6krRQ6eow1c0McZQZw15os/rXErq9ORNXXM3V8xflf3ymXXGRpxywzxO9FaKvYG4ooHjclhcBXFQCqwsXrWNpoO8IA/7F+wsrVDHTjp79dZAjrPMBf/mdh3QqjZckGyEM0L3aKvZ6s2810KDv3AlPTSqEY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1715204365945473.6036119267494; Wed, 8 May 2024 14:39:25 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.718968.1121571 (Exim 4.92) (envelope-from ) id 1s4p0B-0004Yg-ST; Wed, 08 May 2024 21:39:03 +0000 Received: by outflank-mailman (output) from mailman id 718968.1121571; Wed, 08 May 2024 21:39:03 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1s4p0B-0004Y3-OY; Wed, 08 May 2024 21:39:03 +0000 Received: by outflank-mailman (input) for mailman id 718968; Wed, 08 May 2024 21:39:02 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1s4p0A-00044I-A7 for xen-devel@lists.xenproject.org; Wed, 08 May 2024 21:39:02 +0000 Received: from doppler.solinno.uk (doppler.solinno.uk [81.2.106.178]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 611416e4-0d83-11ef-909c-e314d9c70b13; Wed, 08 May 2024 23:38:59 +0200 (CEST) Received: from folly.solinno.co.uk (folly.dyn.solinno.co.uk [192.168.2.135]) by doppler.solinno.uk (Postfix) with ESMTPSA id 2010F8007B; Wed, 8 May 2024 22:38:59 +0100 (BST) Received: by folly.solinno.co.uk (Postfix, from userid 1000) id EC76220166; Wed, 8 May 2024 22:38:58 +0100 (BST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 611416e4-0d83-11ef-909c-e314d9c70b13 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=solinno.co.uk; s=mail; t=1715204339; bh=NwExQyE50t0WzUcJcVbwpgO12YLzpS7FSJX0VovsD2w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=0p+fVAK8o9JhCJg0v5dza9u9Fi5JpN2LJfm8aDeFs5HqXP3kQATXlN3LphiN+I8v9 I4A0NE276Pj55g6Dwknjzd5zrWUIygNHMKk4m++Tp4vtfaVHaYfuBqgcqAuoUDVUuE RH/FHx9hXn/S7UVSt+9h6UYjOZZ0eD/DlRWWWOjM= From: Leigh Brown To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@citrix.com, Leigh Brown Subject: [RFC PATCH v2 1/5] tools/libs/light: Add vlan field to libxl_device_nic Date: Wed, 8 May 2024 22:38:20 +0100 Message-Id: <20240508213824.55824-2-leigh@solinno.co.uk> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240508213824.55824-1-leigh@solinno.co.uk> References: <20240508213824.55824-1-leigh@solinno.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @solinno.co.uk) X-ZM-MESSAGEID: 1715204366857100004 Content-Type: text/plain; charset="utf-8" Add `vlan' string field to libxl_device_nic, to allow a VLAN configuration to be specified for the VIF when adding it to the bridge device. Update libxl_nic.c to read and write the vlan field from the xenstore. This provides the capability for supported operating systems (e.g. Linux) to perform VLAN filtering on bridge ports. The Xen hotplug scripts need to be updated to read this information from the xenstore and perform the required configuration. Signed-off-by: Leigh Brown Reviewed-by: Jason Andryuk --- tools/libs/light/libxl_nic.c | 10 ++++++++++ tools/libs/light/libxl_types.idl | 1 + 2 files changed, 11 insertions(+) diff --git a/tools/libs/light/libxl_nic.c b/tools/libs/light/libxl_nic.c index d6bf06fc34..d861e3726d 100644 --- a/tools/libs/light/libxl_nic.c +++ b/tools/libs/light/libxl_nic.c @@ -233,6 +233,11 @@ static int libxl__set_xenstore_nic(libxl__gc *gc, uint= 32_t domid, flexarray_append(back, GCSPRINTF("%u", nic->mtu)); } =20 + if (nic->vlan) { + flexarray_append(back, "vlan"); + flexarray_append(back, libxl__strdup(gc, nic->vlan)); + } + flexarray_append(back, "bridge"); flexarray_append(back, libxl__strdup(gc, nic->bridge)); flexarray_append(back, "handle"); @@ -313,6 +318,11 @@ static int libxl__nic_from_xenstore(libxl__gc *gc, con= st char *libxl_path, nic->mtu =3D LIBXL_DEVICE_NIC_MTU_DEFAULT; } =20 + rc =3D libxl__xs_read_checked(gc, XBT_NULL, + GCSPRINTF("%s/vlan", libxl_path), + (const char **)(&nic->vlan)); + if (rc) goto out; + rc =3D libxl__xs_read_checked(gc, XBT_NULL, GCSPRINTF("%s/mac", libxl_path), &tmp); if (rc) goto out; diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_type= s.idl index 7d8bd5d216..5c510dc272 100644 --- a/tools/libs/light/libxl_types.idl +++ b/tools/libs/light/libxl_types.idl @@ -809,6 +809,7 @@ libxl_device_nic =3D Struct("device_nic", [ ("backend_domname", string), ("devid", libxl_devid), ("mtu", integer), + ("vlan", string), ("model", string), ("mac", libxl_mac), ("ip", string), --=20 2.39.2 From nobody Mon Nov 25 04:31:03 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=solinno.co.uk ARC-Seal: i=1; a=rsa-sha256; t=1715204366; cv=none; d=zohomail.com; s=zohoarc; b=XrJoLuaBHy4bVJRPJWyGLDfS9a1WwcTaBPb4DkfYNc3ZpTi6E/Q7jTkkEuOr8BeIftGE8seAtWdMQ8wsoMXDW3WSBMLvtixRIUpQxAHuJlcWoSSVtw40BgFD18L4qCm0MS2ttzP+rbqBGROoYJmR3X0+KGUrVlhGzo3Dt1qWO5g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1715204366; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/FW++Ky32RS77/4bP5N3n/6/gjWijCPTNZf4t1jc0pI=; b=aTTg1+9qg/p/iF5xOCb+2msHMffjVy+T73E2jOeFzwhIrjMA3oEAyh2ykeRePw+w+BSfcBYkjg4g9/YD42VvKP1hZM5f9gzeBuAp8wWhj6hSPAeoT+4j+wWEVOCFvbTP9SnNHbw7q4F53KTZGW9MrAwKA3BLhCRJSwYn/marETI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1715204366093517.4224048580008; Wed, 8 May 2024 14:39:26 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.718967.1121558 (Exim 4.92) (envelope-from ) id 1s4p0A-00046d-OH; Wed, 08 May 2024 21:39:02 +0000 Received: by outflank-mailman (output) from mailman id 718967.1121558; Wed, 08 May 2024 21:39:02 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1s4p0A-00045T-GT; Wed, 08 May 2024 21:39:02 +0000 Received: by outflank-mailman (input) for mailman id 718967; Wed, 08 May 2024 21:39:01 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1s4p09-00044I-KG for xen-devel@lists.xenproject.org; Wed, 08 May 2024 21:39:01 +0000 Received: from doppler.solinno.uk (doppler.solinno.uk [81.2.106.178]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 611b41a1-0d83-11ef-909c-e314d9c70b13; Wed, 08 May 2024 23:38:59 +0200 (CEST) Received: from folly.solinno.co.uk (folly.dyn.solinno.co.uk [192.168.2.135]) by doppler.solinno.uk (Postfix) with ESMTPSA id 2561B8009E; Wed, 8 May 2024 22:38:59 +0100 (BST) Received: by folly.solinno.co.uk (Postfix, from userid 1000) id F01BE20167; Wed, 8 May 2024 22:38:58 +0100 (BST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 611b41a1-0d83-11ef-909c-e314d9c70b13 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=solinno.co.uk; s=mail; t=1715204339; bh=aK+rR4WSKsfVDFqSo21YMhoedb8+5SFZWoGq++M/1CY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=z9Km2AAeaGZp8E5gVbHMQzWSZ/jxogBa0gsn7AqAHpBmYIJKLxo5nZbuQOgazXjGt iyfZer4aO/4nefLHaj3Ga8/kZwRFta8c290LOz6Sqa8V801mBqVLH7eN1znO7hJm7X 1smoj4EfSIQ+IRk/HzDu82G0wjjuqOHaRLm2X8GI= From: Leigh Brown To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@citrix.com, Leigh Brown Subject: [RFC PATCH v2 2/5] tools/xl: add vlan keyword to vif option Date: Wed, 8 May 2024 22:38:21 +0100 Message-Id: <20240508213824.55824-3-leigh@solinno.co.uk> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240508213824.55824-1-leigh@solinno.co.uk> References: <20240508213824.55824-1-leigh@solinno.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @solinno.co.uk) X-ZM-MESSAGEID: 1715204366839100003 Content-Type: text/plain; charset="utf-8" Update parse_nic_config() to support a new `vlan' keyword. This keyword specifies the VLAN configuration to assign to the VIF when attaching it to the bridge port, on operating systems that support the capability (e.g. Linux). The vlan keyword will allow one or more VLANs to be configured on the VIF when adding it to the bridge port. This will be done by the vif-bridge script and functions. Signed-off-by: Leigh Brown Reviewed-by: Jason Andryuk --- tools/xl/xl_parse.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c index ed983200c3..7546fe7e7a 100644 --- a/tools/xl/xl_parse.c +++ b/tools/xl/xl_parse.c @@ -565,6 +565,8 @@ int parse_nic_config(libxl_device_nic *nic, XLU_Config = **config, char *token) nic->devid =3D parse_ulong(oparg); } else if (MATCH_OPTION("mtu", token, oparg)) { nic->mtu =3D parse_ulong(oparg); + } else if (MATCH_OPTION("vlan", token, oparg)) { + replace_string(&nic->vlan, oparg); } else if (!strcmp("trusted", token)) { libxl_defbool_set(&nic->trusted, true); } else if (!strcmp("untrusted", token)) { --=20 2.39.2 From nobody Mon Nov 25 04:31:03 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=solinno.co.uk ARC-Seal: i=1; a=rsa-sha256; t=1715204369; cv=none; d=zohomail.com; s=zohoarc; b=LwcztmjC/+1Hn9exd65nSaxeixHOjF9V/SZSPb4CpzmxHc1q95+0azUew+erzK8wobGkHD87kgaoSXEZhO7GoJaGkwVYk5ZUJPDxPE3kOQKRtPEOefTao0NeR6sWl9lwgrDpUhtBQ/xinJWM2pOYPm77aqDHASYp4stO1BoF80I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1715204369; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=lV+Dk4kHNBS4PcArMTil7LT+dXomGxzw2pxtHH5Sg+A=; b=a4gVkSOWO3glCLbgAQDvBkrnnjpAVUFOxJPFThFSzZsvIVaT8+QlpJYJMUCHb8JNe+9OlnRSDh46+7RvWOVnnwVgMA2RGj2MuwYWBodkKwuSD7m/Oxo0nJiLOAhY7W8ioP7q4Q9IBBLbSlihlbEeVRixu+2YLmJqagCx92wDnIc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1715204369794196.1745807915205; Wed, 8 May 2024 14:39:29 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.718966.1121552 (Exim 4.92) (envelope-from ) id 1s4p0A-00044o-Dn; Wed, 08 May 2024 21:39:02 +0000 Received: by outflank-mailman (output) from mailman id 718966.1121552; Wed, 08 May 2024 21:39:02 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1s4p0A-00044h-9M; Wed, 08 May 2024 21:39:02 +0000 Received: by outflank-mailman (input) for mailman id 718966; Wed, 08 May 2024 21:39:01 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1s4p09-0003oG-5k for xen-devel@lists.xenproject.org; Wed, 08 May 2024 21:39:01 +0000 Received: from doppler.solinno.uk (doppler.solinno.uk [81.2.106.178]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 61228ae4-0d83-11ef-b4bb-af5377834399; Wed, 08 May 2024 23:38:59 +0200 (CEST) Received: from folly.solinno.co.uk (folly.dyn.solinno.co.uk [192.168.2.135]) by doppler.solinno.uk (Postfix) with ESMTPSA id 2C084800A4; Wed, 8 May 2024 22:38:59 +0100 (BST) Received: by folly.solinno.co.uk (Postfix, from userid 1000) id F408220174; Wed, 8 May 2024 22:38:58 +0100 (BST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 61228ae4-0d83-11ef-b4bb-af5377834399 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=solinno.co.uk; s=mail; t=1715204339; bh=tu/eViqs6PEWINbRyoFYh4zDxVMHi/C0o7aOqYaz5Tc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=k5+w8Px9oNv5TbaY4ri+l5AsGUbFSwrz1Wa8vA2/fe9HwFiUaR9ZQj6cG55Y2aMkH WKTx2PCeTVvDpRvLRtbcNSadHZ9fkAzziz5raPHnD9oYNIZzYgiKP9SYR8eLYI7fgS w+936cXMqEfkSAVs76rum/DTRlHQSkMHbRwvh4TY= From: Leigh Brown To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@citrix.com, Leigh Brown Subject: [RFC PATCH v2 3/5] tools/hotplug/Linux: Add bridge VLAN support Date: Wed, 8 May 2024 22:38:22 +0100 Message-Id: <20240508213824.55824-4-leigh@solinno.co.uk> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240508213824.55824-1-leigh@solinno.co.uk> References: <20240508213824.55824-1-leigh@solinno.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @solinno.co.uk) X-ZM-MESSAGEID: 1715204370769100001 Content-Type: text/plain; charset="utf-8" Update add_to_bridge shell function to read the vlan parameter from xenstore and set the bridge VLAN configuration for the VID. Add additional helper functions to parse the vlan specification, which consists of one or more of the follow: a) single VLAN (e.g. 10). b) contiguous range of VLANs (e.g. 10-15). c) discontiguous range with base, increment and count (e.g. 100+10x9 which gives VLAN IDs 100, 110, ... 190). A single VLAN can be suffixed with "p" to indicate the PVID, or "u" to indicate untagged. A range of VLANs can be suffixed with "u" to indicate untagged. A complex example would be: vlan=3D1p/10-15/20-25u This capability only works when using the iproute2 bridge command, so a warning is issued if the vlan parameter is set and the bridge command is not available, as it will be ignored. Signed-off-by: Leigh Brown --- tools/hotplug/Linux/xen-network-common.sh | 111 ++++++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/tools/hotplug/Linux/xen-network-common.sh b/tools/hotplug/Linu= x/xen-network-common.sh index 42fa704e8d..d9fb4f7355 100644 --- a/tools/hotplug/Linux/xen-network-common.sh +++ b/tools/hotplug/Linux/xen-network-common.sh @@ -121,10 +121,113 @@ create_bridge () { fi } =20 +_vif_vlan_add() { + # References vlans, pvid and error variables from the calling function + local -i vid=3D$1 + local flag=3D${2:-} + + if (( vid < 1 || vid > 4094 )) ;then + error=3D"vlan id $vid not between 1 and 4094" + return + fi + if [[ -n "${vlans[$vid]}" ]] ;then + error=3D"vlan id $vid specified more than once" + return + fi + case $flag in + p) if (( pvid !=3D 0 )) ;then + error=3D"more than one pvid specified ($vid and $pvid)" + return + fi + pvid=3D$vid + vlans[$vid]=3Dp ;; + u) vlans[$vid]=3Du ;; + *) vlans[$vid]=3Dt ;; + esac +} + +_vif_vlan_parse_term() { + # References error variable from the calling function + local vid incr last term=3D${1:-} + + if [[ $term =3D~ ^([0-9]+)([pu])?$ ]] ;then + _vif_vlan_add ${BASH_REMATCH[1]} ${BASH_REMATCH[2]} + elif [[ $term =3D~ ^([0-9]+)-([0-9]+)(u)?$ ]] ;then + vid=3D${BASH_REMATCH[1]} + last=3D${BASH_REMATCH[2]} + if (( last >=3D vid )) ;then + for (( ; vid<=3Dlast; vid++ )) ;do + _vif_vlan_add $vid ${BASH_REMATCH[3]} + done + else + error=3D"invalid vlan id range: $term" + fi + elif [[ $term =3D~ ^([0-9]+)\+([0-9]+)x([0-9]+)(u)?$ ]] ;then + vid=3D${BASH_REMATCH[1]} + incr=3D${BASH_REMATCH[2]} + for (( j=3D${BASH_REMATCH[3]}; j>0; --j, vid+=3Dincr )) + do + _vif_vlan_add $vid ${BASH_REMATCH[4]} + done + else + error=3D"invalid vlan specification: $term" + fi +} + +_vif_vlan_validate_pvid() { + # References vlans and pvid variables from the calling function + if (( pvid =3D=3D 0 )) ;then + if (( ${#vlans[@]} =3D=3D 1 )) ;then + vlans[${!vlans[*]}]=3Dp + else + error=3D"pvid required for multiple vlan ids" + fi + fi +} + +_vif_vlan_setup() { + # References vlans and dev variable from the calling function + local vid cmd + + bridge vlan del dev "$dev" vid 1 + for vid in ${!vlans[@]} ;do + cmd=3D"bridge vlan add dev '$dev' vid $vid" + case ${vlans[$vid]} in + p) cmd=3D"$cmd pvid untagged" ;; + u) cmd=3D"$cmd untagged" ;; + t) ;; + esac + eval "$cmd" + done +} + +_vif_vlan_membership() { + # The vlans, pvid, dev and error variables are used by sub-functions + local -A vlans=3D() + local -a terms=3D() + local -i i pvid=3D0 + local dev=3D$1 error=3D"" + + # Split the vlan specification string into its terms + readarray -d / -t terms <<<$2 + for (( i=3D0; i<${#terms[@]}; ++i )) ;do + _vif_vlan_parse_term ${terms[$i]%%[[:space:]]} + [[ -n "$error" ]] && break + done + + [[ -z "$error" ]] && _vif_vlan_validate_pvid + [[ -z "$error" ]] && _vif_vlan_setup + [[ -z "$error" ]] && return 0 + + log error "$error" + return 1 +} + # Usage: add_to_bridge bridge dev add_to_bridge () { local bridge=3D$1 local dev=3D$2 + local vlan=3D$(xenstore_read_default "$XENBUS_PATH/vlan" "") =20 # Don't add $dev to $bridge if it's already on the bridge. if [ ! -e "/sys/class/net/${bridge}/brif/${dev}" ]; then @@ -134,6 +237,14 @@ add_to_bridge () { else ip link set ${dev} master ${bridge} fi + if [ -n "${vlan}" ] ;then + if which bridge >&/dev/null; then + log debug "configuring VLANs for ${dev} on ${bridge}" + _vif_vlan_membership "${dev}" "${vlan}" + else + log warning "bridge command not available, ignoring vlan c= onfig" + fi + fi else log debug "$dev already on bridge $bridge" fi --=20 2.39.2 From nobody Mon Nov 25 04:31:03 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=solinno.co.uk ARC-Seal: i=1; a=rsa-sha256; t=1715204371; cv=none; d=zohomail.com; s=zohoarc; b=RNf5H+wqP6v4QSl5fZ8CisJUj1Gse7Wyak5Z4XVbshL5h8SPQX6bFcB2d5kVcLNtA+pAetWx5Fz/ZJX7wiILtU6HffLRZnhGWCA/34AHiScTBY+0cP31WpWHbPGs1Y/WA2lovzcheRvyAy/JafXwrLHbEJ3rq/FDFblUeEsrs1g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1715204371; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+GTeTYXtWXwE310wbU4VX1csw5mmVkcvY4bXpVx73fQ=; b=deI1LGdl4z3RzT6secCjyQsUKGyGFGDl2ygfq4KfITxobtg5SZ34roBZSp6yPCtVL5uVwbfI1zsE6Oka3+48JCCzEmX/SgfK97oVD1aCxhQNeAZzmvGZJAsNY69WCR1pHo6fFOZyUpdaXmYgTu0PbXe03jfnCy28jWhanKN/Cdk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1715204371328605.08034744438; Wed, 8 May 2024 14:39:31 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.718969.1121582 (Exim 4.92) (envelope-from ) id 1s4p0D-0004oc-48; Wed, 08 May 2024 21:39:05 +0000 Received: by outflank-mailman (output) from mailman id 718969.1121582; Wed, 08 May 2024 21:39:05 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1s4p0D-0004oV-12; Wed, 08 May 2024 21:39:05 +0000 Received: by outflank-mailman (input) for mailman id 718969; Wed, 08 May 2024 21:39:03 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1s4p0B-00044I-A9 for xen-devel@lists.xenproject.org; Wed, 08 May 2024 21:39:03 +0000 Received: from doppler.solinno.uk (doppler.solinno.uk [81.2.106.178]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 611f7b26-0d83-11ef-909c-e314d9c70b13; Wed, 08 May 2024 23:38:59 +0200 (CEST) Received: from folly.solinno.co.uk (folly.dyn.solinno.co.uk [192.168.2.135]) by doppler.solinno.uk (Postfix) with ESMTPSA id 292668009F; Wed, 8 May 2024 22:38:59 +0100 (BST) Received: by folly.solinno.co.uk (Postfix, from userid 1000) id 030132017E; Wed, 8 May 2024 22:38:59 +0100 (BST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 611f7b26-0d83-11ef-909c-e314d9c70b13 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=solinno.co.uk; s=mail; t=1715204339; bh=+Btd9KVZELds4IWrVvm32cKo9jGdEkoWQ7GZ1KHgtYw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=iHPObwfQZEAy1JyUCQI4BAtqbCaTT/dlCv37rO2Tt0tG39UPsSmaCC9mwPwyFt4IQ +rimKjAj/Q+t6x+DEPJ27PJCTpSOZdmsPehguoNqyyneNPNuf2gvVcmRHkcrIvg8fC q2CkZe+gi2jwfxPg+R2DcTX6MLSnk/wLidltzK4g= From: Leigh Brown To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@citrix.com, Leigh Brown Subject: [RFC PATCH v2 4/5] docs/man: document VIF vlan keyword Date: Wed, 8 May 2024 22:38:23 +0100 Message-Id: <20240508213824.55824-5-leigh@solinno.co.uk> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240508213824.55824-1-leigh@solinno.co.uk> References: <20240508213824.55824-1-leigh@solinno.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @solinno.co.uk) X-ZM-MESSAGEID: 1715204372699100004 Content-Type: text/plain; charset="utf-8" Document the new `vlan' keyword in xl-network-configuration(5). Signed-off-by: Leigh Brown Reviewed-by: Jason Andryuk --- docs/man/xl-network-configuration.5.pod.in | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/docs/man/xl-network-configuration.5.pod.in b/docs/man/xl-netwo= rk-configuration.5.pod.in index f3e379bcf8..c35c0922b3 100644 --- a/docs/man/xl-network-configuration.5.pod.in +++ b/docs/man/xl-network-configuration.5.pod.in @@ -259,6 +259,44 @@ Specifies the MTU (i.e. the maximum size of an IP payl= oad, exclusing headers). T default value is 1500 but, if the VIF is attached to a bridge, it will be = set to match unless overridden by this parameter. =20 +=3Dhead2 vlan + +Specifies the VLAN configuration. The format of this parameter is one or m= ore +VLAN IDs or ranges separated by forward slashes. Each term can be: + +=3Dover + +=3Ditem * + +B - a single VLAN ID in the range 1 to 4094. This can optionally fol= lowed +by a B

to indicate the PVID or by a B to indicate an untagged VLAN. = C

+implies B. + +=3Ditem * + +B-B - a range of VLAN IDs from B to B, both be= tween +1 and 4094 and B being less than or equal to B. This can be +optionally followed by a B to indicate that the range of VLANs are unta= gged. + +=3Ditem * + +B+BxB - describing a range of VLAN IDs starting at B<= vlan> +with B additional entries, each incremented by B. This can = be=20 +optionally followed by a B to indicate that the range of VLANs are unta= gged. + +=3Dback + +Note, one VLAN ID must be marked as the PVID. In the case of a vlan=20 +specification consisting of a single VLAN ID (e.g. C), the B

= suffix +may be omitted. Specifying more than one untagged VLAN ID is an advanced=20 +configuration - use with caution. + +For example: + + 'vlan=3D10' -- meaning a single VLAN that is the PVID. + 'vlan=3D10p/20' -- VLAN 10 is the PVID and VLAN 20 is tagged. + 'vlan=3D10p/100+10x4' -- VLANs 10, 100, 110, 120, 130, 140, 150. + =3Dhead2 trusted / untrusted =20 An advisory setting for the frontend driver on whether the backend should = be --=20 2.39.2 From nobody Mon Nov 25 04:31:03 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=solinno.co.uk ARC-Seal: i=1; a=rsa-sha256; t=1715204371; cv=none; d=zohomail.com; s=zohoarc; b=NZI+5NDvhJTtpkjfmc/anN1cEUxOLNpzHm/v3iFkpxL+OVLvL8uK5ecZQ/7m0TTHLjmBhJZ9zi6t1yKU54cugfwsPxP4NNbVOATVePuKumiv59sIXwc6UgeA8mtOfjontDuZlKFQFVdDu7QMerNaK6Y7QOAEV7FUPIdBeq8iTbo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1715204371; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OxzXfT4cOpW8e+zhgHcSt3R1MnLQKUiOU9PxVZd4grc=; b=bYG6lNJA6i0GiESfAknZI9u+H4rQZglvvH4wi/0XdXt51JYA76+7tNeCeCdymrhNMSMbynSQ1EuHsKt5GnytFz6SRJWPeMKCFBKar1BUQbY1IvEBb3GXaRQ+rn4sjvtRc35s5sxAbAPnv1W0eKirveCVyOzVpLgkemVIPTgXGa0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 17152043719451012.3145690536799; Wed, 8 May 2024 14:39:31 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.718970.1121588 (Exim 4.92) (envelope-from ) id 1s4p0D-0004wt-KZ; Wed, 08 May 2024 21:39:05 +0000 Received: by outflank-mailman (output) from mailman id 718970.1121588; Wed, 08 May 2024 21:39:05 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1s4p0D-0004uc-Gk; Wed, 08 May 2024 21:39:05 +0000 Received: by outflank-mailman (input) for mailman id 718970; Wed, 08 May 2024 21:39:04 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1s4p0C-00044I-AS for xen-devel@lists.xenproject.org; Wed, 08 May 2024 21:39:04 +0000 Received: from doppler.solinno.uk (doppler.solinno.uk [81.2.106.178]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 612663b5-0d83-11ef-909c-e314d9c70b13; Wed, 08 May 2024 23:38:59 +0200 (CEST) Received: from folly.solinno.co.uk (folly.dyn.solinno.co.uk [192.168.2.135]) by doppler.solinno.uk (Postfix) with ESMTPSA id 2D09B800A5; Wed, 8 May 2024 22:38:59 +0100 (BST) Received: by folly.solinno.co.uk (Postfix, from userid 1000) id 06DB42017F; Wed, 8 May 2024 22:38:59 +0100 (BST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 612663b5-0d83-11ef-909c-e314d9c70b13 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=solinno.co.uk; s=mail; t=1715204339; bh=bIUl73UyV+ayA8Z1TZOYtaBLcFb3iD439KxaXODeE/U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tCaiftnLTPj7TR5XUPM/tF9fgWEtaFVpTkhb0aVmdLKPFmotpT+z0OUNDZ6adEaJH BRybjeI8ofZSoM9mirE/VKFFGGaAQpuDnFRHbHNuoOBv8451uLn/TJ5aXsnRDk6Snq wNxjXBZTaPN67mOpMMWl9GfeWbfVsyeLBx2I9Fkg= From: Leigh Brown To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@citrix.com, Leigh Brown Subject: [RFC PATCH v2 5/5] tools/examples: Example Linux bridge VLAN config Date: Wed, 8 May 2024 22:38:24 +0100 Message-Id: <20240508213824.55824-6-leigh@solinno.co.uk> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240508213824.55824-1-leigh@solinno.co.uk> References: <20240508213824.55824-1-leigh@solinno.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @solinno.co.uk) X-ZM-MESSAGEID: 1715204372721100005 Content-Type: text/plain; charset="utf-8" Add a new directory linux-bridge-vlan with examples files showing how to configure systemd-networkd to support a bridge VLAN configuration. Signed-off-by: Leigh Brown --- tools/examples/linux-bridge-vlan/README | 68 +++++++++++++++++++ tools/examples/linux-bridge-vlan/br0.netdev | 7 ++ tools/examples/linux-bridge-vlan/br0.network | 8 +++ .../examples/linux-bridge-vlan/enp0s0.network | 16 +++++ 4 files changed, 99 insertions(+) create mode 100644 tools/examples/linux-bridge-vlan/README create mode 100644 tools/examples/linux-bridge-vlan/br0.netdev create mode 100644 tools/examples/linux-bridge-vlan/br0.network create mode 100644 tools/examples/linux-bridge-vlan/enp0s0.network diff --git a/tools/examples/linux-bridge-vlan/README b/tools/examples/linux= -bridge-vlan/README new file mode 100644 index 0000000000..83b9fa3fd6 --- /dev/null +++ b/tools/examples/linux-bridge-vlan/README @@ -0,0 +1,68 @@ +Linux Xen Dom0 single bridge multiple VLAN configuration with systemd +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Introduction +------------ + +This directory contains example files to be placed in /etc/systemd/network +to enable a single bridge with multiple VLAN support. + +The example is to support the scenario where the Xen host network interface +is connected to an Ethernet switch configured as a trunk port. Each domain +VIF can then be configured with one or more VLAN IDs, one of which will be +the PVID. + +The example files create a bridge device called br0, with a physical inter= face=20 +called enp0s0. You will need to update this with your system's device name. + +Key points of the configuration are: + +1. In br0.netdev, VLANFiltering=3Don is set. This is required to ensure the + VLAN tags are handled correctly. If it is not set then the packets + from the VIF interfaces will not have the correct VLAN tags set. + +2. In br0.network, a system IPv4 address is configured that can be updated + according to your local network settings. + +3. In enp0s0.network, Bridge=3Dbr0 sets the bridge device to connect to. T= here + is also a [BridgeVLAN] section for each VLAN you want to give access + to the switch. Note, if you want to create an internal VLAN private to + the host, do not include its VLAN ID in this file. + + +Domain configuration +-------------------- + +Add the vlan=3D keyword to the vif definition in the domain. The simplest +and most common example is a domain that wishes to connect to a single VLA= N: + +vif =3D [ 'mac=3Dxx:xx:xx:xx:xx:xx, bridge=3Dbr0, vlan=3D10' ] + +If you wish to configure a domain to route between two VLANs, you have two +options. Option 1 is to create multiple interfaces on different VLANs: + +vif =3D [ 'mac=3Dxx:xx:xx:xx:xx:xx, bridge=3Dbr0, vlan=3D10', + 'max=3Dxx:xx:xx:xx:xx:xx, bridge=3Dbr0, vlan=3D20' ] + +Alternatively, you can create single interface: + +vif =3D [ 'mac=3Dxx:xx:xx:xx:xx:xx, bridge=3Dbr0, vlan=3D10p/20' ] + +In the domain, you would, for example, use enX0 for VLAN 10 and enX0.20 fo= r=20 +VLAN 20. + + +Hints and tips +-------------- + +You can run the following commands on dom0 or a driver domain: + +1. To check if vlan_filtering is enabled: + # cat /sys/devices/virtual/net//bridge/vlan_filtering + +2. To check the bridge port VLAN assignments: + # bridge vlan + +3. To check the vlan setting in the xenstore (dom0 only): + # xenstore-ls -f | grep 'vlan =3D' + diff --git a/tools/examples/linux-bridge-vlan/br0.netdev b/tools/examples/l= inux-bridge-vlan/br0.netdev new file mode 100644 index 0000000000..ae1fe487c3 --- /dev/null +++ b/tools/examples/linux-bridge-vlan/br0.netdev @@ -0,0 +1,7 @@ +[NetDev] +Name=3Dbr0 +Kind=3Dbridge +MACAddress=3Dxx:xx:xx:xx:xx:xx + +[Bridge] +VLANFiltering=3Don diff --git a/tools/examples/linux-bridge-vlan/br0.network b/tools/examples/= linux-bridge-vlan/br0.network new file mode 100644 index 0000000000..b56203b66a --- /dev/null +++ b/tools/examples/linux-bridge-vlan/br0.network @@ -0,0 +1,8 @@ +[Match] +Name=3Dbr0 + +[Network] +DNS=3D8.8.8.8 +#Domains=3Dexample.com +Address=3D10.1.1.10/24 +Gateway=3D10.1.1.1 diff --git a/tools/examples/linux-bridge-vlan/enp0s0.network b/tools/exampl= es/linux-bridge-vlan/enp0s0.network new file mode 100644 index 0000000000..6ee3154dfc --- /dev/null +++ b/tools/examples/linux-bridge-vlan/enp0s0.network @@ -0,0 +1,16 @@ +[Match] +Name=3Denp0s0 + +[Network] +Bridge=3Dbr0 + +# If Jumbo frames are required +#[Link] +#MTUBytes=3D9000 + +[BridgeVLAN] +VLAN=3D10 + +[BridgeVLAN] +VLAN=3D20 + --=20 2.39.2