#ifndef _IPXE_STP_H #define _IPXE_STP_H /** @file * * Spanning Tree Protocol (STP) * */ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include #include /** "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 */