laforge has submitted this change. ( 
https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/35588?usp=email )

Change subject: diameter: Allow configuring (re)connect timer in s6b and swx
......................................................................

diameter: Allow configuring (re)connect timer in s6b and swx

TTCN3 tests will require lower values to avoid timing out.

Change-Id: I7d280f83f4f375eaf34ea3b69a421372af54ffdb
---
M config/sys.config
M src/aaa_diameter_s6b.erl
M src/epdg_diameter_swx.erl
3 files changed, 40 insertions(+), 14 deletions(-)

Approvals:
  Jenkins Builder: Verified
  daniel: Looks good to me, but someone else must approve
  laforge: Looks good to me, approved




diff --git a/config/sys.config b/config/sys.config
index 630a057..35e1492 100755
--- a/config/sys.config
+++ b/config/sys.config
@@ -9,6 +9,8 @@
    {diameter_remote_ip, "127.0.0.1"},
    {diameter_remote_port, 3868},
    {diameter_proto, sctp},
+   {diameter_connect_timer, 30000},
+   {diameter_watchdog_timer, 30000},
    {vendor_id, 0},
    {origin_host, "epdg.localdomain"},
    {origin_realm, "localdomain"},
@@ -17,6 +19,8 @@
    {dia_s6b_local_ip, "127.0.0.10"},
    {dia_s6b_local_port, 3868},
    {dia_s6b_proto, sctp},
+   {dia_s6b_connect_timer, 30000},
+   {dia_s6b_watchdog_timer, 30000},
    {dia_s6b_vendor_id, 0},
    {dia_s6b_origin_host, "aaa.localdomain"},
    {dia_s6b_origin_realm, "localdomain"},
diff --git a/src/aaa_diameter_s6b.erl b/src/aaa_diameter_s6b.erl
index 4ee0219..e4fff31 100644
--- a/src/aaa_diameter_s6b.erl
+++ b/src/aaa_diameter_s6b.erl
@@ -67,6 +67,8 @@
 -define(ENV_DEFAULT_DIAMETER_PROTO, sctp).
 -define(ENV_DEFAULT_DIAMETER_REMOTE_IP, "127.0.0.10").
 -define(ENV_DEFAULT_DIAMETER_REMOTE_PORT, 3868).
+-define(ENV_DEFAULT_DIAMETER_CONNECT_TIMER_MS, 30000).
+-define(ENV_DEFAULT_DIAMETER_WATCHDOG_TIMER_MS, 30000).

 -define(VENDOR_ID_3GPP, 10415).
 -define(VENDOR_ID_3GPP2, 5535).
@@ -121,9 +123,11 @@
     Proto = application:get_env(?ENV_APP_NAME, dia_s6b_proto, 
?ENV_DEFAULT_DIAMETER_PROTO),
     Ip = application:get_env(?ENV_APP_NAME, dia_s6b_local_ip, 
?ENV_DEFAULT_DIAMETER_REMOTE_IP),
     Port = application:get_env(?ENV_APP_NAME, dia_s6b_local_port, 
?ENV_DEFAULT_DIAMETER_REMOTE_PORT),
+    ConnectTimer = application:get_env(?ENV_APP_NAME, dia_s6b_connect_timer, 
?ENV_DEFAULT_DIAMETER_CONNECT_TIMER_MS),
+    WatchdogTimer = application:get_env(?ENV_APP_NAME, dia_s6b_watchdog_timer, 
?ENV_DEFAULT_DIAMETER_WATCHDOG_TIMER_MS),
     ok = diameter:start_service(?MODULE, ?SERVICE),
     % lager:info("DiaServices is ~p~n", [DiaServ]),
-    {ok, _} = listen({address, Proto, Ip, Port}),
+    {ok, _} = listen({address, Proto, Ip, Port}, {timer, ConnectTimer, 
WatchdogTimer}),
     {ok, State}.

 test() ->
@@ -176,8 +180,7 @@
 %% Internal Function Definitions
 %% ------------------------------------------------------------------

-%% connect/2
-listen(Name, {address, Protocol, IPAddr, Port}) ->
+listen(Name, {address, Protocol, IPAddr, Port}, {timer, ConnectTimer, 
WatchdogTimer}) ->
     lager:notice("~s Listening on IP ~s port ~p~n", [Name, IPAddr, Port]),
     {ok, IP} = inet_parse:address(IPAddr),
     TransportOpts =
