libtins 4.5
Loading...
Searching...
No Matches
Tins::STP Class Reference

Represents a Spanning Tree Protocol PDU. More...

#include <stp.h>

Inheritance diagram for Tins::STP:
Tins::PDU

Classes

struct  bpdu_id_type
 

Public Types

typedef HWAddress< 6 > address_type
 
- Public Types inherited from Tins::PDU
enum  endian_type { BE , LE }
 
enum  PDUType {
  RAW , ETHERNET_II , IEEE802_3 , DOT3 = IEEE802_3 ,
  RADIOTAP , DOT11 , DOT11_ACK , DOT11_ASSOC_REQ ,
  DOT11_ASSOC_RESP , DOT11_AUTH , DOT11_BEACON , DOT11_BLOCK_ACK ,
  DOT11_BLOCK_ACK_REQ , DOT11_CF_END , DOT11_DATA , DOT11_CONTROL ,
  DOT11_DEAUTH , DOT11_DIASSOC , DOT11_END_CF_ACK , DOT11_MANAGEMENT ,
  DOT11_PROBE_REQ , DOT11_PROBE_RESP , DOT11_PS_POLL , DOT11_REASSOC_REQ ,
  DOT11_REASSOC_RESP , DOT11_RTS , DOT11_QOS_DATA , LLC ,
  SNAP , IP , ARP , TCP ,
  UDP , ICMP , BOOTP , DHCP ,
  EAPOL , RC4EAPOL , RSNEAPOL , DNS ,
  LOOPBACK , IPv6 , ICMPv6 , SLL ,
  DHCPv6 , DOT1AD , DOT1Q , PPPOE ,
  STP , PPI , IPSEC_AH , IPSEC_ESP ,
  PKTAP , MPLS , DOT11_CONTROL_TA , VXLAN ,
  UNKNOWN = 999 , USER_DEFINED_PDU = 1000
}
 Enum which identifies each type of PDU. More...
 
typedef byte_array serialization_type
 

Public Member Functions

 STP ()
 Default constructor.
 
 STP (const uint8_t *buffer, uint32_t total_sz)
 Constructs a STP object from a buffer.
 
uint16_t proto_id () const
 Getter for the Protocol ID field.
 
uint8_t proto_version () const
 Getter for the Protocol Version field.
 
uint8_t bpdu_type () const
 Getter for the BDU Type field.
 
uint8_t bpdu_flags () const
 Getter for the BDU Flags field.
 
uint32_t root_path_cost () const
 Getter for the Root Path Cost field.
 
uint16_t port_id () const
 Getter for the Port ID field.
 
uint16_t msg_age () const
 Getter for the Message Age field.
 
uint16_t max_age () const
 Getter for the Maximum Age field.
 
uint16_t hello_time () const
 Getter for the Hello Time field.
 
uint16_t fwd_delay () const
 Getter for the Forward Delay field.
 
bpdu_id_type root_id () const
 Getter for the Root ID field.
 
bpdu_id_type bridge_id () const
 Getter for the Bridge ID field.
 
PDUType pdu_type () const
 Getter for the PDU's type.
 
STPclone () const
 
uint32_t header_size () const
 Returns the header size.
 
void proto_id (uint16_t new_proto_id)
 Setter for the Protocol ID field.
 
void proto_version (uint8_t new_proto_version)
 Setter for the Protocol Version field.
 
void bpdu_type (uint8_t new_bpdu_type)
 Setter for the BPDU Type field.
 
void bpdu_flags (uint8_t new_bpdu_flags)
 Setter for the BPDU Flags field.
 
void root_path_cost (uint32_t new_root_path_cost)
 Setter for the Root Path Cost field.
 
void port_id (uint16_t new_port_id)
 Setter for the Port ID field.
 
void msg_age (uint16_t new_msg_age)
 Setter for the Message Age field.
 
void max_age (uint16_t new_max_age)
 Setter for the Maximum Age field.
 
void hello_time (uint16_t new_hello_time)
 Setter for the Hello Time field.
 
void fwd_delay (uint16_t new_fwd_delay)
 Setter for the Forward Delay field.
 
void root_id (const bpdu_id_type &id)
 Setter for the Root ID field.
 
void bridge_id (const bpdu_id_type &id)
 Setter for the Bridge ID field.
 
