libtins
4.0
|
Represents an MPLS PDU. More...
#include <mpls.h>
Public Member Functions | |
MPLS () | |
Default constructor. | |
MPLS (const ICMPExtension &extension) | |
Construct an MPLS layer from an ICMP extension. More... | |
MPLS (const uint8_t *buffer, uint32_t total_sz) | |
Constructor from buffer. | |
small_uint< 20 > | label () const |
Getter for the label field. | |
small_uint< 3 > | experimental () const |
Getter for the experimental field. | |
small_uint< 1 > | bottom_of_stack () const |
Getter for the bottom of the stack field. | |
uint8_t | ttl () const |
Getter for the ttl field. | |
void | label (small_uint< 20 > value) |
Setter for the label field. More... | |
void | experimental (small_uint< 3 > value) |
Setter for the experimental field. More... | |
void | bottom_of_stack (small_uint< 1 > value) |
Setter for the bottom of the stack field. More... | |
void | ttl (uint8_t value) |
Setter for the ttl field. More... | |
uint32_t | header_size () const |
Returns the MPLS frame's header length. More... | |
PDUType | pdu_type () const |
Getter for the PDU's type. More... | |
MPLS * | clone () const |
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::MPLS |
This PDU's flag. | |
Static Public Attributes inherited from Tins::PDU | |
static const endian_type | endianness = BE |
Additional Inherited Members | |
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 |
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 an MPLS PDU.
Tins::MPLS::MPLS | ( | const ICMPExtension & | extension | ) |
void Tins::MPLS::bottom_of_stack | ( | small_uint< 1 > | value | ) |
Setter for the bottom of the stack field.
Note that if this MPLS layer is somewhere between an Ethernet and IP layers, the bottom of the stack field will be overriden and set automatically. You should only set this field when constructing ICMP extensions.
value | The new bottom of the stack field value |
|
inlinevirtual |
Implements Tins::PDU.
void Tins::MPLS::experimental | ( | small_uint< 3 > | value | ) |
Setter for the experimental field.
value | The new experimental field value |
|
virtual |
Returns the MPLS frame's header length.
Implements Tins::PDU.
void Tins::MPLS::label | ( | small_uint< 20 > | value | ) |
Setter for the label field.
value | The new label field value |
|
inlinevirtual |
void Tins::MPLS::ttl | ( | uint8_t | value | ) |
Setter for the ttl field.
value | The new ttl field value |