2
0
mirror of https://github.com/openvswitch/ovs synced 2025-10-25 15:07:05 +00:00
Commit Graph

19 Commits

Author SHA1 Message Date
Thomas Graf
e6211adce4 lib: Move vlog.h to <openvswitch/vlog.h>
A new function vlog_insert_module() is introduced to avoid using
list_insert() from the vlog.h header.

Signed-off-by: Thomas Graf <tgraf@noironetworks.com>
Acked-by: Ben Pfaff <blp@nicira.com>
2014-12-15 14:15:19 +01:00
Jarno Rajahalme
b5ba2490e3 rstp-state-machines: fix proposal reception behaviour.
Other ports should stop forwarding and learning when a port receives a
superior BPDU carrying a Proposal flag.
Without this patch this does not happen and other ports keep executing
the learning and forwarding processes.
This patch contains some fixes reported in the 802.1q-2008 standard.

Signed-off-by: Daniele Venturino <daniele.venturino@m3s.it>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
2014-11-19 09:41:52 -08:00
Jarno Rajahalme
6448df9442 rstp: Fix global transitions.
Global transitions are highest priority transitions.  When the
condition associated with a global transition is met, it supersedes
all other exit conditions including UCT.

Extracted from 802.1D-2004 standard (17.16):

A transition that is global in nature (i.e., a transition that occurs
from any of the possible states if the condition attached to the arrow
is met) is denoted by an open arrow, i.e., no specific state is
identified as the origin of the transition.  When the condition
associated with a global transition is met, it supersedes all other
exit conditions including UCT.  The special global condition BEGIN
supersedes all other global conditions, and once asserted remains
asserted until all state blocks have executed to the point that
variable assignments and other consequences of their execution remain
unchanged.

Signed-off-by: Daniele Venturino <daniele.venturino@m3s.it>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
2014-11-19 09:27:56 -08:00
Jarno Rajahalme
2372c146f7 rstp: shift learned MAC addresses to new Root port.
All MAC addresses previously learned on a Root Port can be moved to an
Alternate Port that becomes the new Root Port; i.e., Dynamic Filtering
Entries for those addresses may be modified to show the new Root Port as
their source, reducing the need to flood frames when recovering from
some component failures.

Signed-off-by: Daniele Venturino <daniele.venturino@m3s.it>
Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
2014-11-19 09:24:52 -08:00
Daniele Venturino
12c148380a rstp-state-machines: fix rcv_info().
A Config BPDU always conveys a Designated Port Role.

Signed-off-by: Daniele Venturino <daniele.venturino@m3s.it>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
2014-11-14 14:07:51 -08:00
Daniele Venturino
11d4d40871 rstp-state-machines: fix TCN reception.
Set rcdv_tcn and return OTHER_INFO when a
TOPOLOGY_CHANGE_NOTIFICATION_BPDU is received, as required by
802.1Q-2008.

Signed-off-by: Daniele Venturino <daniele.venturino@m3s.it>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
2014-11-14 14:07:50 -08:00
Daniele Venturino
7ccf8d380e rstp-state-machines: Rename ALTERNATE_AGREED state as ALTERNATE_AGREED_EXEC.
All other similar port_role_transition_sm states are named according
to this pattern.

Signed-off-by: Daniele Venturino <daniele.venturino@m3s.it>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
2014-11-14 14:07:50 -08:00
Daniele Venturino
55f8993cd0 rstp-state-machines: Fix updt_roles_tree().
If the DesignatedBridgeID Bridge Address component is equal to that
component of the Bridge's own bridge priority vector skip to the next
port.

Signed-off-by: Daniele Venturino <daniele.venturino@m3s.it>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
2014-11-14 14:07:50 -08:00
Daniele Venturino
75735c8038 rstp-state-machines: Fix Topology Change State Machine transition.
Accordingly to the 802.1D-2004 standard, the transition from the
TOPOLOGY_CHANGE_SM_NOTIFIED_TCN_EXEC state should go to the
TOPOLOGY_CHANGE_SM_NOTIFIED_TC_EXEC state and not to the
TOPOLOGY_CHANGE_SM_ACTIVE.

