fixeria submitted this change.

View Change

Approvals: laforge: Looks good to me, but someone else must approve Jenkins Builder: Verified pespin: Looks good to me, approved
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(-)

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 change 37961. To unsubscribe, or for help writing mail filters, visit settings.

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>