Make alert notifications vty configurable per ESME
Adds (no) alert-notifications as a per-esme vty command, in order to allow some ESMEs to be excluded from alerts. The default is still to send alert notifications to all esme, so no changes are required to the config file to maintain identical operation after this patch. Change-Id: I57f4d268ca6fe6a233f2caaffce62e4aade01274
This commit is contained in:
parent
0e8dfadc7a
commit
c6d219cd83
|
@ -283,8 +283,13 @@ static void alert_all_esme(struct smsc *smsc, struct vlr_subscr *vsub,
|
|||
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,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue