lynxis lazus has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/41588?usp=email )


Change subject: gtpc2: allow to set the restart counter
......................................................................

gtpc2: allow to set the restart counter

The restart counter a 8 bit value is used to detect if a component
has been restarted.
By the spec the IE recovery should be only present in the first PDU
towards a new peer.
But this is for a later improvement.
Use system_time by millisecond mod 256 as default.
Further allow the supervisor to set it to a specific value.

Change-Id: I1e894a2c54dd180c0bc3a6f78d0bb7dd455cad81
---
M src/epdg_gtpc_s2b.erl
M src/osmo_epdg_sup.erl
2 files changed, 7 insertions(+), 3 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-epdg 
refs/changes/88/41588/1

diff --git a/src/epdg_gtpc_s2b.erl b/src/epdg_gtpc_s2b.erl
index aa14010..9becfdb 100644
--- a/src/epdg_gtpc_s2b.erl
+++ b/src/epdg_gtpc_s2b.erl
@@ -108,9 +108,13 @@
     ok.

 init(State) ->
+    % Use system_time in order to ensure a fresh system wouldn't re-use always 
the same restart_counter
+    % monotonic timer could be to reproducible on systems.
+    Defaults = #{restart_counter => erlang:system_time(millisecond) rem 256},
     lager:info("epdg_gtpc_s2b: init(): ~p", [State]),
-    [LocalAddr | [LocalPort | [RemoteAddr | [RemotePort | [GtpuLocalAddr | 
_]]]]] = State,
+    [LocalAddr | [LocalPort | [RemoteAddr | [RemotePort | [GtpuLocalAddr | 
[UserConfig, _]]]]]] = State,
     lager:info("epdg_gtpc_s2b: Binding to IP ~s port ~p~n", [LocalAddr, 
LocalPort]),
+    Config = maps:merge(Defaults, UserConfig),
     {ok, LocalAddrInet} = inet_parse:address(LocalAddr),
     {ok, RemoteAddrInet} = inet_parse:address(RemoteAddr),
     {ok, GtpuLocalAddrInet} = inet_parse:address(GtpuLocalAddr),
@@ -135,7 +139,7 @@
                     rport = RemotePort,
                     laddr_gtpu_str = GtpuLocalAddr,
                     laddr_gtpu = GtpuLocalAddrInet,
-                    restart_counter = 0,
+                    restart_counter = maps:get(restart_counter, Config),
                     seq_no = rand:uniform(16#FFFFFF),
                     next_local_control_tei = rand:uniform(16#FFFFFFFE),
                     next_local_data_tei = rand:uniform(16#FFFFFFFE)
diff --git a/src/osmo_epdg_sup.erl b/src/osmo_epdg_sup.erl
index 193e8e6..72cfaee 100644
--- a/src/osmo_epdg_sup.erl
+++ b/src/osmo_epdg_sup.erl
@@ -74,7 +74,7 @@
                           worker,
                           [aaa_diameter_swm]},
        %% ePDG processes:
-       GtpcServer = {epdg_gtpc_s2b, {epdg_gtpc_s2b,start_link, [GtpcLocalIp, 
GtpcLocalPort, GtpcRemoteIp, GtpcRemotePort, GtpuLocalIp, []]},
+       GtpcServer = {epdg_gtpc_s2b, {epdg_gtpc_s2b,start_link, [GtpcLocalIp, 
GtpcLocalPort, GtpcRemoteIp, GtpcRemotePort, GtpuLocalIp, #{}]},
                      permanent,
                      5000,
                      worker,

--
To view, visit https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/41588?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: newchange
Gerrit-Project: erlang/osmo-epdg
Gerrit-Branch: master
Gerrit-Change-Id: I1e894a2c54dd180c0bc3a6f78d0bb7dd455cad81
Gerrit-Change-Number: 41588
Gerrit-PatchSet: 1
Gerrit-Owner: lynxis lazus <[email protected]>

Reply via email to