Name Date Size

.. 2012-02-18 19:52:02 7

base.h 2009-09-10 21:11:49 6.5 KiB

ChangeLog 2009-09-10 21:11:49 2.1 KiB

choose.h 2009-09-10 21:11:49 1.4 KiB

COPYING 2009-09-10 21:11:49 25.8 KiB

COPYING.descrip 2010-08-03 00:37:22 23

edge.c 2009-09-10 21:11:49 3 KiB

edge.h 2009-09-10 21:11:49 1.4 KiB

llib-lrstp 2009-09-10 21:11:49 1,007

mapfile-vers 2010-06-25 02:16:42 1.9 KiB

migrate.c 2009-09-10 21:11:49 3.4 KiB

migrate.h 2009-09-10 21:11:49 1.3 KiB

p2p.c 2009-09-10 21:11:49 2.3 KiB

p2p.h 2009-09-10 21:11:49 1.3 KiB

pcost.c 2009-09-10 21:11:49 3.7 KiB

pcost.h 2009-09-10 21:11:49 1.3 KiB

port.c 2009-09-10 21:11:49 6.7 KiB

port.h 2009-09-10 21:11:49 5.9 KiB

portinfo.c 2012-02-18 19:52:02 14.5 KiB

portinfo.h 2009-09-10 21:11:49 1.3 KiB

README 2009-09-10 21:11:49 1.3 KiB

README.authors 2009-09-10 21:11:49 69

README.CVS.HOWTO 2009-09-10 21:11:49 899

README.files 2009-09-10 21:11:49 2.5 KiB

README.news 2009-09-10 21:11:49 575

rolesel.c 2009-09-10 21:11:49 9.9 KiB

rolesel.h 2009-09-10 21:11:49 1.3 KiB

roletrns.c 2009-09-10 21:11:49 12.1 KiB

roletrns.h 2009-09-10 21:11:49 1.3 KiB

statmch.c 2009-09-10 21:11:49 3.4 KiB

statmch.h 2009-09-10 21:11:49 3 KiB

stp_bpdu.h 2009-09-10 21:11:49 2.7 KiB

stp_in.c 2009-09-10 21:11:49 26 KiB

stp_in.h 2009-09-10 21:11:49 5.8 KiB

stp_to.h 2009-09-10 21:11:49 2 KiB

stp_vectors.h 2009-09-10 21:11:49 3 KiB

stpm.c 2009-09-10 21:11:49 8 KiB

stpm.h 2009-09-10 21:11:49 4.1 KiB

stpmgmt.c 2009-09-10 21:11:49 3.8 KiB

sttrans.c 2009-09-10 21:11:49 3.6 KiB

sttrans.h 2009-09-10 21:11:49 1.3 KiB

times.c 2009-09-10 21:11:49 2.6 KiB

times.h 2009-09-10 21:11:49 1.6 KiB

TODO 2009-09-10 21:11:49 567

topoch.c 2009-09-10 21:11:49 6.4 KiB

topoch.h 2009-09-10 21:11:49 1.3 KiB

transmit.c 2009-09-10 21:11:49 10.5 KiB

transmit.h 2009-09-10 21:11:49 1.3 KiB

uid_stp.h 2009-09-10 21:11:49 6 KiB

vector.c 2009-09-10 21:11:49 4.9 KiB

vector.h 2009-09-10 21:11:49 2.2 KiB

README

The Rapid Spanning Tree Library project contains a full implementation
of 802.1s as an library with API. There is two processes, using this
library: 'bridge' & 'mngr'. First simulates RSTP bridge behavior, second
is dedicated to link/unlink 'bridges' into virtual RSTP domain (VRSTPD).
Both 'bridge' & 'mngr' has its own simple CLI like language of commands;
these commands allow to manage the VRSTPD. There are tools to trace
state machine transitions and get traps about drastic changes.
Purpose: studying, debugging, development.
The library may be used in real bridges/routers while bounding to a real
system depending environment.
To run:
1. In one shell run 'mngr'
./mngr
You will get prompt of 'mngr'; type '?' and get full help of
'mngr' commands.
2. In another shell run bridge instance.
./bridge
You will get prompt of 'bridge'; type '?' and get full help
of bridge management commands.
3. You may (and should) run a number of bridge instances, each in its
separate shell (this way you will be able manage them).
For example, if there were two bridge instances, you may see examples
of the dialog in files mngr.txt, B5055.txt and B5056.txt.
Note: prompt both of 'mngr' and of 'bridge' instance contains time stamp,
while all these process run onto the same computer, these time stamps
are synchronized.

