README
1
2
3The Rapid Spanning Tree Library project contains a full implementation
4of 802.1s as an library with API. There is two processes, using this
5library: 'bridge' & 'mngr'. First simulates RSTP bridge behavior, second
6is dedicated to link/unlink 'bridges' into virtual RSTP domain (VRSTPD).
7Both 'bridge' & 'mngr' has its own simple CLI like language of commands;
8these commands allow to manage the VRSTPD. There are tools to trace
9state machine transitions and get traps about drastic changes.
10
11Purpose: studying, debugging, development.
12
13The library may be used in real bridges/routers while bounding to a real
14system depending environment.
15
16To run:
171. In one shell run 'mngr'
18./mngr
19You will get prompt of 'mngr'; type '?' and get full help of
20'mngr' commands.
21
222. In another shell run bridge instance.
23./bridge
24You will get prompt of 'bridge'; type '?' and get full help
25of bridge management commands.
26
273. You may (and should) run a number of bridge instances, each in its
28separate shell (this way you will be able manage them).
29
30For example, if there were two bridge instances, you may see examples
31of the dialog in files mngr.txt, B5055.txt and B5056.txt.
32
33Note: prompt both of 'mngr' and of 'bridge' instance contains time stamp,
34while all these process run onto the same computer, these time stamps
35are synchronized.
36
37
38
README.CVS.HOWTO
1Anonymous CVS Access
2
3This project's SourceForge CVS repository can be checked out through
4anonymous (pserver) CVS with the following instruction set. The module
5you wish to check out must be specified as the modulename. When prompted
6for a password for anonymous, simply press the Enter key.
7
8cvs -d:pserver:anonymous@cvs.rstplib.sourceforge.net:/cvsroot/rstplib login
9
10cvs -z3 -d:pserver:anonymous@cvs.rstplib.sourceforge.net:/cvsroot/rstplib co modulename
11
12Updates from within the module's directory do not need the -d parameter.
13
14Developer CVS Access via SSH
15
16Only project developers can access the CVS tree via this method. SSH1 must
17be installed on your client machine. Substitute modulename and developername
18with the proper values. Enter your site password when prompted.
19
20export CVS_RSH=ssh
21
22cvs -z3 -d:ext:developername@cvs.rstplib.sourceforge.net:/cvsroot/rstplib co modulename
23
README.authors
1Alex Rozin <alexr@nbase.co.il>
2Michael Rozhavsky <mike@nbase.co.il>
3
4
README.files
1This guide describes the list of the files of the project.
2==========================================================
3
4There are two target binaries: mngr & bridge
5o The first is a simplest tools to connect/disconnect
6 bridges and check their current connection. These its
7 functions are managed from command line simple language
8 and use the library libcli.a (see below). Beside it mngr
9 serves to transport BPDU messages between bridges; for
10 this purpose mngr uses the library libuid.a
11 The source code of the mngr: file mngr.c
12
13o The second is a simulation of virtual RSTP bridge. It
14 accepts two types of messages: UID_CNTRL & UID_BPDU (see
15 file uid.h). This program is linked with the same two
16 libraries libcli.a & libuid.a; beside it uses a system
17 independent librstp.a: implementation of Rapid Spanning
18 Tree (802.1w) - see below.
19 The source code of the bridge: files bridge.c,stp_cli.c,
20 stp_to.c
21 * bridge.c - simulates the main bridge behavior
22 * stp_cli.c - consists from command line functions
23 * stp_to.c - API, that librstp.a uses for its purposes.
24 The management communication between bridge and librstp.a
25 uses structures and definitions from the header uid_stp.h
26
27o libcli.a - library for command line features. It has only
28 one file cli.c, the API is described in the header cli.h.
29
30o libuid.a - the 'transport' library: the source code you
31 may find in the file uid_sock.c and in the two headers:
32 uid.h & uid_sock.h
33
34o (so far, so good) librstp.a - it is a heart of the project
35 Actually, it implements 802.1w state machines. Files
36 stpm.c - the RSTP instance (some reflection of Port0)
37 port.c - the RSTP port instance
38 portinfo.c - Port Information State Machine, 17.21
39 rolesel.c - Port Role Selection State Machine, 17.22
40 roletrns.c - Port Role Transition State Machine, 17.23
41 sttrans.c - Port State Transition State Machine, 17.24
42 topoch.c - Topology Change State Machine, 17.25
43 migrate.c - Port Protocol Migration State Machine, 17.26
44 transmit.c - Port Transmit State Machine 17.27
45 pcost.c - Path Cost Resolution State Machine
46 edge.c - operEdge Port Resolution State Machine
47 p2p.c - operPointToPoit Resolution State Machine
48 statmch.c - generic state machine implementation
49 vector.c - Priority Vectors manipulations
50 times.c - Times manipulations
51 stp_in.c - API for calls from outside.
52 sttrans.c - API for calls from outside (dedicated for creation
53 deleting, starting & stopping the RSTP instance) less
54 relevant to the project.
55
56
57
58
59
README.news