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 
Michael Rozhavsky 

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