blob: 81b9cc06e4ec4c25b2b8825715490b07dac5bec4 [file] [log] [blame]
Harald Welteec8b4502010-02-20 20:34:29 +01001#ifndef _GSMTAP_H
2#define _GSMTAP_H
3
4/* gsmtap header, pseudo-header in front of the actua GSM payload*/
5
6#include <stdint.h>
7
8#define GSMTAP_VERSION 0x01
9
10#define GSMTAP_TYPE_UM 0x01
11#define GSMTAP_TYPE_ABIS 0x02
12#define GSMTAP_TYPE_UM_BURST 0x03 /* raw burst bits */
13
14#define GSMTAP_BURST_UNKNOWN 0x00
15#define GSMTAP_BURST_FCCH 0x01
16#define GSMTAP_BURST_PARTIAL_SCH 0x02
17#define GSMTAP_BURST_SCH 0x03
18#define GSMTAP_BURST_CTS_SCH 0x04
19#define GSMTAP_BURST_COMPACT_SCH 0x05
20#define GSMTAP_BURST_NORMAL 0x06
21#define GSMTAP_BURST_DUMMY 0x07
22#define GSMTAP_BURST_ACCESS 0x08
23#define GSMTAP_BURST_NONE 0x09
24
25#define GSMTAP_UDP_PORT 4729
26
27struct gsmtap_hdr {
28 uint8_t version; /* version, set to 0x01 currently */
29 uint8_t hdr_len; /* length in number of 32bit words */
30 uint8_t type; /* see GSMTAP_TYPE_* */
31 uint8_t timeslot; /* timeslot (0..7 on Um) */
32
33 uint16_t arfcn; /* ARFCN (frequency) */
34 uint8_t noise_db; /* noise figure in dB */
35 uint8_t signal_db; /* signal level in dB */
36
37 uint32_t frame_number; /* GSM Frame Number (FN) */
38
39 uint8_t burst_type; /* Type of burst, see above */
40 uint8_t antenna_nr; /* Antenna Number */
41 uint16_t res; /* reserved for future use (RFU) */
42
43} __attribute__((packed));
44
45
46/* PCAP related definitions */
47#define TCPDUMP_MAGIC 0xa1b2c3d4
48#ifndef LINKTYPE_GSMTAP
49#define LINKTYPE_GSMTAP 2342
50#endif
51struct pcap_timeval {
52 int32_t tv_sec;
53 int32_t tv_usec;
54};
55
56struct pcap_sf_pkthdr {
57 struct pcap_timeval ts; /* time stamp */
58 uint32_t caplen; /* lenght of portion present */
59 uint32_t len; /* length of this packet */
60};
61
62#endif /* _GSMTAP_H */