fixeria has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/42497?usp=email )


Change subject: s1ap_proxy: fix build_erab_setup_response_failure() to report 
all E-RABs
......................................................................

s1ap_proxy: fix build_erab_setup_response_failure() to report all E-RABs

The previous implementation only included the first E-RAB from the
registry in the failure response (a FIXME was left in place).

Fix it to extract all E-RAB IDs from the original E-RAB SETUP REQUEST
and include each of them in the failure list, as required by 3GPP.

Change-Id: I7933fceb0edcdfdc95ace35416297b11c83f0bc9
Related: osmo-ttcn3-hacks.git I8a5dc338d28013dc85e1ce4b3bdac92cb3b35304
---
M src/s1ap_proxy.erl
1 file changed, 12 insertions(+), 9 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-s1gw 
refs/changes/97/42497/1

diff --git a/src/s1ap_proxy.erl b/src/s1ap_proxy.erl
index dcd053e..078b73b 100644
--- a/src/s1ap_proxy.erl
+++ b/src/s1ap_proxy.erl
@@ -329,7 +329,13 @@
         {{error, Reason}, S1} ->
             ?LOG_NOTICE("Failed to process E-RAB SETUP REQUEST: ~p", [Reason]),
             ctr_inc(?S1GW_CTR_S1AP_PROXY_IN_PKT_PROC_ERROR, S1),
-            PDU = build_erab_setup_response_failure(S1),
+            ERABIds = [ERABId ||
+                #'ProtocolIE-Field'{id = ?'id-E-RABToBeSetupListBearerSUReq',
+                                    value = Items} <- 
C0#'E-RABSetupRequest'.protocolIEs,
+                #'ProtocolIE-Field'{id = ?'id-E-RABToBeSetupItemBearerSUReq',
+                                    value = 
#'E-RABToBeSetupItemBearerSUReq'{'e-RAB-ID' = ERABId}}
+                    <- Items],
+            PDU = build_erab_setup_response_failure(ERABIds, S1),
             ctr_inc(?S1GW_CTR_S1AP_PROXY_OUT_PKT_REPLY_ERAB_SETUP_RSP, S1),
             {{reply, PDU}, S1} %% reply PDU back to sender
     end;
@@ -1102,18 +1108,15 @@
     {{ok, IEs}, S}.


-build_erab_setup_response_failure(#proxy_state{erabs = ERABs,
-                                               mme_ue_id = MmeUeId,
+build_erab_setup_response_failure(ERABIds,
+                                  #proxy_state{mme_ue_id = MmeUeId,
                                                enb_ue_id = EnbUeId}) ->
-    %% FIXME: Currently we respond with E-RAB-ID of the first E-RAB in the 
registry.
-    %% Instead, we need to iterate over E-RABs in the REQUEST and reject them 
all.
-    [{_, FirstERABid}|_] = dict:fetch_keys(ERABs),
     Cause = {transport, 'transport-resource-unavailable'},
-    ERABitem = #'E-RABItem'{'e-RAB-ID' = FirstERABid,
-                            cause = Cause},
     ERABlist = [#'ProtocolIE-Field'{id = ?'id-E-RABItem',
                                     criticality = ignore,
-                                    value = ERABitem}],
+                                    value = #'E-RABItem'{'e-RAB-ID' = ERABId,
+                                                         cause = Cause}}
+                || ERABId <- ERABIds],
     IEs = [#'ProtocolIE-Field'{id = ?'id-MME-UE-S1AP-ID',
                                criticality = ignore,
                                value = MmeUeId},

--
To view, visit https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/42497?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: newchange
Gerrit-Project: erlang/osmo-s1gw
Gerrit-Branch: master
Gerrit-Change-Id: I7933fceb0edcdfdc95ace35416297b11c83f0bc9
Gerrit-Change-Number: 42497
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <[email protected]>

Reply via email to