Dumping of RTP/RTCP packets to text2pcap or pcap format. More...
#include <errno.h>#include <sys/time.h>#include <arpa/inet.h>#include <endian.h>#include "text2pcap.h"#include "debug.h"#include "utils.h"
Data Structures | |
| struct | janus_text2pcap_global_header |
| struct | janus_text2pcap_packet_header |
| struct | janus_text2pcap_ethernet_header |
| struct | janus_text2pcap_ip_header |
| struct | janus_text2pcap_udp_header |
Macros | |
| #define | CASE_STR(name) case name: return #name |
Typedefs | |
| typedef struct janus_text2pcap_global_header | janus_text2pcap_global_header |
| typedef struct janus_text2pcap_packet_header | janus_text2pcap_packet_header |
| typedef struct janus_text2pcap_ethernet_header | janus_text2pcap_ethernet_header |
| typedef struct janus_text2pcap_ip_header | janus_text2pcap_ip_header |
| typedef struct janus_text2pcap_udp_header | janus_text2pcap_udp_header |
Functions | |
| const char * | janus_text2pcap_packet_string (janus_text2pcap_packet type) |
| janus_text2pcap * | janus_text2pcap_create (const char *dir, const char *filename, int truncate, gboolean text) |
| Create a text2pcap recorder. More... | |
| int | janus_text2pcap_dump (janus_text2pcap *instance, janus_text2pcap_packet type, gboolean incoming, char *buf, int len, const char *format,...) |
| int | janus_text2pcap_close (janus_text2pcap *instance) |
| Close a text2pcap recorder. More... | |
| void | janus_text2pcap_free (janus_text2pcap *instance) |
| Free a text2pcap instance. More... | |
Dumping of RTP/RTCP packets to text2pcap or pcap format.
Implementation of a simple helper utility that can be used to dump incoming and outgoing RTP/RTCP packets to pcap or text2pcap format. Saving to pcap natively can be more efficient but will lack some features, as the target will be a legacy (v2.4) .pcap file and not a .pcapng one. When saving to a text file, instead, the resulting file can be passed to the text2pcap application in order to get a .pcap or .pcapng file that can be analyzed via Wireshark or similar applications, e.g.:
/usr/sbin/text2pcap -D -n -l 1 -i 17 -u 1000,2000 -t '%H:%M:%S.' dump.txt dump.pcapng /usr/sbin/wireshark dump.pcapng
While plugins are free to take advantage of this functionality, it's been specifically added to make debugging from the core easier. Enabling and disabling the dump of RTP/RTCP packets for the media traffic of a specific handle is done via the Admin/Monitor API so check the documentation of that section for more details. Notice that starting a new dump on an existing filename will result in the new packets to be appended.
| #define CASE_STR | ( | name | ) | case name: return #name |
| typedef struct janus_text2pcap_ethernet_header janus_text2pcap_ethernet_header |
| typedef struct janus_text2pcap_global_header janus_text2pcap_global_header |
| typedef struct janus_text2pcap_ip_header janus_text2pcap_ip_header |
| typedef struct janus_text2pcap_packet_header janus_text2pcap_packet_header |
| typedef struct janus_text2pcap_udp_header janus_text2pcap_udp_header |
| int janus_text2pcap_close | ( | janus_text2pcap * | instance | ) |
Close a text2pcap recorder.
| [in] | instance | Instance of the janus_text2pcap recorder to close |
| janus_text2pcap* janus_text2pcap_create | ( | const char * | dir, |
| const char * | filename, | ||
| int | truncate, | ||
| gboolean | text | ||
| ) |
Create a text2pcap recorder.
| [in] | dir | Path of the directory to save the recording into (will try to create it if it doesn't exist) |
| [in] | filename | Filename to use for the recording |
| [in] | truncate | Number of bytes to truncate each packet at (0 to not truncate at all) |
| [in] | text | Whether we'll save as text, or directly to pcap |
| int janus_text2pcap_dump | ( | janus_text2pcap * | instance, |
| janus_text2pcap_packet | type, | ||
| gboolean | incoming, | ||
| char * | buf, | ||
| int | len, | ||
| const char * | format, | ||
| ... | |||
| ) |
| void janus_text2pcap_free | ( | janus_text2pcap * | instance | ) |
Free a text2pcap instance.
| [in] | instance | Instance of the janus_text2pcap recorder to free |
| const char* janus_text2pcap_packet_string | ( | janus_text2pcap_packet | type | ) |