aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--openbsc/src/libmsc/smpp_openbsc.c8
-rw-r--r--openbsc/src/libmsc/smpp_smsc.c1
-rw-r--r--openbsc/src/libmsc/smpp_smsc.h1
-rw-r--r--openbsc/src/libmsc/smpp_vty.c26
4 files changed, 34 insertions, 2 deletions
diff --git a/openbsc/src/libmsc/smpp_openbsc.c b/openbsc/src/libmsc/smpp_openbsc.c
index 3fe2dfd0b..f463e1cde 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -278,8 +278,12 @@ static void alert_all_esme(struct smsc *smsc, struct gsm_subscriber *subscr,
llist_for_each_entry(esme, &smsc->esme_list, list) {
/* we currently send an alert notification to each ESME that is
* connected, and do not require a (non-existant) delivery
- * pending flag to be set before, FIXME: make this VTY
- * configurable */
+ * pending flag to be set before. */
+ if (!esme->acl->alert_notifications) {
+ LOGP(DSMPP, LOGL_DEBUG,
+ "[%s] is not set to receive Alert Notifications\n", esme->system_id);
+ continue;
+ }
if (esme->acl && esme->acl->deliver_src_imsi) {
smpp_tx_alert(esme, TON_Subscriber_Number,
NPI_Land_Mobile_E212,
diff --git a/openbsc/src/libmsc/smpp_smsc.c b/openbsc/src/libmsc/smpp_smsc.c
index e4acd3ab7..35097b40d 100644
--- a/openbsc/src/libmsc/smpp_smsc.c
+++ b/openbsc/src/libmsc/smpp_smsc.c
@@ -148,6 +148,7 @@ struct osmo_smpp_acl *smpp_acl_alloc(struct smsc *smsc, const char *sys_id)
acl->smsc = smsc;
strcpy(acl->system_id, sys_id);
+ acl->alert_notifications = 1;
INIT_LLIST_HEAD(&acl->route_list);
llist_add_tail(&acl->list, &smsc->acl_list);
diff --git a/openbsc/src/libmsc/smpp_smsc.h b/openbsc/src/libmsc/smpp_smsc.h
index 257383f1b..239820153 100644
--- a/openbsc/src/libmsc/smpp_smsc.h
+++ b/openbsc/src/libmsc/smpp_smsc.h
@@ -68,6 +68,7 @@ struct osmo_smpp_acl {
int deliver_src_imsi;
int osmocom_ext;
int dcs_transparent;
+ int alert_notifications;
struct llist_head route_list;
};
diff --git a/openbsc/src/libmsc/smpp_vty.c b/openbsc/src/libmsc/smpp_vty.c
index 0a8435808..ff0314e15 100644
--- a/openbsc/src/libmsc/smpp_vty.c
+++ b/openbsc/src/libmsc/smpp_vty.c
@@ -499,6 +499,28 @@ DEFUN(cfg_esme_no_dcs_transp, cfg_esme_no_dcs_transp_cmd,
return CMD_SUCCESS;
}
+DEFUN(cfg_esme_alert_notif, cfg_esme_alert_notif_cmd,
+ "alert-notifications",
+ "Disable sending of SMPP Alert Notifications for this ESME")
+{
+ struct osmo_smpp_acl *acl = vty->index;
+
+ acl->alert_notifications = 1;
+
+ return CMD_SUCCESS;
+}
+
+DEFUN(cfg_esme_no_alert_notif, cfg_esme_no_alert_notif_cmd,
+ "no alert-notifications", NO_STR
+ "Disable sending of SMPP Alert Notifications for this ESME")
+{
+ struct osmo_smpp_acl *acl = vty->index;
+
+ acl->alert_notifications = 0;
+
+ return CMD_SUCCESS;
+}
+
static void dump_one_esme(struct vty *vty, struct osmo_esme *esme)
{
@@ -560,6 +582,8 @@ static void config_write_esme_single(struct vty *vty, struct osmo_smpp_acl *acl)
vty_out(vty, " osmocom-extensions%s", VTY_NEWLINE);
if (acl->dcs_transparent)
vty_out(vty, " dcs-transparent%s", VTY_NEWLINE);
+ if (acl->alert_notifications)
+ vty_out(vty, " alert-notifications%s", VTY_NEWLINE);
llist_for_each_entry(r, &acl->route_list, list)
write_esme_route_single(vty, r);
@@ -603,6 +627,8 @@ int smpp_vty_init(void)
install_element(SMPP_ESME_NODE, &cfg_esme_no_osmo_ext_cmd);
install_element(SMPP_ESME_NODE, &cfg_esme_dcs_transp_cmd);
install_element(SMPP_ESME_NODE, &cfg_esme_no_dcs_transp_cmd);
+ install_element(SMPP_ESME_NODE, &cfg_esme_alert_notif_cmd);
+ install_element(SMPP_ESME_NODE, &cfg_esme_no_alert_notif_cmd);
install_element_ve(&show_esme_cmd);