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

#include <dot1q.h>

Inheritance diagram for Tins::Dot1Q:
Tins::PDU

Public Member Functions

 Dot1Q (small_uint< 12 > tag_id=0, bool append_pad=true)
 
 Dot1Q (const uint8_t *buffer, uint32_t total_sz)
 Constructs a Dot1Q object from a buffer and adds all identifiable PDUs found in the buffer as children of this one. More...
 
uint32_t header_size () const
 Returns the header size. More...
 
uint32_t trailer_size () const
 Returns the frame's trailer size. More...
 
small_uint< 3 > priority () const
 Getter for the priority field. More...
 
small_uint< 1 > cfi () const
 Getter for the Canonical Format Identifier field. More...
 
small_uint< 12 > id () const
 Getter for the VLAN ID field. More...
 
uint16_t payload_type () const
 Getter for the payload type field. More...
 
PDUType pdu_type () const
 Getter for the PDU's type. More...
 
Dot1Qclone () const
 
bool append_padding () const
 Retrieves the flag indicating whether padding will be appended at the end of this packet.
 
void priority (small_uint< 3 > new_priority)
 Setter for the priority field. More...
 
void cfi (small_uint< 1 > new_cfi)
 Setter for the Canonical Format Identifie field. More...
 
void id (small_uint< 12 > new_id)
 Setter for the VLAN ID field. More...
 
void payload_type (uint16_t new_type)
 Setter for the payload type field. More...
 
void append_padding (bool value)
 Indicates whether the appropriate padding will be at the end of the packet. More...
 
bool matches_response (const uint8_t *ptr, uint32_t total_sz) const
 Check whether ptr points to a valid response for this PDU. More...
 
- 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...
 
uint32_t size () const
 The whole chain of PDU's size, including this one. More...
 
PDUinner_pdu () const
 Getter for the inner PDU. More...
 
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_flag (PDUType flag) const
 Check whether this PDU matches the specified flag. More...
 

Static Public Member Functions

static metadata extract_metadata (const uint8_t *buffer, uint32_t total_sz)
 Extracts metadata for this protocol based on the buffer provided. More...
 

Static Public Attributes

static const PDU::PDUType pdu_flag = PDU::DOT1Q
 
- 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 (const PDU *parent)
 Prepares this PDU for serialization. More...
 
void serialize (uint8_t *buffer, uint32_t total_sz, const PDU *parent)
 Serializes this PDU and propagates this action to child PDUs. More...
 

Detailed Description

Represents an IEEE 802.1q PDU.

Constructor & Destructor Documentation

Tins::Dot1Q::Dot1Q ( small_uint< 12 >  tag_id = 0,
bool  append_pad = true 
)

Default constructor

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

Constructs a Dot1Q object from a buffer and adds all identifiable PDUs found in the buffer as children of this one.

If the next PDU is not recognized, then a RawPDU is used.

If there is not enough size for a Dot1Q header in the buffer, 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

void Tins::Dot1Q::append_padding ( bool  value)

Indicates whether the appropriate padding will be at the end of the packet.

This flag could be disabled in case two or more contiguous Dot1Q PDUs are added to a packet. In that case, only the Dot1Q which is closer to the link layer should add the padding at the end.

Parameters
valueA boolean indicating whether padding will be appended.
small_uint<1> Tins::Dot1Q::cfi ( ) const
inline

Getter for the Canonical Format Identifier field.

Returns
The stored CFI field value.
void Tins::Dot1Q::cfi ( small_uint< 1 >  new_cfi)

Setter for the Canonical Format Identifie field.

Parameters
new_cfiThe new CFI field value.
Dot1Q* Tins::Dot1Q::clone ( ) const
inlinevirtual
See Also
PDU::clone

Implements Tins::PDU.

PDU::metadata Tins::Dot1Q::extract_metadata ( const uint8_t *  buffer,
uint32_t  total_sz 
)
static

Extracts metadata for this protocol based on the buffer provided.

Parameters
bufferPointer to a buffer
total_szSize of the buffer pointed by buffer
uint32_t Tins::Dot1Q::header_size ( ) const
virtual

Returns the header size.

This method overrides PDU::header_size.

See Also
PDU::header_size

Implements Tins::PDU.

small_uint<12> Tins::Dot1Q::id ( ) const
inline

Getter for the VLAN ID field.

Returns
The stored VLAN ID field value.
void Tins::Dot1Q::id ( small_uint< 12 >  new_id)

Setter for the VLAN ID field.

Parameters
new_idThe new VLAN ID field value.
bool Tins::Dot1Q::matches_response ( const uint8_t *  ptr,
uint32_t  total_sz 
) const
virtual

Check whether ptr points to a valid response for this PDU.

See Also
PDU::matches_response
Parameters
ptrThe pointer to the buffer.
total_szThe size of the buffer.

Reimplemented from Tins::PDU.

uint16_t Tins::Dot1Q::payload_type ( ) const
inline

Getter for the payload type field.

Returns
The stored type field value.
void Tins::Dot1Q::payload_type ( uint16_t  new_type)

Setter for the payload type field.

Parameters
new_typeThe new type field value.
PDUType Tins::Dot1Q::pdu_type ( ) const
inlinevirtual

Getter for the PDU's type.

See Also
PDU::pdu_type

Implements Tins::PDU.

small_uint<3> Tins::Dot1Q::priority ( ) const
inline

Getter for the priority field.

Returns
The stored priority field value.
void Tins::Dot1Q::priority ( small_uint< 3 >  new_priority)

Setter for the priority field.

Parameters
new_priorityThe new priority field value.
uint32_t Tins::Dot1Q::trailer_size ( ) const
virtual

Returns the frame's trailer size.

Returns
The trailer's size.

Reimplemented from Tins::PDU.

Member Data Documentation

const PDU::PDUType Tins::Dot1Q::pdu_flag = PDU::DOT1Q
static

This PDU's flag.


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