@@ -188,11 +191,13 @@
            {port, Port}
            %%{raddr, IP},
            %%{rport, Port}
-          ]}],
-    diameter:add_transport(Name, {listen, [{reconnect_timer, 1000} | 
TransportOpts]}).
+          ]},
+         {connect_timer, ConnectTimer},
+         {watchdog_timer, WatchdogTimer}],
+    diameter:add_transport(Name, {listen, TransportOpts}).

-listen(Address) ->
-    listen(?SVC_NAME, Address).
+listen(Address, Timers) ->
+    listen(?SVC_NAME, Address, Timers).

 %% Convert connection type
 tmod(tcp) ->
diff --git a/src/epdg_diameter_swx.erl b/src/epdg_diameter_swx.erl
index c278206..ada8555 100644
--- a/src/epdg_diameter_swx.erl
+++ b/src/epdg_diameter_swx.erl
@@ -67,6 +67,8 @@
 -define(ENV_DEFAULT_DIAMETER_PROTO, sctp).
 -define(ENV_DEFAULT_DIAMETER_REMOTE_IP, "127.0.0.1").
 -define(ENV_DEFAULT_DIAMETER_REMOTE_PORT, 3868).
+-define(ENV_DEFAULT_DIAMETER_CONNECT_TIMER_MS, 30000).
+-define(ENV_DEFAULT_DIAMETER_WATCHDOG_TIMER_MS, 30000).

 -define(VENDOR_ID_3GPP, 10415).
 -define(VENDOR_ID_3GPP2, 5535).
@@ -121,9 +123,11 @@
     Proto = application:get_env(?ENV_APP_NAME, diameter_proto, 
?ENV_DEFAULT_DIAMETER_PROTO),
     Ip = application:get_env(?ENV_APP_NAME, diameter_remote_ip, 
?ENV_DEFAULT_DIAMETER_REMOTE_IP),
     Port = application:get_env(?ENV_APP_NAME, diameter_remote_port, 
?ENV_DEFAULT_DIAMETER_REMOTE_PORT),
+    ConnectTimer = application:get_env(?ENV_APP_NAME, diameter_connect_timer, 
?ENV_DEFAULT_DIAMETER_CONNECT_TIMER_MS),
+    WatchdogTimer = application:get_env(?ENV_APP_NAME, 
diameter_watchdog_timer, ?ENV_DEFAULT_DIAMETER_WATCHDOG_TIMER_MS),
     ok = diameter:start_service(?MODULE, ?SERVICE),
     % lager:info("DiaServices is ~p~n", [DiaServ]),
-    {ok, _} = connect({address, Proto, Ip, Port}),
+    {ok, _} = connect({address, Proto, Ip, Port}, {timer, ConnectTimer, 
WatchdogTimer}),
     {ok, State}.

 test() ->
@@ -256,8 +260,8 @@
 %% Internal Function Definitions
 %% ------------------------------------------------------------------

-%% connect/2
-connect(Name, {address, Protocol, IPAddr, Port}) ->
+%% connect/3
+connect(Name, {address, Protocol, IPAddr, Port}, {timer, ConnectTimer, 
WatchdogTimer}) ->
     lager:notice("~s connecting to IP ~s port ~p~n", [Name, IPAddr, Port]),
     {ok, IP} = inet_parse:address(IPAddr),
     TransportOpts =
@@ -265,11 +269,13 @@
          {transport_config,
           [{reuseaddr, true},
            {raddr, IP},
-           {rport, Port}]}],
-    diameter:add_transport(Name, {connect, [{reconnect_timer, 1000} | 
TransportOpts]}).
+           {rport, Port}]},
+         {connect_timer, ConnectTimer},
+         {watchdog_timer, WatchdogTimer}],
+    diameter:add_transport(Name, {connect, TransportOpts}).

-connect(Address) ->
-    connect(?SVC_NAME, Address).
+connect(Address, Timers) ->
+    connect(?SVC_NAME, Address, Timers).

 %% Convert connection type
 tmod(tcp) ->

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

Gerrit-Project: erlang/osmo-epdg
Gerrit-Branch: master
Gerrit-Change-Id: I7d280f83f4f375eaf34ea3b69a421372af54ffdb
Gerrit-Change-Number: 35588
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: daniel <[email protected]>
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: lynxis lazus <[email protected]>
Gerrit-MessageType: merged

Reply via email to