These changes are the raw update to qemu-2.6.
[kvmfornfv.git] / qemu / roms / ipxe / src / include / ipxe / stp.h
diff --git a/qemu/roms/ipxe/src/include/ipxe/stp.h b/qemu/roms/ipxe/src/include/ipxe/stp.h
new file mode 100644 (file)
index 0000000..3d85e5b
--- /dev/null
@@ -0,0 +1,76 @@
+#ifndef _IPXE_STP_H
+#define _IPXE_STP_H
+
+/** @file
+ *
+ * Spanning Tree Protocol (STP)
+ *
+ */
+
+FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+
+#include <stdint.h>
+#include <ipxe/if_ether.h>
+
+/** "Protocol" value for STP
+ *
+ * This is the concatenated {DSAP,SSAP} value used internally by iPXE
+ * as the network-layer protocol for LLC frames.
+ */
+#define ETH_P_STP 0x4242
+
+/** A switch identifier */
+struct stp_switch {
+       /** Priotity */
+       uint16_t priority;
+       /** MAC address */
+       uint8_t mac[ETH_ALEN];
+} __attribute__ (( packed ));
+
+/** A Spanning Tree bridge protocol data unit */
+struct stp_bpdu {
+       /** LLC DSAP */
+       uint8_t dsap;
+       /** LLC SSAP */
+       uint8_t ssap;
+       /** LLC control field */
+       uint8_t control;
+       /** Protocol ID */
+       uint16_t protocol;
+       /** Protocol version */
+       uint8_t version;
+       /** Message type */
+       uint8_t type;
+       /** Flags */
+       uint8_t flags;
+       /** Root switch */
+       struct stp_switch root;
+       /** Root path cost */
+       uint32_t cost;
+       /** Sender switch */
+       struct stp_switch sender;
+       /** Port */
+       uint16_t port;
+       /** Message age */
+       uint16_t age;
+       /** Maximum age */
+       uint16_t max;
+       /** Hello time */
+       uint16_t hello;
+       /** Forward delay */
+       uint16_t delay;
+} __attribute__ (( packed ));
+
+/** Spanning Tree protocol ID */
+#define STP_PROTOCOL 0x0000
+
+/** Rapid Spanning Tree protocol version */
+#define STP_VERSION_RSTP 0x02
+
+/** Rapid Spanning Tree bridge PDU type */
+#define STP_TYPE_RSTP 0x02
+
+/** Port is forwarding */
+#define STP_FL_FORWARDING 0x20
+
+#endif /* _IPXE_STP_H */