12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #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 */
|