david/ipxe
david
/
ipxe
Archived
1
0
Fork 0
This repository has been archived on 2020-12-06. You can view files and clone it, but cannot push or open issues or pull requests.
ipxe/src/include/ipxe/stp.h

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