libtins  4.4
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
Tins::EAPOL Class Referenceabstract

Represents the EAP encapsulation over LAN. More...

#include <eapol.h>

Inheritance diagram for Tins::EAPOL:
Tins::PDU Tins::RC4EAPOL Tins::RSNEAPOL

Classes

struct  eapol_header
 

Public Types

enum  EAPOLTYPE { RC4 = 1 , RSN , EAPOL_WPA = 254 }
 
- 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 , UNKNOWN = 999 ,
  USER_DEFINED_PDU = 1000
}
 Enum which identifies each type of PDU. More...
 
typedef byte_array serialization_type
 

Public Member Functions

uint8_t version () const
 Getter for the version field. More...
 
uint8_t packet_type () const
 Getter for the packet type field. More...
 
uint16_t length () const
 Getter for the length field. More...
 
uint8_t type () const
 Getter for the type field. More...
 
void version (uint8_t value)
 Sets the version field. More...
 
void packet_type (uint8_t value)
 Sets the packet type field. More...
 
void length (uint16_t value)
 Sets the length field. More...
 
void type (uint8_t value)
 Sets the type field. More...
 
PDUType pdu_type () const
 Getter for the PDU's type. 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...
 
virtual uint32_t header_size () const =0
 The header's size.
 
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...
 
virtual uint32_t advertised_size () const
 The whole chain of PDU's advertised 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 PDUclone () const =0
 Clones this packet. 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 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 EAPOLfrom_bytes (const uint8_t *buffer, uint32_t total_sz)
 Static method to instantiate the correct EAPOL subclass based on a raw buffer. More...
 

Static Public Attributes

static const PDU::PDUType pdu_flag = PDU::EAPOL
 This PDU's flag.
 
- Static Public Attributes inherited from Tins::PDU
static const endian_type endianness = BE
 

Protected Member Functions

 EAPOL (uint8_t packet_type, EAPOLTYPE type)
 Protected constructor that sets the packet_type and type fields.
 
 EAPOL (const uint8_t *buffer, uint32_t total_sz)
 Constructor which creates an EAPOL object from a buffer. More...
 
virtual void write_body (Memory::OutputMemoryStream &stream)=0
 Virtual method which should serialize the subclass specific body and save it in a byte array. More...
 
- 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...
 

Protected Attributes

TINS_BEGIN_PACK struct Tins::EAPOL::eapol_header TINS_END_PACK
 

Detailed Description

Represents the EAP encapsulation over LAN.

Member Enumeration Documentation

◆ EAPOLTYPE

The EAPOL type enum.

Constructor & Destructor Documentation

◆ EAPOL()

Tins::EAPOL::EAPOL ( const uint8_t *  buffer,
uint32_t  total_sz 
)
protected

Constructor which creates an EAPOL object from a buffer.

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

Member Function Documentation

◆ extract_metadata()

PDU::metadata Tins::EAPOL::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

◆ from_bytes()

EAPOL * Tins::EAPOL::from_bytes ( const uint8_t *  buffer,
uint32_t  total_sz 
)
static

Static method to instantiate the correct EAPOL subclass based on a raw buffer.

If no valid EAPOL type is detected, a null pointer is returned.

See also
RC4EAPOL
RSNEAPOL
Parameters
bufferThe buffer from which the data will be taken.
total_szThe total size of the buffer.

◆ length() [1/2]

uint16_t Tins::EAPOL::length ( ) const
inline

Getter for the length field.

Returns
The length field.

◆ length() [2/2]

void Tins::EAPOL::length ( uint16_t  value)

Sets the length field.

Parameters
valueThe new length to be set.

◆ packet_type() [1/2]

uint8_t Tins::EAPOL::packet_type ( ) const
inline

Getter for the packet type field.

Returns
The packet type field.

◆ packet_type() [2/2]

void Tins::EAPOL::packet_type ( uint8_t  value)

Sets the packet type field.

Parameters
valueThe new packet type to be set.

◆ pdu_type()

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

Getter for the PDU's type.

Returns
Returns the PDUType corresponding to the PDU.

Implements Tins::PDU.

Reimplemented in Tins::RSNEAPOL, and Tins::RC4EAPOL.

◆ type() [1/2]

uint8_t Tins::EAPOL::type ( ) const
inline

Getter for the type field.

Returns
The type field.

◆ type() [2/2]

void Tins::EAPOL::type ( uint8_t  value)

Sets the type field.

Parameters
valueThe new type to be set.

◆ version() [1/2]

uint8_t Tins::EAPOL::version ( ) const
inline

Getter for the version field.

Returns
The version field.

◆ version() [2/2]

void Tins::EAPOL::version ( uint8_t  value)

Sets the version field.

Parameters
valueThe new version to be set.

◆ write_body()

virtual void Tins::EAPOL::write_body ( Memory::OutputMemoryStream &  stream)
protectedpure virtual

Virtual method which should serialize the subclass specific body and save it in a byte array.

Parameters
bufferThe pointer in which to save the serialization.
total_szThe total size of the buffer.

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