diff --git a/openbsc/src/vty_interface_cmds.c b/openbsc/src/vty_interface_cmds.c
index 8c78caa..4e5dc29 100644
--- a/openbsc/src/vty_interface_cmds.c
+++ b/openbsc/src/vty_interface_cmds.c
@@ -41,6 +41,23 @@
 		vty_out(vty, "\r");
 }
 
+struct buffer *vty_argv_to_buffer(int argc, const char *argv[], int base)
+{
+	struct buffer *b = buffer_new(NULL, 1024);
+	int i;
+
+	if (!b)
+		return NULL;
+
+	for (i = base; i < argc; i++) {
+		buffer_putstr(b, argv[i]);
+		buffer_putc(b, ' ');
+	}
+	buffer_putc(b, '\0');
+
+	return b;
+}
+
 struct log_target *log_target_create_vty(struct vty *vty)
 {
 	struct log_target *target;
@@ -307,6 +324,52 @@
 	return CMD_SUCCESS;
 }
 
+gDEFUN(cfg_description, cfg_description_cmd,
+	"description .TEXT",
+	"Save human-readable decription of the object\n")
+{
+	char **dptr = vty->index_sub;
+	struct buffer *b;
+
+	if (!dptr) {
+		vty_out(vty, "vty->index_sub == NULL%s", VTY_NEWLINE);
+		return CMD_WARNING;
+	}
+
+	b = vty_argv_to_buffer(argc, argv, 0);
+	if (!b)
+		return CMD_WARNING;
+
+	if (*dptr)
+		talloc_free(*dptr);
+
+	*dptr = talloc_strdup(NULL, buffer_getstr(b));
+
+	buffer_free(b);
+
+	return CMD_SUCCESS;
+}
+
+gDEFUN(cfg_no_description, cfg_no_description_cmd,
+	"no description",
+	NO_STR
+	"Remove description of the object\n")
+{
+	char **dptr = vty->index_sub;
+
+	if (!dptr) {
+		vty_out(vty, "vty->index_sub == NULL%s", VTY_NEWLINE);
+		return CMD_WARNING;
+	}
+
+	if (*dptr) {
+		talloc_free(*dptr);
+		*dptr = NULL;
+	}
+
+	return CMD_SUCCESS;
+}
+
 void openbsc_vty_print_statistics(struct vty *vty, struct gsm_network *net)
 {
 	vty_out(vty, "Channel Requests        : %lu total, %lu no channel%s",
