From patchwork Fri Sep 9 02:25:38 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: LiXiong Liu X-Patchwork-Id: 1675857 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.openwrt.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=JWmuDwgD; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4MP0KH3sdnz1yj1 for ; Fri, 9 Sep 2022 12:28:18 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:List-Subscribe:List-Help: List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date:Subject:To: From:Reply-To:Cc:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=l4h9twvq0wibwZkI2BtvwnNHQ6lowUU6KFTSEZGGMlw=; b=JWmuDwgDNkxzrU xbLeV+NgzXW6q6GQBQg/4iKsxnsxk63MGPMVE8Kse6j+mUWvuC2EOCXc1vz9JORELa7IMQJCR6JBr Nb0WKowyzCGULNR8VBKE8kPDpvRDDz92xB6YGSvLh1p8g7j7ld3v/3o0/NFORlG4XXTXXHlnPnM4H Q/tKxb0Vmv1fsMHHgtmmuP2M0N523mKC68+/XaIptg5lqg+1pHor9sv6XSN+EdY4DyHLuYCWm6U8a IELs5eA3VmlRYuVgotgkdkevlARPtsrMjCgMQQIYW7QYkZYO8jp4O2vwJPRaBnWzDfNeGb1Vd+jNE gnA3aikQzgQsbIAPWDkA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oWTie-00BA61-Mv; Fri, 09 Sep 2022 02:26:12 +0000 Received: from smtpbguseast2.qq.com ([54.204.34.130]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oWTiZ-00B9rr-8x for openwrt-devel@lists.openwrt.org; Fri, 09 Sep 2022 02:26:09 +0000 X-QQ-mid: bizesmtp78t1662690341t38jginy Received: from localhost.localdomain ( [1.119.171.226]) by bizesmtp.qq.com (ESMTP) with SMTP id 0 for ; Fri, 09 Sep 2022 10:25:40 +0800 (CST) X-QQ-SSF: 01400000000000W0Z000000A0000000 X-QQ-FEAT: MyiUyynfmAb0o/9bslMvHq/GA1IQElU9oPEBhZ43wO4C6KrH/LaZuVXg5DVZP mSMd+gXfH0ewfrDxONwSVUH776E7Sz2jlhlU0TrYUyxfe9w1QgJ2C01oi9wh+RwKQOo88Ex IAkxfVi3iJMITdiA5hNjBinmMy49EJ1LLEjhYplBX/A8KlHor0A3EGw836cIbAnEmVL/UI9 5w10HOft/TFy8fPietrxKAE1P4WHmTQkNoPpx26h2klKAsWH53kWDHsNLct1orkGH7eEeRJ QgjGbThvbHJy4+ZcPR4HvhqV73UIng2srHP814HCOyI4okaSSq9cxjY5BcB7Q86STDgwMaX OB2Wu55okRJtO0L5KKnSPF4/tx6eQ2KBhF7kQ1PK0LbYURgzPIRwxRHaardBw== X-QQ-GoodBg: 2 From: LiXiong Liu To: openwrt-devel@lists.openwrt.org Subject: [PATCH-22.03] netifd: bridge: add support option for untagged Date: Fri, 9 Sep 2022 10:25:38 +0800 Message-Id: <1662690338-72979-1-git-send-email-lxliu@ikuai8.com> X-Mailer: git-send-email 1.9.1 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:ikuai8.com:qybglogicsvr:qybglogicsvr7 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220908_192607_834281_5759F101 X-CRM114-Status: GOOD ( 11.26 ) X-Spam-Score: -0.0 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: ### swconfig & DSA VLAN Configuration Comparison Doesn't just support Tunnk on lan5, also need access to 192.168.1.1 so must setting untagged at br-lan #switch-vlan config switch option name 'switch0' option reset '1' option enable_vlan '1' Content analysis details: (-0.0 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [54.204.34.130 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [54.204.34.130 listed in wl.mailspike.net] 0.0 SPF_NONE SPF: sender does not publish an SPF Record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: "openwrt-devel" Errors-To: openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org ### swconfig & DSA VLAN Configuration Comparison Doesn't just support Tunnk on lan5, also need access to 192.168.1.1 so must setting untagged at br-lan #switch-vlan config switch option name 'switch0' option reset '1' option enable_vlan '1' config switch_vlan option device 'switch0' option vlan '0' option vid '0' option ports '2 3 5 6' config switch_vlan option device 'switch0' option vlan '100' option vid '100' option ports '0 1 4t' #bridge-vlan config interface 'lan' option device 'br-lan' option proto 'static' option ipaddr '192.168.1.1' option netmask '255.255.255.0' option ip6assign '60' config device option name 'br-lan' option type 'bridge' list ports 'lan1' list ports 'lan2' list ports 'lan3' list ports 'lan4' list ports 'lan5' config bridge-vlan option device 'br-lan' option untagged '1' option vlan '1' list ports 'lan3' list ports 'lan4' list ports 'lan5' config bridge-vlan option device 'br-lan' option vlan '100' list ports 'lan1:u*' list ports 'lan1:u*' list ports 'lan5:t' #bridge vlan show port vlan-id lan1 100 PVID Egress Untagged lan2 100 PVID Egress Untagged lan3 1 PVID Egress Untagged lan4 1 PVID Egress Untagged lan5 1 PVID Egress Untagged 10 br-lan 1 PVID Egress Untagged 10 Signed-off-by: LiXiong Liu --- .../patches/100-bridge-vlan-support-untagged.patch | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 package/network/config/netifd/patches/100-bridge-vlan-support-untagged.patch diff --git a/package/network/config/netifd/patches/100-bridge-vlan-support-untagged.patch b/package/network/config/netifd/patches/100-bridge-vlan-support-untagged.patch new file mode 100644 index 0000000..02485c0 --- /dev/null +++ b/package/network/config/netifd/patches/100-bridge-vlan-support-untagged.patch @@ -0,0 +1,58 @@ +Support setting untagged at br-lan + +--- a/bridge.c 2022-09-08 21:03:06.401331415 +0800 ++++ b/bridge.c 2022-09-08 21:13:19.261304451 +0800 +@@ -230,10 +230,15 @@ bridge_set_member_vlan(struct bridge_mem + static void + bridge_set_local_vlan(struct bridge_state *bst, struct bridge_vlan *vlan, bool add) + { ++ unsigned int vflags = BRVLAN_F_SELF; ++ + if (!vlan->local && add) + return; + +- system_bridge_vlan(bst->dev.ifname, vlan->vid, add, BRVLAN_F_SELF); ++ if (vlan->untagged) ++ vflags |= (BRVLAN_F_PVID|BRVLAN_F_UNTAGGED); ++ ++ system_bridge_vlan(bst->dev.ifname, vlan->vid, add, vflags); + } + + static void +--- a/config.c 2022-09-08 21:03:06.541331409 +0800 ++++ b/config.c 2022-09-08 21:05:26.007372217 +0800 +@@ -311,6 +311,7 @@ config_parse_vlan(struct device *dev, st + BRVLAN_ATTR_LOCAL, + BRVLAN_ATTR_PORTS, + BRVLAN_ATTR_ALIAS, ++ BRVLAN_ATTR_UNTAG, + __BRVLAN_ATTR_MAX, + }; + static const struct blobmsg_policy vlan_attrs[__BRVLAN_ATTR_MAX] = { +@@ -318,6 +319,7 @@ config_parse_vlan(struct device *dev, st + [BRVLAN_ATTR_LOCAL] = { "local", BLOBMSG_TYPE_BOOL }, + [BRVLAN_ATTR_PORTS] = { "ports", BLOBMSG_TYPE_ARRAY }, + [BRVLAN_ATTR_ALIAS] = { "alias", BLOBMSG_TYPE_ARRAY }, ++ [BRVLAN_ATTR_UNTAG] = { "untagged", BLOBMSG_TYPE_BOOL }, + }; + static const struct uci_blob_param_info vlan_attr_info[__BRVLAN_ATTR_MAX] = { + [BRVLAN_ATTR_PORTS] = { .type = BLOBMSG_TYPE_STRING }, +@@ -367,6 +369,8 @@ config_parse_vlan(struct device *dev, st + vlan->local = true; + if (tb[BRVLAN_ATTR_LOCAL]) + vlan->local = blobmsg_get_bool(tb[BRVLAN_ATTR_LOCAL]); ++ if (tb[BRVLAN_ATTR_UNTAG]) ++ vlan->untagged = blobmsg_get_bool(tb[BRVLAN_ATTR_UNTAG]); + + vlan->n_ports = n_ports; + vlan->ports = port = (struct bridge_vlan_port *)&vlan[1]; +--- a/device.h 2022-09-08 21:03:06.401331415 +0800 ++++ b/device.h 2022-09-08 21:03:14.833887415 +0800 +@@ -294,6 +294,7 @@ struct bridge_vlan { + uint16_t vid; + bool local; + bool pending; ++ bool untagged; + }; + + extern const struct uci_blob_param_list device_attr_list;