- Public Member Functions inherited from Tins::PDU
 PDU ()
 Default constructor.
 
 PDU (PDU &&rhs) TINS_NOEXCEPT
 Move constructor.
 
PDUoperator= (PDU &&rhs) TINS_NOEXCEPT
 Move assignment operator.
 
virtual ~PDU ()
 PDU destructor.
 
virtual uint32_t trailer_size () const
 Trailer's size.
 
uint32_t size () const
 The whole chain of PDU's size, including this one.
 
virtual uint32_t advertised_size () const
 The whole chain of PDU's advertised size, including this one.
 
PDUinner_pdu () const
 Getter for the inner PDU.
 
PDUparent_pdu () const
 
PDUrelease_inner_pdu ()
 Releases the inner PDU.
 
void inner_pdu (PDU *next_pdu)
 Sets the child PDU.
 
void inner_pdu (const PDU &next_pdu)
 Sets the child PDU.
 
serialization_type serialize ()
 Serializes the whole chain of PDU's, including this one.
 
template<typename T >
T * find_pdu (PDUType type=T::pdu_flag)
 Finds and returns the first PDU that matches the given flag.
 
template<typename T >
const T * find_pdu (PDUType type=T::pdu_flag) const
 Finds and returns the first PDU that matches the given flag.
 
template<typename T >
T & rfind_pdu (PDUType type=T::pdu_flag)
 Finds and returns the first PDU that matches the given flag.
 
template<typename T >
const T & rfind_pdu (PDUType type=T::pdu_flag) const
 Finds and returns the first PDU that matches the given flag.
 
virtual void send (PacketSender &sender, const NetworkInterface &iface)
 Send the stack of PDUs through a PacketSender.
 
virtual PDUrecv_response (PacketSender &sender, const NetworkInterface &iface)
 Receives a matching response for this packet.
 
virtual bool matches_response (const uint8_t *ptr, uint32_t total_sz) const
 Check whether ptr points to a valid response for this PDU.
 
virtual bool matches_flag (PDUType flag) const
 Check whether this PDU matches the specified flag.
 

Static Public Attributes

static const PDU::PDUType pdu_flag = PDU::STP
 
- Static Public Attributes inherited from Tins::PDU
static const endian_type endianness = BE
 

Additional Inherited Members

- Protected Member Functions inherited from Tins::PDU
 PDU (const PDU &other)
 Copy constructor.
 
PDUoperator= (const PDU &other)
 Copy assignment operator.
 
void copy_inner_pdu (const PDU &pdu)
 Copy other PDU's inner PDU(if any).
 
virtual void prepare_for_serialize ()
 Prepares this PDU for serialization.
 
void serialize (uint8_t *buffer, uint32_t total_sz)
 Serializes this PDU and propagates this action to child PDUs.
 

Detailed Description

Represents a Spanning Tree Protocol PDU.

Member Typedef Documentation

◆ address_type

The type used to store BPDU identifier addresses.

Constructor & Destructor Documentation

◆ STP()

Tins::STP::STP ( const uint8_t * buffer,
uint32_t total_sz )

Constructs a STP object from a buffer.

If there is not enough size for a STP header, a malformed_packet exception is thrown.

Parameters
bufferThe buffer from which this PDU will be constructed.
total_szThe total size of the buffer.

Member Function Documentation

◆ bpdu_flags() [1/2]

uint8_t Tins::STP::bpdu_flags ( ) const
inline

Getter for the BDU Flags field.

Returns
The stored BDU Flags field value.

◆ bpdu_flags() [2/2]

void Tins::STP::bpdu_flags ( uint8_t new_bpdu_flags)

Setter for the BPDU Flags field.

Parameters
new_bpdu_flagsThe new BPDU Flags field value.

◆ bpdu_type() [1/2]

uint8_t Tins::STP::bpdu_type ( ) const
inline

Getter for the BDU Type field.

Returns
The stored BDU Type field value.

◆ bpdu_type() [2/2]

void Tins::STP::bpdu_type ( uint8_t new_bpdu_type)

Setter for the BPDU Type field.

Parameters
new_bpdu_typeThe new BPDU Type field value.

◆ bridge_id() [1/2]

STP::bpdu_id_type Tins::STP::bridge_id ( ) const

Getter for the Bridge ID field.

Returns
The stored Bridge ID field value.

