VTY: Add gtp state-dir command

The SGSN initialises GTP with gtp_statedir of "./" which may
not be the desired path for writing the gsn_restart file.
When starting from systemd for example, we might write
to the system root.

This patch allows override via the config file.

Closes: OS#4820
Change-Id: Ib3ffb7fd6ea1d9b0286111d8c2cba9da5394ca58
diff --git a/src/sgsn/sgsn_vty.c b/src/sgsn/sgsn_vty.c
index 14248d1..33a652c 100644
--- a/src/sgsn/sgsn_vty.c
+++ b/src/sgsn/sgsn_vty.c
@@ -186,6 +186,8 @@
 
 	vty_out(vty, "sgsn%s", VTY_NEWLINE);
 
+	vty_out(vty, " gtp state-dir %s%s",
+		g_cfg->gtp_statedir, VTY_NEWLINE);
 	vty_out(vty, " gtp local-ip %s%s",
 		inet_ntoa(g_cfg->gtp_listenaddr.sin_addr), VTY_NEWLINE);
 
@@ -315,6 +317,17 @@
 	return CMD_SUCCESS;
 }
 
+DEFUN(cfg_sgsn_state_dir, cfg_sgsn_state_dir_cmd,
+	"gtp state-dir PATH",
+	"GTP Parameters\n"
+	"Set the directory for the GTP State file\n"
+	"Local Directory\n")
+{
+	osmo_talloc_replace_string(sgsn, &sgsn->cfg.gtp_statedir, argv[0]);
+
+	return CMD_SUCCESS;
+}
+
 DEFUN(cfg_sgsn_bind_addr, cfg_sgsn_bind_addr_cmd,
 	"gtp local-ip A.B.C.D",
 	"GTP Parameters\n"
@@ -1432,6 +1445,7 @@
 
 	install_element(CONFIG_NODE, &cfg_sgsn_cmd);
 	install_node(&sgsn_node, config_write_sgsn);
+	install_element(SGSN_NODE, &cfg_sgsn_state_dir_cmd);
 	install_element(SGSN_NODE, &cfg_sgsn_bind_addr_cmd);
 	install_element(SGSN_NODE, &cfg_ggsn_remote_ip_cmd);
 	//install_element(SGSN_NODE, &cfg_ggsn_remote_port_cmd);