README.authors

Alex Rozin <alexr@nbase.co.il>
Michael Rozhavsky <mike@nbase.co.il>

README.CVS.HOWTO

Anonymous CVS Access
This project's SourceForge CVS repository can be checked out through
anonymous (pserver) CVS with the following instruction set. The module
you wish to check out must be specified as the modulename. When prompted
for a password for anonymous, simply press the Enter key.
cvs -d:pserver:anonymous@cvs.rstplib.sourceforge.net:/cvsroot/rstplib login
cvs -z3 -d:pserver:anonymous@cvs.rstplib.sourceforge.net:/cvsroot/rstplib co modulename
Updates from within the module's directory do not need the -d parameter.
Developer CVS Access via SSH
Only project developers can access the CVS tree via this method. SSH1 must
be installed on your client machine. Substitute modulename and developername
with the proper values. Enter your site password when prompted.
export CVS_RSH=ssh
cvs -z3 -d:ext:developername@cvs.rstplib.sourceforge.net:/cvsroot/rstplib co modulename

README.files

This guide describes the list of the files of the project.
==========================================================
There are two target binaries: mngr & bridge
o The first is a simplest tools to connect/disconnect
bridges and check their current connection. These its
functions are managed from command line simple language
and use the library libcli.a (see below). Beside it mngr
serves to transport BPDU messages between bridges; for
this purpose mngr uses the library libuid.a
The source code of the mngr: file mngr.c
o The second is a simulation of virtual RSTP bridge. It
accepts two types of messages: UID_CNTRL & UID_BPDU (see
file uid.h). This program is linked with the same two
libraries libcli.a & libuid.a; beside it uses a system
independent librstp.a: implementation of Rapid Spanning
Tree (802.1w) - see below.
The source code of the bridge: files bridge.c,stp_cli.c,
stp_to.c
* bridge.c - simulates the main bridge behavior
* stp_cli.c - consists from command line functions
* stp_to.c - API, that librstp.a uses for its purposes.
The management communication between bridge and librstp.a
uses structures and definitions from the header uid_stp.h
o libcli.a - library for command line features. It has only
one file cli.c, the API is described in the header cli.h.
o libuid.a - the 'transport' library: the source code you
may find in the file uid_sock.c and in the two headers:
uid.h & uid_sock.h
o (so far, so good) librstp.a - it is a heart of the project
Actually, it implements 802.1w state machines. Files
stpm.c - the RSTP instance (some reflection of Port0)
port.c - the RSTP port instance
portinfo.c - Port Information State Machine, 17.21
rolesel.c - Port Role Selection State Machine, 17.22
roletrns.c - Port Role Transition State Machine, 17.23
sttrans.c - Port State Transition State Machine, 17.24
topoch.c - Topology Change State Machine, 17.25
migrate.c - Port Protocol Migration State Machine, 17.26
transmit.c - Port Transmit State Machine 17.27
pcost.c - Path Cost Resolution State Machine
edge.c - operEdge Port Resolution State Machine
p2p.c - operPointToPoit Resolution State Machine
statmch.c - generic state machine implementation
vector.c - Priority Vectors manipulations
times.c - Times manipulations
stp_in.c - API for calls from outside.
sttrans.c - API for calls from outside (dedicated for creation
deleting, starting & stopping the RSTP instance) less
relevant to the project.

README.news

- All per Port variables have been moved from the State
Machines into the Port instance (it made the state
machines much more clear)
- In libcli.a instead of stupid fgets() function we use
now readline (thanks to Michel Roshavsky)
- 'mcheck' support
- 'nonStp' support (I know, that it is out the standard,
but it seems to be useful (see a discussion on
http://www1.ietf.org/mail-archive/working-groups/bridge/current/msg00038.html)
and our customers demand it
- The function rolesel.c has been drastically fixed, IMHO
closer to the standard
- Nicer output