libtins  4.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
Public Types | Public Member Functions | Static Public Attributes | List of all members
Tins::RawPDU Class Reference
Inheritance diagram for Tins::RawPDU:
Tins::PDU

Public Types

typedef std::vector< uint8_t > payload_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

 RawPDU (const uint8_t *pload, uint32_t size)
 Creates an instance of RawPDU. More...
 
template<typename ForwardIterator >
 RawPDU (ForwardIterator start, ForwardIterator end)
 Constructs a RawPDU from an iterator range. More...
 
 RawPDU (const payload_type &data)
 Creates an instance of RawPDU from a payload_type. More...
 
 RawPDU (payload_type &&data)
 Creates an instance of RawPDU from a payload_type. More...
 
 RawPDU (const std::string &data)
 Creates an instance of RawPDU from an input string. More...
 
void payload (const payload_type &pload)
 Setter for the payload field. More...
 
template<typename ForwardIterator >
void payload (ForwardIterator start, ForwardIterator end)
 Setter for the payload field. More...
 
const payload_typepayload () const
 Const getter for the payload. More...
 
payload_typepayload ()
 Non-const getter for the payload. More...
 
uint32_t header_size () const
 Returns the header size. More...
 
uint32_t payload_size () const
 Returns the payload size. 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...
 
PDUType pdu_type () const
 Getter for the PDU's type. More...
 
template<typename T >
to () const
 Constructs the given PDU type from the raw data stored in this RawPDU.
 
RawPDUclone () 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_flag (PDUType flag) const
 Check whether this PDU matches the specified flag. More...
 

Static Public Attributes

static const PDU::PDUType pdu_flag = PDU::RAW
 
- 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.
 
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...
 

Member Typedef Documentation

typedef std::vector<uint8_t> Tins::RawPDU::payload_type

The type used to store the payload.

Constructor & Destructor Documentation

Tins::RawPDU::RawPDU ( const uint8_t *  pload,
uint32_t  size 
)

Creates an instance of RawPDU.

The payload is copied, therefore the original payload's memory must be freed by the user.

Parameters
ploadThe payload which the RawPDU will contain.
sizeThe size of the payload.
template<typename ForwardIterator >
Tins::RawPDU::RawPDU ( ForwardIterator  start,
ForwardIterator  end 
)
inline

Constructs a RawPDU from an iterator range.

The data in the iterator range is copied into the RawPDU internal buffer.

Parameters
startThe beginning of the iterator range.
endThe end of the iterator range.
Tins::RawPDU::RawPDU ( const payload_type data)
inline

Creates an instance of RawPDU from a payload_type.

The payload is copied into the RawPDU's internal buffer.

Parameters
dataThe payload to use.
Tins::RawPDU::RawPDU ( payload_type &&  data)
inline

Creates an instance of RawPDU from a payload_type.

The payload is moved into the RawPDU's internal buffer.

Parameters
dataThe payload to use.
Tins::RawPDU::RawPDU ( const std::string &  data)

Creates an instance of RawPDU from an input string.

Parameters
dataThe content of the payload.

Member Function Documentation

RawPDU* Tins::RawPDU::clone ( ) const
inlinevirtual
See Also
PDU::clone

Implements Tins::PDU.

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

Returns the header size.

This returns the same as RawPDU::payload_size().

This method overrides PDU::header_size.

See Also
PDU::header_size

Implements Tins::PDU.

bool Tins::RawPDU::matches_response ( const uint8_t *  ptr,
uint32_t  total_sz 
) const
virtual

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

This always returns true, since we don't know what this RawPDU is holding.

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

Reimplemented from Tins::PDU.

void Tins::RawPDU::payload ( const payload_type pload)

Setter for the payload field.

Parameters
ploadThe payload to be set.
template<typename ForwardIterator >
void Tins::RawPDU::payload ( ForwardIterator  start,
ForwardIterator  end 
)
inline

Setter for the payload field.

Parameters
startThe start of the new payload.
endThe end of the new payload.
const payload_type& Tins::RawPDU::payload ( ) const
inline

Const getter for the payload.

Returns
The RawPDU's payload.
payload_type& Tins::RawPDU::payload ( )
inline

Non-const getter for the payload.

Returns
The RawPDU's payload.
uint32_t Tins::RawPDU::payload_size ( ) const
inline

Returns the payload size.

Returns
uint32_t containing the payload size.
PDUType Tins::RawPDU::pdu_type ( ) const
inlinevirtual

Getter for the PDU's type.

See Also
PDU::pdu_type

Implements Tins::PDU.

Member Data Documentation

const PDU::PDUType Tins::RawPDU::pdu_flag = PDU::RAW
static

This PDU's flag.


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