Harald Welte | 226ef1d | 2011-10-10 09:20:58 +0200 | [diff] [blame] | 1 | #ifndef PROTO_GSM_44_318_H |
| 2 | #define PROTO_GSM_44_318_H |
| 3 | |
| 4 | #include <stdint.h> |
| 5 | |
| 6 | /* Definitions according to 3GPP TS 44.318 6.8.0 Release 6 */ |
| 7 | |
Harald Welte | 53c815b | 2012-06-23 21:54:46 +0200 | [diff] [blame] | 8 | /* Table 11.1.1.2.1: Protocol Discriminator */ |
| 9 | enum gan_pdisc { |
| 10 | GA_PDISC_RC = 0, |
| 11 | GA_PDISC_CSR = 1, |
| 12 | GA_PDISC_PSR = 2, |
| 13 | }; |
| 14 | |
Harald Welte | 226ef1d | 2011-10-10 09:20:58 +0200 | [diff] [blame] | 15 | /* Table 11.1.1.4.1: Message types for URR */ |
| 16 | |
| 17 | enum gan_msg_type { |
| 18 | GA_MT_RC_DISCOVERY_REQUEST = 0x01, |
| 19 | GA_MT_RC_DISCOVERY_ACCEPT = 0x02, |
| 20 | GA_MT_RC_DISCOVERY_REJECT = 0x03, |
| 21 | |
| 22 | GA_MT_RC_REGISTER_REQUEST = 0x10, |
| 23 | GA_MT_RC_REGISTER_ACCEPT = 0x11, |
| 24 | GA_MT_RC_REGISTER_REDIRECT = 0x12, |
| 25 | GA_MT_RC_REGISTER_REJECT = 0x13, |
| 26 | GA_MT_RC_DEREGISTER = 0x14, |
| 27 | GA_MT_RC_REGISTER_UPDATE_UL = 0x15, |
| 28 | GA_MT_RC_REGISTER_UPDATE_DL = 0x16, |
| 29 | GA_MT_RC_CELL_BCAST_INFO = 0x17, |
| 30 | |
| 31 | GA_MT_CSR_CIPH_MODE_CMD = 0x20, |
| 32 | GA_MT_CSR_CIPH_MODE_COMPL = 0x21, |
| 33 | |
| 34 | GA_MT_CSR_ACT_CHAN = 0x30, |
| 35 | GA_MT_CSR_ACT_CHAN_ACK = 0x31, |
| 36 | GA_MT_CSR_ACT_CHAN_COMPL = 0x32, |
| 37 | GA_MT_CSR_ACT_CHAN_FAIL = 0x33, |
| 38 | GA_MT_CSR_CHAN_MODE_MOD = 0x34, |
| 39 | GA_MT_CSR_CHAN_MODE_MOD_ACK = 0x35, |
| 40 | |
| 41 | GA_MT_CSR_RELEASE = 0x40, |
| 42 | GA_MT_CSR_RELEASE_COMPL = 0x41, |
| 43 | GA_MT_CSR_CLEAR_REQ = 0x42, |
| 44 | |
| 45 | GA_MT_CSR_HO_ACCESS = 0x50, |
| 46 | GA_MT_CSR_HO_COMPL = 0x51, |
| 47 | GA_MT_CSR_UL_QUAL_IND = 0x52, |
| 48 | GA_MT_CSR_HO_INFO = 0x53, |
| 49 | GA_MT_CSR_HO_CMD = 0x54, |
| 50 | GA_MT_CSR_HO_FAIL = 0x55, |
| 51 | |
| 52 | GA_MT_CSR_PAGING_REQ = 0x60, |
| 53 | GA_MT_CSR_PAGING_RESP = 0x61, |
| 54 | |
| 55 | GA_MT_CSR_UL_DIRECT_XFER = 0x70, |
| 56 | GA_MT_CSR_DL_DIRECT_XFER = 0x72, |
| 57 | GA_MT_CSR_STATUS = 0x73, |
| 58 | GA_MT_RC_KEEPALIVE = 0x74, |
| 59 | GA_MT_CSR_CM_ENQ = 0x75, |
| 60 | GA_MT_CSR_CM_CHANGE = 0x76, |
Harald Welte | c2a25c6 | 2012-06-24 20:30:20 +0200 | [diff] [blame] | 61 | GA_MT_PSR_GPRS_SUSPEND_REQ = 0x77, |
| 62 | GA_RC_SYNC_INFO = 0x78, |
| 63 | GA_CSR_UTRAN_CM_CHG = 0x79, |
Harald Welte | 226ef1d | 2011-10-10 09:20:58 +0200 | [diff] [blame] | 64 | |
| 65 | GA_MT_CSR_REQUEST = 0x80, |
| 66 | GA_MT_CSR_REQUEST_ACCEPT = 0x81, |
| 67 | GA_MT_CSR_REQUEST_REJECT = 0x82, |
| 68 | }; |
| 69 | |
| 70 | /* All tables in 10.1.x and 10.2.x / Table 11.2.1 */ |
| 71 | enum gan_iei { |
| 72 | GA_IE_MI = 1, |
| 73 | GA_IE_GAN_RELEASE_IND = 2, |
| 74 | GA_IE_RADIO_IE = 3, |
| 75 | GA_IE_GERAN_CELL_ID = 4, |
| 76 | GA_IE_LAC = 5, |
| 77 | GA_IE_GERAN_COV_IND = 6, |
| 78 | GA_IE_GAN_CM = 7, |
| 79 | GA_IE_GEO_LOC = 8, |
| 80 | GA_IE_DEF_SEGW_IP = 9, |
| 81 | GA_IE_DEF_SEGW_FQDN = 10, |
| 82 | GA_IE_REDIR_CTR = 11, |
| 83 | GA_IE_DISCOV_REJ_CAUSE = 12, |
| 84 | GA_IE_GANC_CELL_DESC = 13, |
| 85 | GA_IE_GANC_CTRL_CH_DESC = 14, |
| 86 | GA_IE_GERAN_CELL_ID_LIST= 15, |
| 87 | GA_IE_TU3907_TIMER = 16, |
| 88 | GA_IE_RR_STATE = 17, |
| 89 | GA_IE_RAI = 18, |
| 90 | GA_IE_GAN_BAND = 19, |
| 91 | GA_IE_GARC_GACSR_STATE = 20, |
| 92 | GA_IE_REG_REJ_CAUSE = 21, |
| 93 | GA_IE_TU3906_TIMER = 22, |
| 94 | GA_IE_TU3910_TIMER = 23, |
Harald Welte | 327009e | 2012-06-29 21:14:52 +0200 | [diff] [blame] | 95 | GA_IE_TU3902_TIMER = 24, |
Harald Welte | 226ef1d | 2011-10-10 09:20:58 +0200 | [diff] [blame] | 96 | GA_IE_L3_MSG = 26, |
| 97 | GA_IE_CHAN_MODE = 27, |
| 98 | GA_IE_MS_CLASSMARK2 = 28, |
| 99 | GA_IE_RR_CAUSE = 29, |
| 100 | GA_EI_CIPH_MODE_SET = 30, |
| 101 | GA_IE_GPRS_RESUMPTION = 31, |
| 102 | GA_IE_HO_FROM_GAN_CMD = 32, |
| 103 | GA_IE_UL_QUAL_IND = 33, |
| 104 | GA_IE_TLLI = 34, |
| 105 | GA_IE_PFI = 35, |
| 106 | GA_IE_SUSP_CAUSE = 36, |
Harald Welte | 327009e | 2012-06-29 21:14:52 +0200 | [diff] [blame] | 107 | GA_IE_TU3920_TIMER = 37, |
Harald Welte | 226ef1d | 2011-10-10 09:20:58 +0200 | [diff] [blame] | 108 | GA_IE_REQD_QOS = 38, |
Harald Welte | 4498a0a | 2012-06-23 20:46:48 +0200 | [diff] [blame] | 109 | GA_IE_P_DEACT_CAUSE = 39, |
Harald Welte | 226ef1d | 2011-10-10 09:20:58 +0200 | [diff] [blame] | 110 | GA_IE_REQD_UL_RATE = 40, |
| 111 | GA_IE_RAC = 41, |
| 112 | GA_IE_AP_LOCATION = 42, |
| 113 | GA_IE_TU4001_TIMER = 43, |
| 114 | GA_IE_LOC_STATUS = 44, |
| 115 | GA_IE_CIPH_RESP = 45, |
| 116 | GA_IE_CIPH_RAND = 46, |
| 117 | GA_IE_CIPH_MAC = 47, |
| 118 | GA_IE_CKSN = 48, |
| 119 | GA_IE_SAPI_ID = 49, |
| 120 | GA_IE_EST_CAUSE = 50, |
| 121 | GA_IE_CHAN_NEEDED = 51, |
| 122 | GA_IE_PDU_IN_ERROR = 52, |
| 123 | GA_IE_SAMPLE_SIZE = 53, |
| 124 | GA_IE_PAYLOAD_TYPE = 54, |
| 125 | GA_IE_MULTIRATE_CONF = 55, |
| 126 | GA_IE_MS_CLASSMARK3 = 56, |
| 127 | GA_IE_LLC_PDU = 57, |
| 128 | GA_IE_LOC_BLACKL_IND = 58, |
| 129 | GA_IE_RESET_IND = 59, |
| 130 | GA_IE_TU4003_TIMER = 60, |
| 131 | GA_IE_AP_SERV_NAME = 61, |
| 132 | GA_IE_SERV_ZONE_INFO = 62, |
| 133 | GA_IE_RTP_RED_CONF = 63, |
| 134 | GA_IE_UTRAN_CLASSMARK = 64, |
| 135 | GA_IE_CM_ENQ_MASK = 65, |
| 136 | GA_IE_UTRAN_CELLID_LIST = 66, |
| 137 | GA_IE_SERV_GANC_TBL_IND = 67, |
| 138 | GA_IE_AP_REG_IND = 68, |
| 139 | GA_IE_GAN_PLMN_LIST = 69, |
| 140 | GA_IE_REQD_GAN_SERV = 71, |
| 141 | GA_IE_BCAST_CONTAINER = 72, |
| 142 | GA_IE_3G_CELL_ID = 73, |
| 143 | GA_IE_MS_RADIO_ID = 96, |
| 144 | GA_IE_DEF_GANC_IP = 97, |
| 145 | GA_IE_DEF_GANC_FQDN = 98, |
| 146 | GA_IE_GPRS_IP_ADDR = 99, |
Harald Welte | 4498a0a | 2012-06-23 20:46:48 +0200 | [diff] [blame] | 147 | GA_IE_GPRS_UDP_PORT = 100, |
Harald Welte | 226ef1d | 2011-10-10 09:20:58 +0200 | [diff] [blame] | 148 | GA_IE_GANC_TCP_PORT = 103, |
| 149 | GA_IE_RTP_UDP_PORT = 104, |
| 150 | GA_IE_RTCP_UDP_PORT = 105, |
| 151 | GA_IE_GERAN_RCV_SIGL_LIST = 106, |
| 152 | GA_IE_UTRAN_RCV_SIGL_LIST = 107, |
| 153 | }; |
| 154 | |
| 155 | /* 11.1.1 GA-RC and GA-CSR Message header IE */ |
| 156 | struct gan_rc_csr_hdr { |
| 157 | uint16_t len; |
| 158 | uint8_t pdisc:4, |
| 159 | skip_ind:4; |
| 160 | uint8_t msg_type; |
Harald Welte | 53c815b | 2012-06-23 21:54:46 +0200 | [diff] [blame] | 161 | uint8_t data[0]; |
Harald Welte | 226ef1d | 2011-10-10 09:20:58 +0200 | [diff] [blame] | 162 | } __attribute__((packed)); |
| 163 | |
Harald Welte | 2b1ab86 | 2012-06-24 16:52:46 +0200 | [diff] [blame] | 164 | /* 11.2.14.1: GAN Control Channel Description IE */ |
| 165 | struct gan_cch_desc_ie { |
Harald Welte | 7273994 | 2012-06-24 19:46:37 +0200 | [diff] [blame] | 166 | uint8_t spare:1, |
| 167 | ecmc:1, |
| 168 | nmo:2, |
| 169 | gprs:1, |
| 170 | dtm:1, |
| 171 | att:1, |
| 172 | mscr:1; |
| 173 | #if 0 |
Harald Welte | 2b1ab86 | 2012-06-24 16:52:46 +0200 | [diff] [blame] | 174 | uint8_t mscr:1, |
| 175 | att:1, |
| 176 | dtm:1, |
| 177 | gprs:1, |
| 178 | nmo:2, |
| 179 | ecmc:1, |
| 180 | spare:1; |
Harald Welte | 7273994 | 2012-06-24 19:46:37 +0200 | [diff] [blame] | 181 | #endif |
| 182 | uint8_t t3212; |
Harald Welte | 2b1ab86 | 2012-06-24 16:52:46 +0200 | [diff] [blame] | 183 | uint8_t rac; |
Harald Welte | 7273994 | 2012-06-24 19:46:37 +0200 | [diff] [blame] | 184 | uint8_t sgsnr:1, |
| 185 | ecmp:1, |
| 186 | re:1, |
| 187 | pfcfm:1, |
| 188 | tgecs:2, |
| 189 | spare2:2; |
| 190 | #if 0 |
Harald Welte | 2b1ab86 | 2012-06-24 16:52:46 +0200 | [diff] [blame] | 191 | uint8_t spare2:2, |
| 192 | tgecs:2, |
| 193 | pfcfm:1, |
| 194 | re:1, |
| 195 | ecmp:1, |
| 196 | sgsnr:1; |
Harald Welte | 7273994 | 2012-06-24 19:46:37 +0200 | [diff] [blame] | 197 | #endif |
Harald Welte | 2b1ab86 | 2012-06-24 16:52:46 +0200 | [diff] [blame] | 198 | uint8_t access_class[2]; |
| 199 | } __attribute__((packed)); |
Harald Welte | 226ef1d | 2011-10-10 09:20:58 +0200 | [diff] [blame] | 200 | #endif /* PROTO_GSM_44_318_H */ |