◆ bridge_id() [2/2]

void Tins::STP::bridge_id ( const bpdu_id_type & id)

Setter for the Bridge ID field.

Parameters
new_fwd_delayThe new Bridge ID field value.

◆ clone()

STP * Tins::STP::clone ( ) const
inlinevirtual
See also
PDU::clone

Implements Tins::PDU.

◆ fwd_delay() [1/2]

uint16_t Tins::STP::fwd_delay ( ) const
inline

Getter for the Forward Delay field.

Returns
The stored Forward Delay field value.

◆ fwd_delay() [2/2]

void Tins::STP::fwd_delay ( uint16_t new_fwd_delay)

Setter for the Forward Delay field.

Parameters
new_fwd_delayThe new Forward Delay field value.

◆ header_size()

uint32_t Tins::STP::header_size ( ) const
virtual

Returns the header size.

This method overrides PDU::header_size.

See also
PDU::header_size

Implements Tins::PDU.

◆ hello_time() [1/2]

uint16_t Tins::STP::hello_time ( ) const
inline

Getter for the Hello Time field.

Returns
The stored Hello Time field value.

◆ hello_time() [2/2]

void Tins::STP::hello_time ( uint16_t new_hello_time)

Setter for the Hello Time field.

Parameters
new_hello_timeThe new Hello Time field value.

◆ max_age() [1/2]

uint16_t Tins::STP::max_age ( ) const
inline

Getter for the Maximum Age field.

Returns
The stored Maximum Age field value.

◆ max_age() [2/2]

void Tins::STP::max_age ( uint16_t new_max_age)

Setter for the Maximum Age field.

Parameters
new_max_ageThe new Maximum Age field value.

◆ msg_age() [1/2]

uint16_t Tins::STP::msg_age ( ) const
inline

Getter for the Message Age field.

Returns
The stored Message Age field value.

◆ msg_age() [2/2]

void Tins::STP::msg_age ( uint16_t new_msg_age)

Setter for the Message Age field.

Parameters
new_msg_ageThe new Message Age field value.

◆ pdu_type()

PDUType Tins::STP::pdu_type ( ) const
inlinevirtual

Getter for the PDU's type.

See also
PDU::pdu_type

Implements Tins::PDU.

◆ port_id() [1/2]

uint16_t Tins::STP::port_id ( ) const
inline

Getter for the Port ID field.

Returns
The stored Port ID field value.

◆ port_id() [2/2]

void Tins::STP::port_id ( uint16_t new_port_id)

Setter for the Port ID field.

Parameters
new_port_idThe new Port ID field value.

◆ proto_id() [1/2]

uint16_t Tins::STP::proto_id ( ) const
inline

Getter for the Protocol ID field.

Returns
The stored Protocol ID field value.

◆ proto_id() [2/2]

void Tins::STP::proto_id ( uint16_t new_proto_id)

Setter for the Protocol ID field.

Parameters
new_proto_idThe new Protocol ID field value.

◆ proto_version() [1/2]

uint8_t Tins::STP::proto_version ( ) const
inline

Getter for the Protocol Version field.

Returns
The stored Protocol Version field value.

◆ proto_version() [2/2]

void Tins::STP::proto_version ( uint8_t new_proto_version)

Setter for the Protocol Version field.

Parameters
new_proto_versionThe new Protocol Version field value.

◆ root_id() [1/2]

STP::bpdu_id_type Tins::STP::root_id ( ) const

Getter for the Root ID field.

Returns
The stored Root ID field value.

◆ root_id() [2/2]

void Tins::STP::root_id ( const bpdu_id_type & id)

Setter for the Root ID field.

Parameters
new_fwd_delayThe new Root ID field value.

◆ root_path_cost() [1/2]

uint32_t Tins::STP::root_path_cost ( ) const
inline

Getter for the Root Path Cost field.

Returns
The stored Root Path Cost field value.

◆ root_path_cost() [2/2]

void Tins::STP::root_path_cost ( uint32_t new_root_path_cost)

Setter for the Root Path Cost field.

Parameters
new_root_path_costThe new Root Path Cost field value.

Member Data Documentation

◆ pdu_flag

const PDU::PDUType Tins::STP::pdu_flag = PDU::STP
static

This PDU's flag.


The documentation for this class was generated from the following files: