pespin has submitted this change. (
https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/34783?usp=email )
Change subject: diameter_swx: Fix MAA and SAA parsing mixed
......................................................................
diameter_swx: Fix MAA and SAA parsing mixed
Change-Id: I570dd7c0ae521ccaea5fceb7eef90b4975cb0fbc
---
M src/epdg_diameter_swx.erl
1 file changed, 35 insertions(+), 12 deletions(-)
Approvals:
fixeria: Looks good to me, but someone else must approve
laforge: Looks good to me, but someone else must approve
pespin: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/src/epdg_diameter_swx.erl b/src/epdg_diameter_swx.erl
index fe89f11..dadfa65 100644
--- a/src/epdg_diameter_swx.erl
+++ b/src/epdg_diameter_swx.erl
@@ -152,19 +152,28 @@
unknown_user => #{error => "User is not known by HSS"}
}).
--spec parse_mar(#'MAA'{}) -> map().
-parse_mar(#'MAA'{'Result-Code' = [ResultCode]} = Maa) ->
+-spec parse_maa(#'MAA'{}) -> map().
+parse_maa(#'MAA'{'Result-Code' = [ResultCode]} = Maa) ->
Success = result_code_success(ResultCode),
{Success, ResultCode};
-
-parse_mar(#'MAA'{'Experimental-Result' = [#{'Vendor-Code' :=
?VENDOR_ID_3GPP, 'ExpResultCode' := 5001}]} = Maa) ->
+parse_maa(#'MAA'{'Experimental-Result' = [#{'Vendor-Code' :=
?VENDOR_ID_3GPP, 'ExpResultCode' := 5001}]} = Maa) ->
{unknown_user, 5001};
-parse_mar(#'MAA'{'Experimental-Result' = [#{'Vendor-Code' :=
?VENDOR_ID_3GPP, 'ExpResultCode' := ResultCode}]} = Maa) ->
+parse_maa(#'MAA'{'Experimental-Result' = [#{'Vendor-Code' :=
?VENDOR_ID_3GPP, 'ExpResultCode' := ResultCode}]} = Maa) ->
{invalid_exp_result, ResultCode};
-parse_mar(Maa) ->
+parse_maa(Maa) ->
{unknown_err, []}.
+% parse_maa(#'MAA'{'Experimental-Result-Code' = [ResultCode] = MAA)
->
-% parse_mar(#'MAA'{'Experimental-Result-Code' = [ResultCode] = MAA)
->
+-spec parse_saa(#'SAA'{}) -> map().
+parse_saa(#'SAA'{'Result-Code' = [ResultCode]} = Saa) ->
+ Success = result_code_success(ResultCode),
+ {Success, ResultCode};
+parse_saa(#'SAA'{'Experimental-Result' = [#{'Vendor-Code' :=
?VENDOR_ID_3GPP, 'ExpResultCode' := 5001}]} = Saa) ->
+ {unknown_user, 5001};
+parse_saa(#'SAA'{'Experimental-Result' = [#{'Vendor-Code' :=
?VENDOR_ID_3GPP, 'ExpResultCode' := ResultCode}]} = Saa) ->
+ {invalid_exp_result, ResultCode};
+parse_saa(Saa) ->
+ {unknown_err, []}.
handle_call({mar, {IMSI, NumAuthItems, AuthScheme, RAT, CKey, IntegrityKey}}, _From,
State) ->
SessionId = diameter:session_id(application:get_env(?ENV_APP_NAME, origin_host,
?ENV_DEFAULT_ORIG_HOST)),
@@ -184,11 +193,16 @@
Ret = diameter:call(?SVC_NAME, ?APP_ALIAS, MAR, []),
case Ret of
{ok, MAA} ->
- {reply, {ok, MAA}, State};
+ SuccessCode = parse_maa(MAA),
+ case SuccessCode of
+ {ok, _} -> {reply, {ok, MAA}, State};
+ {Err, Info} -> {reply, {error, {Err, Info, MAA}}, State}
+ end;
{error, Err} ->
lager:error("Error: ~w~n", [Err]),
{reply, {error, Err}, State}
end;
+
handle_call({sar, {IMSI, Type, APN}}, _From, State) ->
SessionId = diameter:session_id(application:get_env(?ENV_APP_NAME, origin_host,
?ENV_DEFAULT_ORIG_HOST)),
SAR = #'SAR'{'Vendor-Specific-Application-Id' =
#'Vendor-Specific-Application-Id'{
@@ -202,11 +216,11 @@
},
Ret = diameter:call(?SVC_NAME, ?APP_ALIAS, SAR, []),
case Ret of
- {ok, Maa} ->
- SuccessCode = parse_mar(Maa),
+ {ok, Saa} ->
+ SuccessCode = parse_saa(Saa),
case SuccessCode of
- {ok, _} -> {reply, {ok, Maa}, State};
- {Err, Info} -> {reply, {error, {Err, Info, Maa}}, State}
+ {ok, _} -> {reply, {ok, Saa}, State};
+ {Err, Info} -> {reply, {error, {Err, Info, Saa}}, State}
end;
{error, Err} ->
lager:error("Error: ~w~n", [Err]),
--
To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/34783?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: erlang/osmo-epdg
Gerrit-Branch: master
Gerrit-Change-Id: I570dd7c0ae521ccaea5fceb7eef90b4975cb0fbc
Gerrit-Change-Number: 34783
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: lynxis lazus <lynxis(a)fe80.eu>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged