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 <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <[email protected]>
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>

Reply via email to