From 14bc32509bcf3f8fdf4b869dd98c8fe70999ae3c Mon Sep 17 00:00:00 2001 From: Artee Roy <a.roy@gxgroup.eu> Date: Tue, 14 Dec 2021 16:20:32 +0530 Subject: [PATCH] Feature# 5101 Q-in-Q transparent inner VLAN --- iopsys-brcm63xx-arm/base-files/sbin/vlanconf | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/iopsys-brcm63xx-arm/base-files/sbin/vlanconf b/iopsys-brcm63xx-arm/base-files/sbin/vlanconf index 5f346affa..49007fc95 100755 --- a/iopsys-brcm63xx-arm/base-files/sbin/vlanconf +++ b/iopsys-brcm63xx-arm/base-files/sbin/vlanconf @@ -392,7 +392,13 @@ create_vlan() { vlanCtl_filterOnTagVid $VLANID $TAGINDEX TAGINDEX=1 - [ $TYPE == "8021ad" ] && vlanCtl_filterOnTagVid $INNER_VLANID $TAGINDEX + + # The check for INNER_VLANID -ne 0 is for supporting any inner vlan in QinQ + # if INNER_VLANID is specified, then, this rule is added normally: + # vlanctl --set-rxif NAME --filter-vid VLANID 0 --filter-vid INNER_VLANID 1 --pop-tag --if IFNAME --rx --tags 2 --rule-append + # Otherwise, pop outer tag and continue: + # vlanctl --set-rxif NAME --filter-vid VLANID --pop-tag --if IFNAME --rx --tags 2 --rule-append + [ "$TYPE" == "8021ad" -a $INNER_VLANID -ne 0 ] && vlanCtl_filterOnTagVid $INNER_VLANID $TAGINDEX # For managed interfaces, pop the vlan header at rx if [ $UNMANAGED -eq 0 ]; then @@ -458,7 +464,13 @@ create_vlan() { vlanCtl_filterOnTagVid $VLANID $TAGINDEX TAGINDEX=1 - [ $TYPE == "8021ad" ] && vlanCtl_filterOnTagVid $INNER_VLANID $TAGINDEX + + # The check for INNER_VLANID -ne 0 is for supporting any inner vlan in QinQ + # if INNER_VLANID is specified, then, this rule is added normally: + # vlanctl --set-rxif NAME --filter-vid VLANID 0 --filter-vid INNER_VLANID 1 --pop-tag --if IFNAME --rx --tags 2 --rule-append + # Otherwise, pop outer tag and continue: + # vlanctl --set-rxif NAME --filter-vid VLANID --pop-tag --if IFNAME --rx --tags 2 --rule-append + [ "$TYPE" == "8021ad" -a $INNER_VLANID -ne 0 ] && vlanCtl_filterOnTagVid $INNER_VLANID $TAGINDEX vlanCtl_cmdPopVlanTag [ $TYPE == "8021ad" ] && vlanCtl_cmdPopVlanTag -- GitLab