add support for reading of configuration file to VTY
diff --git a/openbsc/src/vty/command.c b/openbsc/src/vty/command.c
index 6173292..4c9d2db 100644
--- a/openbsc/src/vty/command.c
+++ b/openbsc/src/vty/command.c
@@ -507,7 +507,6 @@
 /* This function write configuration of this host. */
 static int config_write_host(struct vty *vty)
 {
-#if 0
 	if (host.name)
 		vty_out(vty, "hostname %s%s", host.name, VTY_NEWLINE);
 
@@ -527,6 +526,7 @@
 				VTY_NEWLINE);
 	}
 
+#if 0
 	if (zlog_default->default_lvl != LOG_DEBUG) {
 		vty_out(vty, "! N.B. The 'log trap' command is deprecated.%s",
 			VTY_NEWLINE);
@@ -579,7 +579,7 @@
 
 	if (zlog_default->record_priority == 1)
 		vty_out(vty, "log record-priority%s", VTY_NEWLINE);
-
+#endif
 	if (host.advanced)
 		vty_out(vty, "service advanced-vty%s", VTY_NEWLINE);
 
@@ -596,7 +596,6 @@
 	else if (!host.motd)
 		vty_out(vty, "no banner motd%s", VTY_NEWLINE);
 
-#endif
 	return 1;
 }
 
diff --git a/openbsc/src/vty/vty.c b/openbsc/src/vty/vty.c
index 9962474..5472fa0 100644
--- a/openbsc/src/vty/vty.c
+++ b/openbsc/src/vty/vty.c
@@ -1373,6 +1373,39 @@
 	return 0;
 }
 
+/* Read up configuration file */
+static int
+vty_read_file(FILE *confp)
+{
+	int ret;
+	struct vty *vty;
+
+	vty = vty_new();
+	vty->fd = 0;
+	vty->type = VTY_FILE;
+	vty->node = CONFIG_NODE;
+
+	ret = config_from_file(vty, confp);
+
+	if (ret != CMD_SUCCESS) {
+		switch (ret) {
+		case CMD_ERR_AMBIGUOUS:
+			fprintf(stderr, "Ambiguous command.\n");
+			break;
+		case CMD_ERR_NO_MATCH:
+			fprintf(stderr, "Ther is no such command.\n");
+			break;
+		}
+		fprintf(stderr, "Error occurred during reading below "
+			"line:\n%s\n", vty->buf);
+		vty_close(vty);
+		return -EINVAL;
+	}
+
+	vty_close(vty);
+	return 0;
+}
+
 /* Create new vty structure. */
 struct vty *
 vty_create (int vty_sock, void *priv)
@@ -1648,7 +1681,19 @@
 #endif
 }
 
-static __attribute__((constructor)) void on_dso_load_vty(void)
+int vty_read_config_file(const char *file_name)
 {
-	tall_vty_ctx = talloc_named_const(NULL, 1, "vty");
+	FILE *cfile;
+	int rc;
+
+	cfile = fopen(file_name, "r");
+	if (!cfile)
+		return -ENOENT;
+
+	rc = vty_read_file(cfile);
+	fclose(cfile);
+
+	host_config_set(file_name);
+
+	return rc;
 }