summaryrefslogtreecommitdiffstats
path: root/openbsc/include/openbsc
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2014-06-22 22:30:28 +0200
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2014-07-07 19:24:21 +0200
commit983c99113d912ae4003a7fa18c0abd039c42e16d (patch)
treeccc7786f882442320dcfb7aa3e10816d04aef660 /openbsc/include/openbsc
parent6019b5a5083e91f207572b805c1f4a7902c7c5db (diff)
rtp: Share the rtp header between the proxy and the mgcp code
Diffstat (limited to 'openbsc/include/openbsc')
-rw-r--r--openbsc/include/openbsc/Makefile.am2
-rw-r--r--openbsc/include/openbsc/rtp.h38
2 files changed, 39 insertions, 1 deletions
diff --git a/openbsc/include/openbsc/Makefile.am b/openbsc/include/openbsc/Makefile.am
index b739d0f46..23386f1f0 100644
--- a/openbsc/include/openbsc/Makefile.am
+++ b/openbsc/include/openbsc/Makefile.am
@@ -14,7 +14,7 @@ noinst_HEADERS = abis_nm.h abis_rsl.h db.h gsm_04_08.h gsm_data.h \
osmo_msc_data.h osmo_bsc_grace.h sms_queue.h abis_om2000.h \
bss.h gsm_data_shared.h control_cmd.h ipaccess.h mncc_int.h \
arfcn_range_encode.h nat_rewrite_trie.h bsc_nat_callstats.h \
- osmux.h mgcp_transcode.h
+ osmux.h mgcp_transcode.h rtp.h
openbsc_HEADERS = gsm_04_08.h meas_rep.h bsc_api.h
openbscdir = $(includedir)/openbsc
diff --git a/openbsc/include/openbsc/rtp.h b/openbsc/include/openbsc/rtp.h
new file mode 100644
index 000000000..451d0defa
--- /dev/null
+++ b/openbsc/include/openbsc/rtp.h
@@ -0,0 +1,38 @@
+#pragma once
+
+/* attempt to determine byte order */
+#include <sys/param.h>
+#include <limits.h>
+#include <time.h>
+
+#ifndef __BYTE_ORDER
+# ifdef __APPLE__
+# define __BYTE_ORDER __DARWIN_BYTE_ORDER
+# define __LITTLE_ENDIAN __DARWIN_LITTLE_ENDIAN
+# define __BIG_ENDIAN __DARWIN_BIG_ENDIAN
+# else
+# error "__BYTE_ORDER should be defined by someone"
+# endif
+#endif
+
+/* according to rtp_proxy.c RFC 3550 */
+struct rtp_hdr {
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+ uint8_t csrc_count:4,
+ extension:1,
+ padding:1,
+ version:2;
+ uint8_t payload_type:7,
+ marker:1;
+#elif __BYTE_ORDER == __BIG_ENDIAN
+ uint8_t version:2,
+ padding:1,
+ extension:1,
+ csrc_count:4;
+ uint8_t marker:1,
+ payload_type:7;
+#endif
+ uint16_t sequence;
+ uint32_t timestamp;
+ uint32_t ssrc;
+} __attribute__((packed));