libtins 4.6
Loading...
Searching...
No Matches
Tins::RTP Class Reference

Represents a RTP PDU. More...

#include <rtp.h>

Inheritance diagram for Tins::RTP:
Tins::PDU

Public Types

typedef std::vector< uint32_t > csrc_ids_type
 
typedef std::vector< uint32_t > extension_header_data_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 , DOT1AD , DOT1Q , PPPOE ,
  STP , PPI , IPSEC_AH , IPSEC_ESP ,
  PKTAP , MPLS , DOT11_CONTROL_TA , VXLAN ,
  RTP , UNKNOWN = 999 , USER_DEFINED_PDU = 1000
}
 Enum which identifies each type of PDU. More...
 
typedef byte_array serialization_type
 

Public Member Functions

 RTP ()
 
 RTP (const uint8_t *data, uint32_t size)
 Constructs a RTP object from a buffer.
 
small_uint< 2 > version () const
 Getter for the version.
 
small_uint< 1 > padding_bit () const
 Getter for the padding bit.
 
small_uint< 1 > extension_bit () const
 Getter for the extension bit.
 
small_uint< 4 > csrc_count () const
 Getter for the CSRC count.
 
small_uint< 1 > marker_bit () const
 Getter for the marker bit.
 
small_uint< 7 > payload_type () const
 Getter for the payload type.
 
uint16_t sequence_number () const
 Getter for the sequence number.
 
uint32_t timestamp () const
 Getter for the timestamp.
 
uint32_t ssrc_id () const
 Getter for the SSRC identifier.
 
const csrc_ids_typecsrc_ids () const
 Getter for the CSRC identifiers.
 
uint8_t padding_size () const
 Getter for the padding size.
 
uint16_t extension_profile () const
 Getter for the extension header profile.
 
uint16_t extension_length () const
 Getter for the extension header length.
 
const extension_header_data_typeextension_data () const
 Getter for the extension header data.
 
void version (small_uint< 2 > version)
 Setter for the version.
 
void extension_bit (small_uint< 1 > extension)
 Setter for the extension bit.
 
void marker_bit (small_uint< 1 > marker)
 Setter for the marker bit.
 
void payload_type (small_uint< 7 > payload_type)
 Setter for the payload type.
 
void sequence_number (uint16_t seq_num)
 Setter for the sequence number.
 
void timestamp (uint32_t timestamp)
 Setter for the timestamp.
 
void ssrc_id (uint32_t ssrc_id)
 Setter for the SSRC identifier.
 
void padding_size (uint8_t size)
 Setter for the padding size.
 
void extension_profile (uint16_t profile)
 Setter for the extension header profile.
 
void add_extension_data (const uint32_t value)
 Adds a word of extension header data.
 
bool remove_extension_data (const uint32_t value)
 Removes a word of extension header data.
 
bool search_extension_data (const uint32_t value)
 Searches for extension header data that matches the given value.
 
void add_csrc_id (const uint32_t csrc_id)
 Adds a CSRC identifier.
 
bool remove_csrc_id (const uint32_t value)
 Removes a CSRC identifier.
 
bool search_csrc_id (const uint32_t value)
 Searches for a CSRC identifier that matches the given value.
 
uint32_t header_size () const
 Returns the RTP packet's header length.
 
uint32_t trailer_size () const
 Returns the RTP packet's trailer length.
 
PDUType pdu_type () const
 Getter for the PDU's type.
 
RTPclone () const
 
- Public Member Functions inherited from Tins::PDU
 PDU ()
 Default constructor.
 
 PDU (PDU &&rhs) TINS_NOEXCEPT
 Move constructor.
 
PDUoperator= (PDU &&rhs) TINS_NOEXCEPT
 Move assignment operator.
 
virtual ~PDU ()
 PDU destructor.
 
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.
 
PDUinner_pdu () const
 Getter for the inner PDU.
 
PDUparent_pdu () const
 
PDUrelease_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 PDUrecv_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::RTP
 This PDU's flag.
 
- 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).
 
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.
 

Detailed Description

Represents a RTP PDU.

This class represents a RTP PDU.

See also
RawPDU

Member Typedef Documentation

◆ csrc_ids_type

typedef std::vector<uint32_t> Tins::RTP::csrc_ids_type

The type used to store CSRC identifiers.

