pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/erlang/osmo_dia2gsup/+/34259 )
Change subject: Translate GSUP Auth Info Answer error Cause in Diamater AIA ......................................................................
Translate GSUP Auth Info Answer error Cause in Diamater AIA
Change-Id: I32622713c2c1f40e1d9c5597ffab8cb211171fc2 --- M src/server_cb.erl 1 file changed, 26 insertions(+), 7 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/erlang/osmo_dia2gsup refs/changes/59/34259/1
diff --git a/src/server_cb.erl b/src/server_cb.erl index 482ba9a..a6450dd 100644 --- a/src/server_cb.erl +++ b/src/server_cb.erl @@ -177,15 +177,23 @@ -define(GMM_CAUSE_INV_MAND_INFO, 16#60). -define(GMM_CAUSE_PROTO_ERR_UNSPEC, 16#6f).
--define(EXP_RES(Foo), #'Experimental-Result'{'Vendor-Id'=fixme, 'Experimental-Result-Code'=Foo}). +-define(EXP_RES(Foo), #'Experimental-Result'{'Vendor-Id'=10415, 'Experimental-Result-Code'=Foo}).
-type empty_or_intl() :: [] | [integer()]. -spec gsup_cause2dia(integer()) -> {empty_or_intl(), empty_or_intl()}. gsup_cause2dia(?GMM_CAUSE_IMSI_UNKNOWN) -> {[], [?EXP_RES(?DIAMETER_ERROR_USER_UNKNOWN)]}; -gsup_cause2dia(?GMM_CAUSE_PLMN_NOTALLOWED) -> {[], [?DIAMETER_ERROR_ROAMING_NOT_ALLOWED]}; -gsup_cause2dia(?GMM_CAUSE_GPRS_NOTALLOWED) -> {[], [?DIAMETER_ERROR_RAT_NOT_ALLOWED]}; -%gsup_cause2dia(?GMM_CAUSE_INV_MAND_INFO) -> -%gsup_cause2dia(?GMM_CAUSE_NET_FAIL) -> +gsup_cause2dia(?GMM_CAUSE_ILLEGAL_MS) -> {[], [?EXP_RES(?DIAMETER_ERROR_USER_UNKNOWN)]}; +gsup_cause2dia(?GMM_CAUSE_PLMN_NOTALLOWED) -> {[], [?EXP_RES(?DIAMETER_ERROR_ROAMING_NOT_ALLOWED)]}; +gsup_cause2dia(?GMM_CAUSE_GPRS_NOTALLOWED) -> {[], [?EXP_RES(?DIAMETER_ERROR_RAT_NOT_ALLOWED)]}; + +gsup_cause2dia(?GMM_CAUSE_LA_NOTALLOWED) -> {[], [?EXP_RES(?DIAMETER_ERROR_RAT_NOT_ALLOWED)]}; +gsup_cause2dia(?GMM_CAUSE_ROAMING_NOTALLOWED) -> {[], [?EXP_RES(?DIAMETER_ERROR_ROAMING_NOT_ALLOWED)]}; +gsup_cause2dia(?GMM_CAUSE_NO_SUIT_CELL_IN_LA) -> {[], [?EXP_RES(?DIAMETER_ERROR_UNKOWN_SERVING_NODE)]}; +gsup_cause2dia(?GMM_CAUSE_NET_FAIL) -> {[], [?EXP_RES(?DIAMETER_AUTHENTICATION_DATA_UNAVAILABLE)]}; +gsup_cause2dia(?GMM_CAUSE_CONGESTION) -> {[], [?EXP_RES(?DIAMETER_AUTHENTICATION_DATA_UNAVAILABLE)]}; +gsup_cause2dia(?GMM_CAUSE_GSM_AUTH_UNACCEPT) -> {[], [?EXP_RES(?DIAMETER_ERROR_USER_UNKNOWN)]}; +gsup_cause2dia(?GMM_CAUSE_INV_MAND_INFO) -> {[], [?EXP_RES(?DIAMETER_ERROR_UNKOWN_SERVING_NODE)]}; +gsup_cause2dia(?GMM_CAUSE_PROTO_ERR_UNSPEC) -> {[], [?EXP_RES(?DIAMETER_ERROR_UNKOWN_SERVING_NODE)]}; % TODO: more values gsup_cause2dia(_) -> {fixme, []}.
@@ -229,9 +237,11 @@ Resp = #'AIA'{'Session-Id'=SessionId, 'Origin-Host'=OH, 'Origin-Realm'=OR, 'Result-Code'=2001, 'Auth-Session-State'=1, 'Authentication-Info'=AuthInfo}; - #{message_type := send_auth_info_err} -> + #{message_type := send_auth_info_err, cause:=Cause} -> + {Res, ExpRes} = gsup_cause2dia(Cause), Resp = #'AIA'{'Session-Id'=SessionId, 'Origin-Host'=OH, 'Origin-Realm'=OR, - 'Result-Code'=?DIAMETER_ERROR_USER_UNKNOWN, + 'Result-Code'=Res, + 'Experimental-Result'=ExpRes, 'Auth-Session-State'=1}; timeout -> Resp = #'AIA'{'Session-Id'=SessionId, 'Origin-Host'=OH, 'Origin-Realm'=OR,