better error handling in case application config is insufficient
diff --git a/ebin/mgw_nat.app b/ebin/mgw_nat.app
index 677cb2a..5b4ac0c 100644
--- a/ebin/mgw_nat.app
+++ b/ebin/mgw_nat.app
@@ -8,7 +8,8 @@
{mod, {mgw_nat_app, []}},
{applications, []},
{env, [
- {rewrite_act_mod, mgw_nat_act_bow_onw },
+ % Specify the rewrite actor module
+ %{rewrite_act_mod, mgw_nat_act_bow_onw },
% SCCP static rewrite rules
{sccp_rewrite_tbl, [
@@ -16,23 +17,23 @@
{ 12340001, 98760001, "VLR" }
]},
- % SCCP source masquerading pool
+ % Example SCCP source masquerading pool
{sccp_masq_gt_base, 12340000},
{sccp_masq_gt_max, 9999},
- % ISUP rewrite
+ % Example ISUP rewrite
{msrn_pfx_msc, 35489099},
{msrn_pfx_stp, 6392994200},
{intern_pfx, 63},
- % SCTP / IP config
+ % Example SCTP / IP config
{msc_local_ip, any},
{msc_local_port, 2904},
{msc_remote_ip, {172,16,1,81}},
{stp_remote_ip, {172,16,249,20}},
{stp_remote_port, 2904},
- % MAP rewrite table
+ % Example MAP rewrite table
{map_rewrite_table, [
{ msc, 1234500070, 678980004014 },
{ hlr, 1234500073, 678980004012 },
diff --git a/src/mgw_nat_usr.erl b/src/mgw_nat_usr.erl
index 14bcd7c..8503333 100644
--- a/src/mgw_nat_usr.erl
+++ b/src/mgw_nat_usr.erl
@@ -48,12 +48,13 @@
init(_Params) ->
sccp_masq:init(),
map_masq:config_update(),
- {ok, MscLocalIp} = application:get_env(msc_local_ip),
- {ok, MscLocalPort} = application:get_env(msc_local_port),
- {ok, MscRemoteIp} = application:get_env(msc_remote_ip),
- {ok, StpRemoteIp} = application:get_env(stp_remote_ip),
- {ok, StpRemotePort} = application:get_env(stp_remote_port),
- {ok, RewriteActMod} = application:get_env(rewrite_act_mod),
+ MscLocalIp = get_app_config(msc_local_ip),
+ MscLocalPort = get_app_config(msc_local_port),
+ MscRemoteIp = get_app_config(msc_remote_ip),
+ StpRemoteIp = get_app_config(stp_remote_ip),
+ StpRemotePort = get_app_config(stp_remote_port),
+ RewriteActMod = get_app_config(rewrite_act_mod),
+ RewriteActMod:reload_config(),
io:format("Starting mgw_nat_usr with rewrite actor module ~p~n", [RewriteActMod]),
SctpHdlrArgs = [MscLocalIp, MscLocalPort, MscRemoteIp,
StpRemoteIp, StpRemotePort, RewriteActMod],
@@ -71,7 +72,7 @@
{noreply, LoopData};
handle_cast(reload_config, LoopData) ->
- {ok, RewriteActMod} = application:get_env(rewrite_act_mod),
+ RewriteActMod = get_app_config(rewrite_act_mod),
RewriteActMod:reload_config(),
{noreply, LoopData}.
@@ -83,3 +84,13 @@
handle_info({sctp, Sock, Ip, Port, Data}, LoopData) ->
NewL = sctp_handler:handle_sctp(LoopData, {sctp, Sock, Ip, Port, Data}),
{noreply, NewL}.
+
+get_app_config(Name) ->
+ case application:get_env(Name) of
+ undefined ->
+ error_logger:error_report([{error, app_cfg_missing},
+ {get_app_config, Name}]),
+ throw(app_cfg_missing);
+ {ok, Val} ->
+ Val
+ end.