mirror of https://github.com/ipxe/ipxe.git
77 lines
1.4 KiB
C
77 lines
1.4 KiB
C
#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 */
|