]> git.proxmox.com Git - mirror_ovs.git/commitdiff
rstp: Add rstp port name for human reading.
authornickcooper-zhangtonghao <nic@opencloud.tech>
Thu, 1 Jun 2017 03:38:14 +0000 (20:38 -0700)
committerBen Pfaff <blp@ovn.org>
Thu, 8 Jun 2017 21:12:19 +0000 (14:12 -0700)
This patch is useful to debug rstp subsystem and log the
port name instead of port number. This patch will also
be used to display rstp info for next patches.

Signed-off-by: nickcooper-zhangtonghao <nic@opencloud.tech>
Acked-by: Jarno Rajahalme <jarno@ovn.org>
Signed-off-by: Ben Pfaff <blp@ovn.org>
lib/rstp-common.h
lib/rstp.c
lib/rstp.h
ofproto/ofproto-dpif.c

index 27e8079b937400565ec4f1b99b34467809784731..c1082323ca180c6e4cdf8016986d35e51987cf22 100644 (file)
@@ -262,6 +262,7 @@ struct rstp_port {
     struct rstp *rstp OVS_GUARDED_BY(rstp_mutex);
     struct hmap_node node OVS_GUARDED_BY(rstp_mutex); /* In rstp->ports. */
     void *aux OVS_GUARDED_BY(rstp_mutex);
+    char *port_name;
     struct rstp_bpdu received_bpdu_buffer OVS_GUARDED_BY(rstp_mutex);
     /*************************************************************************
      * MAC status parameters
index 907a9078548759db9cd36c8906fe0fa3f6269549..67e6912552e32fbe59573a7a9c74e5865d836288 100644 (file)
@@ -751,6 +751,14 @@ rstp_port_set_port_number__(struct rstp_port *port, uint16_t port_number)
     }
 }
 
+static void
+rstp_port_set_port_name__(struct rstp_port *port, const char *name)
+    OVS_REQUIRES(rstp_mutex)
+{
+    free(port->port_name);
+    port->port_name = xstrdup(name);
+}
+
 /* Converts the link speed to a port path cost [Table 17-3]. */
 uint32_t
 rstp_convert_speed_to_cost(unsigned int speed)
@@ -1164,6 +1172,7 @@ rstp_add_port(struct rstp *rstp)
     rstp_port_set_priority__(p, RSTP_DEFAULT_PORT_PRIORITY);
     rstp_port_set_port_number__(p, 0);
     p->aux = NULL;
+    p->port_name = NULL;
     rstp_initialize_port_defaults__(p);
     VLOG_DBG("%s: RSTP port "RSTP_PORT_ID_FMT" initialized.", rstp->name,
              p->port_id);
@@ -1201,6 +1210,7 @@ rstp_port_unref(struct rstp_port *rp)
         ovs_mutex_lock(&rstp_mutex);
         rstp = rp->rstp;
         rstp_port_set_state__(rp, RSTP_DISABLED);
+        free(rp->port_name);
         hmap_remove(&rstp->ports, &rp->node);
         VLOG_DBG("%s: removed port "RSTP_PORT_ID_FMT"", rstp->name,
                  rp->port_id);
@@ -1439,13 +1449,15 @@ void
 rstp_port_set(struct rstp_port *port, uint16_t port_num, int priority,
               uint32_t path_cost, bool is_admin_edge, bool is_auto_edge,
               enum rstp_admin_point_to_point_mac_state admin_p2p_mac_state,
-              bool admin_port_state, bool do_mcheck, void *aux)
+              bool admin_port_state, bool do_mcheck, void *aux,
+              const char *name)
     OVS_EXCLUDED(rstp_mutex)
 {
     ovs_mutex_lock(&rstp_mutex);
     port->aux = aux;
     rstp_port_set_priority__(port, priority);
     rstp_port_set_port_number__(port, port_num);
+    rstp_port_set_port_name__(port, name);
     rstp_port_set_path_cost__(port, path_cost);
     rstp_port_set_admin_edge__(port, is_admin_edge);
     rstp_port_set_auto_edge__(port, is_auto_edge);
index 4942d59ce023c87ec11aba0168df9185c1f7d4fe..5213f98b8f5e4cdb8dccab0c9c23e7e492c9c142 100644 (file)
@@ -227,7 +227,8 @@ uint32_t rstp_convert_speed_to_cost(unsigned int speed);
 void rstp_port_set(struct rstp_port *, uint16_t port_num, int priority,
                    uint32_t path_cost, bool is_admin_edge, bool is_auto_edge,
                    enum rstp_admin_point_to_point_mac_state admin_p2p_mac_state,
-                   bool admin_port_state, bool do_mcheck, void *aux)
+                   bool admin_port_state, bool do_mcheck, void *aux,
+                   const char *name)
     OVS_EXCLUDED(rstp_mutex);
 
 enum rstp_state rstp_port_get_state(const struct rstp_port *)
index 8d90446edea097556a36946976e9478b2ec9506d..cca6c52b2de0689cbfc00b39069ac66113f2a600 100644 (file)
@@ -2759,7 +2759,7 @@ set_rstp_port(struct ofport *ofport_,
     rstp_port_set(rp, s->port_num, s->priority, s->path_cost,
                   s->admin_edge_port, s->auto_edge,
                   s->admin_p2p_mac_state, s->admin_port_state, s->mcheck,
-                  ofport);
+                  ofport, netdev_get_name(ofport->up.netdev));
     update_rstp_port_state(ofport);
     /* Synchronize operational status. */
     rstp_port_set_mac_operational(rp, ofport->may_enable);