diff options
author | Jacob Erlbeck <jerlbeck@sysmocom.de> | 2015-01-19 11:10:04 +0100 |
---|---|---|
committer | Jacob Erlbeck <jerlbeck@sysmocom.de> | 2015-01-19 15:10:57 +0100 |
commit | bbb716965344a46653ab388823570d575a7a6d8d (patch) | |
tree | e6748c12808f61c075cf590bcc300a718b4023b2 /openbsc/src/gprs/sgsn_vty.c | |
parent | cedc73bf6346353e6c04a2ace9986a99cfa30475 (diff) |
sgsn: Add SGSN_ERROR_CAUSE_NONE and use it instead of 0
Currently an error_cause of 0 is being used to indicate normal
operation. Albeit this is not a defined GMM cause, the value is not
explicitly reserved.
This commit adds the macro SGSN_ERROR_CAUSE_NONE and uses it for
initialisation (instead of relying on talloc_zero) and comparisons.
The value is set to -1 to be on the safe side. The VTY code is
updated to set the error_cause when using the
'update-subscriber imsi IMSI update-location-result CAUSE' command.
Sponsored-by: On-Waves ehf
Diffstat (limited to 'openbsc/src/gprs/sgsn_vty.c')
-rw-r--r-- | openbsc/src/gprs/sgsn_vty.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/openbsc/src/gprs/sgsn_vty.c b/openbsc/src/gprs/sgsn_vty.c index ef4c8d82e..84fd5ef52 100644 --- a/openbsc/src/gprs/sgsn_vty.c +++ b/openbsc/src/gprs/sgsn_vty.c @@ -644,15 +644,29 @@ DEFUN(update_subscr_update_location_result, update_subscr_update_location_result struct gsm_subscriber *subscr; + const struct value_string cause_mapping[] = { + { GMM_CAUSE_NET_FAIL, "system-failure" }, + { GMM_CAUSE_INV_MAND_INFO, "data-missing" }, + { GMM_CAUSE_PROTO_ERR_UNSPEC, "unexpected-data-value" }, + { GMM_CAUSE_IMSI_UNKNOWN, "unknown-subscriber" }, + { GMM_CAUSE_GPRS_NOTALLOWED, "roaming-not-allowed" }, + { 0, NULL } + }; + subscr = gprs_subscr_get_by_imsi(imsi); if (!subscr) { vty_out(vty, "%% unable to get subscriber record for %s\n", imsi); return CMD_WARNING; } - if (strcmp(ret_code_str, "ok") == 0) + + if (strcmp(ret_code_str, "ok") == 0) { + subscr->sgsn_data->error_cause = SGSN_ERROR_CAUSE_NONE; subscr->authorized = 1; - else + } else { + subscr->sgsn_data->error_cause = + get_string_value(cause_mapping, ret_code_str); subscr->authorized = 0; + } gprs_subscr_update(subscr); |