update TS 08.08 header + TLV definitions to TS 48.008 / 11.7.0
This adds support for A-over-IP and LCLS related message/IEI
definitions.
Old definitions are in decimal, which is very hard (at least for me)
to compare with the binary tables in the spec. Hex is much easier
to manually compare for completeness/correctness. I didn't touch
the existing definitions, but think they should move to hex, too.
diff --git a/src/gsm/gsm0808.c b/src/gsm/gsm0808.c
index 06ee18e..d055da1 100644
--- a/src/gsm/gsm0808.c
+++ b/src/gsm/gsm0808.c
@@ -295,32 +295,136 @@
return msg;
}
+/* As per 3GPP TS 48.008 version 11.7.0 Release 11 */
static const struct tlv_definition bss_att_tlvdef = {
.def = {
+ [GSM0808_IE_CIRCUIT_IDENTITY_CODE] = { TLV_TYPE_FIXED, 2 },
+ [GSM0808_IE_CONNECTION_RELEASE_RQSTED] = { TLV_TYPE_TV },
+ [GSM0808_IE_RESOURCE_AVAILABLE] = { TLV_TYPE_FIXED, 21 },
+ [GSM0808_IE_CAUSE] = { TLV_TYPE_TLV },
[GSM0808_IE_IMSI] = { TLV_TYPE_TLV },
[GSM0808_IE_TMSI] = { TLV_TYPE_TLV },
- [GSM0808_IE_CELL_IDENTIFIER_LIST] = { TLV_TYPE_TLV },
- [GSM0808_IE_CHANNEL_NEEDED] = { TLV_TYPE_TV },
- [GSM0808_IE_EMLPP_PRIORITY] = { TLV_TYPE_TV },
- [GSM0808_IE_CHANNEL_TYPE] = { TLV_TYPE_TLV },
- [GSM0808_IE_PRIORITY] = { TLV_TYPE_TLV },
- [GSM0808_IE_CIRCUIT_IDENTITY_CODE] = { TLV_TYPE_FIXED, 2 },
- [GSM0808_IE_DOWNLINK_DTX_FLAG] = { TLV_TYPE_TV },
- [GSM0808_IE_INTERFERENCE_BAND_TO_USE] = { TLV_TYPE_TV },
- [GSM0808_IE_CLASSMARK_INFORMATION_T2] = { TLV_TYPE_TLV },
- [GSM0808_IE_GROUP_CALL_REFERENCE] = { TLV_TYPE_TLV },
- [GSM0808_IE_TALKER_FLAG] = { TLV_TYPE_T },
- [GSM0808_IE_CONFIG_EVO_INDI] = { TLV_TYPE_TV },
- [GSM0808_IE_LSA_ACCESS_CTRL_SUPPR] = { TLV_TYPE_TV },
- [GSM0808_IE_SERVICE_HANDOVER] = { TLV_TYPE_TLV },
- [GSM0808_IE_ENCRYPTION_INFORMATION] = { TLV_TYPE_TLV },
- [GSM0808_IE_CIPHER_RESPONSE_MODE] = { TLV_TYPE_TV },
- [GSM0808_IE_CELL_IDENTIFIER] = { TLV_TYPE_TLV },
- [GSM0808_IE_CHOSEN_CHANNEL] = { TLV_TYPE_TV },
- [GSM0808_IE_LAYER_3_INFORMATION] = { TLV_TYPE_TLV },
+ [GSM0808_IE_NUMBER_OF_MSS] = { TLV_TYPE_TV },
[GSM0808_IE_LAYER_3_HEADER_INFORMATION] = { TLV_TYPE_TLV },
- [GSM0808_IE_SPEECH_VERSION] = { TLV_TYPE_TV },
+ [GSM0808_IE_ENCRYPTION_INFORMATION] = { TLV_TYPE_TLV },
+ [GSM0808_IE_CHANNEL_TYPE] = { TLV_TYPE_TLV },
+ [GSM0808_IE_PERIODICITY] = { TLV_TYPE_TV },
+ [GSM0808_IE_EXTENDED_RESOURCE_INDICATOR]= { TLV_TYPE_TV },
+ [GSM0808_IE_TOTAL_RESOURCE_ACCESSIBLE] = { TLV_TYPE_FIXED, 4 },
+ [GSM0808_IE_LSA_IDENTIFIER] = { TLV_TYPE_TLV },
+ [GSM0808_IE_LSA_IDENTIFIER_LIST] = { TLV_TYPE_TLV },
+ [GSM0808_IE_LSA_IDENTIFIER_LIST] = { TLV_TYPE_TLV },
+ [GSM0808_IE_CELL_IDENTIFIER] = { TLV_TYPE_TLV },
+ [GSM0808_IE_PRIORITY] = { TLV_TYPE_TLV },
+ [GSM0808_IE_CLASSMARK_INFORMATION_T2] = { TLV_TYPE_TLV },
+ [GSM0808_IE_CLASSMARK_INFORMATION_T3] = { TLV_TYPE_TLV },
+ [GSM0808_IE_INTERFERENCE_BAND_TO_USE] = { TLV_TYPE_TV },
+ [GSM0808_IE_RR_CAUSE] = { TLV_TYPE_TV },
+ [GSM0808_IE_LSA_INFORMATION] = { TLV_TYPE_TLV },
+ [GSM0808_IE_LAYER_3_INFORMATION] = { TLV_TYPE_TLV },
+ [GSM0808_IE_DLCI] = { TLV_TYPE_TV },
+ [GSM0808_IE_DOWNLINK_DTX_FLAG] = { TLV_TYPE_TV },
+ [GSM0808_IE_CELL_IDENTIFIER_LIST] = { TLV_TYPE_TLV },
+ [GSM0808_IE_CELL_ID_LIST_SEGMENT] = { TLV_TYPE_TLV },
+ [GSM0808_IE_CELL_ID_LIST_SEG_EST_CELLS] = { TLV_TYPE_TLV },
+ [GSM0808_IE_CELL_ID_LIST_SEG_CELLS_TBE] = { TLV_TYPE_TLV },
+ [GSM0808_IE_CELL_ID_LIST_SEG_REL_CELLS] = { TLV_TYPE_TLV },
+ [GSM0808_IE_CELL_ID_LIST_SEG_NE_CELLS] = { TLV_TYPE_TLV },
+ [GSM0808_IE_RESPONSE_RQST] = { TLV_TYPE_T },
+ [GSM0808_IE_RESOURCE_INDICATION_METHOD] = { TLV_TYPE_TV },
+ [GSM0808_IE_CLASSMARK_INFORMATION_TYPE_1] = { TLV_TYPE_TV },
+ [GSM0808_IE_CIRCUIT_IDENTITY_CODE_LIST] = { TLV_TYPE_TLV },
+ [GSM0808_IE_DIAGNOSTIC] = { TLV_TYPE_TLV },
+ [GSM0808_IE_CHOSEN_CHANNEL] = { TLV_TYPE_TV },
+ [GSM0808_IE_CIPHER_RESPONSE_MODE] = { TLV_TYPE_TV },
+ [GSM0808_IE_LAYER_3_MESSAGE_CONTENTS] = { TLV_TYPE_TLV },
+ [GSM0808_IE_CHANNEL_NEEDED] = { TLV_TYPE_TV },
+ [GSM0808_IE_TRACE_TYPE] = { TLV_TYPE_TV },
+ [GSM0808_IE_TRIGGERID] = { TLV_TYPE_TLV },
+ [GSM0808_IE_TRACE_REFERENCE] = { TLV_TYPE_TV },
+ [GSM0808_IE_TRANSACTIONID] = { TLV_TYPE_TLV },
+ [GSM0808_IE_MOBILE_IDENTITY] = { TLV_TYPE_TLV },
+ [GSM0808_IE_OMCID] = { TLV_TYPE_TLV },
+ [GSM0808_IE_FORWARD_INDICATOR] = { TLV_TYPE_TV },
[GSM0808_IE_CHOSEN_ENCR_ALG] = { TLV_TYPE_TV },
+ [GSM0808_IE_CIRCUIT_POOL] = { TLV_TYPE_TV },
+ [GSM0808_IE_CIRCUIT_POOL_LIST] = { TLV_TYPE_TLV },
+ [GSM0808_IE_TIME_INDICATION] = { TLV_TYPE_TV },
+ [GSM0808_IE_RESOURCE_SITUATION] = { TLV_TYPE_TLV },
+ [GSM0808_IE_CURRENT_CHANNEL_TYPE_1] = { TLV_TYPE_TV },
+ [GSM0808_IE_QUEUEING_INDICATOR] = { TLV_TYPE_TV },
+ [GSM0808_IE_SPEECH_VERSION] = { TLV_TYPE_TV },
+ [GSM0808_IE_ASSIGNMENT_REQUIREMENT] = { TLV_TYPE_TV },
+ [GSM0808_IE_TALKER_FLAG] = { TLV_TYPE_T },
+ [GSM0808_IE_GROUP_CALL_REFERENCE] = { TLV_TYPE_TLV },
+ [GSM0808_IE_EMLPP_PRIORITY] = { TLV_TYPE_TV },
+ [GSM0808_IE_CONFIG_EVO_INDI] = { TLV_TYPE_TV },
+ [GSM0808_IE_OLD_BSS_TO_NEW_BSS_INFORMATION] = { TLV_TYPE_TLV },
+ [GSM0808_IE_LCS_QOS] = { TLV_TYPE_TLV },
+ [GSM0808_IE_LSA_ACCESS_CTRL_SUPPR] = { TLV_TYPE_TV },
+ [GSM0808_IE_LCS_PRIORITY] = { TLV_TYPE_TLV },
+ [GSM0808_IE_LOCATION_TYPE] = { TLV_TYPE_TLV },
+ [GSM0808_IE_LOCATION_ESTIMATE] = { TLV_TYPE_TLV },
+ [GSM0808_IE_POSITIONING_DATA] = { TLV_TYPE_TLV },
+ [GSM0808_IE_LCS_CAUSE] = { TLV_TYPE_TLV },
+ [GSM0808_IE_APDU] = { TLV_TYPE_TLV },
+ [GSM0808_IE_NETWORK_ELEMENT_IDENTITY] = { TLV_TYPE_TLV },
+ [GSM0808_IE_GPS_ASSISTANCE_DATA] = { TLV_TYPE_TLV },
+ [GSM0808_IE_DECIPHERING_KEYS] = { TLV_TYPE_TLV },
+ [GSM0808_IE_RETURN_ERROR_RQST] = { TLV_TYPE_TLV },
+ [GSM0808_IE_RETURN_ERROR_CAUSE] = { TLV_TYPE_TLV },
+ [GSM0808_IE_SEGMENTATION] = { TLV_TYPE_TLV },
+ [GSM0808_IE_SERVICE_HANDOVER] = { TLV_TYPE_TLV },
+ [GSM0808_IE_SOURCE_RNC_TO_TARGET_RNC_TRANSPARENT_UMTS] = { TLV_TYPE_TLV },
+ [GSM0808_IE_SOURCE_RNC_TO_TARGET_RNC_TRANSPARENT_CDMA2000] = { TLV_TYPE_TLV },
+ [GSM0808_IE_GERAN_CLASSMARK] = { TLV_TYPE_TLV },
+ [GSM0808_IE_GERAN_BSC_CONTAINER] = { TLV_TYPE_TLV },
+ [GSM0808_IE_NEW_BSS_TO_OLD_BSS_INFO] = { TLV_TYPE_TLV },
+ [GSM0800_IE_INTER_SYSTEM_INFO] = { TLV_TYPE_TLV },
+ [GSM0808_IE_SNA_ACCESS_INFO] = { TLV_TYPE_TLV },
+ [GSM0808_IE_VSTK_RAND_INFO] = { TLV_TYPE_TLV },
+ [GSM0808_IE_PAGING_INFO] = { TLV_TYPE_TV },
+ [GSM0808_IE_IMEI] = { TLV_TYPE_TLV },
+ [GSM0808_IE_VELOCITY_ESTIMATE] = { TLV_TYPE_TLV },
+ [GSM0808_IE_VGCS_FEATURE_FLAGS] = { TLV_TYPE_TLV },
+ [GSM0808_IE_TALKER_PRIORITY] = { TLV_TYPE_TV },
+ [GSM0808_IE_EMERGENCY_SET_INDICATION] = { TLV_TYPE_T },
+ [GSM0808_IE_TALKER_IDENTITY] = { TLV_TYPE_TLV },
+ [GSM0808_IE_SMS_TO_VGCS] = { TLV_TYPE_TLV },
+ [GSM0808_IE_VGCS_TALKER_MODE] = { TLV_TYPE_TLV },
+ [GSM0808_IE_VGCS_VBS_CELL_STATUS] = { TLV_TYPE_TLV },
+ [GSM0808_IE_GANSS_ASSISTANCE_DATA] = { TLV_TYPE_TLV },
+ [GSM0808_IE_GANSS_POSITIONING_DATA] = { TLV_TYPE_TLV },
+ [GSM0808_IE_GANSS_LOCATION_TYPE] = { TLV_TYPE_TLV },
+ [GSM0808_IE_APP_DATA] = { TLV_TYPE_TLV },
+ [GSM0808_IE_DATA_IDENTITY] = { TLV_TYPE_TLV },
+ [GSM0808_IE_APP_DATA_INFO] = { TLV_TYPE_TLV },
+ [GSM0808_IE_MSISDN] = { TLV_TYPE_TLV },
+ [GSM0808_IE_AOIP_TRASP_ADDR] = { TLV_TYPE_TLV },
+ [GSM0808_IE_SPEECH_CODEC_LIST] = { TLV_TYPE_TLV },
+ [GSM0808_IE_SPEECH_CODEC] = { TLV_TYPE_TLV },
+ [GSM0808_IE_CALL_ID] = { TLV_TYPE_FIXED, 4 },
+ [GSM0808_IE_CALL_ID_LIST] = { TLV_TYPE_TLV },
+ [GSM0808_IE_A_IF_SEL_FOR_RESET] = { TLV_TYPE_TV },
+ [GSM0808_IE_KC_128] = { TLV_TYPE_FIXED, 16 },
+ [GSM0808_IE_CSG_IDENTIFIER] = { TLV_TYPE_TLV },
+ [GSM0808_IE_REDIR_ATTEMPT_FLAG] = { TLV_TYPE_T },
+ [GSM0808_IE_REROUTE_REJ_CAUSE] = { TLV_TYPE_TV },
+ [GSM0808_IE_SEND_SEQ_NUM] = { TLV_TYPE_TV },
+ [GSM0808_IE_REROUTE_COMPL_OUTCOME] = { TLV_TYPE_TV },
+ [GSM0808_IE_GLOBAL_CALL_REF] = { TLV_TYPE_TLV },
+ [GSM0808_IE_LCLS_CONFIG] = { TLV_TYPE_TV },
+ [GSM0808_IE_LCLS_CONN_STATUS_CTRL] = { TLV_TYPE_TV },
+ [GSM0808_IE_LCLS_CORR_NOT_NEEDED] = { TLV_TYPE_TV },
+ [GSM0808_IE_LCLS_BSS_STATUS] = { TLV_TYPE_TV },
+ [GSM0808_IE_LCLS_BREAK_REQ] = { TLV_TYPE_TV },
+ [GSM0808_IE_CSFB_INDICATION] = { TLV_TYPE_T },
+ [GSM0808_IE_CS_TO_PS_SRVCC] = { TLV_TYPE_T },
+ [GSM0808_IE_SRC_ENB_TO_TGT_ENB_TRANSP] = { TLV_TYPE_TLV },
+ [GSM0808_IE_CS_TO_PS_SRVCC_IND] = { TLV_TYPE_T },
+ [GSM0808_IE_CN_TO_MS_TRANSP_INFO] = { TLV_TYPE_TLV },
+ [GSM0808_IE_SELECTED_PLMN_ID] = { TLV_TYPE_FIXED, 3 },
+ [GSM0808_IE_LAST_USED_EUTRAN_PLMN_ID] = { TLV_TYPE_FIXED, 3 },
},
};
@@ -333,6 +437,7 @@
{ BSS_MAP_MSG_ASSIGMENT_RQST, "ASSIGNMENT REQ" },
{ BSS_MAP_MSG_ASSIGMENT_COMPLETE, "ASSIGNMENT COMPL" },
{ BSS_MAP_MSG_ASSIGMENT_FAILURE, "ASSIGNMENT FAIL" },
+ { BSS_MAP_MSG_CHAN_MOD_RQST, "CHANNEL MODIFY REQUEST" },
{ BSS_MAP_MSG_HANDOVER_RQST, "HANDOVER REQ" },
{ BSS_MAP_MSG_HANDOVER_REQUIRED, "HANDOVER REQUIRED" },
@@ -346,6 +451,10 @@
{ BSS_MAP_MSG_HANDOVER_CANDIDATE_RESPONSE, "HANDOVER CAND RESP" },
{ BSS_MAP_MSG_HANDOVER_REQUIRED_REJECT, "HANDOVER REQ REJ" },
{ BSS_MAP_MSG_HANDOVER_DETECT, "HANDOVER DETECT" },
+ { BSS_MAP_MSG_INT_HANDOVER_REQUIRED, "INT HANDOVER REQ" },
+ { BSS_MAP_MSG_INT_HANDOVER_REQUIRED_REJ,"INT HANDOVER REQ REJ" },
+ { BSS_MAP_MSG_INT_HANDOVER_CMD, "INT HANDOVER CMD" },
+ { BSS_MAP_MSG_INT_HANDOVER_ENQUIRY, "INT HANDOVER ENQ" },
{ BSS_MAP_MSG_CLEAR_CMD, "CLEAR COMMAND" },
{ BSS_MAP_MSG_CLEAR_COMPLETE, "CLEAR COMPLETE" },
@@ -361,6 +470,8 @@
{ BSS_MAP_MSG_PERFORM_LOCATION_RESPONSE, "PERFORM LOC RESP" },
{ BSS_MAP_MSG_PERFORM_LOCATION_ABORT, "PERFORM LOC ABORT" },
{ BSS_MAP_MSG_COMMON_ID, "COMMON ID" },
+ { BSS_MAP_MSG_REROUTE_CMD, "REROUTE COMMAND" },
+ { BSS_MAP_MSG_REROUTE_COMPLETE, "REROUTE COMPLETE" },
{ BSS_MAP_MSG_RESET, "RESET" },
{ BSS_MAP_MSG_RESET_ACKNOWLEDGE, "RESET ACK" },
@@ -370,6 +481,8 @@
{ BSS_MAP_MSG_MSC_INVOKE_TRACE, "MSC INVOKE TRACE" },
{ BSS_MAP_MSG_BSS_INVOKE_TRACE, "BSS INVOKE TRACE" },
{ BSS_MAP_MSG_CONNECTIONLESS_INFORMATION, "CONNLESS INFO" },
+ { BSS_MAP_MSG_RESET_IP_RSRC, "RESET IP RESOURCE" },
+ { BSS_MAP_MSG_RESET_IP_RSRC_ACK, "RESET IP RESOURCE ACK" },
{ BSS_MAP_MSG_BLOCK, "BLOCK" },
{ BSS_MAP_MSG_BLOCKING_ACKNOWLEDGE, "BLOCK ACK" },
@@ -395,7 +508,27 @@
{ BSS_MAP_MSG_CIPHER_MODE_REJECT, "CIPHER MODE REJECT" },
{ BSS_MAP_MSG_LOAD_INDICATION, "LOAD IND" },
- /* FIXME: VGCS/VBS */
+ { BSS_MAP_MSG_VGCS_VBS_SETUP, "VGCS/VBS SETUP" },
+ { BSS_MAP_MSG_VGCS_VBS_SETUP_ACK, "VGCS/VBS SETUP ACK" },
+ { BSS_MAP_MSG_VGCS_VBS_SETUP_REFUSE, "VGCS/VBS SETUP REFUSE" },
+ { BSS_MAP_MSG_VGCS_VBS_ASSIGNMENT_RQST, "VGCS/VBS ASSIGN REQ" },
+ { BSS_MAP_MSG_VGCS_VBS_ASSIGNMENT_RESULT, "VGCS/VBS ASSIGN RES" },
+ { BSS_MAP_MSG_VGCS_VBS_ASSIGNMENT_FAILURE, "VGCS/VBS ASSIGN FAIL" },
+ { BSS_MAP_MSG_VGCS_VBS_QUEUING_INDICATION, "VGCS/VBS QUEUING IND" },
+ { BSS_MAP_MSG_UPLINK_RQST, "UPLINK REQ" },
+ { BSS_MAP_MSG_UPLINK_RQST_ACKNOWLEDGE, "UPLINK REQ ACK" },
+ { BSS_MAP_MSG_UPLINK_RQST_CONFIRMATION, "UPLINK REQ CONF" },
+ { BSS_MAP_MSG_UPLINK_RELEASE_INDICATION,"UPLINK REL IND" },
+ { BSS_MAP_MSG_UPLINK_REJECT_CMD, "UPLINK REJ CMD" },
+ { BSS_MAP_MSG_UPLINK_RELEASE_CMD, "UPLINK REL CMD" },
+ { BSS_MAP_MSG_UPLINK_SEIZED_CMD, "UPLINK SEIZED CMD" },
+ { BSS_MAP_MSG_VGCS_ADDL_INFO, "VGCS ADDL INFO" },
+ { BSS_MAP_MSG_NOTIFICATION_DATA, "NOTIF DATA" },
+ { BSS_MAP_MSG_UPLINK_APP_DATA, "UPLINK APP DATA" },
+
+ { BSS_MAP_MSG_LCLS_CONNECT_CTRL, "LCLS-CONNECT-CONTROL" },
+ { BSS_MAP_MSG_LCLS_CONNECT_CTRL_ACK, "CLS-CONNECT-CONTROL-ACK" },
+ { BSS_MAP_MSG_LCLS_NOTIFICATION, "LCLS-NOTIFICATION" },
{ 0, NULL }
};