/************************************************************************
* RSTP library - Rapid Spanning Tree (802.1t, 802.1w)
* Copyright (C) 2001-2003 Optical Access
* Author: Alex Rozin
*
* This file is part of RSTP library.
*
* under the terms of the GNU Lesser General Public License as published by the
* Free Software Foundation; version 2.1
*
* RSTP library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
* General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with RSTP library; see the file COPYING. If not, write to the Free
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
**********************************************************************/
/* Topolgy Change state machine : 17.25 */
#include "base.h"
#include "stpm.h"
#include "stp_to.h" /* for STP_OUT_flush_lt */
#define STATES { \
CHOOSE(NOTIFIED_TC), \
CHOOSE(PROPAGATING), \
CHOOSE(ACKNOWLEDGED), \
}
#include "choose.h"
#ifndef STRONGLY_SPEC_802_1W
/*
* In many kinds of hardware the function
* STP_OUT_flush_lt is a) is very hard and b) cannot
* delete learning emtries per port. The alternate
* method may be used: we don't care operEdge flag here,
* but clean learning table once for TopologyChange
* for all ports, except the received port. I am ready to discuss :(
* See below word STRONGLY_SPEC_802_1W
*/
#else
static Bool
{
stp_trace("%s (%s, %s, %s, '%s')",
reason);
}
}
#endif
static void
{
}
#ifndef STRONGLY_SPEC_802_1W
#ifdef STP_DBG
stp_trace("%s (%s, %s, %s, '%s')",
"other ports", reason);
}
#endif
#endif
}
static unsigned int
{
}
}
void
{
case BEGIN:
case INIT:
#ifdef STRONGLY_SPEC_802_1W
#endif
break;
case INACTIVE:
break;
case TCACTIVE:
break;
case DETECTED:
#ifdef STP_DBG
stp_trace("DETECTED: tcWhile=%d on port %s",
#endif
break;
case NOTIFIED_TC:
}
break;
case PROPAGATING:
#ifdef STP_DBG
stp_trace("PROPAGATING: tcWhile=%d on port %s",
#endif
#ifdef STRONGLY_SPEC_802_1W
#endif
break;
case ACKNOWLEDGED:
#ifdef STP_DBG
stp_trace("ACKNOWLEDGED: tcWhile=%d on port %s",
#endif
break;
case NOTIFIED_TCN:
#ifdef STP_DBG
stp_trace("NOTIFIED_TCN: tcWhile=%d on port %s",
#endif
break;
};
}
{
}
case INIT:
case INACTIVE:
break;
case TCACTIVE:
break;
case DETECTED:
case NOTIFIED_TC:
case PROPAGATING:
case ACKNOWLEDGED:
case NOTIFIED_TCN:
};
return False;
}