]> git.ipfire.org Git - people/ms/mstpd.git/commitdiff
Transition operEdge to not-Edge when AutoEdge is cleared and AdminEdge is not-Edge
authordv1tas <dv1tas@fbe50366-0c72-4402-a84b-5d246361dba7>
Thu, 20 Jun 2013 08:36:24 +0000 (08:36 +0000)
committerdv1tas <dv1tas@fbe50366-0c72-4402-a84b-5d246361dba7>
Thu, 20 Jun 2013 08:36:24 +0000 (08:36 +0000)
This was obviously a flaw in 802.1Q-2005 inherited from 802.1D, fixed in 802.1Q-2011

Signed-off-by: Satish Ashok <sashok@cumulusnetworks.com>
Signed-off-by: Vitalii Demianets <dvitasgs@gmail.com>
git-svn-id: svn://svn.code.sf.net/p/mstpd/code/trunk@47 fbe50366-0c72-4402-a84b-5d246361dba7

mstp.c

diff --git a/mstp.c b/mstp.c
index 8371a8b1ded4be4bb27b70bc4ab28c54225cf9d2..aff327ce564aa98d9364175fb6acff61fdc2c139 100644 (file)
--- a/mstp.c
+++ b/mstp.c
@@ -2899,7 +2899,9 @@ static bool BDSM_run(port_t *prt, bool dry_run)
     switch(prt->BDSM_state)
     {
         case BDSM_EDGE:
-            if((!prt->portEnabled && !prt->AdminEdgePort) || !prt->operEdge)
+            if(((!prt->portEnabled || !prt->AutoEdge) && !prt->AdminEdgePort)
+               || !prt->operEdge
+              )
             {
                 if(dry_run) /* state change */
                     return true;