/************************************************************************
* 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.
**********************************************************************/
/* STP machine instance : bridge per VLAN: 17.17 */
#include "base.h"
#include "stpm.h"
#include "stp_to.h" /* for STP_OUT_flush_lt */
static int
{
return 0;
}
static int
int (*iter_callb) (STATE_MACH_T*),
{
/* state machines per bridge */
if (exit_on_non_zero_ret && iret)
return iret;
else
}
/* state machines per port */
if (exit_on_non_zero_ret && iret)
return iret;
else
}
}
return mret;
}
void
{
0,
0, 0);
}
static unsigned char
{
return 1;
}
}
return 0;
}
void
{
register int iii;
}
}
}
(void) STP_stpm_update (this);
if (this->Topo_Change) {
this->timeSince_Topo_Change = 0;
} else {
this->Topo_Change_Count = 0;
}
}
{
if (name) {
}
#ifdef STP_DBG
/* this->rolesel->debug = 2; */
#endif
return this;
}
int
{
int rc = 0;
/* nothing to do :) */
return 0;
}
if (STP_ENABLED == admin_state) {
} else {
}
return rc;
}
void
{
register void* pv;
}
}
if (prev) {
} else {
}
break;
}
}
}
int
{
return STP_There_Are_No_Ports;
}
return STP_Cannot_Compute_Bridge_Prio;
}
/* check, that the stpm has unique bridge Id */
if (0 != STP_stpm_check_bridge_priority (this)) {
/* there is an enabled bridge with same ID :( */
return STP_Invalid_Bridge_Priority;
}
}
#ifndef STRONGLY_SPEC_802_1W
/* A. see comment near STRONGLY_SPEC_802_1W in topoch.c */
/* B. port=0 here means: delete for all ports */
#ifdef STP_DBG
stp_trace("%s (all, start stpm)",
"clearFDB");
#endif
#endif
(void) STP_stpm_update (this);
return 0;
}
/* ARGSUSED */
void
{
}
int
{
register int number_of_loops = 0;
for (;;) {/* loop until not need changes */
True);
if (! need_state_change) break;
/* here we know, that at least one stater must be
updated (it has changed state) */
False);
}
return number_of_loops;
}
{
int port_index = 0;
min_num_port = port;
}
}
}
STP_stpm_get_the_list (void)
{
return bridges;
}
void
{
}
}
int
{
return STP_Invalid_Bridge_Priority;
}
}
return 0;
}
const char*
{
}
}
return "Undef?";
}