◆ extension_header_data_type

typedef std::vector<uint32_t> Tins::RTP::extension_header_data_type

The type used to store extension header data.

Constructor & Destructor Documentation

◆ RTP() [1/2]

Tins::RTP::RTP ( )

Default constructor.

◆ RTP() [2/2]

Tins::RTP::RTP ( const uint8_t * data,
uint32_t size )

Constructs a RTP object from a buffer.

Parameters
dataThe buffer from which this PDU will be constructed.
sizeThe size of the data buffer.

Member Function Documentation

◆ add_csrc_id()

void Tins::RTP::add_csrc_id ( const uint32_t csrc_id)

Adds a CSRC identifier.

The CSRC identifier is added after the last CSRC identifier in the extension header.

Parameters
csrc_idThe CSRC identifier to be added

◆ add_extension_data()

void Tins::RTP::add_extension_data ( const uint32_t value)

Adds a word of extension header data.

The word is added after the last word of extension header data.

Parameters
valueThe value of the extension header data to be added.

◆ clone()

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

Implements Tins::PDU.

◆ extension_bit()

void Tins::RTP::extension_bit ( small_uint< 1 > extension)
inline

Setter for the extension bit.

Parameters
extensionThe new extension bit.

◆ extension_profile()

void Tins::RTP::extension_profile ( uint16_t profile)
inline

Setter for the extension header profile.

Parameters
profileThe new extension header profile.

◆ header_size()

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

Returns the RTP packet's header length.

This method overrides PDU::header_size.

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

Implements Tins::PDU.

◆ marker_bit()

void Tins::RTP::marker_bit ( small_uint< 1 > marker)
inline

Setter for the marker bit.

Parameters
markerThe new marker bit.

◆ padding_size()

void Tins::RTP::padding_size ( uint8_t size)
inline

Setter for the padding size.

Parameters
sizeThe new padding size.

◆ payload_type()

void Tins::RTP::payload_type ( small_uint< 7 > payload_type)
inline

Setter for the payload type.

Parameters
payload_typeThe new payload type.

◆ pdu_type()

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

Getter for the PDU's type.

See also
PDU::pdu_type

Implements Tins::PDU.

◆ remove_csrc_id()

bool Tins::RTP::remove_csrc_id ( const uint32_t value)

Removes a CSRC identifier.

If there are multiple CSRC identifiers of the given value, only the first one will be removed.

Parameters
valueThe value of the CSRC identifier to be removed.
Returns
true if the CSRC identifier was removed, false otherwise.

◆ remove_extension_data()

bool Tins::RTP::remove_extension_data ( const uint32_t value)

Removes a word of extension header data.

If there are multiple words of extension header data of the given value, only the first one will be removed.

Parameters
valueThe value of the extension header data to be removed.
Returns
true if the extension header data was removed, false otherwise.

◆ search_csrc_id()

bool Tins::RTP::search_csrc_id ( const uint32_t value)

Searches for a CSRC identifier that matches the given value.

Parameters
valueThe CSRC identifier to be searched.
Returns
true if the CSRC identifier was found, false otherwise.

◆ search_extension_data()

bool Tins::RTP::search_extension_data ( const uint32_t value)

Searches for extension header data that matches the given value.

Parameters
valueThe extension header data to be searched.
Returns
true if the extension header data was found, false otherwise.

◆ sequence_number()

void Tins::RTP::sequence_number ( uint16_t seq_num)
inline

Setter for the sequence number.

Parameters
seq_numThe new sequence number.

◆ ssrc_id()

void Tins::RTP::ssrc_id ( uint32_t ssrc_id)
inline

Setter for the SSRC identifier.

Parameters
ssrc_idThe new SSRC identifier.

◆ timestamp()

void Tins::RTP::timestamp ( uint32_t timestamp)
inline

Setter for the timestamp.

Parameters
timestampThe new timestamp.

◆ trailer_size()

uint32_t Tins::RTP::trailer_size ( ) const
inlinevirtual

Returns the RTP packet's trailer length.

This method overrides PDU::trailer_size.

Returns
An uint32_t with the trailer's size.
See also
PDU::trailer_size

Reimplemented from Tins::PDU.

◆ version()

void Tins::RTP::version ( small_uint< 2 > version)
inline

Setter for the version.

Parameters
versionThe new version.

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