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

Representing a LLC frame. More...

#include <llc.h>

Inheritance diagram for Tins::LLC:
Tins::PDU

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.
 
- 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

 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. More...
 
 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. More...
 
void group (bool value)
 Setter for the group destination bit. More...
 
void dsap (uint8_t new_dsap)
 Setter for the dsap field. More...
 
void response (bool value)
 Setter for the response bit. More...
 
void ssap (uint8_t new_ssap)
 Setter for the ssap field. More...
 
void type (Format type)
 Setter for the LLC frame format type. More...
 
void send_seq_number (uint8_t seq_number)
 Setter for sender send sequence number. Only applied if format is INFORMATION. More...
 
void receive_seq_number (uint8_t seq_number)
 Setter for sender receive sequence number. Only applied if format is INFORMATION or SUPERVISORY. More...
 
void poll_final (bool value)
 Setter for the poll/final flag. More...
 
void supervisory_function (SupervisoryFunctions new_func)
 Setter for the supervisory function. Only applied if format is SUPERVISORY. More...
 
void modifier_function (ModifierFunctions mod_func)
 Setter for the modifier function field. Only applied if format is UNNUMBERED. More...
 
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. More...
 
bool group ()
 Getter for the group destination bit. More...
 
uint8_t dsap ()
 Getter for the dsap field. More...
 
bool response ()
 Getter for the response bit. More...
 
uint8_t ssap ()
 Getter for the ssap field. More...
 
uint8_t type ()
 Getter for the LLC frame format type. More...
 
uint8_t send_seq_number ()
 Getter for sender send sequence number. More...
 
uint8_t receive_seq_number ()
 Getter for sender receive sequence number. More...
 
bool poll_final ()
 Getter for the poll/final flag. More...
 
uint8_t supervisory_function ()
 Getter for the supervisory function. More...
 
uint8_t modifier_function ()
 Getter for the modifier function field. More...
 
uint32_t header_size () const
 Returns the LLC frame's header length. More...
 
PDUType pdu_type () const
 Getter for the PDU's type. More...
 
void clear_information_fields ()
 Delete all the information fields added.
 
LLCclone () const
 Clones 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...
 
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_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 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 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

Representing a LLC frame.

This PDU follows the standard LLC frame described in the IEEE 802.2 specs.

Constructor & Destructor Documentation

Tins::LLC::LLC ( uint8_t  dsap,
uint8_t  ssap 
)

Constructs an instance of LLC, setting the dsap and ssap. The control field is set to 0.

Parameters
dsapThe dsap value to be set.
ssapThe ssap value to be set.
Tins::LLC::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.

If there is not enough size for a LLC header, 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::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.

Parameters
xid_idXID information of the MAC sublayer.
llc_type_classValue to set the llc_type_class field.
receive_windowXID sender's receive window size.
LLC* Tins::LLC::clone ( ) const
inlinevirtual

Clones this PDU.

See Also
PDU::clone

Implements Tins::PDU.

void Tins::LLC::dsap ( uint8_t  new_dsap)

Setter for the dsap field.

Parameters
new_dsapThe new dsap field.
uint8_t Tins::LLC::dsap ( )
inline

Getter for the dsap field.

Returns
The dsap field value
void Tins::LLC::group ( bool  value)

Setter for the group destination bit.

Parameters
valueThe value to be set.
bool Tins::LLC::group ( )
inline

Getter for the group destination bit.

Returns
Whether the group bit is set or not.
uint32_t Tins::LLC::header_size ( ) const
virtual

Returns the LLC frame's header length.

Returns
The header's size.
See Also
PDU::header_size()

Implements Tins::PDU.

void Tins::LLC::modifier_function ( LLC::ModifierFunctions  mod_func)

Setter for the modifier function field. Only applied if format is UNNUMBERED.

Parameters
modifier_funcValue to set on the modifier function field.
uint8_t Tins::LLC::modifier_function ( )
inline

Getter for the modifier function field.

Returns
The modifier function if format is UNNUMBERED else 0.
PDUType Tins::LLC::pdu_type ( ) const
inlinevirtual

Getter for the PDU's type.

See Also
PDU::pdu_type

Implements Tins::PDU.

void Tins::LLC::poll_final ( bool  value)

Setter for the poll/final flag.

Parameters
valueBool indicating the value of the flag.
bool Tins::LLC::poll_final ( )
inline

Getter for the poll/final flag.

Returns
Whether the poll/final flag is set.
void Tins::LLC::receive_seq_number ( uint8_t  seq_number)

Setter for sender receive sequence number. Only applied if format is INFORMATION or SUPERVISORY.

Parameters
seq_numberNew sender receive sequence number to be set.
uint8_t Tins::LLC::receive_seq_number ( )
inline

Getter for sender receive sequence number.

Returns
The sender receive sequence number if format is INFORMATION or SUPERVISORY else 0.
void Tins::LLC::response ( bool  value)

Setter for the response bit.

Parameters
valueThe value to be set.
bool Tins::LLC::response ( )
inline

Getter for the response bit.

Returns
Whether the response bit is set or not.
void Tins::LLC::send_seq_number ( uint8_t  seq_number)

Setter for sender send sequence number. Only applied if format is INFORMATION.

Parameters
seq_numberNew sender send sequence number to be set.
uint8_t Tins::LLC::send_seq_number ( )
inline

Getter for sender send sequence number.

Returns
The sender send sequence number if format is INFORMATION else 0.
void Tins::LLC::ssap ( uint8_t  new_ssap)

Setter for the ssap field.

Parameters
new_ssapThe new ssap field.
uint8_t Tins::LLC::ssap ( )
inline

Getter for the ssap field.

Returns
The ssap field.
void Tins::LLC::supervisory_function ( LLC::SupervisoryFunctions  new_func)

Setter for the supervisory function. Only applied if format is SUPERVISORY.

Parameters
new_funcValue to set on the supervisory function field.
uint8_t Tins::LLC::supervisory_function ( )
inline

Getter for the supervisory function.

Returns
The supervisory function if format is SUPERVISORY else 0.
void Tins::LLC::type ( LLC::Format  type)

Setter for the LLC frame format type.

Parameters
typeThe LLC frame format to set.
uint8_t Tins::LLC::type ( )
inline

Getter for the LLC frame format type.

Returns
The LLC frame format.

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