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(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>