summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornickcooper-zhangtonghao <nic@opencloud.tech>2017-05-31 20:38:14 -0700
committerBen Pfaff <blp@ovn.org>2017-06-08 14:12:19 -0700
commit8d2f8375c7f7ee3e36877ba20f4e4cc5b47841d3 (patch)
tree25d8c32f12b8a9681505379419245b4181bd3c6d
parentfff48136657c76279b08ea27474c6741db576157 (diff)
downloadopenvswitch-8d2f8375c7f7ee3e36877ba20f4e4cc5b47841d3.tar.gz
rstp: Add rstp port name for human reading.
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>
-rw-r--r--lib/rstp-common.h1
-rw-r--r--lib/rstp.c14
-rw-r--r--lib/rstp.h3
-rw-r--r--ofproto/ofproto-dpif.c2
4 files changed, 17 insertions, 3 deletions
diff --git a/lib/rstp-common.h b/lib/rstp-common.h
index 27e8079b9..c1082323c 100644
--- a/lib/rstp-common.h
+++ b/lib/rstp-common.h
@@ -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
diff --git a/lib/rstp.c b/lib/rstp.c
index 907a90785..67e691255 100644
--- a/lib/rstp.c
+++ b/lib/rstp.c
@@ -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);
diff --git a/lib/rstp.h b/lib/rstp.h
index 4942d59ce..5213f98b8 100644
--- a/lib/rstp.h
+++ b/lib/rstp.h
@@ -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 *)
diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
index 8d90446ed..cca6c52b2 100644
--- a/ofproto/ofproto-dpif.c
+++ b/ofproto/ofproto-dpif.c
@@ -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);