ctrl: Introduce cmd SET subscriber.delete <imsi>
On success SET_REPLY contains the ID of the deleted subscriber. Related: SYS#5993 Change-Id: I24c6149d7c223a12549d712a7929666220c0210f
This commit is contained in:
parent
b74769f1b4
commit
3ca9a1fd4f
35
src/ctrl.c
35
src/ctrl.c
|
@ -234,6 +234,40 @@ static int set_subscr_create(struct ctrl_cmd *cmd, void *data)
|
||||||
return CTRL_CMD_REPLY;
|
return CTRL_CMD_REPLY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CTRL_CMD_DEFINE_WO_NOVRF(subscr_delete, "delete");
|
||||||
|
static int set_subscr_delete(struct ctrl_cmd *cmd, void *data)
|
||||||
|
{
|
||||||
|
struct hlr_subscriber subscr;
|
||||||
|
struct hlr *hlr = data;
|
||||||
|
const char *imsi = cmd->value;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
if (!osmo_imsi_str_valid(imsi)) {
|
||||||
|
cmd->reply = "Invalid IMSI value.";
|
||||||
|
return CTRL_CMD_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Retrieve data of newly created subscriber: */
|
||||||
|
rc = db_subscr_get_by_imsi(hlr->dbc, imsi, &subscr);
|
||||||
|
if (rc < 0) {
|
||||||
|
cmd->reply = "Subscriber doesn't exist.";
|
||||||
|
return CTRL_CMD_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Create the subscriber in the DB */
|
||||||
|
rc = db_subscr_delete_by_id(g_hlr->dbc, subscr.id);
|
||||||
|
if (rc) {
|
||||||
|
cmd->reply = "Cannot delete subscriber.";
|
||||||
|
return CTRL_CMD_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
LOGP(DCTRL, LOGL_INFO, "Deleted subscriber IMSI='%s'\n",
|
||||||
|
imsi);
|
||||||
|
|
||||||
|
cmd->reply = talloc_asprintf(cmd, "%" PRIu64, subscr.id);
|
||||||
|
return CTRL_CMD_REPLY;
|
||||||
|
}
|
||||||
|
|
||||||
CTRL_CMD_DEFINE_RO(subscr_info, "info");
|
CTRL_CMD_DEFINE_RO(subscr_info, "info");
|
||||||
static int get_subscr_info(struct ctrl_cmd *cmd, void *data)
|
static int get_subscr_info(struct ctrl_cmd *cmd, void *data)
|
||||||
{
|
{
|
||||||
|
@ -469,6 +503,7 @@ static int hlr_ctrl_cmds_install()
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
rc |= ctrl_cmd_install(CTRL_NODE_SUBSCR, &cmd_subscr_create);
|
rc |= ctrl_cmd_install(CTRL_NODE_SUBSCR, &cmd_subscr_create);
|
||||||
|
rc |= ctrl_cmd_install(CTRL_NODE_SUBSCR, &cmd_subscr_delete);
|
||||||
|
|
||||||
rc |= ctrl_cmd_install(CTRL_NODE_SUBSCR_BY, &cmd_subscr_info);
|
rc |= ctrl_cmd_install(CTRL_NODE_SUBSCR_BY, &cmd_subscr_info);
|
||||||
rc |= ctrl_cmd_install(CTRL_NODE_SUBSCR_BY, &cmd_subscr_info_aud);
|
rc |= ctrl_cmd_install(CTRL_NODE_SUBSCR_BY, &cmd_subscr_info_aud);
|
||||||
|
|
|
@ -670,3 +670,6 @@ ms_purged_ps 0
|
||||||
periodic_lu_timer 0
|
periodic_lu_timer 0
|
||||||
periodic_rau_tau_timer 0
|
periodic_rau_tau_timer 0
|
||||||
lmsi 00000000
|
lmsi 00000000
|
||||||
|
|
||||||
|
SET 112 subscriber.delete 901991234567891
|
||||||
|
SET_REPLY 112 subscriber.delete 124
|
||||||
|
|
|
@ -117,3 +117,9 @@ ERROR 50 Subscriber already exists.
|
||||||
|
|
||||||
SET 51 subscriber.by-imsi-1234567890123456.msisdn hellobadmsisdn
|
SET 51 subscriber.by-imsi-1234567890123456.msisdn hellobadmsisdn
|
||||||
ERROR 51 Value failed verification.
|
ERROR 51 Value failed verification.
|
||||||
|
|
||||||
|
SET 52 subscriber.delete 100000
|
||||||
|
ERROR 52 Subscriber doesn't exist.
|
||||||
|
|
||||||
|
SET 53 subscriber.delete zzz
|
||||||
|
ERROR 53 Invalid IMSI value.
|
||||||
|
|
Loading…
Reference in New Issue