Harald Welte | 6721144 | 2018-10-07 20:10:57 +0200 | [diff] [blame] | 1 | #include <osmocom/core/utils.h> |
| 2 | #include <osmocom/gsm/tlv.h> |
| 3 | |
| 4 | #include <osmocom/gsm/protocol/gsm_29_118.h> |
| 5 | |
| 6 | const struct value_string sgsap_msg_type_names[] = { |
| 7 | { SGSAP_MSGT_PAGING_REQ, "PAGING-REQUEST" }, |
| 8 | { SGSAP_MSGT_PAGING_REJ, "PAGING-REJECT" }, |
| 9 | { SGSAP_MSGT_SERVICE_REQ, "SERVICE-REQUEST" }, |
| 10 | { SGSAP_MSGT_DL_UD, "DOWNLINK-UNITDATA" }, |
| 11 | { SGSAP_MSGT_UL_UD, "UPLINK-UNITDATA" }, |
| 12 | { SGSAP_MSGT_LOC_UPD_REQ, "LOCATION-UPDATE-REQUEST" }, |
| 13 | { SGSAP_MSGT_LOC_UPD_ACK, "LOCATION-UPDATE-ACCEPT" }, |
| 14 | { SGSAP_MSGT_LOC_UPD_REJ, "LOCATION-UPDATE-REJECT" }, |
| 15 | { SGSAP_MSGT_TMSI_REALL_CMPL, "TMSI-REALLOCATION-COMPLETE" }, |
| 16 | { SGSAP_MSGT_ALERT_REQ, "ALERT-REQQUEST" }, |
| 17 | { SGSAP_MSGT_ALERT_ACK, "ALERT-ACK" }, |
| 18 | { SGSAP_MSGT_ALERT_REJ, "ALERT-REJECT" }, |
| 19 | { SGSAP_MSGT_UE_ACT_IND, "UE-ACTIVITY-INDICATION" }, |
| 20 | { SGSAP_MSGT_EPS_DET_IND, "EPS-DETACH-INDICATION" }, |
| 21 | { SGSAP_MSGT_EPS_DET_ACK, "EPS-DETACH-ACK" }, |
| 22 | { SGSAP_MSGT_IMSI_DET_IND, "IMSI-DETACH-INDICATION" }, |
| 23 | { SGSAP_MSGT_IMSI_DET_ACK, "IMSI-DETACH-ACK" }, |
| 24 | { SGSAP_MSGT_RESET_IND, "RESET-INDICATION" }, |
| 25 | { SGSAP_MSGT_RESET_ACK, "RESET-ACK" }, |
| 26 | { SGSAP_MSGT_SERVICE_ABORT_REQ, "SERVICE-ABORT-REQUEST" }, |
| 27 | { SGSAP_MSGT_MO_CSFB_IND, "MO-CSFB-INDICATION" }, |
| 28 | { SGSAP_MSGT_MM_INFO_REQ, "MM-INFO-REQUEST" }, |
| 29 | { SGSAP_MSGT_RELEASE_REQ, "RELEASE-REQUEST" }, |
| 30 | { SGSAP_MSGT_STATUS, "STATUS" }, |
| 31 | { SGSAP_MSGT_UE_UNREACHABLE, "UE-UNREACHABLE" }, |
| 32 | { 0, NULL } |
| 33 | }; |
| 34 | |
Philipp Maier | 086b345 | 2018-11-15 15:04:29 +0100 | [diff] [blame] | 35 | const struct value_string sgsap_iei_names[] = { |
| 36 | { SGSAP_IE_IMSI, "IMSI" }, |
| 37 | { SGSAP_IE_VLR_NAME, "VLR-NAME" }, |
| 38 | { SGSAP_IE_TMSI, "TMSI" }, |
| 39 | { SGSAP_IE_LAI, "LAI" }, |
| 40 | { SGSAP_IE_CHAN_NEEDED, "CHAN-NEEDED" }, |
| 41 | { SGSAP_IE_EMLPP_PRIORITY, "EMLPP-PRIORITY" }, |
| 42 | { SGSAP_IE_TMSI_STATUS, "TMSI-STATUS" }, |
| 43 | { SGSAP_IE_SGS_CAUSE, "SGS-CAUSE" }, |
| 44 | { SGSAP_IE_MME_NAME, "MME-NAME" }, |
| 45 | { SGSAP_IE_EPS_LU_TYPE, "EPS-LU-TYPE" }, |
| 46 | { SGSAP_IE_GLOBAL_CN_ID, "GLOBAL-CN-ID" }, |
| 47 | { SGSAP_IE_MOBILE_ID, "MOBILE-ID" }, |
| 48 | { SGSAP_IE_REJECT_CAUSE, "REJECT-CAUSE" }, |
| 49 | { SGSAP_IE_IMSI_DET_EPS_TYPE, "IMSI-DET-EPS-TYPE" }, |
| 50 | { SGSAP_IE_IMSI_DET_NONEPS_TYPE, "IMSI-DET-NONEPS-TYPE" }, |
| 51 | { SGSAP_IE_IMEISV, "IMEISV" }, |
| 52 | { SGSAP_IE_NAS_MSG_CONTAINER, "NAS-MSG-CONTAINER" }, |
| 53 | { SGSAP_IE_MM_INFO, "MM-INFO" }, |
| 54 | { SGSAP_IE_ERR_MSG, "ERR-MSG" }, |
| 55 | { SGSAP_IE_CLI, "CLI" }, |
| 56 | { SGSAP_IE_LCS_CLIENT_ID, "LCS-CLIENT-ID" }, |
| 57 | { SGSAP_IE_LCS_INDICATOR, "LCS-INDICATOR" }, |
| 58 | { SGSAP_IE_SS_CODE, "SS-CODE" }, |
| 59 | { SGSAP_IE_SERVICE_INDICATOR, "SERVICE-INDICATOR" }, |
| 60 | { SGSAP_IE_UE_TIMEZONE, "UE-TIMEZONE" }, |
| 61 | { SGSAP_IE_MS_CLASSMARK2, "MS-CLASSMARK2" }, |
| 62 | { SGSAP_IE_TAI, "TAI" }, |
| 63 | { SGSAP_IE_EUTRAN_CGI, "EUTRAN-CGI" }, |
| 64 | { SGSAP_IE_UE_EMM_MODE, "UE-EMM-MODE" }, |
| 65 | { SGSAP_IE_ADDL_PAGING_INDICATORS, "ADDL-PAGING-INDICATORS" }, |
| 66 | { SGSAP_IE_TMSI_BASED_NRI_CONT, "TMSI-BASED-NRI-CONT" }, |
| 67 | { 0, NULL } |
| 68 | }; |
| 69 | |
Harald Welte | 6721144 | 2018-10-07 20:10:57 +0200 | [diff] [blame] | 70 | const struct value_string sgsap_eps_lu_type_names[] = { |
| 71 | { SGSAP_EPS_LUT_IMSI_ATTACH, "IMSI Attach" }, |
| 72 | { SGSAP_EPS_LUT_NORMAL, "Normal" }, |
| 73 | { 0, NULL } |
| 74 | }; |
| 75 | |
| 76 | const struct value_string sgsap_ismi_det_eps_type_names[] = { |
| 77 | { SGSAP_ID_EPS_T_NETWORK_INITIATED, "Network initiated IMSI detach from EPS" }, |
| 78 | { SGSAP_ID_EPS_T_UE_INITIATED, "UE initiated IMSI detach from EPS" }, |
| 79 | { SGSAP_ID_EPS_T_EPS_NOT_ALLOWED, "EPS not allowed" }, |
| 80 | { 0, NULL } |
| 81 | }; |
| 82 | |
| 83 | const struct value_string sgsap_ismi_det_noneps_type_names[] = { |
| 84 | { SGSAP_ID_NONEPS_T_EXPLICIT_UE_NONEPS, |
| 85 | "Explicit UE initiated IMSI detach from non-EPS" }, |
| 86 | { SGSAP_ID_NONEPS_T_COMBINED_UE_EPS_NONEPS, |
| 87 | "Combined UE initiated IMSI detach from EPS and non-EPS" }, |
| 88 | { SGSAP_ID_NONEPS_T_IMPLICIT_UE_EPS_NONEPS, |
| 89 | "Implicit network initiated IMSI detach from EPS and non-EPS" }, |
| 90 | { 0, NULL } |
| 91 | }; |
| 92 | |
| 93 | const struct value_string sgsap_service_ind_names[] = { |
| 94 | { SGSAP_SERV_IND_CS_CALL, "CS Call" }, |
| 95 | { SGSAP_SERV_IND_SMS, "SMS" }, |
| 96 | { 0, NULL } |
| 97 | }; |
| 98 | |
| 99 | const struct value_string sgsap_sgs_cause_names[] = { |
| 100 | { SGSAP_SGS_CAUSE_IMSI_DET_EPS, "IMSI detached for EPS" }, |
| 101 | { SGSAP_SGS_CAUSE_IMSI_DET_EPS_NONEPS, "IMSI detached for EPS and non-EPS" }, |
| 102 | { SGSAP_SGS_CAUSE_IMSI_UNKNOWN, "IMSI unknown" }, |
| 103 | { SGSAP_SGS_CAUSE_IMSI_DET_NON_EPS, "IMSI detached for non-EPS" }, |
| 104 | { SGSAP_SGS_CAUSE_IMSI_IMPL_DET_NON_EPS,"IMSI implicitly detached for non-EPS" }, |
| 105 | { SGSAP_SGS_CAUSE_UE_UNREACHABLE, "UE unreachable" }, |
| 106 | { SGSAP_SGS_CAUSE_MSG_INCOMP_STATE, "Message not compatible with protocol state" }, |
| 107 | { SGSAP_SGS_CAUSE_MISSING_MAND_IE, "Missing mandatory IE" }, |
| 108 | { SGSAP_SGS_CAUSE_INVALID_MAND_IE, "Invalid mandatory IE" }, |
| 109 | { SGSAP_SGS_CAUSE_COND_IE_ERROR, "Conditional IE error" }, |
| 110 | { SGSAP_SGS_CAUSE_SEMANT_INCORR_MSG, "Semantically incorrect message" }, |
| 111 | { SGSAP_SGS_CAUSE_MSG_UNKNOWN, "Message unknown" }, |
| 112 | { SGSAP_SGS_CAUSE_MT_CSFB_REJ_USER, "MT CSFB call rejected by user" }, |
| 113 | { SGSAP_SGS_CAUSE_UE_TEMP_UNREACHABLE, "UE temporarily unreachable" }, |
| 114 | { 0, NULL } |
| 115 | }; |
| 116 | |
| 117 | |
| 118 | const struct value_string sgsap_ue_emm_mode_names[] = { |
| 119 | { SGSAP_UE_EMM_MODE_IDLE, "EMM-IDLE" }, |
| 120 | { SGSAP_UE_EMM_MODE_CONNECTED, "EMM-CONNECTED" }, |
| 121 | { 0, NULL } |
| 122 | }; |
| 123 | |
| 124 | const struct tlv_definition sgsap_ie_tlvdef = { |
| 125 | .def = { |
| 126 | [SGSAP_IE_IMSI] = { TLV_TYPE_TLV }, |
| 127 | [SGSAP_IE_VLR_NAME] = { TLV_TYPE_TLV }, |
| 128 | [SGSAP_IE_TMSI] = { TLV_TYPE_TLV }, |
| 129 | [SGSAP_IE_LAI] = { TLV_TYPE_TLV }, |
| 130 | [SGSAP_IE_CHAN_NEEDED] = { TLV_TYPE_TLV }, |
| 131 | [SGSAP_IE_EMLPP_PRIORITY] = { TLV_TYPE_TLV }, |
| 132 | [SGSAP_IE_TMSI_STATUS] = { TLV_TYPE_TLV }, |
| 133 | [SGSAP_IE_SGS_CAUSE] = { TLV_TYPE_TLV }, |
| 134 | [SGSAP_IE_MME_NAME] = { TLV_TYPE_TLV }, |
| 135 | [SGSAP_IE_EPS_LU_TYPE] = { TLV_TYPE_TLV }, |
| 136 | [SGSAP_IE_GLOBAL_CN_ID] = { TLV_TYPE_TLV }, |
| 137 | [SGSAP_IE_MOBILE_ID] = { TLV_TYPE_TLV }, |
| 138 | [SGSAP_IE_REJECT_CAUSE] = { TLV_TYPE_TLV }, |
| 139 | [SGSAP_IE_IMSI_DET_EPS_TYPE] = { TLV_TYPE_TLV }, |
| 140 | [SGSAP_IE_IMSI_DET_NONEPS_TYPE] = { TLV_TYPE_TLV }, |
| 141 | [SGSAP_IE_IMEISV] = { TLV_TYPE_TLV }, |
| 142 | [SGSAP_IE_NAS_MSG_CONTAINER] = { TLV_TYPE_TLV }, |
| 143 | [SGSAP_IE_MM_INFO] = { TLV_TYPE_TLV }, |
| 144 | [SGSAP_IE_ERR_MSG] = { TLV_TYPE_TLV }, |
| 145 | [SGSAP_IE_CLI] = { TLV_TYPE_TLV }, |
| 146 | [SGSAP_IE_LCS_CLIENT_ID] = { TLV_TYPE_TLV }, |
| 147 | [SGSAP_IE_LCS_INDICATOR] = { TLV_TYPE_TLV }, |
| 148 | [SGSAP_IE_SS_CODE] = { TLV_TYPE_TLV }, |
| 149 | [SGSAP_IE_SERVICE_INDICATOR] = { TLV_TYPE_TLV }, |
| 150 | [SGSAP_IE_UE_TIMEZONE] = { TLV_TYPE_TLV }, |
| 151 | [SGSAP_IE_MS_CLASSMARK2] = { TLV_TYPE_TLV }, |
| 152 | [SGSAP_IE_TAI] = { TLV_TYPE_TLV }, |
| 153 | [SGSAP_IE_EUTRAN_CGI] = { TLV_TYPE_TLV }, |
| 154 | [SGSAP_IE_UE_EMM_MODE] = { TLV_TYPE_TLV }, |
| 155 | [SGSAP_IE_ADDL_PAGING_INDICATORS]={ TLV_TYPE_TLV }, |
| 156 | [SGSAP_IE_TMSI_BASED_NRI_CONT] = { TLV_TYPE_TLV }, |
| 157 | }, |
| 158 | }; |