diff --git a/openbsc/src/libmsc/mncc.c b/openbsc/src/libmsc/mncc.c
index 2767faa..8110ead 100644
--- a/openbsc/src/libmsc/mncc.c
+++ b/openbsc/src/libmsc/mncc.c
@@ -26,85 +26,76 @@
 #include <string.h>
 #include <errno.h>
 
+#include <osmocom/core/talloc.h>
+#include <osmocom/core/utils.h>
+
 #include <openbsc/gsm_04_08.h>
 #include <openbsc/debug.h>
 #include <openbsc/mncc.h>
-#include <osmocom/core/talloc.h>
 #include <openbsc/gsm_data.h>
 #include <openbsc/transaction.h>
 #include <openbsc/rtp_proxy.h>
 
-static struct mncc_names {
-	char *name;
-	int value;
-} mncc_names[] = {
-	{"MNCC_SETUP_REQ",	0x0101},
-	{"MNCC_SETUP_IND",	0x0102},
-	{"MNCC_SETUP_RSP",	0x0103},
-	{"MNCC_SETUP_CNF",	0x0104},
-	{"MNCC_SETUP_COMPL_REQ",0x0105},
-	{"MNCC_SETUP_COMPL_IND",0x0106},
-	{"MNCC_CALL_CONF_IND",	0x0107},
-	{"MNCC_CALL_PROC_REQ",	0x0108},
-	{"MNCC_PROGRESS_REQ",	0x0109},
-	{"MNCC_ALERT_REQ",	0x010a},
-	{"MNCC_ALERT_IND",	0x010b},
-	{"MNCC_NOTIFY_REQ",	0x010c},
-	{"MNCC_NOTIFY_IND",	0x010d},
-	{"MNCC_DISC_REQ",	0x010e},
-	{"MNCC_DISC_IND",	0x010f},
-	{"MNCC_REL_REQ",	0x0110},
-	{"MNCC_REL_IND",	0x0111},
-	{"MNCC_REL_CNF",	0x0112},
-	{"MNCC_FACILITY_REQ",	0x0113},
-	{"MNCC_FACILITY_IND",	0x0114},
-	{"MNCC_START_DTMF_IND",	0x0115},
-	{"MNCC_START_DTMF_RSP",	0x0116},
-	{"MNCC_START_DTMF_REJ",	0x0117},
-	{"MNCC_STOP_DTMF_IND",	0x0118},
-	{"MNCC_STOP_DTMF_RSP",	0x0119},
-	{"MNCC_MODIFY_REQ",	0x011a},
-	{"MNCC_MODIFY_IND",	0x011b},
-	{"MNCC_MODIFY_RSP",	0x011c},
-	{"MNCC_MODIFY_CNF",	0x011d},
-	{"MNCC_MODIFY_REJ",	0x011e},
-	{"MNCC_HOLD_IND",	0x011f},
-	{"MNCC_HOLD_CNF",	0x0120},
-	{"MNCC_HOLD_REJ",	0x0121},
-	{"MNCC_RETRIEVE_IND",	0x0122},
-	{"MNCC_RETRIEVE_CNF",	0x0123},
-	{"MNCC_RETRIEVE_REJ",	0x0124},
-	{"MNCC_USERINFO_REQ",	0x0125},
-	{"MNCC_USERINFO_IND",	0x0126},
-	{"MNCC_REJ_REQ",	0x0127},
-	{"MNCC_REJ_IND",	0x0128},
 
-	{"MNCC_BRIDGE",		0x0200},
-	{"MNCC_FRAME_RECV",	0x0201},
-	{"MNCC_FRAME_DROP",	0x0202},
-	{"MNCC_LCHAN_MODIFY",	0x0203},
-	{"MNCC_RTP_CREATE",	0x0204},
-	{"MNCC_RTP_CONNECT",	0x0205},
-	{"MNCC_RTP_FREE",	0x0206},
+static const struct value_string mncc_names[] = {
+	{ MNCC_SETUP_REQ, "MNCC_SETUP_REQ" },
+	{ MNCC_SETUP_IND, "MNCC_SETUP_IND" },
+	{ MNCC_SETUP_RSP, "MNCC_SETUP_RSP" },
+	{ MNCC_SETUP_CNF, "MNCC_SETUP_CNF" },
+	{ MNCC_SETUP_COMPL_REQ, "MNCC_SETUP_COMPL_REQ" },
+	{ MNCC_SETUP_COMPL_IND, "MNCC_SETUP_COMPL_IND" },
+	{ MNCC_CALL_CONF_IND, "MNCC_CALL_CONF_IND" },
+	{ MNCC_CALL_PROC_REQ, "MNCC_CALL_PROC_REQ" },
+	{ MNCC_PROGRESS_REQ, "MNCC_PROGRESS_REQ" },
+	{ MNCC_ALERT_REQ, "MNCC_ALERT_REQ" },
+	{ MNCC_ALERT_IND, "MNCC_ALERT_IND" },
+	{ MNCC_NOTIFY_REQ, "MNCC_NOTIFY_REQ" },
+	{ MNCC_NOTIFY_IND, "MNCC_NOTIFY_IND" },
+	{ MNCC_DISC_REQ, "MNCC_DISC_REQ" },
+	{ MNCC_DISC_IND, "MNCC_DISC_IND" },
+	{ MNCC_REL_REQ, "MNCC_REL_REQ" },
+	{ MNCC_REL_IND, "MNCC_REL_IND" },
+	{ MNCC_REL_CNF, "MNCC_REL_CNF" },
+	{ MNCC_FACILITY_REQ, "MNCC_FACILITY_REQ" },
+	{ MNCC_FACILITY_IND, "MNCC_FACILITY_IND" },
+	{ MNCC_START_DTMF_IND, "MNCC_START_DTMF_IND" },
+	{ MNCC_START_DTMF_RSP, "MNCC_START_DTMF_RSP" },
+	{ MNCC_START_DTMF_REJ, "MNCC_START_DTMF_REJ" },
+	{ MNCC_STOP_DTMF_IND, "MNCC_STOP_DTMF_IND" },
+	{ MNCC_STOP_DTMF_RSP, "MNCC_STOP_DTMF_RSP" },
+	{ MNCC_MODIFY_REQ, "MNCC_MODIFY_REQ" },
+	{ MNCC_MODIFY_IND, "MNCC_MODIFY_IND" },
+	{ MNCC_MODIFY_RSP, "MNCC_MODIFY_RSP" },
+	{ MNCC_MODIFY_CNF, "MNCC_MODIFY_CNF" },
+	{ MNCC_MODIFY_REJ, "MNCC_MODIFY_REJ" },
+	{ MNCC_HOLD_IND, "MNCC_HOLD_IND" },
+	{ MNCC_HOLD_CNF, "MNCC_HOLD_CNF" },
+	{ MNCC_HOLD_REJ, "MNCC_HOLD_REJ" },
+	{ MNCC_RETRIEVE_IND, "MNCC_RETRIEVE_IND" },
+	{ MNCC_RETRIEVE_CNF, "MNCC_RETRIEVE_CNF" },
+	{ MNCC_RETRIEVE_REJ, "MNCC_RETRIEVE_REJ" },
+	{ MNCC_USERINFO_REQ, "MNCC_USERINFO_REQ" },
+	{ MNCC_USERINFO_IND, "MNCC_USERINFO_IND" },
+	{ MNCC_REJ_REQ, "MNCC_REJ_REQ" },
+	{ MNCC_REJ_IND, "MNCC_REJ_IND" },
+	{ MNCC_BRIDGE, "MNCC_BRIDGE" },
+	{ MNCC_FRAME_RECV, "MNCC_FRAME_RECV" },
+	{ MNCC_FRAME_DROP, "MNCC_FRAME_DROP" },
+	{ MNCC_LCHAN_MODIFY, "MNCC_LCHAN_MODIFY" },
+	{ MNCC_RTP_CREATE, "MNCC_RTP_CREATE" },
+	{ MNCC_RTP_CONNECT, "MNCC_RTP_CONNECT" },
+	{ MNCC_RTP_FREE, "MNCC_RTP_FREE" },
+	{ GSM_TCHF_FRAME, "GSM_TCHF_FRAME" },
+	{ GSM_TCHF_FRAME_EFR, "GSM_TCHF_FRAME_EFR" },
+	{ GSM_TCHH_FRAME, "GSM_TCHH_FRAME" },
+	{ GSM_TCH_FRAME_AMR, "GSM_TCH_FRAME_AMR" },
+	{ GSM_BAD_FRAME, "GSM_BAD_FRAME" },
+	{ 0, NULL },
+};
 
-	{"GSM_TCHF_FRAME",	0x0300},
-	{"GSM_TCHF_FRAME_EFR",	0x0301},
-	{"GSM_TCHH_FRAME",	0x0302},
-	{"GSM_TCH_FRAME_AMR",	0x0303},
-	{"GSM_BAD_FRAME",	0x03ff},
-
-	{NULL, 0} };
-
-char *get_mncc_name(int value)
+const char *get_mncc_name(int value)
 {
-	int i;
-
-	for (i = 0; mncc_names[i].name; i++) {
-		if (mncc_names[i].value == value)
-			return mncc_names[i].name;
-	}
-
-	return "MNCC_Unknown";
+	return get_value_string(mncc_names, value);
 }
 
 void mncc_set_cause(struct gsm_mncc *data, int loc, int val)