See section 17.31 of 802.1D-2004 standard.

Signed-off-by: Daniele Venturino <daniele.venturino@m3s.it>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
2014-11-14 14:07:50 -08:00
Daniele Venturino
26c0e92484 rstp-state-machines: Fix compare_rstp_priority_vector().
The bridge_port_id is never conveyed in Configuration Messages, but is
used as a tie-breaker within a Bridge.  This patch extends the
comparison to this fifth field in a rstp_priority_vector.

Signed-off-by: Daniele Venturino <daniele.venturino@m3s.it>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
2014-11-14 14:07:50 -08:00
Jarno Rajahalme
006f338613 rstp-state-machines: Fix reception of BPDUs conveying an unknown port role.
If the Unknown value of the Port Role parameter is received, the state
machines should treat the RST BPDU as if it were a Configuration BPDU.

Signed-off-by: Daniele Venturino <daniele.venturino@m3s.it>
Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
2014-11-14 14:07:50 -08:00
Jarno Rajahalme
d5f31dc833 lib/rstp: Use hmap instead of a list for ports.
Finding a given port is faster.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Daniele Venturino <daniele.venturino@m3s.it>
2014-09-09 11:45:44 -07:00
Jarno Rajahalme
37db915e43 lib/rstp: Eliminate ports_count.
It was only used to guard against unintialized list.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Daniele Venturino <daniele.venturino@m3s.it>
2014-09-09 11:45:44 -07:00
Jarno Rajahalme
a0478216c6 lib/rstp: Simplify priority vector comparison.
Testing for sameness first makes the logic simpler to follow.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Daniele Venturino <daniele.venturino@m3s.it>
2014-09-09 11:45:44 -07:00
Jarno Rajahalme
311fb15ba9 lib/rstp: CodingStyle fixes.
Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Daniele Venturino <daniele.venturino@m3s.it>
2014-09-09 11:45:44 -07:00
Jarno Rajahalme
6b90bc57e7 lib/rstp: Remove lock recursion.
Change the RSTP send_bpdu interface so that a recursive mutex is not
needed.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Daniele Venturino <daniele.venturino@m3s.it>
2014-09-09 11:45:44 -07:00
Jarno Rajahalme
f025bcb7ea lib/rstp: More robust thread safety.
Current code expects there to be a single thread that is responsible
for creating rstp and creating and deleting rstp_port objects.  rstp
objects are also deleted from other threads, as managed by reference
counting.

rstp port objects are not reference counted, which means that
references to rstp ports may only be held while holding the rstp
mutex, or by the thread that creates and deletes them.

This patch adds reference counting to RSTP ports, which allows ports
to be passed from ofproto-dpif to ofproto-dpif-xlate without using the
RSTP port number.  This simplifies RSTP port reconfiguration, as the
port need not be resynchronized with xlate if just the port number
changes.  This also avoids lookups on the processing of RSTP BPDUs.

This patch also:

1. Exposes the rstp mutex so that related thread safety annotations
   can be used also within rstp-state-machines.c.

2. Internal variants of most setter an getter functions are defined,
   suffixed with two underscores.  These are annotated to be callable
   only when the mutex is held.

3. Port setters were only called in a specific pattern.  The new external
   port setter combines them in a single rspt_port_set() function.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Daniele Venturino <daniele.venturino@m3s.it>
2014-09-09 11:45:44 -07:00
Jarno Rajahalme
4b30ba0546 lib/rstp: Better debug messages, style fixes.
Remove unused struct rstp_priority_vector4 definition, fix coding
style, fix sparse warnings.

Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Daniele Venturino <daniele.venturino@m3s.it>
2014-09-09 11:45:43 -07:00
Daniele Venturino
9efd308e95 Rapid Spanning Tree Protocol (IEEE 802.1D).
This is the v5 from June 12th, 2014, rebased to OVS master, further
changes in following patches.

Signed-off by: Daniele Venturino <daniele.venturino@m3s.it>
Signed-off by: Martino Fornasa <mf@fornasa.it>
Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Acked-by: Daniele Venturino <daniele.venturino@m3s.it>
2014-09-09 11:45:43 -07:00