fixeria has submitted this change. ( https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37961?usp=email ) Change subject: pfcp_peer: store local/remote Recovery Time Stamp in #peer_state ...................................................................... pfcp_peer: store local/remote Recovery Time Stamp in #peer_state The local Recovery Time Stamp is also needed for the Heartbeat procedure, so we need to store it in the in #peer_state. The remote Recovery Time Stamp can be used for detecting restart of the remote peer and may be used for introspection later. Change-Id: I4ad597e3f16058c91b16ad83ffc00c486817b3cf --- M src/pfcp_peer.erl 1 file changed, 9 insertions(+), 4 deletions(-) Approvals: laforge: Looks good to me, but someone else must approve Jenkins Builder: Verified pespin: Looks good to me, approved diff --git a/src/pfcp_peer.erl b/src/pfcp_peer.erl index 44956da..86d42d3 100644 --- a/src/pfcp_peer.erl +++ b/src/pfcp_peer.erl @@ -76,6 +76,8 @@ sock :: gen_udp:socket(), loc_addr :: inet:ip_address(), rem_addr :: inet:ip_address(), + loc_rts :: pos_integer(), + rem_rts :: undefined | pos_integer(), seq_nr :: pfcp_seq_nr(), registry :: dict:dict() }). @@ -142,6 +144,7 @@ loc_addr = LocAddr, rem_addr = RemAddr, seq_nr = 0, + loc_rts = get_recovery_timestamp(), registry = dict:new()}}. @@ -168,9 +171,11 @@ #peer_state{sock = Sock} = S) -> case decode_pdu(Data, S) of #pfcp{type = association_setup_response, - ie = #{pfcp_cause := 'Request accepted'}} -> + ie = #{pfcp_cause := 'Request accepted', + recovery_time_stamp := #recovery_time_stamp{time = RRTS}}} -> ?LOG_INFO("Rx Association Setup Response (Request accepted)"), - {next_state, connected, S}; + {next_state, connected, + S#peer_state{rem_rts = RRTS}}; #pfcp{type = association_setup_response, ie = #{pfcp_cause := Cause}} -> ?LOG_ERROR("Rx Association Setup Response (~p)", [Cause]), @@ -365,9 +370,9 @@ %% 6.2.6 PFCP Association Setup Procedure %% 7.4.4.1 PFCP Association Setup Request -send_assoc_setup(S) -> +send_assoc_setup(#peer_state{loc_rts = LRTS} = S) -> IEs = #{node_id => #node_id{id = get_node_id(S)}, - recovery_time_stamp => #recovery_time_stamp{time = get_recovery_timestamp()}}, + recovery_time_stamp => #recovery_time_stamp{time = LRTS}}, send_pdu({association_setup_request, IEs}, S). -- To view, visit https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37961?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: erlang/osmo-s1gw Gerrit-Branch: master Gerrit-Change-Id: I4ad597e3f16058c91b16ad83ffc00c486817b3cf Gerrit-Change-Number: 37961 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de> Gerrit-Reviewer: laforge <laforge@osmocom.org> Gerrit-Reviewer: pespin <pespin@sysmocom.de>