/* Adds a RSTP port. */
struct rstp_port *
-rstp_add_port(struct rstp *rstp) {
+rstp_add_port(struct rstp *rstp)
+{
struct rstp_port *p = xzalloc(sizeof *p);
ovs_mutex_lock(&mutex);
/* Deletes a RSTP port. */
void
-rstp_delete_port(struct rstp_port *p) {
+rstp_delete_port(struct rstp_port *p)
+{
struct rstp *rstp;
ovs_mutex_lock(&mutex);
list_remove(&p->node);
rstp->ports_count--;
VLOG_DBG("%s: removed port "RSTP_PORT_ID_FMT"", rstp->name, p->port_id);
- free(p);
ovs_mutex_unlock(&mutex);
+ free(p);
}
/* Sets the port Admin Edge parameter. */
void
rstp_port_set_admin_edge(struct rstp_port *rstp_port, bool new_admin_edge)
{
- struct rstp *rstp;
-
- rstp = rstp_port->rstp;
if (rstp_port->admin_edge != new_admin_edge) {
+ struct rstp *rstp;
+
+ ovs_mutex_lock(&mutex);
+ rstp = rstp_port->rstp;
VLOG_DBG("%s, port %u: set RSTP Admin Edge to %d", rstp->name,
rstp_port->port_number, new_admin_edge);
- ovs_mutex_lock(&mutex);
rstp_port->admin_edge = new_admin_edge;
ovs_mutex_unlock(&mutex);
}
void
rstp_port_set_auto_edge(struct rstp_port *rstp_port, bool new_auto_edge)
{
- struct rstp *rstp;
-
- rstp = rstp_port->rstp;
if (rstp_port->auto_edge != new_auto_edge) {
+ struct rstp *rstp;
+
+ ovs_mutex_lock(&mutex);
+ rstp = rstp_port->rstp;
VLOG_DBG("%s, port %u: set RSTP Auto Edge to %d", rstp->name,
rstp_port->port_number, new_auto_edge);
- ovs_mutex_lock(&mutex);
rstp_port->auto_edge = new_auto_edge;
ovs_mutex_unlock(&mutex);
}
if (new_mcheck == true && rstp_port->rstp->force_protocol_version >= 2) {
rstp_port->mcheck = true;
}
- ovs_mutex_unlock(&mutex);
VLOG_DBG("%s, port %u: set RSTP mcheck to %d", rstp->name,
rstp_port->port_number, new_mcheck);
+ ovs_mutex_unlock(&mutex);
}
/* Returns the designated bridge id. */
ovs_mutex_lock(&mutex);
designated_id = rstp->root_priority.designated_bridge_id;
ovs_mutex_unlock(&mutex);
+
return designated_id;
}
ovs_mutex_lock(&mutex);
root_id = rstp->root_priority.root_bridge_id;
ovs_mutex_unlock(&mutex);
+
return root_id;
}
ovs_mutex_lock(&mutex);
designated_port_id = rstp->root_priority.designated_port_id;
ovs_mutex_unlock(&mutex);
+
return designated_port_id;
}
ovs_mutex_lock(&mutex);
bridge_port_id = rstp->root_priority.bridge_port_id;
ovs_mutex_unlock(&mutex);
+
return bridge_port_id;
}
is_root = rstp->bridge_identifier ==
rstp->root_priority.designated_bridge_id;
ovs_mutex_unlock(&mutex);
+
return is_root;
}
ovs_mutex_lock(&mutex);
designated_root = rstp->root_priority.designated_bridge_id;
ovs_mutex_unlock(&mutex);
+
return designated_root;
}
ovs_mutex_lock(&mutex);
port_id = p->port_id;
ovs_mutex_unlock(&mutex);
+
return port_id;
}
ovs_mutex_lock(&mutex);
state = p->rstp_state;
ovs_mutex_unlock(&mutex);
+
return state;
}
ovs_mutex_lock(&mutex);
role = p->role;
ovs_mutex_unlock(&mutex);
+
return role;
}
ovs_mutex_lock(&mutex);
aux = p->aux;
ovs_mutex_unlock(&mutex);
+
return aux;
}
/* Unixctl. */
static struct rstp *
-rstp_find(const char *name) OVS_REQUIRES(mutex)
+rstp_find(const char *name)
+ OVS_REQUIRES(mutex)
{
struct rstp *rstp;