libtins  4.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
Classes | Public Member Functions | Static Public Attributes | List of all members
Tins::MPLS Class Reference

Represents an MPLS PDU. More...

#include <mpls.h>

Inheritance diagram for Tins::MPLS:
Tins::PDU

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< 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 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...
 
MPLSclone () const
 
- Public Member Functions inherited from Tins::PDU
 PDU ()
 Default constructor.
 
 PDU (PDU &&rhs) TINS_NOEXCEPT
 Move constructor. More...
 
PDUoperator= (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...
 
PDUinner_pdu () const
 Getter for the inner PDU. More...
 
PDUparent_pdu () const
 
PDUrelease_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 PDUrecv_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.
 
PDUoperator= (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...
 

Detailed Description

Represents an MPLS PDU.

Constructor & Destructor Documentation

Tins::MPLS::MPLS ( const ICMPExtension extension)

Construct an MPLS layer from an ICMP extension.

This will use the extension's payload to build this packet. The extension's class and type are not checked.

Member Function Documentation

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.

Parameters
valueThe new bottom of the stack field value
MPLS* Tins::MPLS::clone ( ) const
inlinevirtual
See Also
PDU::clone

Implements Tins::PDU.

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

Returns the MPLS frame's header length.

Returns
The header's size.
See Also
PDU::header_size()

Implements Tins::PDU.

void Tins::MPLS::label ( small_uint< 20 >  value)

Setter for the label field.

Parameters
valueThe new label field value
PDUType Tins::MPLS::pdu_type ( ) const
inlinevirtual

Getter for the PDU's type.

See Also
PDU::pdu_type

Implements Tins::PDU.

void Tins::MPLS::ttl ( uint8_t  value)

Setter for the ttl field.

Parameters
valueThe new ttl field value

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