diff options
Diffstat (limited to 'openbsc/src/libmsc')
-rw-r--r-- | openbsc/src/libmsc/smpp_openbsc.c | 8 | ||||
-rw-r--r-- | openbsc/src/libmsc/smpp_smsc.c | 1 | ||||
-rw-r--r-- | openbsc/src/libmsc/smpp_smsc.h | 1 | ||||
-rw-r--r-- | openbsc/src/libmsc/smpp_vty.c | 26 |
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); |