Merge commit '430be849945688ae107b079db1e216329b1a1f06'
[osmocom-bb.git] / src / shared / libosmocore / src / gsm / gsm0808.c
index 1640adc..01221bd 100644 (file)
@@ -159,7 +159,7 @@ struct msgb *gsm0808_create_cipher_reject(uint8_t cause)
        if (!msg)
                return NULL;
 
-       msg->l3h = msgb_put(msg, 3);
+       msg->l3h = msgb_put(msg, 4);
        msg->l3h[0] = BSSAP_MSG_BSS_MANAGEMENT;
        msg->l3h[1] = 2;
        msg->l3h[2] = BSS_MAP_MSG_CIPHER_MODE_REJECT;
@@ -363,7 +363,93 @@ static const struct tlv_definition bss_att_tlvdef = {
        },
 };
 
-const struct tlv_definition *gsm0808_att_tlvdef()
+const struct tlv_definition *gsm0808_att_tlvdef(void)
 {
        return &bss_att_tlvdef;
 }
+
+static const struct value_string gsm0808_msgt_names[] = {
+       { BSS_MAP_MSG_ASSIGMENT_RQST,           "ASSIGNMENT REQ" },
+       { BSS_MAP_MSG_ASSIGMENT_COMPLETE,       "ASSIGNMENT COMPL" },
+       { BSS_MAP_MSG_ASSIGMENT_FAILURE,        "ASSIGNMENT FAIL" },
+
+       { BSS_MAP_MSG_HANDOVER_RQST,            "HANDOVER REQ" },
+       { BSS_MAP_MSG_HANDOVER_REQUIRED,        "HANDOVER REQUIRED" },
+       { BSS_MAP_MSG_HANDOVER_RQST_ACKNOWLEDGE,"HANDOVER REQ ACK" },
+       { BSS_MAP_MSG_HANDOVER_CMD,             "HANDOVER CMD" },
+       { BSS_MAP_MSG_HANDOVER_COMPLETE,        "HANDOVER COMPLETE" },
+       { BSS_MAP_MSG_HANDOVER_SUCCEEDED,       "HANDOVER SUCCESS" },
+       { BSS_MAP_MSG_HANDOVER_FAILURE,         "HANDOVER FAILURE" },
+       { BSS_MAP_MSG_HANDOVER_PERFORMED,       "HANDOVER PERFORMED" },
+       { BSS_MAP_MSG_HANDOVER_CANDIDATE_ENQUIRE, "HANDOVER CAND ENQ" },
+       { 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_CLEAR_CMD,                "CLEAR COMMAND" },
+       { BSS_MAP_MSG_CLEAR_COMPLETE,           "CLEAR COMPLETE" },
+       { BSS_MAP_MSG_CLEAR_RQST,               "CLEAR REQUEST" },
+       { BSS_MAP_MSG_SAPI_N_REJECT,            "SAPI N REJECT" },
+       { BSS_MAP_MSG_CONFUSION,                "CONFUSION" },
+
+       { BSS_MAP_MSG_SUSPEND,                  "SUSPEND" },
+       { BSS_MAP_MSG_RESUME,                   "RESUME" },
+       { BSS_MAP_MSG_CONNECTION_ORIENTED_INFORMATION, "CONN ORIENT INFO" },
+       { BSS_MAP_MSG_PERFORM_LOCATION_RQST,    "PERFORM LOC REQ" },
+       { BSS_MAP_MSG_LSA_INFORMATION,          "LSA INFORMATION" },
+       { 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_RESET,                    "RESET" },
+       { BSS_MAP_MSG_RESET_ACKNOWLEDGE,        "RESET ACK" },
+       { BSS_MAP_MSG_OVERLOAD,                 "OVERLOAD" },
+       { BSS_MAP_MSG_RESET_CIRCUIT,            "RESET CIRCUIT" },
+       { BSS_MAP_MSG_RESET_CIRCUIT_ACKNOWLEDGE, "RESET CIRCUIT ACK" },
+       { 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_BLOCK,                    "BLOCK" },
+       { BSS_MAP_MSG_BLOCKING_ACKNOWLEDGE,     "BLOCK ACK" },
+       { BSS_MAP_MSG_UNBLOCK,                  "UNBLOCK" },
+       { BSS_MAP_MSG_UNBLOCKING_ACKNOWLEDGE,   "UNBLOCK ACK" },
+       { BSS_MAP_MSG_CIRCUIT_GROUP_BLOCK,      "CIRC GROUP BLOCK" },
+       { BSS_MAP_MSG_CIRCUIT_GROUP_BLOCKING_ACKNOWLEDGE, "CIRC GORUP BLOCK ACK" },
+       { BSS_MAP_MSG_CIRCUIT_GROUP_UNBLOCK,    "CIRC GROUP UNBLOCK" },
+       { BSS_MAP_MSG_CIRCUIT_GROUP_UNBLOCKING_ACKNOWLEDGE, "CIRC GROUP UNBLOCK ACK" },
+       { BSS_MAP_MSG_UNEQUIPPED_CIRCUIT,       "UNEQUIPPED CIRCUIT" },
+       { BSS_MAP_MSG_CHANGE_CIRCUIT,           "CHANGE CIRCUIT" },
+       { BSS_MAP_MSG_CHANGE_CIRCUIT_ACKNOWLEDGE, "CHANGE CIRCUIT ACK" },
+
+       { BSS_MAP_MSG_RESOURCE_RQST,            "RESOURCE REQ" },
+       { BSS_MAP_MSG_RESOURCE_INDICATION,      "RESOURCE IND" },
+       { BSS_MAP_MSG_PAGING,                   "PAGING" },
+       { BSS_MAP_MSG_CIPHER_MODE_CMD,          "CIPHER MODE CMD" },
+       { BSS_MAP_MSG_CLASSMARK_UPDATE,         "CLASSMARK UPDATE" },
+       { BSS_MAP_MSG_CIPHER_MODE_COMPLETE,     "CIPHER MODE COMPLETE" },
+       { BSS_MAP_MSG_QUEUING_INDICATION,       "QUEUING INDICATION" },
+       { BSS_MAP_MSG_COMPLETE_LAYER_3,         "COMPLETE LAYER 3" },
+       { BSS_MAP_MSG_CLASSMARK_RQST,           "CLASSMARK REQ" },
+       { BSS_MAP_MSG_CIPHER_MODE_REJECT,       "CIPHER MODE REJECT" },
+       { BSS_MAP_MSG_LOAD_INDICATION,          "LOAD IND" },
+
+       /* FIXME: VGCS/VBS */
+
+       { 0, NULL }
+};
+
+const char *gsm0808_bssmap_name(uint8_t msg_type)
+{
+       return get_value_string(gsm0808_msgt_names, msg_type);
+}
+
+static const struct value_string gsm0808_bssap_names[] = {
+       { BSSAP_MSG_BSS_MANAGEMENT,             "MANAGEMENT" },
+       { BSSAP_MSG_DTAP,                       "DTAP" },
+};
+
+const char *gsm0808_bssap_name(uint8_t msg_type)
+{
+       return get_value_string(gsm0808_bssap_names, msg_type);
+}