blob: 2bc758375bdf95ceb3529f75bfc29e2ceb4b829d [file] [log] [blame]
Neels Hofmeyr17518fe2017-06-20 04:35:06 +02001/*! \file gsm23003.h */
2
Harald Weltebda26c02016-05-11 09:13:08 +02003#pragma once
Neels Hofmeyr17518fe2017-06-20 04:35:06 +02004
Harald Weltebda26c02016-05-11 09:13:08 +02005#include <stdint.h>
6
7/* 23.003 Chapter 12.1 */
8struct osmo_plmn_id {
9 uint16_t mcc;
10 uint16_t mnc;
11};
12
13/* 4.1 */
14struct osmo_location_area_id {
15 struct osmo_plmn_id plmn;
16 uint16_t lac;
17};
18
19/* 4.2 */
20struct osmo_routing_area_id {
21 struct osmo_location_area_id lac;
22 uint8_t rac;
23};
24
25/* 4.3.1 */
26struct osmo_cell_global_id {
27 struct osmo_location_area_id lai;
28 uint16_t cell_identity;
29};
30
31/* 12.5 */
32struct osmo_service_area_id {
33 struct osmo_location_area_id lai;
34 uint16_t sac;
35};
36
37/* 12.6 */
38struct osmo_shared_network_area_id {
39 struct osmo_plmn_id plmn;
40 uint32_t snac;
41};
42
43/* 5.1 */
44enum osmo_gsn_addr_type {
45 GSN_ADDR_TYPE_IPV4 = 0,
46 GSN_ADDR_TYPE_IPV6 = 1,
47};
48
49/* 5.1 */
50struct osmo_gsn_address {
51 enum osmo_gsn_addr_type type;
52 uint8_t length;
53 uint8_t addr[16];
54};
55
56/* 19.4.2.3 */
57struct osmo_tracking_area_id {
58 struct osmo_plmn_id plmn;
59 uint16_t tac;
60};
61
62struct osmo_eutran_cell_global_id {
63 struct osmo_plmn_id plmn;
64 uint32_t eci; /* FIXME */
65};
66
67/* 2.8.1 */
68struct osmo_mme_id {
69 uint16_t group_id;
70 uint8_t code;
71};
72
73/* 2.8.1 */
74struct osmo_gummei {
75 struct osmo_plmn_id plmn;
76 struct osmo_mme_id mme;
77};
78
79/* 2.8.1 */
80struct osmo_guti {
81 struct osmo_gummei gummei;
82 uint32_t mtmsi;
83};