aboutsummaryrefslogtreecommitdiffstats
path: root/libosmocore
diff options
context:
space:
mode:
authorHarald Welte <laforge@netfilter.org>2010-02-20 18:43:19 +0100
committerHarald Welte <laforge@netfilter.org>2010-02-20 18:43:19 +0100
commit5998d114f51bd4d6c8c0fd66f03d801e100381af (patch)
tree5173b95367188db39ec1340890b384da6144f24a /libosmocore
parent5d720b11e82ac7bb5c69521a90f8c6c8804aa29f (diff)
add gsmtap.h
Diffstat (limited to 'libosmocore')
-rw-r--r--libosmocore/include/osmocore/Makefile.am3
-rw-r--r--libosmocore/include/osmocore/gsmtap.h62
2 files changed, 64 insertions, 1 deletions
diff --git a/libosmocore/include/osmocore/Makefile.am b/libosmocore/include/osmocore/Makefile.am
index 189c7676..f2132304 100644
--- a/libosmocore/include/osmocore/Makefile.am
+++ b/libosmocore/include/osmocore/Makefile.am
@@ -1,4 +1,5 @@
osmocore_HEADERS = signal.h linuxlist.h timer.h talloc.h msgb.h select.h \
- tlv.h bitvec.h comp128.h statistics.h gsm_utils.h utils.h
+ tlv.h bitvec.h comp128.h statistics.h gsm_utils.h utils.h \
+ gsmtap.h
osmocoredir = $(includedir)/osmocore
diff --git a/libosmocore/include/osmocore/gsmtap.h b/libosmocore/include/osmocore/gsmtap.h
new file mode 100644
index 00000000..360f3628
--- /dev/null
+++ b/libosmocore/include/osmocore/gsmtap.h
@@ -0,0 +1,62 @@
+#ifndef _GSMTAP_H
+#define _GSMTAP_H
+
+/* gsmtap header, pseudo-header in front of the actua GSM payload*/
+
+#include <sys/types.h>
+
+#define GSMTAP_VERSION 0x01
+
+#define GSMTAP_TYPE_UM 0x01
+#define GSMTAP_TYPE_ABIS 0x02
+#define GSMTAP_TYPE_UM_BURST 0x03 /* raw burst bits */
+
+#define GSMTAP_BURST_UNKNOWN 0x00
+#define GSMTAP_BURST_FCCH 0x01
+#define GSMTAP_BURST_PARTIAL_SCH 0x02
+#define GSMTAP_BURST_SCH 0x03
+#define GSMTAP_BURST_CTS_SCH 0x04
+#define GSMTAP_BURST_COMPACT_SCH 0x05
+#define GSMTAP_BURST_NORMAL 0x06
+#define GSMTAP_BURST_DUMMY 0x07
+#define GSMTAP_BURST_ACCESS 0x08
+#define GSMTAP_BURST_NONE 0x09
+
+#define GSMTAP_UDP_PORT 4729
+
+struct gsmtap_hdr {
+ u_int8_t version; /* version, set to 0x01 currently */
+ u_int8_t hdr_len; /* length in number of 32bit words */
+ u_int8_t type; /* see GSMTAP_TYPE_* */
+ u_int8_t timeslot; /* timeslot (0..7 on Um) */
+
+ u_int16_t arfcn; /* ARFCN (frequency) */
+ u_int8_t noise_db; /* noise figure in dB */
+ u_int8_t signal_db; /* signal level in dB */
+
+ u_int32_t frame_number; /* GSM Frame Number (FN) */
+
+ u_int8_t burst_type; /* Type of burst, see above */
+ u_int8_t antenna_nr; /* Antenna Number */
+ u_int16_t res; /* reserved for future use (RFU) */
+
+} __attribute__((packed));
+
+
+/* PCAP related definitions */
+#define TCPDUMP_MAGIC 0xa1b2c3d4
+#ifndef LINKTYPE_GSMTAP
+#define LINKTYPE_GSMTAP 2342
+#endif
+struct pcap_timeval {
+ int32_t tv_sec;
+ int32_t tv_usec;
+};
+
+struct pcap_sf_pkthdr {
+ struct pcap_timeval ts; /* time stamp */
+ u_int32_t caplen; /* lenght of portion present */
+ u_int32_t len; /* length of this packet */
+};
+
+#endif /* _GSMTAP_H */