diff options
author | Harald Welte <laforge@gnumonks.org> | 2010-05-01 11:59:42 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2010-05-01 12:00:21 +0200 |
commit | a1c4f765eca695bf3d9c41d741bcab81989c8d48 (patch) | |
tree | 06670c450ceb9b71b031f67e8e0b7e1b05024f68 /include/osmocore | |
parent | 5ba4dc171b0d86ae3032c3732334481d9d399188 (diff) |
import gsm48_parse_ra() and gprs_tlli_type() from openbsc
Diffstat (limited to 'include/osmocore')
-rw-r--r-- | include/osmocore/gsm48.h | 11 | ||||
-rw-r--r-- | include/osmocore/gsm_utils.h | 12 | ||||
-rw-r--r-- | include/osmocore/protocol/gsm_04_08.h | 9 |
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 */ |