diff --git a/.gitignore b/.gitignore
index ad8354e..48642ca 100644
--- a/.gitignore
+++ b/.gitignore
@@ -59,7 +59,7 @@
 tests/testsuite
 tests/testsuite.dir/
 tests/testsuite.log
-
+tests/ctrl/ctrl_test
 tests/utils/utils_test
 tests/stats/stats_test
 tests/kasumi/kasumi_test
diff --git a/include/osmocom/ctrl/control_cmd.h b/include/osmocom/ctrl/control_cmd.h
index a63557d..d82c9af 100644
--- a/include/osmocom/ctrl/control_cmd.h
+++ b/include/osmocom/ctrl/control_cmd.h
@@ -4,7 +4,7 @@
 #include <osmocom/core/talloc.h>
 #include <osmocom/core/write_queue.h>
 #include <osmocom/core/logging.h>
-
+#include <osmocom/core/utils.h>
 #include <osmocom/vty/vector.h>
 
 #define CTRL_CMD_ERROR		-1
@@ -22,7 +22,7 @@
 };
 
 enum ctrl_type {
-	CTRL_TYPE_UNKNOWN,
+	CTRL_TYPE_UNKNOWN = 0,
 	CTRL_TYPE_GET,
 	CTRL_TYPE_SET,
 	CTRL_TYPE_GET_REPLY,
@@ -31,6 +31,8 @@
 	CTRL_TYPE_ERROR
 };
 
