libtins  4.0
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
Tins::EthernetII Class Reference

Represents an Ethernet II PDU. More...

#include <ethernetII.h>

Inheritance diagram for Tins::EthernetII:
Tins::PDU

Public Types

typedef HWAddress< 6 > address_type
 The hardware address 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

 EthernetII (const address_type &dst_hw_addr=address_type(), const address_type &src_hw_addr=address_type())
 Constructs an ethernet II PDU. More...
 
 EthernetII (const uint8_t *buffer, uint32_t total_sz)
 Constructs a EthernetII object from a buffer and adds all identifiable PDUs found in the buffer as children of this one. More...
 
address_type dst_addr () const
 Getter for the destination's hardware address. More...
 
address_type src_addr () const
 Getter for the source's hardware address. More...
 
uint16_t payload_type () const
 Getter for the payload_type. More...
 
void dst_addr (const address_type &new_dst_addr)
 Setter for the destination hardware address. More...
 
void src_addr (const address_type &new_src_addr)
 Setter for the source hardware address. More...
 
void payload_type (uint16_t new_payload_type)
 Setter for the payload type. More...
 
uint32_t header_size () const
 Returns the ethernet frame's header length. More...
 
uint32_t trailer_size () const
 Returns the ethernet II frame's padding. More...
 
void send (PacketSender &sender, const NetworkInterface &iface)
 
bool matches_response (const uint8_t *ptr, uint32_t total_sz) const
 Check whether ptr points to a valid response for this PDU. More...
 
PDUrecv_response (PacketSender &sender, const NetworkInterface &iface)
 Receives a matching response for this packet. More...
 
PDUType pdu_type () const
 Getter for the PDU's type. More...
 
EthernetIIclone () 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...
 
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 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::ETHERNET_II
 This PDU's flag.
 
static const address_type BROADCAST
 Represents the ethernetII broadcast address.
 
- 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...
 

Detailed Description

Represents an Ethernet II PDU.

Constructor & Destructor Documentation

Tins::EthernetII::EthernetII ( const address_type dst_hw_addr = address_type(),
const address_type src_hw_addr = address_type() 
)

Constructs an ethernet II PDU.

Parameters
dst_hw_addraddress_type containing the destination's MAC.
src_hw_addraddress_type containing the source's MAC.
Tins::EthernetII::EthernetII ( const uint8_t *  buffer,
uint32_t  total_sz 
)

Constructs a EthernetII 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 EthernetII 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

EthernetII* Tins::EthernetII::clone ( ) const
inlinevirtual
See also
PDU::clone

Implements Tins::PDU.

address_type Tins::EthernetII::dst_addr ( ) const
inline

Getter for the destination's hardware address.

Returns
address_type containing the destination hardware address.
void Tins::EthernetII::dst_addr ( const address_type new_dst_addr)

Setter for the destination hardware address.

Parameters
new_dst_addrthe destination hardware address to be set.
PDU::metadata Tins::EthernetII::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::EthernetII::header_size ( ) const
virtual

Returns the ethernet frame's header length.

Returns
An uint32_t with the header's size.
See also
PDU::header_size()

Implements Tins::PDU.

bool Tins::EthernetII::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::EthernetII::payload_type ( ) const
inline

Getter for the payload_type.

Returns
The payload type.
void Tins::EthernetII::payload_type ( uint16_t  new_payload_type)

Setter for the payload type.

Parameters
new_payload_typethe new value of the payload type field.
PDUType Tins::EthernetII::pdu_type ( ) const
inlinevirtual

Getter for the PDU's type.

See also
PDU::pdu_type

Implements Tins::PDU.

PDU * Tins::EthernetII::recv_response ( PacketSender sender,
const NetworkInterface iface 
)
virtual

Receives a matching response for this packet.

See also
PDU::recv_response

Reimplemented from Tins::PDU.

void Tins::EthernetII::send ( PacketSender sender,
const NetworkInterface iface 
)
virtual
See also
PDU::send()

Reimplemented from Tins::PDU.

address_type Tins::EthernetII::src_addr ( ) const
inline

Getter for the source's hardware address.

Returns
address_type containing the source hardware address.
void Tins::EthernetII::src_addr ( const address_type new_src_addr)

Setter for the source hardware address.

Parameters
new_src_addrthe source hardware address to be set.
uint32_t Tins::EthernetII::trailer_size ( ) const
virtual

Returns the ethernet II frame's padding.

Returns
An uint32_t with the padding size.
See also
PDU::trailer_size()

Reimplemented from Tins::PDU.


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