PcapPlusPlus  Next
pcpp::MultipleStpLayer Class Reference

#include <StpLayer.h>

Inheritance diagram for pcpp::MultipleStpLayer:
pcpp::RapidStpLayer pcpp::StpConfigurationBPDULayer pcpp::StpTopologyChangeBPDULayer pcpp::StpLayer pcpp::Layer pcpp::IDataContainer

Public Member Functions

 MultipleStpLayer (uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
 
 MultipleStpLayer ()
 
mstp_conf_bpdugetMstpHeader () const
 
uint16_t getVersion3Len () const
 
void setVersion3Len (uint16_t value)
 
uint8_t getMstConfigurationFormatSelector () const
 
void setMstConfigurationFormatSelector (uint8_t value)
 
std::string getMstConfigurationName () const
 
void setMstConfigurationName (const std::string &value)
 
uint16_t getMstConfigRevision () const
 
void setMstConfigRevision (uint16_t value)
 
uint8_t * getMstConfigDigest () const
 
void setMstConfigDigest (const uint8_t *value, uint8_t len)
 
uint32_t getCISTIrpc () const
 
void setCISTIrpc (uint32_t value)
 
uint64_t getCISTBridgeId () const
 
void setCISTBridgeId (uint64_t value)
 
uint16_t getCISTBridgePriority () const
 
void setCISTBridgePriority (uint16_t value)
 
uint16_t getCISTBridgeSystemIDExtension () const
 
void setCISTBridgeSystemIDExtension (uint16_t value)
 
pcpp::MacAddress getCISTBridgeSystemID () const
 
void setCISTBridgeSystemID (const pcpp::MacAddress &value)
 
uint8_t getRemainingHopCount () const
 
void setRemainingHopCount (uint8_t value)
 
uint8_t getNumberOfMSTIConfMessages () const
 
msti_conf_msggetMstiConfMessages () const
 
void parseNextLayer () override
 Parses next layer.
 
std::string toString () const override
 
- Public Member Functions inherited from pcpp::RapidStpLayer
 RapidStpLayer (uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
 
 RapidStpLayer ()
 
rstp_conf_bpdugetRstpConfHeader () const
 
uint8_t getVersion1Len () const
 
void setVersion1Len (uint8_t value)
 
size_t getHeaderLen () const override
 
- Public Member Functions inherited from pcpp::StpConfigurationBPDULayer
 StpConfigurationBPDULayer (uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
 
 StpConfigurationBPDULayer ()
 
stp_conf_bpdugetStpConfHeader () const
 
uint8_t getFlag () const
 
void setFlag (uint8_t value)
 
uint64_t getRootId () const
 
void setRootId (uint64_t value)
 
uint16_t getRootPriority () const
 
void setRootPriority (uint16_t value)
 
uint16_t getRootSystemIDExtension () const
 
void setRootSystemIDExtension (uint16_t value)
 
pcpp::MacAddress getRootSystemID () const
 
void setRootSystemID (const pcpp::MacAddress &value)
 
uint32_t getPathCost () const
 
void setPathCost (uint32_t value)
 
uint64_t getBridgeId () const
 
void setBridgeId (uint64_t value)
 
uint16_t getBridgePriority () const
 
void setBridgePriority (uint16_t value)
 
uint16_t getBridgeSystemIDExtension () const
 
void setBridgeSystemIDExtension (uint16_t value)
 
pcpp::MacAddress getBridgeSystemID () const
 
void setBridgeSystemID (const pcpp::MacAddress &value)
 
uint16_t getPortId () const
 
void setPortId (uint16_t value)
 
double getMessageAge () const
 
void setMessageAge (double value)
 
double getMaximumAge () const
 
void setMaximumAge (double value)
 
double getTransmissionInterval () const
 
void setTransmissionInterval (double value)
 
double getForwardDelay () const
 
void setForwardDelay (double value)
 
- Public Member Functions inherited from pcpp::StpTopologyChangeBPDULayer
 StpTopologyChangeBPDULayer (uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
 
 StpTopologyChangeBPDULayer ()
 
stp_tcn_bpdugetStpTcnHeader ()
 
- Public Member Functions inherited from pcpp::StpLayer
stp_headergetStpHeader () const
 
uint16_t getProtoId () const
 
void setProtoId (uint16_t value)
 
uint8_t getVersion () const
 
void setVersion (uint8_t value)
 
uint8_t getType () const
 
void setType (uint8_t value)
 
void computeCalculateFields () override
 Does nothing for this layer.
 
OsiModelLayer getOsiModelLayer () const override
 
- Public Member Functions inherited from pcpp::Layer
 ~Layer () override
 
LayergetNextLayer () const
 
LayergetPrevLayer () const
 
ProtocolType getProtocol () const
 
bool isMemberOfProtocolFamily (ProtocolTypeFamily protocolTypeFamily) const
 
uint8_t * getData () const
 
size_t getDataLen () const
 
uint8_t * getLayerPayload () const
 
size_t getLayerPayloadSize () const
 
bool isAllocatedToPacket () const
 
void copyData (uint8_t *toArr) const
 
uint8_t * getDataPtr (size_t offset=0) const override
 

Static Public Member Functions

static bool isDataValid (const uint8_t *data, size_t dataLen)
 
- Static Public Member Functions inherited from pcpp::RapidStpLayer
static bool isDataValid (const uint8_t *data, size_t dataLen)
 
- Static Public Member Functions inherited from pcpp::StpConfigurationBPDULayer
static bool isDataValid (const uint8_t *data, size_t dataLen)
 
- Static Public Member Functions inherited from pcpp::StpTopologyChangeBPDULayer
static bool isDataValid (const uint8_t *data, size_t dataLen)
 
- Static Public Member Functions inherited from pcpp::StpLayer
static bool isDataValid (const uint8_t *data, size_t dataLen)
 
static StpLayerparseStpLayer (uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
 

Additional Inherited Members

- Static Public Attributes inherited from pcpp::StpLayer
static pcpp::MacAddress StpMulticastDstMAC
 STP protocol uses "01:80:C2:00:00:00" multicast address as destination MAC.
 
static pcpp::MacAddress StpUplinkFastMulticastDstMAC
 STP Uplink Fast protocol uses "01:00:0C:CD:CD:CD" as destination MAC.
 

Detailed Description

Represents Multiple Spanning Tree Protocol (MSTP). It has limited capabilities (no crafting / limited editing) over MSTI configuration

Constructor & Destructor Documentation

◆ MultipleStpLayer() [1/2]

pcpp::MultipleStpLayer::MultipleStpLayer ( uint8_t *  data,
size_t  dataLen,
Layer prevLayer,
Packet packet 
)
inline

A constructor that creates the layer from an existing packet raw data

Parameters
[in]dataA pointer to the raw data
[in]dataLenSize of the data in bytes
[in]prevLayerA pointer to the previous layer
[in]packetA pointer to the Packet instance where layer will be stored in

◆ MultipleStpLayer() [2/2]

pcpp::MultipleStpLayer::MultipleStpLayer ( )

Empty c'tor to create a new Multiple STP layer. Initializes the protocol identifier, version and STP type fields with correct values

Member Function Documentation

◆ getCISTBridgeId()

uint64_t pcpp::MultipleStpLayer::getCISTBridgeId ( ) const

Returns CIST bridge identifier

Returns
Value of the bridge identifier

◆ getCISTBridgePriority()

uint16_t pcpp::MultipleStpLayer::getCISTBridgePriority ( ) const

Returns the priority of CIST bridge

Returns
Priority of CIST bridge

◆ getCISTBridgeSystemID()

pcpp::MacAddress pcpp::MultipleStpLayer::getCISTBridgeSystemID ( ) const
inline

Returns the system identifier of CIST bridge

Returns
System identifier of CIST bridge

◆ getCISTBridgeSystemIDExtension()

uint16_t pcpp::MultipleStpLayer::getCISTBridgeSystemIDExtension ( ) const

Returns the system identifier extension of CIST bridge

Returns
System extension of CIST bridge

◆ getCISTIrpc()

uint32_t pcpp::MultipleStpLayer::getCISTIrpc ( ) const

Returns CIST internal root path cost

Returns
Value of the internal root path cost

◆ getMstConfigDigest()

uint8_t* pcpp::MultipleStpLayer::getMstConfigDigest ( ) const
inline

Returns the pointer to configuration message digest. The field itself always 16 bytes long.

Returns
A pointer to configuration digest

◆ getMstConfigRevision()

uint16_t pcpp::MultipleStpLayer::getMstConfigRevision ( ) const

Returns the revision of configuration ID

Returns
Revision of configuration ID

◆ getMstConfigurationFormatSelector()

uint8_t pcpp::MultipleStpLayer::getMstConfigurationFormatSelector ( ) const
inline

Returns the configuration ID format selector

Returns
Configuration ID of format selector

◆ getMstConfigurationName()

std::string pcpp::MultipleStpLayer::getMstConfigurationName ( ) const

Returns the pointer to configuration name field

Returns
Configuration name

◆ getMstiConfMessages()

msti_conf_msg* pcpp::MultipleStpLayer::getMstiConfMessages ( ) const

Returns a reference to MSTI configuration messages. An MSTP packet can contain between 0 to 64 MSTI messages. The number of messages can be obtained by using getNumberOfMSTIConfMessages()

Returns
An array pointer to MSTI configuration messages. Returns nullptr if there is no MSTI message.

◆ getMstpHeader()

mstp_conf_bpdu* pcpp::MultipleStpLayer::getMstpHeader ( ) const
inline

Get a pointer to Multiple STP header

Returns
A pointer to Multiple STP header

◆ getNumberOfMSTIConfMessages()

uint8_t pcpp::MultipleStpLayer::getNumberOfMSTIConfMessages ( ) const
inline

Returns the total number of MSTI configuration messages

Returns
Number of MSTI configuration messages. Can be between 0 and 64.

◆ getRemainingHopCount()

uint8_t pcpp::MultipleStpLayer::getRemainingHopCount ( ) const
inline

Returns the remaining hop count

Returns
Value of remaining hop count

◆ getVersion3Len()

uint16_t pcpp::MultipleStpLayer::getVersion3Len ( ) const
Returns
Length of version3 field

◆ isDataValid()

static bool pcpp::MultipleStpLayer::isDataValid ( const uint8_t *  data,
size_t  dataLen 
)
inlinestatic

A static method that validates the input data

Parameters
[in]dataThe pointer to the beginning of a byte stream of an Multiple STP packet
[in]dataLenThe length of the byte stream
Returns
True if the data is valid and can represent an Spanning Tree packet

◆ setCISTBridgeId()

void pcpp::MultipleStpLayer::setCISTBridgeId ( uint64_t  value)

Sets CIST bridge identifier

Parameters
[in]valueValue of the bridge identifier

◆ setCISTBridgePriority()

void pcpp::MultipleStpLayer::setCISTBridgePriority ( uint16_t  value)

Sets the priority of CIST bridge

Parameters
[in]valuePriority of CIST bridge

◆ setCISTBridgeSystemID()

void pcpp::MultipleStpLayer::setCISTBridgeSystemID ( const pcpp::MacAddress value)

Sets the system identifier of CIST bridge

Parameters
[in]valueSystem identifier of CIST bridge

◆ setCISTBridgeSystemIDExtension()

void pcpp::MultipleStpLayer::setCISTBridgeSystemIDExtension ( uint16_t  value)

Sets the system identifier extension of CIST bridge

Parameters
[in]valueSystem extension of CIST bridge

◆ setCISTIrpc()

void pcpp::MultipleStpLayer::setCISTIrpc ( uint32_t  value)

Sets CIST internal root path cost

Parameters
[in]valueValue of the internal root path cost

◆ setMstConfigDigest()

void pcpp::MultipleStpLayer::setMstConfigDigest ( const uint8_t *  value,
uint8_t  len 
)

Sets the pointer to configuration message digest. The field itself always 16 bytes long.

Parameters
[in]valuePointer to digest
[in]lenLength of the digest, should be less than 16. If longer first 16 bytes are used

◆ setMstConfigRevision()

void pcpp::MultipleStpLayer::setMstConfigRevision ( uint16_t  value)

Sets the revision of configuration ID

Parameters
[in]valueRevision of configuration ID

◆ setMstConfigurationFormatSelector()

void pcpp::MultipleStpLayer::setMstConfigurationFormatSelector ( uint8_t  value)
inline

Sets the configuration ID format selector

Parameters
[in]valueConfiguration ID of format selector

◆ setMstConfigurationName()

void pcpp::MultipleStpLayer::setMstConfigurationName ( const std::string &  value)

Sets the configuration name field

Parameters
[in]valueConfiguration name. Length should be less than 32, if longer value provided first 32 characters are used

◆ setRemainingHopCount()

void pcpp::MultipleStpLayer::setRemainingHopCount ( uint8_t  value)
inline

Returns the remaining hop count

Parameters
[in]valueValue of remaining hop count

◆ setVersion3Len()

void pcpp::MultipleStpLayer::setVersion3Len ( uint16_t  value)

Sets the length of version3 field

Parameters
[in]valueLength of version3 field

◆ toString()

std::string pcpp::MultipleStpLayer::toString ( ) const
inlineoverridevirtual
Returns
Returns the protocol info as readable string

Reimplemented from pcpp::RapidStpLayer.