+extern const struct value_string ctrl_type_vals[];
+
 struct ctrl_connection {
 	struct llist_head list_entry;
 
diff --git a/src/ctrl/control_cmd.c b/src/ctrl/control_cmd.c
index 2cf66cf..1cc8247 100644
--- a/src/ctrl/control_cmd.c
+++ b/src/ctrl/control_cmd.c
@@ -33,42 +33,22 @@
 
 #include <osmocom/core/msgb.h>
 #include <osmocom/core/talloc.h>
-
+#include <osmocom/core/utils.h>
 #include <osmocom/vty/command.h>
 #include <osmocom/vty/vector.h>
 
 extern vector ctrl_node_vec;
 
-static struct ctrl_cmd_map ccm[] = {
-	{"GET", CTRL_TYPE_GET},
-	{"SET", CTRL_TYPE_SET},
-	{"GET_REPLY", CTRL_TYPE_GET_REPLY},
-	{"SET_REPLY", CTRL_TYPE_SET_REPLY},
-	{"TRAP", CTRL_TYPE_TRAP},
-	{"ERROR", CTRL_TYPE_ERROR},
-	{NULL}
+const struct value_string ctrl_type_vals[] = {
+	{ CTRL_TYPE_GET,	"GET" },
+	{ CTRL_TYPE_SET,	"SET" },
+	{ CTRL_TYPE_GET_REPLY,	"GET_REPLY" },
+	{ CTRL_TYPE_SET_REPLY,	"SET_REPLY" },
+	{ CTRL_TYPE_TRAP,	"TRAP" },
+	{ CTRL_TYPE_ERROR,	"ERROR" },
+	{ CTRL_TYPE_UNKNOWN,	NULL }
 };
 
-static int ctrl_cmd_str2type(char *s)
-{
-	int i;
-	for (i=0; ccm[i].cmd != NULL; i++) {
-		if (strcasecmp(s, ccm[i].cmd) == 0)
-			return ccm[i].type;
-	}
-	return CTRL_TYPE_UNKNOWN;
-}
-
-static char *ctrl_cmd_type2str(int type)
-{
-	int i;
-	for (i=0; ccm[i].cmd != NULL; i++) {
-		if (ccm[i].type == type)
-			return ccm[i].cmd;
-	}
-	return NULL;
-}
-
 /* Functions from libosmocom */
 extern vector cmd_make_descvec(const char *string, const char *descstr);
 
@@ -308,7 +288,7 @@
 		goto err;
 	}
 
-	cmd->type = ctrl_cmd_str2type(tmp);
+	cmd->type = get_string_value(ctrl_type_vals, tmp);
 	if (cmd->type == CTRL_TYPE_UNKNOWN) {
 		cmd->type = CTRL_TYPE_ERROR;
 		cmd->id = "err";
@@ -403,7 +383,8 @@
 struct msgb *ctrl_cmd_make(struct ctrl_cmd *cmd)
 {
 	struct msgb *msg;
-	char *type, *tmp;
+	const char *type;
+	char *tmp;
 
 	if (!cmd->id)
 		return NULL;
@@ -412,7 +393,7 @@
 	if (!msg)
 		return NULL;
 
-	type = ctrl_cmd_type2str(cmd->type);
+	type = get_value_string(ctrl_type_vals, cmd->type);
 
 	switch (cmd->type) {
 	case CTRL_TYPE_GET:
diff --git a/tests/Makefile.am b/tests/Makefile.am
index f6d4db3..35b9150 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -11,7 +11,7 @@
 		 logging/logging_test fr/fr_test codec/codec_test	\
 		 loggingrb/loggingrb_test strrb/strrb_test              \
 		 vty/vty_test comp128/comp128_test utils/utils_test	\
-		 smscb/gsm0341_test stats/stats_test			\
+		 smscb/gsm0341_test stats/stats_test ctrl/ctrl_test	\
 		 bitvec/bitvec_test msgb/msgb_test bits/bitcomp_test	\
 		 tlv/tlv_test gsup/gsup_test oap/oap_test fsm/fsm_test	\
 		 write_queue/wqueue_test socket/socket_test
@@ -42,6 +42,9 @@
 auth_milenage_test_SOURCES = auth/milenage_test.c
 auth_milenage_test_LDADD = $(top_builddir)/src/libosmocore.la $(top_builddir)/src/gsm/libosmogsm.la
 
+ctrl_ctrl_test_SOURCES = ctrl/ctrl_test.c
+ctrl_ctrl_test_LDADD = $(top_builddir)/src/libosmocore.la $(top_builddir)/src/ctrl/libosmoctrl.la
+
 gea_gea_test_SOURCES = gea/gea_test.c
 gea_gea_test_LDADD = $(top_builddir)/src/libosmocore.la $(top_builddir)/src/gsm/libosmogsm.la
 
@@ -164,7 +167,7 @@
 EXTRA_DIST = testsuite.at $(srcdir)/package.m4 $(TESTSUITE)		\
              timer/timer_test.ok sms/sms_test.ok ussd/ussd_test.ok	\
              smscb/smscb_test.ok bits/bitrev_test.ok a5/a5_test.ok	\
-             conv/conv_test.ok auth/milenage_test.ok			\
+             conv/conv_test.ok auth/milenage_test.ok ctrl/ctrl_test.ok	\
              lapd/lapd_test.ok gsm0408/gsm0408_test.ok			\
              gsm0808/gsm0808_test.ok gb/bssgp_fc_tests.err		\
              gb/bssgp_fc_tests.ok gb/bssgp_fc_tests.sh			\
diff --git a/tests/ctrl/ctrl_test.c b/tests/ctrl/ctrl_test.c
new file mode 100644
index 0000000..3bbab76
--- /dev/null
+++ b/tests/ctrl/ctrl_test.c
@@ -0,0 +1,36 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+#include <stdbool.h>
+
+#include <osmocom/core/utils.h>
+#include <osmocom/ctrl/control_cmd.h>
+
+inline void check_type(enum ctrl_type c)
+{
+	const char *t = get_value_string(ctrl_type_vals, c);
+	int v = get_string_value(ctrl_type_vals, t);
+
+	printf("ctrl type %d is %s ", c, t);
+	if (v < 0)
+		printf("[PARSE FAILED]\n");
+	else
+		printf("-> %d %s\n", v, c != v ? "FAIL" : "OK");
+}
+
+int main(int argc, char **argv)
+{
+	printf("Checking ctrl types...\n");
+
+	check_type(CTRL_TYPE_UNKNOWN);
+	check_type(CTRL_TYPE_GET);
+	check_type(CTRL_TYPE_SET);
+	check_type(CTRL_TYPE_GET_REPLY);
+	check_type(CTRL_TYPE_SET_REPLY);
+	check_type(CTRL_TYPE_TRAP);
+	check_type(CTRL_TYPE_ERROR);
+	check_type(64);
+
+	return 0;
+}
diff --git a/tests/ctrl/ctrl_test.ok b/tests/ctrl/ctrl_test.ok
new file mode 100644
index 0000000..c4b05e9
--- /dev/null
+++ b/tests/ctrl/ctrl_test.ok
@@ -0,0 +1,9 @@
+Checking ctrl types...
+ctrl type 0 is unknown 0x0 [PARSE FAILED]
+ctrl type 1 is GET -> 1 OK
+ctrl type 2 is SET -> 2 OK
+ctrl type 3 is GET_REPLY -> 3 OK
+ctrl type 4 is SET_REPLY -> 4 OK
+ctrl type 5 is TRAP -> 5 OK
+ctrl type 6 is ERROR -> 6 OK
+ctrl type 64 is unknown 0x40 [PARSE FAILED]
diff --git a/tests/testsuite.at b/tests/testsuite.at
index a3be0e7..6d8c5d3 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -9,6 +9,12 @@
 AT_CHECK([$abs_top_builddir/tests/a5/a5_test], [0], [expout])
 AT_CLEANUP
 
+AT_SETUP([ctrl])
+AT_KEYWORDS([ctrl])
+cat $abs_srcdir/ctrl/ctrl_test.ok > expout
+AT_CHECK([$abs_top_builddir/tests/ctrl/ctrl_test], [0], [expout])
+AT_CLEANUP
+
 AT_SETUP([kasumi])
 AT_KEYWORDS([kasumi])
 cat $abs_srcdir/kasumi/kasumi_test.ok > expout
