[Bridge] RSTP in http://git.kernel.org/?p=linux/kernel/git/shemminger/rstp.git; a=summary problems

Srinivas M.A. srinivas.aji at gmail.com
Mon Mar 31 09:59:55 PDT 2008


>
>  So I both get a SEGV and the kernel thinks userspace is running STP, not
>  ideal.

Segfault is fixed by this:

diff --git a/log.h b/log.h
index ce0d94e..2fcdcfb 100644
--- a/log.h
+++ b/log.h
@@ -63,7 +63,7 @@ extern int log_level;
 #ifdef NO_DAEMON

 #define ERROR(_fmt, _args...) \
-       PRINT(LOG_LEVEL_ERROR, "%s: " _fmt, ##_args)
+       PRINT(LOG_LEVEL_ERROR, "%s: " _fmt, __PRETTY_FUNCTION__, ##_args)

 #else
 #define ERROR(_fmt, _args...) \


>
>  I really think one should be able to start RSTP with rtspctl too so
>  one doesn't need /sbin/bridge-stp

bridge-stp is a way to tell the kernel whether it should run its STP
or not. This was set up to make it possible for users to run "brctl
stp <bridge_name> on" without directly being concerned with whether
kernel STP or userspace STP will be run.
But that doesn't really happen in practice I guess.

Unfortunately, bridge-stp is run with the kernel holding the RTNL
lock, so the set of things it can do without causing a hang is
limited. With the current kernel infrastructure, my preference would
be to start rstpd from the network init scripts in the system and use
bridge-stp just to decide whether to enable RSTP or kernel STP for the
given bridge, perhaps based on a setting in ifcfg-<bridge_name> (in
Redhat network config).

For more robustness, maybe we need additional kernel infrastructure
where the daemon can tell the kernel it will handle STP (this can be
done now by setting stp off and then on when bridge-stp will return
0), but where the kernel can also tell (maybe by polling) if the
daemon quits and fall back to kernel STP in that case.


More information about the Bridge mailing list