summaryrefslogtreecommitdiffstats
path: root/include/osmocore
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2010-05-01 11:59:42 +0200
committerHarald Welte <laforge@gnumonks.org>2010-05-01 12:00:21 +0200
commita1c4f765eca695bf3d9c41d741bcab81989c8d48 (patch)
tree06670c450ceb9b71b031f67e8e0b7e1b05024f68 /include/osmocore
parent5ba4dc171b0d86ae3032c3732334481d9d399188 (diff)
import gsm48_parse_ra() and gprs_tlli_type() from openbsc
Diffstat (limited to 'include/osmocore')
-rw-r--r--include/osmocore/gsm48.h11
-rw-r--r--include/osmocore/gsm_utils.h12
-rw-r--r--include/osmocore/protocol/gsm_04_08.h9
3 files changed, 31 insertions, 1 deletions
diff --git a/include/osmocore/gsm48.h b/include/osmocore/gsm48.h
index e3a1defa..9015c25b 100644
--- a/include/osmocore/gsm48.h
+++ b/include/osmocore/gsm48.h
@@ -4,6 +4,14 @@
#include <osmocore/protocol/gsm_04_08.h>
#include <osmocore/gsm48_ie.h>
+/* A parsed GPRS routing area */
+struct gprs_ra_id {
+ uint16_t mnc;
+ uint16_t mcc;
+ uint16_t lac;
+ uint8_t rac;
+};
+
extern const struct tlv_definition gsm48_att_tlvdef;
const char *gsm48_cc_state_name(uint8_t state);
const char *gsm48_cc_msg_name(uint8_t msgtype);
@@ -18,4 +26,7 @@ int gsm48_generate_mid_from_imsi(uint8_t *buf, const char *imsi);
int gsm48_mi_to_string(char *string, const int str_len,
const uint8_t *mi, const int mi_len);
+/* Parse Routeing Area Identifier */
+void gsm48_parse_ra(struct gprs_ra_id *raid, const uint8_t *buf);
+
#endif
diff --git a/include/osmocore/gsm_utils.h b/include/osmocore/gsm_utils.h
index 195e865c..51e9f2e6 100644
--- a/include/osmocore/gsm_utils.h
+++ b/include/osmocore/gsm_utils.h
@@ -87,5 +87,17 @@ void gsm_fn2gsmtime(struct gsm_time *time, uint32_t fn);
/* Convert from GSM time to frame number */
uint32_t gsm_gsmtime2fn(struct gsm_time *time);
+/* GSM TS 03.03 Chapter 2.6 */
+enum gprs_tlli_tyoe {
+ TLLI_LOCAL,
+ TLLI_FOREIGN,
+ TLLI_RANDOM,
+ TLLI_AUXILIARY,
+ TLLI_RESERVED,
+};
+
+/* TS 03.03 Chapter 2.6 */
+int gprs_tlli_type(uint32_t tlli);
+
void generate_backtrace();
#endif
diff --git a/include/osmocore/protocol/gsm_04_08.h b/include/osmocore/protocol/gsm_04_08.h
index 47b98b29..1a112a08 100644
--- a/include/osmocore/protocol/gsm_04_08.h
+++ b/include/osmocore/protocol/gsm_04_08.h
@@ -735,10 +735,17 @@ enum gsm48_bcap_rrq {
GSM48_BCAP_RRQ_DUAL_FR = 3,
};
-
#define GSM48_TMSI_LEN 5
#define GSM48_MID_TMSI_LEN (GSM48_TMSI_LEN + 2)
#define GSM48_MI_SIZE 32
+/* Chapter 10.4.4.15 */
+struct gsm48_ra_id {
+ uint8_t digits[3]; /* MCC + MNC BCD digits */
+ uint16_t lac; /* Location Area Code */
+ uint8_t rac; /* Routing Area Code */
+} __attribute__ ((packed));
+
+
#endif /* PROTO_GSM_04_08_H */