libosmogsm
0.9.3
Osmocom GSM library
|
00001 #pragma once 00002 00003 #include <stdint.h> 00004 00005 /* Definitions according to 3GPP TS 44.318 6.8.0 Release 6 */ 00006 00007 /* Table 11.1.1.2.1: Protocol Discriminator */ 00008 enum gan_pdisc { 00009 GA_PDISC_RC = 0, 00010 GA_PDISC_CSR = 1, 00011 GA_PDISC_PSR = 2, 00012 }; 00013 00014 /* Table 11.1.1.4.1: Message types for URR */ 00015 00016 enum gan_msg_type { 00017 GA_MT_RC_DISCOVERY_REQUEST = 0x01, 00018 GA_MT_RC_DISCOVERY_ACCEPT = 0x02, 00019 GA_MT_RC_DISCOVERY_REJECT = 0x03, 00020 00021 GA_MT_RC_REGISTER_REQUEST = 0x10, 00022 GA_MT_RC_REGISTER_ACCEPT = 0x11, 00023 GA_MT_RC_REGISTER_REDIRECT = 0x12, 00024 GA_MT_RC_REGISTER_REJECT = 0x13, 00025 GA_MT_RC_DEREGISTER = 0x14, 00026 GA_MT_RC_REGISTER_UPDATE_UL = 0x15, 00027 GA_MT_RC_REGISTER_UPDATE_DL = 0x16, 00028 GA_MT_RC_CELL_BCAST_INFO = 0x17, 00029 00030 GA_MT_CSR_CIPH_MODE_CMD = 0x20, 00031 GA_MT_CSR_CIPH_MODE_COMPL = 0x21, 00032 00033 GA_MT_CSR_ACT_CHAN = 0x30, 00034 GA_MT_CSR_ACT_CHAN_ACK = 0x31, 00035 GA_MT_CSR_ACT_CHAN_COMPL = 0x32, 00036 GA_MT_CSR_ACT_CHAN_FAIL = 0x33, 00037 GA_MT_CSR_CHAN_MODE_MOD = 0x34, 00038 GA_MT_CSR_CHAN_MODE_MOD_ACK = 0x35, 00039 00040 GA_MT_CSR_RELEASE = 0x40, 00041 GA_MT_CSR_RELEASE_COMPL = 0x41, 00042 GA_MT_CSR_CLEAR_REQ = 0x42, 00043 00044 GA_MT_CSR_HO_ACCESS = 0x50, 00045 GA_MT_CSR_HO_COMPL = 0x51, 00046 GA_MT_CSR_UL_QUAL_IND = 0x52, 00047 GA_MT_CSR_HO_INFO = 0x53, 00048 GA_MT_CSR_HO_CMD = 0x54, 00049 GA_MT_CSR_HO_FAIL = 0x55, 00050 00051 GA_MT_CSR_PAGING_REQ = 0x60, 00052 GA_MT_CSR_PAGING_RESP = 0x61, 00053 00054 GA_MT_CSR_UL_DIRECT_XFER = 0x70, 00055 GA_MT_CSR_DL_DIRECT_XFER = 0x72, 00056 GA_MT_CSR_STATUS = 0x73, 00057 GA_MT_RC_KEEPALIVE = 0x74, 00058 GA_MT_CSR_CM_ENQ = 0x75, 00059 GA_MT_CSR_CM_CHANGE = 0x76, 00060 GA_MT_PSR_GPRS_SUSPEND_REQ = 0x77, 00061 GA_RC_SYNC_INFO = 0x78, 00062 GA_CSR_UTRAN_CM_CHG = 0x79, 00063 00064 GA_MT_CSR_REQUEST = 0x80, 00065 GA_MT_CSR_REQUEST_ACCEPT = 0x81, 00066 GA_MT_CSR_REQUEST_REJECT = 0x82, 00067 }; 00068 00069 /* All tables in 10.1.x and 10.2.x / Table 11.2.1 */ 00070 enum gan_iei { 00071 GA_IE_MI = 1, 00072 GA_IE_GAN_RELEASE_IND = 2, 00073 GA_IE_RADIO_IE = 3, 00074 GA_IE_GERAN_CELL_ID = 4, 00075 GA_IE_LAC = 5, 00076 GA_IE_GERAN_COV_IND = 6, 00077 GA_IE_GAN_CM = 7, 00078 GA_IE_GEO_LOC = 8, 00079 GA_IE_DEF_SEGW_IP = 9, 00080 GA_IE_DEF_SEGW_FQDN = 10, 00081 GA_IE_REDIR_CTR = 11, 00082 GA_IE_DISCOV_REJ_CAUSE = 12, 00083 GA_IE_GANC_CELL_DESC = 13, 00084 GA_IE_GANC_CTRL_CH_DESC = 14, 00085 GA_IE_GERAN_CELL_ID_LIST= 15, 00086 GA_IE_TU3907_TIMER = 16, 00087 GA_IE_RR_STATE = 17, 00088 GA_IE_RAI = 18, 00089 GA_IE_GAN_BAND = 19, 00090 GA_IE_GARC_GACSR_STATE = 20, 00091 GA_IE_REG_REJ_CAUSE = 21, 00092 GA_IE_TU3906_TIMER = 22, 00093 GA_IE_TU3910_TIMER = 23, 00094 GA_IE_TU3902_TIMER = 24, 00095 GA_IE_L3_MSG = 26, 00096 GA_IE_CHAN_MODE = 27, 00097 GA_IE_MS_CLASSMARK2 = 28, 00098 GA_IE_RR_CAUSE = 29, 00099 GA_EI_CIPH_MODE_SET = 30, 00100 GA_IE_GPRS_RESUMPTION = 31, 00101 GA_IE_HO_FROM_GAN_CMD = 32, 00102 GA_IE_UL_QUAL_IND = 33, 00103 GA_IE_TLLI = 34, 00104 GA_IE_PFI = 35, 00105 GA_IE_SUSP_CAUSE = 36, 00106 GA_IE_TU3920_TIMER = 37, 00107 GA_IE_REQD_QOS = 38, 00108 GA_IE_P_DEACT_CAUSE = 39, 00109 GA_IE_REQD_UL_RATE = 40, 00110 GA_IE_RAC = 41, 00111 GA_IE_AP_LOCATION = 42, 00112 GA_IE_TU4001_TIMER = 43, 00113 GA_IE_LOC_STATUS = 44, 00114 GA_IE_CIPH_RESP = 45, 00115 GA_IE_CIPH_RAND = 46, 00116 GA_IE_CIPH_MAC = 47, 00117 GA_IE_CKSN = 48, 00118 GA_IE_SAPI_ID = 49, 00119 GA_IE_EST_CAUSE = 50, 00120 GA_IE_CHAN_NEEDED = 51, 00121 GA_IE_PDU_IN_ERROR = 52, 00122 GA_IE_SAMPLE_SIZE = 53, 00123 GA_IE_PAYLOAD_TYPE = 54, 00124 GA_IE_MULTIRATE_CONF = 55, 00125 GA_IE_MS_CLASSMARK3 = 56, 00126 GA_IE_LLC_PDU = 57, 00127 GA_IE_LOC_BLACKL_IND = 58, 00128 GA_IE_RESET_IND = 59, 00129 GA_IE_TU4003_TIMER = 60, 00130 GA_IE_AP_SERV_NAME = 61, 00131 GA_IE_SERV_ZONE_INFO = 62, 00132 GA_IE_RTP_RED_CONF = 63, 00133 GA_IE_UTRAN_CLASSMARK = 64, 00134 GA_IE_CM_ENQ_MASK = 65, 00135 GA_IE_UTRAN_CELLID_LIST = 66, 00136 GA_IE_SERV_GANC_TBL_IND = 67, 00137 GA_IE_AP_REG_IND = 68, 00138 GA_IE_GAN_PLMN_LIST = 69, 00139 GA_IE_REQD_GAN_SERV = 71, 00140 GA_IE_BCAST_CONTAINER = 72, 00141 GA_IE_3G_CELL_ID = 73, 00142 GA_IE_MS_RADIO_ID = 96, 00143 GA_IE_DEF_GANC_IP = 97, 00144 GA_IE_DEF_GANC_FQDN = 98, 00145 GA_IE_GPRS_IP_ADDR = 99, 00146 GA_IE_GPRS_UDP_PORT = 100, 00147 GA_IE_GANC_TCP_PORT = 103, 00148 GA_IE_RTP_UDP_PORT = 104, 00149 GA_IE_RTCP_UDP_PORT = 105, 00150 GA_IE_GERAN_RCV_SIGL_LIST = 106, 00151 GA_IE_UTRAN_RCV_SIGL_LIST = 107, 00152 }; 00153 00154 /* 11.1.1 GA-RC and GA-CSR Message header IE */ 00155 struct gan_rc_csr_hdr { 00156 uint16_t len; 00157 uint8_t pdisc:4, 00158 skip_ind:4; 00159 uint8_t msg_type; 00160 uint8_t data[0]; 00161 } __attribute__((packed)); 00162 00163 /* 11.2.14.1: GAN Control Channel Description IE */ 00164 struct gan_cch_desc_ie { 00165 uint8_t spare:1, 00166 ecmc:1, 00167 nmo:2, 00168 gprs:1, 00169 dtm:1, 00170 att:1, 00171 mscr:1; 00172 #if 0 00173 uint8_t mscr:1, 00174 att:1, 00175 dtm:1, 00176 gprs:1, 00177 nmo:2, 00178 ecmc:1, 00179 spare:1; 00180 #endif 00181 uint8_t t3212; 00182 uint8_t rac; 00183 uint8_t sgsnr:1, 00184 ecmp:1, 00185 re:1, 00186 pfcfm:1, 00187 tgecs:2, 00188 spare2:2; 00189 #if 0 00190 uint8_t spare2:2, 00191 tgecs:2, 00192 pfcfm:1, 00193 re:1, 00194 ecmp:1, 00195 sgsnr:1; 00196 #endif 00197 uint8_t access_class[2]; 00198 } __attribute__((packed));