sms: Make default SMS validity period configurable via VTY

Change-Id: Ie2c81c1d5795dd9aaf07b9766013f20b01abc762
diff --git a/include/osmocom/msc/sms_queue.h b/include/osmocom/msc/sms_queue.h
index ccc56ab..c3a6cfb 100644
--- a/include/osmocom/msc/sms_queue.h
+++ b/include/osmocom/msc/sms_queue.h
@@ -13,6 +13,7 @@
 	int max_pending;			/* maximum number of gsm_sms_pending in RAM */
 	bool delete_delivered;			/* delete delivered SMS from DB? */
 	bool delete_expired;			/* delete expired SMS from DB? */
+	unsigned int default_validity_mins;	/* default validity period in minutes */
 };
 
 struct sms_queue_config *sms_queue_cfg_alloc(void *ctx);
diff --git a/src/libmsc/smpp_openbsc.c b/src/libmsc/smpp_openbsc.c
index 4ce6c27..64d4f1e 100644
--- a/src/libmsc/smpp_openbsc.c
+++ b/src/libmsc/smpp_openbsc.c
@@ -263,7 +263,7 @@
 
 	t_validity_absolute = smpp_parse_time_format((const char *) submit->validity_period, &t_now);
 	if (!t_validity_absolute)
-		sms->validity_minutes = 7 * 24 * 60;	/* default: 7 days */
+		sms->validity_minutes = net->sms_queue_cfg->default_validity_mins;
 	else
 		sms->validity_minutes = (t_validity_absolute - t_now) / 60;
 
diff --git a/src/libmsc/sms_queue.c b/src/libmsc/sms_queue.c
index 7d1860f..24811c5 100644
--- a/src/libmsc/sms_queue.c
+++ b/src/libmsc/sms_queue.c
@@ -474,6 +474,7 @@
 	sqcfg->max_fail = 1;
 	sqcfg->delete_delivered = true;
 	sqcfg->delete_expired = true;
+	sqcfg->default_validity_mins = 7 * 24 * 60; /* 7 days */
 	sqcfg->db_file_path = talloc_strdup(ctx, SMS_DEFAULT_DB_FILE_PATH);
 
 	return sqcfg;
diff --git a/src/libmsc/smsc_vty.c b/src/libmsc/smsc_vty.c
index b2d191a..547b7d5 100644
--- a/src/libmsc/smsc_vty.c
+++ b/src/libmsc/smsc_vty.c
@@ -98,6 +98,17 @@
 	return CMD_SUCCESS;
 }
 
+DEFUN(cfg_sms_def_val_per, cfg_sms_def_val_per_cmd,
+      "validity-period default <1-5256000>",
+      "Configure validity period for SMS\n"
+      "Default SMS validity period in minutes\n"
+      "Default SMS validity period in minutes\n")
+{
+	smqcfg->default_validity_mins = atoi(argv[0]);
+	return CMD_SUCCESS;
+}
+
+
 /***********************************************************************
  * View / Enable Node
  ***********************************************************************/
@@ -166,6 +177,8 @@
 	vty_out(vty, " database delete-delivered %u%s", smqcfg->delete_delivered, VTY_NEWLINE);
 	vty_out(vty, " database delete-expired %u%s", smqcfg->delete_expired, VTY_NEWLINE);
 
+	vty_out(vty, " validity-period default %u%s", smqcfg->default_validity_mins, VTY_NEWLINE);
+
 	return 0;
 }
 
@@ -183,6 +196,7 @@
 	install_element(SMSC_NODE, &cfg_sms_queue_fail_cmd);
 	install_element(SMSC_NODE, &cfg_sms_db_del_delivered_cmd);
 	install_element(SMSC_NODE, &cfg_sms_db_del_expired_cmd);
+	install_element(SMSC_NODE, &cfg_sms_def_val_per_cmd);
 
 	/* enable node */
 	install_element(ENABLE_NODE, &smsqueue_trigger_cmd);
diff --git a/tests/test_nodes.vty b/tests/test_nodes.vty
index ac3ff16..cb617fc 100644
--- a/tests/test_nodes.vty
+++ b/tests/test_nodes.vty
@@ -183,6 +183,7 @@
  queue max-failure 1
  database delete-delivered 1
  database delete-expired 1
+ validity-period default 10080
 end
 
 OsmoMSC# configure terminal