gsm 08.08: add value_strings and gsm0808_msg_name() function
diff --git a/src/gsm/gsm0808.c b/src/gsm/gsm0808.c
index 1640adc..9cd70a0 100644
--- a/src/gsm/gsm0808.c
+++ b/src/gsm/gsm0808.c
@@ -367,3 +367,89 @@
 {
 	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);
+}