libtins 4.5
|
Representing a LLC frame. More...
#include <llc.h>
Public Types | |
enum | Format { INFORMATION = 0 , SUPERVISORY = 1 , UNNUMBERED = 3 } |
LLC Format flags. | |
enum | ModifierFunctions { UI = 0x00 , XID = 0x1D , TEST = 0x07 , SABME = 0x1E , DISC = 0x02 , UA = 0x06 , DM = 0x18 , FRMR = 0x11 } |
LLC Modifier functions. | |
enum | SupervisoryFunctions { RECEIVE_READY = 0 , REJECT = 2 , RECEIVE_NOT_READY = 1 } |
LLC Supervisory functions. | |
![]() | |
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 , VXLAN , UNKNOWN = 999 , USER_DEFINED_PDU = 1000 } |
Enum which identifies each type of PDU. More... | |
typedef byte_array | serialization_type |
Public Member Functions | |
LLC () | |
Default constructor. | |
LLC (uint8_t dsap, uint8_t ssap) | |
Constructs an instance of LLC, setting the dsap and ssap. The control field is set to 0. | |
LLC (const uint8_t *buffer, uint32_t total_sz) | |
Constructs a LLC object from a buffer and adds all identifiable PDUs found in the buffer as children of this one. | |
void | group (bool value) |
Setter for the group destination bit. | |
void | dsap (uint8_t new_dsap) |
Setter for the dsap field. | |
void | response (bool value) |
Setter for the response bit. | |
void | ssap (uint8_t new_ssap) |
Setter for the ssap field. | |
void | type (Format type) |
Setter for the LLC frame format type. | |
void | send_seq_number (uint8_t seq_number) |
Setter for sender send sequence number. Only applied if format is INFORMATION. | |
void | receive_seq_number (uint8_t seq_number) |
Setter for sender receive sequence number. Only applied if format is INFORMATION or SUPERVISORY. | |
void | poll_final (bool value) |
Setter for the poll/final flag. | |
void | supervisory_function (SupervisoryFunctions new_func) |
Setter for the supervisory function. Only applied if format is SUPERVISORY. | |
void | modifier_function (ModifierFunctions mod_func) |
Setter for the modifier function field. Only applied if format is UNNUMBERED. | |
void | add_xid_information (uint8_t xid_id, uint8_t llc_type_class, uint8_t receive_window) |
Add a xid information field. Only applied if format is UNNUMBERED and function is XID. | |
bool | group () |
Getter for the group destination bit. | |
uint8_t | dsap () |
Getter for the dsap field. | |
bool | response () |
Getter for the response bit. | |
uint8_t | ssap () |
Getter for the ssap field. | |
uint8_t | type () |
Getter for the LLC frame format type. | |
uint8_t | send_seq_number () |
Getter for sender send sequence number. | |
uint8_t | receive_seq_number () |
Getter for sender receive sequence number. | |
bool | poll_final () |
Getter for the poll/final flag. | |
uint8_t | supervisory_function () |
Getter for the supervisory function. | |
uint8_t | modifier_function () |
Getter for the modifier function field. | |
uint32_t | header_size () const |
Returns the LLC frame's header length. | |
PDUType | pdu_type () const |
Getter for the PDU's type. | |
void | clear_information_fields () |
Delete all the information fields added. | |
LLC * | clone () const |
Clones this PDU. | |
![]() | |
PDU () | |
Default constructor. | |
PDU (PDU &&rhs) TINS_NOEXCEPT | |
Move constructor. | |
PDU & | operator= (PDU &&rhs) TINS_NOEXCEPT |
Move assignment operator. | |
virtual | ~PDU () |
PDU destructor. | |
virtual uint32_t | trailer_size () const |
Trailer's size. | |
uint32_t | size () const |
The whole chain of PDU's size, including this one. | |
virtual uint32_t | advertised_size () const |
The whole chain of PDU's advertised size, including this one. | |
PDU * | inner_pdu () const |
Getter for the inner PDU. | |
PDU * | parent_pdu () const |
PDU * | release_inner_pdu () |
Releases the inner PDU. | |
void | inner_pdu (PDU *next_pdu) |
Sets the child PDU. | |
void | inner_pdu (const PDU &next_pdu) |
Sets the child PDU. | |
serialization_type | serialize () |
Serializes the whole chain of PDU's, including this one. | |
template<typename T > | |
T * | find_pdu (PDUType type=T::pdu_flag) |
Finds and returns the first PDU that matches the given flag. | |
template<typename T > | |
const T * | find_pdu (PDUType type=T::pdu_flag) const |
Finds and returns the first PDU that matches the given flag. | |
template<typename T > | |
T & | rfind_pdu (PDUType type=T::pdu_flag) |
Finds and returns the first PDU that matches the given flag. | |
template<typename T > | |
const T & | rfind_pdu (PDUType type=T::pdu_flag) const |
Finds and returns the first PDU that matches the given flag. | |
virtual void | send (PacketSender &sender, const NetworkInterface &iface) |
Send the stack of PDUs through a PacketSender. | |
virtual PDU * | recv_response (PacketSender &sender, const NetworkInterface &iface) |
Receives a matching response for this packet. | |
virtual bool | matches_response (const uint8_t *ptr, uint32_t total_sz) const |
Check whether ptr points to a valid response for this PDU. | |
virtual bool | matches_flag (PDUType flag) const |
Check whether this PDU matches the specified flag. | |
Static Public Attributes | |
static const PDU::PDUType | pdu_flag = PDU::LLC |
This PDU's flag. | |
static const uint8_t | GLOBAL_DSAP_ADDR = 0xFF |
Represents the LLC global DSAP address. | |
static const uint8_t | NULL_ADDR = 0x00 |
Represents the LLC NULL address. | |
![]() | |
static const endian_type | endianness = BE |
Additional Inherited Members | |
![]() | |
PDU (const PDU &other) | |
Copy constructor. | |
PDU & | operator= (const PDU &other) |
Copy assignment operator. | |
void | copy_inner_pdu (const PDU &pdu) |
Copy other PDU's inner PDU(if any). | |
virtual void | prepare_for_serialize () |
Prepares this PDU for serialization. | |
void | serialize (uint8_t *buffer, uint32_t total_sz) |
Serializes this PDU and propagates this action to child PDUs. | |
Representing a LLC frame.
This PDU follows the standard LLC frame described in the IEEE 802.2 specs.
Constructs an instance of LLC, setting the dsap and ssap. The control field is set to 0.
dsap | The dsap value to be set. |
ssap | The ssap value to be set. |
Constructs a LLC object from a buffer and adds all identifiable PDUs found in the buffer as children of this one.
If there is not enough size for a LLC header, a malformed_packet exception is thrown.
buffer | The buffer from which this PDU will be constructed. |
total_sz | The total size of the buffer. |
void Tins::LLC::add_xid_information | ( | uint8_t | xid_id, |
uint8_t | llc_type_class, | ||
uint8_t | receive_window ) |
Add a xid information field. Only applied if format is UNNUMBERED and function is XID.
xid_id | XID information of the MAC sublayer. |
llc_type_class | Value to set the llc_type_class field. |
receive_window | XID sender's receive window size. |
|
inlinevirtual |
|
inline |
Getter for the dsap field.
Setter for the dsap field.
new_dsap | The new dsap field. |
|
inline |
Getter for the group destination bit.
Setter for the group destination bit.
value | The value to be set. |
|
virtual |
Returns the LLC frame's header length.
Implements Tins::PDU.
|
inline |
Getter for the modifier function field.
void Tins::LLC::modifier_function | ( | LLC::ModifierFunctions | mod_func | ) |
Setter for the modifier function field. Only applied if format is UNNUMBERED.
modifier_func | Value to set on the modifier function field. |
|
inlinevirtual |
|
inline |
Getter for the poll/final flag.
Setter for the poll/final flag.
value | Bool indicating the value of the flag. |
|
inline |
Getter for sender receive sequence number.
Setter for sender receive sequence number. Only applied if format is INFORMATION or SUPERVISORY.
seq_number | New sender receive sequence number to be set. |
|
inline |
Getter for the response bit.
Setter for the response bit.
value | The value to be set. |
|
inline |
Getter for sender send sequence number.
Setter for sender send sequence number. Only applied if format is INFORMATION.
seq_number | New sender send sequence number to be set. |
|
inline |
Getter for the ssap field.
Setter for the ssap field.
new_ssap | The new ssap field. |
|
inline |
Getter for the supervisory function.
void Tins::LLC::supervisory_function | ( | LLC::SupervisoryFunctions | new_func | ) |
Setter for the supervisory function. Only applied if format is SUPERVISORY.
new_func | Value to set on the supervisory function field. |
|
inline |
void Tins::LLC::type | ( | LLC::Format | type | ) |