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]>