aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@osmocom.org>2022-05-17 18:56:55 +0200
committerlaforge <laforge@osmocom.org>2022-05-19 19:34:41 +0000
commit2765a18450bd4ff960a438e9717fed4f876301c8 (patch)
treedd91f8eabfe5f715a91bac3268f7470523029223
parente6f1160046c85fae4959dae880f0b45a6c88bad1 (diff)
sms: Make default SMS validity period configurable via VTY
-rw-r--r--include/osmocom/msc/sms_queue.h1
-rw-r--r--src/libmsc/smpp_openbsc.c2
-rw-r--r--src/libmsc/sms_queue.c1
-rw-r--r--src/libmsc/smsc_vty.c14
-rw-r--r--tests/test_nodes.vty1
5 files changed, 18 insertions, 1 deletions
diff --git a/include/osmocom/msc/sms_queue.h b/include/osmocom/msc/sms_queue.h
index ccc56ab74..c3a6cfb5c 100644
--- a/include/osmocom/msc/sms_queue.h
+++ b/include/osmocom/msc/sms_queue.h
@@ -13,6 +13,7 @@ struct sms_queue_config {
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 4ce6c27d9..64d4f1e2e 100644
--- a/src/libmsc/smpp_openbsc.c
+++ b/src/libmsc/smpp_openbsc.c
@@ -263,7 +263,7 @@ static int submit_to_sms(struct gsm_sms **psms, struct gsm_network *net,
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 7d1860f76..24811c513 100644
--- a/src/libmsc/sms_queue.c
+++ b/src/libmsc/sms_queue.c
@@ -474,6 +474,7 @@ struct sms_queue_config *sms_queue_cfg_alloc(void *ctx)
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 b2d191a4d..547b7d58e 100644
--- a/src/libmsc/smsc_vty.c
+++ b/src/libmsc/smsc_vty.c
@@ -98,6 +98,17 @@ DEFUN(cfg_sms_db_del_expired, cfg_sms_db_del_expired_cmd,
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 @@ static int config_write_smsc(struct vty *vty)
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 @@ void smsc_vty_init(struct gsm_network *msc_network)
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 ac3ff1639..cb617fc7c 100644
--- a/tests/test_nodes.vty
+++ b/tests/test_nodes.vty
@@ -183,6 +183,7 @@ smsc
queue max-failure 1
database delete-delivered 1
database delete-expired 1
+ validity-period default 10080
end
OsmoMSC# configure terminal