diff --git a/include/osmocom/gprs/protocol/gsm_08_18.h b/include/osmocom/gprs/protocol/gsm_08_18.h index 31794551f..af6caf328 100644 --- a/include/osmocom/gprs/protocol/gsm_08_18.h +++ b/include/osmocom/gprs/protocol/gsm_08_18.h @@ -120,24 +120,61 @@ enum bssgp_iei_type { /*! Cause coding (Section 11.3.8 / Table 11.10) */ enum gprs_bssgp_cause { - BSSGP_CAUSE_PROC_OVERLOAD = 0x00, - BSSGP_CAUSE_EQUIP_FAIL = 0x01, - BSSGP_CAUSE_TRASIT_NET_FAIL = 0x02, - BSSGP_CAUSE_CAPA_GREATER_0KPBS = 0x03, - BSSGP_CAUSE_UNKNOWN_MS = 0x04, - BSSGP_CAUSE_UNKNOWN_BVCI = 0x05, - BSSGP_CAUSE_CELL_TRAF_CONG = 0x06, - BSSGP_CAUSE_SGSN_CONG = 0x07, - BSSGP_CAUSE_OML_INTERV = 0x08, - BSSGP_CAUSE_BVCI_BLOCKED = 0x09, - BSSGP_CAUSE_PFC_CREATE_FAIL = 0x0a, - BSSGP_CAUSE_SEM_INCORR_PDU = 0x20, - BSSGP_CAUSE_INV_MAND_INF = 0x21, - BSSGP_CAUSE_MISSING_MAND_IE = 0x22, - BSSGP_CAUSE_MISSING_COND_IE = 0x23, - BSSGP_CAUSE_UNEXP_COND_IE = 0x24, - BSSGP_CAUSE_COND_IE_ERR = 0x25, - BSSGP_CAUSE_PDU_INCOMP_STATE = 0x26, - BSSGP_CAUSE_PROTO_ERR_UNSPEC = 0x27, - BSSGP_CAUSE_PDU_INCOMP_FEAT = 0x28, + BSSGP_CAUSE_PROC_OVERLOAD = 0x00, + BSSGP_CAUSE_EQUIP_FAIL = 0x01, + BSSGP_CAUSE_TRASIT_NET_FAIL = 0x02, + BSSGP_CAUSE_CAPA_GREATER_0KPBS = 0x03, + BSSGP_CAUSE_UNKNOWN_MS = 0x04, + BSSGP_CAUSE_UNKNOWN_BVCI = 0x05, + BSSGP_CAUSE_CELL_TRAF_CONG = 0x06, + BSSGP_CAUSE_SGSN_CONG = 0x07, + BSSGP_CAUSE_OML_INTERV = 0x08, + BSSGP_CAUSE_BVCI_BLOCKED = 0x09, + BSSGP_CAUSE_PFC_CREATE_FAIL = 0x0a, + BSSGP_CAUSE_PFC_PREEMPTED = 0x0b, + BSSGP_CAUSE_ABQP_NOT_SUPP = 0x0c, + BSSGP_CAUSE_SEM_INCORR_PDU = 0x20, + BSSGP_CAUSE_INV_MAND_INF = 0x21, + BSSGP_CAUSE_MISSING_MAND_IE = 0x22, + BSSGP_CAUSE_MISSING_COND_IE = 0x23, + BSSGP_CAUSE_UNEXP_COND_IE = 0x24, + BSSGP_CAUSE_COND_IE_ERR = 0x25, + BSSGP_CAUSE_PDU_INCOMP_STATE = 0x26, + BSSGP_CAUSE_PROTO_ERR_UNSPEC = 0x27, + BSSGP_CAUSE_PDU_INCOMP_FEAT = 0x28, + BSSGP_CAUSE_REQ_INFO_NOT_AVAIL = 0x29, + BSSGP_CAUSE_UNKN_DST = 0x2a, + BSSGP_CAUSE_UNKN_RIM_AI = 0x2b, + BSSGP_CAUSE_INVAL_CONT_UI = 0x2c, + BSSGP_CAUSE_PFC_QUEUE = 0x2d, + BSSGP_CAUSE_PFC_CREATED = 0x2e, + BSSGP_CAUSE_T12_EXPIRY = 0x2f, + BSSGP_CAUSE_MS_UNDER_PS_HO = 0x30, + BSSGP_CAUSE_UL_QUALITY = 0x31, + BSSGP_CAUSE_UL_STRENGTH = 0x32, + BSSGP_CAUSE_DL_QUALITY = 0x33, + BSSGP_CAUSE_DL_STRENGTH = 0x34, + BSSGP_CAUSE_DISTANCE = 0x35, + BSSGP_CAUSE_BETTER_CELL = 0x36, + BSSGP_CAUSE_TRAFFIC = 0x37, + BSSGP_CAUSE_MS_RADIO_LOSS = 0x38, + BSSGP_CAUSE_MS_BACK_OLD_CHAN = 0x39, + BSSGP_CAUSE_T13_EXPIRY = 0x3a, + BSSGP_CAUSE_T14_EXPIRY = 0x3b, + BSSGP_CAUSE_NOT_ALL_PFC = 0x3c, + BSSGP_CAUSE_CS = 0x3d, + BSSGP_CAUSE_REQ_ALG_NOT_SUPP = 0x3e, + BSSGP_CAUSE_RELOC_FAIL = 0x3f, + BSSGP_CAUSE_DIR_RETRY = 0x40, + BSSGP_CAUSE_TIME_CRIT_RELOC = 0x41, + BSSGP_CAUSE_PS_HO_TARG_NA = 0x42, + BSSGP_CAUSE_PS_HO_TARG_NOT_SUPP = 0x43, + BSSGP_CAUSE_PUESBINE = 0x44, + BSSGP_CAUSE_DTM_HO_NO_CS_RES = 0x45, + BSSGP_CAUSE_DTM_HO_PS_ALLOC_FAIL = 0x46, + BSSGP_CAUSE_DTM_HO_T24_EXPIRY = 0x47, + BSSGP_CAUSE_DTM_HO_INVAL_CS_IND = 0x48, + BSSGP_CAUSE_DTM_HO_T23_EXPIRY = 0x49, + BSSGP_CAUSE_DTM_HO_MSC_ERR = 0x4a, + BSSGP_CAUSE_INVAL_CSG_CELL = 0x4b, }; diff --git a/src/gb/gprs_bssgp_util.c b/src/gb/gprs_bssgp_util.c index 78a11a36c..4553da843 100644 --- a/src/gb/gprs_bssgp_util.c +++ b/src/gb/gprs_bssgp_util.c @@ -39,26 +39,63 @@ struct gprs_ns_inst *bssgp_nsi; /* Chapter 11.3.9 / Table 11.10: Cause coding */ static const struct value_string bssgp_cause_strings[] = { - { BSSGP_CAUSE_PROC_OVERLOAD, "Processor overload" }, - { BSSGP_CAUSE_EQUIP_FAIL, "Equipment Failure" }, - { BSSGP_CAUSE_TRASIT_NET_FAIL, "Transit netowkr service failure" }, - { BSSGP_CAUSE_CAPA_GREATER_0KPBS,"Transmission capacity modified" }, - { BSSGP_CAUSE_UNKNOWN_MS, "Unknown MS" }, - { BSSGP_CAUSE_UNKNOWN_BVCI, "Unknown BVCI" }, - { BSSGP_CAUSE_CELL_TRAF_CONG, "Cell traffic congestion" }, - { BSSGP_CAUSE_SGSN_CONG, "SGSN congestion" }, - { BSSGP_CAUSE_OML_INTERV, "O&M intervention" }, - { BSSGP_CAUSE_BVCI_BLOCKED, "BVCI blocked" }, - { BSSGP_CAUSE_PFC_CREATE_FAIL, "PFC create failure" }, - { BSSGP_CAUSE_SEM_INCORR_PDU, "Semantically incorrect PDU" }, - { BSSGP_CAUSE_INV_MAND_INF, "Invalid mandatory information" }, - { BSSGP_CAUSE_MISSING_MAND_IE, "Missing mandatory IE" }, - { BSSGP_CAUSE_MISSING_COND_IE, "Missing conditional IE" }, - { BSSGP_CAUSE_UNEXP_COND_IE, "Unexpected conditional IE" }, - { BSSGP_CAUSE_COND_IE_ERR, "Conditional IE error" }, - { BSSGP_CAUSE_PDU_INCOMP_STATE, "PDU incompatible with protocol state" }, - { BSSGP_CAUSE_PROTO_ERR_UNSPEC, "Protocol error - unspecified" }, - { BSSGP_CAUSE_PDU_INCOMP_FEAT, "PDU not compatible with feature set" }, + { BSSGP_CAUSE_PROC_OVERLOAD, "Processor overload" }, + { BSSGP_CAUSE_EQUIP_FAIL, "Equipment Failure" }, + { BSSGP_CAUSE_TRASIT_NET_FAIL, "Transit netowkr service failure" }, + { BSSGP_CAUSE_CAPA_GREATER_0KPBS, "Transmission capacity modified" }, + { BSSGP_CAUSE_UNKNOWN_MS, "Unknown MS" }, + { BSSGP_CAUSE_UNKNOWN_BVCI, "Unknown BVCI" }, + { BSSGP_CAUSE_CELL_TRAF_CONG, "Cell traffic congestion" }, + { BSSGP_CAUSE_SGSN_CONG, "SGSN congestion" }, + { BSSGP_CAUSE_OML_INTERV, "O&M intervention" }, + { BSSGP_CAUSE_BVCI_BLOCKED, "BVCI blocked" }, + { BSSGP_CAUSE_PFC_CREATE_FAIL, "PFC create failure" }, + { BSSGP_CAUSE_PFC_PREEMPTED, "PFC preempted" }, + { BSSGP_CAUSE_ABQP_NOT_SUPP, "ABQP no more supported" }, + { BSSGP_CAUSE_SEM_INCORR_PDU, "Semantically incorrect PDU" }, + { BSSGP_CAUSE_INV_MAND_INF, "Invalid mandatory information" }, + { BSSGP_CAUSE_MISSING_MAND_IE, "Missing mandatory IE" }, + { BSSGP_CAUSE_MISSING_COND_IE, "Missing conditional IE" }, + { BSSGP_CAUSE_UNEXP_COND_IE, "Unexpected conditional IE" }, + { BSSGP_CAUSE_COND_IE_ERR, "Conditional IE error" }, + { BSSGP_CAUSE_PDU_INCOMP_STATE, "PDU incompatible with protocol state" }, + { BSSGP_CAUSE_PROTO_ERR_UNSPEC, "Protocol error - unspecified" }, + { BSSGP_CAUSE_PDU_INCOMP_FEAT, "PDU not compatible with feature set" }, + { BSSGP_CAUSE_REQ_INFO_NOT_AVAIL, "Requested Information not available" }, + { BSSGP_CAUSE_UNKN_DST , "Unknown Destination address" }, + { BSSGP_CAUSE_UNKN_RIM_AI, "Unknown RIM Application Identity or RIM application disabled" }, + { BSSGP_CAUSE_INVAL_CONT_UI, "Invalid Container Unit Information" }, + { BSSGP_CAUSE_PFC_QUEUE, "PFC queuing" }, + { BSSGP_CAUSE_PFC_CREATED, "PFC created successfully" }, + { BSSGP_CAUSE_T12_EXPIRY, "T12 expiry" }, + { BSSGP_CAUSE_MS_UNDER_PS_HO, "MS under PS Handover treatment" }, + { BSSGP_CAUSE_UL_QUALITY, "Uplink quality" }, + { BSSGP_CAUSE_UL_STRENGTH, "Uplink strength" }, + { BSSGP_CAUSE_DL_QUALITY, "Downlink quality" }, + { BSSGP_CAUSE_DL_STRENGTH, "Downlink strength" }, + { BSSGP_CAUSE_DISTANCE, "Distance" }, + { BSSGP_CAUSE_BETTER_CELL, "Better cell" }, + { BSSGP_CAUSE_TRAFFIC, "Traffic" }, + { BSSGP_CAUSE_MS_RADIO_LOSS, "Radio contact lost with MS" }, + { BSSGP_CAUSE_MS_BACK_OLD_CHAN, "MS back on old channel" }, + { BSSGP_CAUSE_T13_EXPIRY, "T13 expiry" }, + { BSSGP_CAUSE_T14_EXPIRY, "T14 expiry" }, + { BSSGP_CAUSE_NOT_ALL_PFC, "Not all requested PFCs created" }, + { BSSGP_CAUSE_CS, "CS cause" }, + { BSSGP_CAUSE_REQ_ALG_NOT_SUPP, "Requested ciphering and/or integrity protection algorithms not supported" }, + { BSSGP_CAUSE_RELOC_FAIL, "Relocation failure in target system" }, + { BSSGP_CAUSE_DIR_RETRY , "Directed Retry" }, + { BSSGP_CAUSE_TIME_CRIT_RELOC , "Time critical relocation" }, + { BSSGP_CAUSE_PS_HO_TARG_NA , "PS Handover Target not allowed" }, + { BSSGP_CAUSE_PS_HO_TARG_NOT_SUPP, "PS Handover not Supported in Target BSS or Target System" }, + { BSSGP_CAUSE_PUESBINE, "Incoming relocation not supported due to PUESBINE feature" }, + { BSSGP_CAUSE_DTM_HO_NO_CS_RES, "DTM Handover - No CS resource" }, + { BSSGP_CAUSE_DTM_HO_PS_ALLOC_FAIL, "DTM Handover - PS Allocation failure" }, + { BSSGP_CAUSE_DTM_HO_T24_EXPIRY, "DTM Handover - T24 expiry" }, + { BSSGP_CAUSE_DTM_HO_INVAL_CS_IND, "DTM Handover - Invalid CS Indication IE" }, + { BSSGP_CAUSE_DTM_HO_T23_EXPIRY, "DTM Handover - T23 expiry" }, + { BSSGP_CAUSE_DTM_HO_MSC_ERR, "DTM Handover - MSC Error" }, + { BSSGP_CAUSE_INVAL_CSG_CELL, "Invalid CSG cell" }, { 0, NULL }, };