util: New function bitwise_scan().
[cascardo/ovs.git] / lib / stp.h
index affde18..3d13bba 100644 (file)
--- a/lib/stp.h
+++ b/lib/stp.h
 
 struct ofpbuf;
 
-/* LLC field values used for STP frames. */
-#define STP_LLC_SSAP 0x42
-#define STP_LLC_DSAP 0x42
-#define STP_LLC_CNTL 0x03
-
 /* Bridge and port priorities that should be used by default. */
 #define STP_DEFAULT_BRIDGE_PRIORITY 32768
 #define STP_DEFAULT_PORT_PRIORITY 128
@@ -99,13 +94,25 @@ bool stp_get_changed_port(struct stp *, struct stp_port **portp);
  * The following diagram describes the various states and what they are
  * allowed to do in OVS:
  *
- *                     FWD  LRN  TX_BPDU RX_BPDU
- *                     ---  ---  ------- -------
- *        Disabled      Y    -      -       -
- *        Blocking      -    -      -       Y
- *        Listening     -    -      Y       Y
- *        Learning      -    Y      Y       Y
- *        Forwarding    Y    Y      Y       Y
+ *                     FWD  LRN  TX_BPDU RX_BPDU FWD_BPDU
+ *                     ---  ---  ------- ------- --------
+ *        Disabled      Y    -      -       -        Y
+ *        Blocking      -    -      -       Y        -
+ *        Listening     -    -      Y       Y        Y
+ *        Learning      -    Y      Y       Y        Y
+ *        Forwarding    Y    Y      Y       Y        Y
+ *
+ *
+ * FWD:              the port should forward any incoming non-stp-BPDU
+ *                   packets.
+ *
+ * LRN:              the port should conduct MAC learning on packets received.
+ *
+ * TX_BPDU/RX_BPDU:  the port could generate/consume bpdus.
+ *
+ * FWD_BPDU:         the port should should always forward the BPDUS,
+ *                   whether they are generated by the port or received
+ *                   as incoming packets.
  *
  * Once again, note that the disabled state forwards traffic, which is
  * likely different than the spec would indicate.
@@ -120,6 +127,7 @@ enum stp_state {
 const char *stp_state_name(enum stp_state);
 bool stp_forward_in_state(enum stp_state);
 bool stp_learn_in_state(enum stp_state);
+bool stp_should_forward_bpdu(enum stp_state);
 
 /* Role of an STP port. */
 enum stp_role {
@@ -133,6 +141,7 @@ const char *stp_role_name(enum stp_role);
 void stp_received_bpdu(struct stp_port *, const void *bpdu, size_t bpdu_size);
 
 struct stp *stp_port_get_stp(struct stp_port *);
+void stp_port_set_name(struct stp_port *, const char *);
 void stp_port_set_aux(struct stp_port *, void *);
 void *stp_port_get_aux(struct stp_port *);
 int stp_port_no(const struct stp_port *);