[ovs-dev] [PATCH v3 5/5] stp: Add link-state checking support for stp ports.

Ben Pfaff blp at ovn.org
Wed May 31 23:00:23 UTC 2017


On Fri, May 19, 2017 at 12:20:43AM -0700, nickcooper-zhangtonghao wrote:
> When bridge stp enabled, we can enable the stp ports
> despite ports are down. When initializing, this patch checks
> link-state of ports and enable or disable them according
> to their link-state. This patch also allow user to enable
> and disable a port when bridge stp is running. If a stp
> port is in disable state, it can forward packets. If its
> link is down and this patch sets it to disable, there is
> no L2 loop.
> 
> Signed-off-by: nickcooper-zhangtonghao <nic at opencloud.tech>

This seems reasonable.  Thank you!  I applied it to master, folding in
the following changes.

--8<--------------------------cut here-------------------------->8--

diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
index 2dd7c2a1d287..6ad9551f90b3 100644
--- a/ofproto/ofproto-dpif.c
+++ b/ofproto/ofproto-dpif.c
@@ -2580,19 +2580,16 @@ update_stp_port_state(struct ofport_dpif *ofport)
 static void
 stp_check_and_update_link_state(struct ofproto_dpif *ofproto)
 {
-    struct ofport *ofport_;
     struct ofport_dpif *ofport;
-    bool up;
 
-    HMAP_FOR_EACH (ofport_, hmap_node, &ofproto->up.ports) {
-        ofport = ofport_dpif_cast(ofport_);
-        up = netdev_get_carrier(ofport_->netdev);
+    HMAP_FOR_EACH (ofport, up.hmap_node, &ofproto->up.ports) {
+        bool up = netdev_get_carrier(ofport->up.netdev);
 
         if (ofport->stp_port &&
             up != (stp_port_get_state(ofport->stp_port) != STP_DISABLED)) {
 
-            VLOG_DBG("bridge: %s, port: %s is %s, %s it", ofproto->up.name,
-                     netdev_get_name(ofport->up.netdev),
+            VLOG_DBG("bridge %s, port %s is %s, %s it.",
+                     ofproto->up.name, netdev_get_name(ofport->up.netdev),
                      up ? "up" : "down",
                      up ? "enabling" : "disabling");
 


More information about the dev mailing list