diff --git a/apps/ergw_core/src/ergw_pfcp_context.erl b/apps/ergw_core/src/ergw_pfcp_context.erl index 7a6d9aea..cc8f14b4 100644 --- a/apps/ergw_core/src/ergw_pfcp_context.erl +++ b/apps/ergw_core/src/ergw_pfcp_context.erl @@ -152,7 +152,8 @@ session_establishment_request(Handler, PCC, PCtx0, ?LOG(debug, "CtxPending: ~p~n", [Ctx]), IEs0 = pfcp_pctx_update(PCtx2, PCtx0, SxRules), - IEs = update_m_rec(ergw_pfcp:f_seid(PCtx2, CntlNode), IEs0), + IEs1 = update_m_rec(ergw_pfcp:f_seid(PCtx2, CntlNode), IEs0), + IEs = pfcp_user_id(Ctx, IEs1), ?LOG(debug, "IEs: ~p~n", [IEs]), Req = #pfcp{version = v1, type = session_establishment_request, ie = IEs}, @@ -630,6 +631,12 @@ pfcp_pctx_update(#pfcp_ctx{up_inactivity_timer = UPiTnew} = PCtx, pfcp_pctx_update(_, _, IEs) -> IEs. +pfcp_user_id(#context{imsi = IMSI, imei = IMEI, msisdn = MSISDN}, IEs) -> + IEs#{user_id => #user_id{imsi = IMSI, imei = IMEI, msisdn = MSISDN}}; +pfcp_user_id(_, IEs) -> + %% TDF contexts do not have user id information + IEs. + handle_validity_time(_ChargingKey, #{'Update-Time-Stamp' := BaseTime, 'Validity-Time' := {BaseTime, Time}}, URR0, #pfcp_ctx{features = #up_function_features{vtime = 1}} = PCtx) -> diff --git a/apps/ergw_core/test/pgw_SUITE.erl b/apps/ergw_core/test/pgw_SUITE.erl index 0c7ae1cf..5a1cb2eb 100644 --- a/apps/ergw_core/test/pgw_SUITE.erl +++ b/apps/ergw_core/test/pgw_SUITE.erl @@ -1413,7 +1413,8 @@ simple_session_request(Config) -> (_) ->false end, ergw_test_sx_up:history('pgw-u01')), - ?match_map(#{create_pdr => '_', create_far => '_', create_urr => '_'}, SER#pfcp.ie), + ?match_map(#{user_id => '_', create_pdr => '_', + create_far => '_', create_urr => '_'}, SER#pfcp.ie), #{create_pdr := PDRs0, create_far := FARs0, create_urr := URR