libtins
4.0
|
Represents a Spanning Tree Protocol PDU. More...
#include <stp.h>
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, DOT1Q, PPPOE, STP, PPI, IPSEC_AH, IPSEC_ESP, PKTAP, MPLS, 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. More... | |
uint16_t | proto_id () const |
Getter for the Protocol ID field. More... | |
uint8_t | proto_version () const |
Getter for the Protocol Version field. More... | |
uint8_t | bpdu_type () const |
Getter for the BDU Type field. More... | |
uint8_t | bpdu_flags () const |
Getter for the BDU Flags field. More... | |
uint32_t | root_path_cost () const |
Getter for the Root Path Cost field. More... | |
uint16_t | port_id () const |
Getter for the Port ID field. More... | |
uint16_t | msg_age () const |
Getter for the Message Age field. More... | |
uint16_t | max_age () const |
Getter for the Maximum Age field. More... | |
uint16_t | hello_time () const |
Getter for the Hello Time field. More... | |
uint16_t | fwd_delay () const |
Getter for the Forward Delay field. More... | |
bpdu_id_type | root_id () const |
Getter for the Root ID field. More... | |
bpdu_id_type | bridge_id () const |
Getter for the Bridge ID field. More... | |
PDUType | pdu_type () const |
Getter for the PDU's type. More... | |
STP * | clone () const |
uint32_t | header_size () const |
Returns the header size. More... | |
void | proto_id (uint16_t new_proto_id) |
Setter for the Protocol ID field. More... | |
void | proto_version (uint8_t new_proto_version) |
Setter for the Protocol Version field. More... | |
void | bpdu_type (uint8_t new_bpdu_type) |
Setter for the BPDU Type field. More... | |
void | bpdu_flags (uint8_t new_bpdu_flags) |
Setter for the BPDU Flags field. More... | |
void | root_path_cost (uint32_t new_root_path_cost) |
Setter for the Root Path Cost field. More... | |
void | port_id (uint16_t new_port_id) |
Setter for the Port ID field. More... | |
void | msg_age (uint16_t new_msg_age) |
Setter for the Message Age field. More... | |
void | max_age (uint16_t new_max_age) |
Setter for the Maximum Age field. More... | |
void | hello_time (uint16_t new_hello_time) |
Setter for the Hello Time field. More... | |
void | fwd_delay (uint16_t new_fwd_delay) |
Setter for the Forward Delay field. More... | |
void | root_id (const bpdu_id_type &id) |
Setter for the Root ID field. More... | |
void | bridge_id (const bpdu_id_type &id) |
Setter for the Bridge ID field. More... | |
Public Member Functions inherited from Tins::PDU | |
PDU () | |
Default constructor. | |
PDU (PDU &&rhs) TINS_NOEXCEPT | |
Move constructor. More... | |
PDU & | operator= (PDU &&rhs) TINS_NOEXCEPT |
Move assignment operator. More... | |
virtual | ~PDU () |
PDU destructor. More... | |
virtual uint32_t | trailer_size () const |
Trailer's size. More... | |
uint32_t | size () const |
The whole chain of PDU's size, including this one. More... | |
PDU * | inner_pdu () const |
Getter for the inner PDU. More... | |
PDU * | parent_pdu () const |
PDU * | release_inner_pdu () |
Releases the inner PDU. More... | |
void | inner_pdu (PDU *next_pdu) |
Sets the child PDU. More... | |
void | inner_pdu (const PDU &next_pdu) |
Sets the child PDU. More... | |
serialization_type | serialize () |
Serializes the whole chain of PDU's, including this one. More... | |
template<typename T > | |
T * | find_pdu (PDUType type=T::pdu_flag) |
Finds and returns the first PDU that matches the given flag. More... | |
template<typename T > | |
const T * | find_pdu (PDUType type=T::pdu_flag) const |
Finds and returns the first PDU that matches the given flag. More... | |
template<typename T > | |
T & | rfind_pdu (PDUType type=T::pdu_flag) |
Finds and returns the first PDU that matches the given flag. More... | |
template<typename T > | |
const T & | rfind_pdu (PDUType type=T::pdu_flag) const |
Finds and returns the first PDU that matches the given flag. More... | |
virtual void | send (PacketSender &sender, const NetworkInterface &iface) |
Send the stack of PDUs through a PacketSender. More... | |
virtual PDU * | recv_response (PacketSender &sender, const NetworkInterface &iface) |
Receives a matching response for this packet. More... | |
virtual bool | matches_response (const uint8_t *ptr, uint32_t total_sz) const |
Check whether ptr points to a valid response for this PDU. More... | |
virtual bool | matches_flag (PDUType flag) const |
Check whether this PDU matches the specified flag. More... | |
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. | |
PDU & | operator= (const PDU &other) |
Copy assignment operator. | |
void | copy_inner_pdu (const PDU &pdu) |
Copy other PDU's inner PDU(if any). More... | |
virtual void | prepare_for_serialize () |
Prepares this PDU for serialization. More... | |
void | serialize (uint8_t *buffer, uint32_t total_sz) |
Serializes this PDU and propagates this action to child PDUs. More... | |
Represents a Spanning Tree Protocol PDU.
typedef HWAddress<6> Tins::STP::address_type |
The type used to store BPDU identifier addresses.
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.
buffer | The buffer from which this PDU will be constructed. |
total_sz | The total size of the buffer. |
|
inline |
Getter for the BDU Flags field.
void Tins::STP::bpdu_flags | ( | uint8_t | new_bpdu_flags | ) |
Setter for the BPDU Flags field.
new_bpdu_flags | The new BPDU Flags field value. |
|
inline |
Getter for the BDU Type field.
void Tins::STP::bpdu_type | ( | uint8_t | new_bpdu_type | ) |
Setter for the BPDU Type field.
new_bpdu_type | The new BPDU Type field value. |
STP::bpdu_id_type Tins::STP::bridge_id | ( | ) | const |
Getter for the Bridge ID field.
void Tins::STP::bridge_id | ( | const bpdu_id_type & | id | ) |
Setter for the Bridge ID field.
new_fwd_delay | The new Bridge ID field value. |
|
inlinevirtual |
Implements Tins::PDU.
|
inline |
Getter for the Forward Delay field.
void Tins::STP::fwd_delay | ( | uint16_t | new_fwd_delay | ) |
Setter for the Forward Delay field.
new_fwd_delay | The new Forward Delay field value. |
|
virtual |
Returns the header size.
This method overrides PDU::header_size.
Implements Tins::PDU.
|
inline |
Getter for the Hello Time field.
void Tins::STP::hello_time | ( | uint16_t | new_hello_time | ) |
Setter for the Hello Time field.
new_hello_time | The new Hello Time field value. |
|
inline |
Getter for the Maximum Age field.
void Tins::STP::max_age | ( | uint16_t | new_max_age | ) |
Setter for the Maximum Age field.
new_max_age | The new Maximum Age field value. |
|
inline |
Getter for the Message Age field.
void Tins::STP::msg_age | ( | uint16_t | new_msg_age | ) |
Setter for the Message Age field.
new_msg_age | The new Message Age field value. |
|
inlinevirtual |
|
inline |
Getter for the Port ID field.
void Tins::STP::port_id | ( | uint16_t | new_port_id | ) |
Setter for the Port ID field.
new_port_id | The new Port ID field value. |
|
inline |
Getter for the Protocol ID field.
void Tins::STP::proto_id | ( | uint16_t | new_proto_id | ) |
Setter for the Protocol ID field.
new_proto_id | The new Protocol ID field value. |
|
inline |
Getter for the Protocol Version field.
void Tins::STP::proto_version | ( | uint8_t | new_proto_version | ) |
Setter for the Protocol Version field.
new_proto_version | The new Protocol Version field value. |
STP::bpdu_id_type Tins::STP::root_id | ( | ) | const |
Getter for the Root ID field.
void Tins::STP::root_id | ( | const bpdu_id_type & | id | ) |
Setter for the Root ID field.
new_fwd_delay | The new Root ID field value. |
|
inline |
Getter for the Root Path Cost field.
void Tins::STP::root_path_cost | ( | uint32_t | new_root_path_cost | ) |
Setter for the Root Path Cost field.
new_root_path_cost | The new Root Path Cost field value. |
|
static |
This PDU's flag.