[mgw_nat] add mgw_nat_app:reload_config() function
diff --git a/src/mgw_nat_app.erl b/src/mgw_nat_app.erl
index 6b43a94..31c71ff 100644
--- a/src/mgw_nat_app.erl
+++ b/src/mgw_nat_app.erl
@@ -2,6 +2,8 @@
 -behavior(application).
 -export([start/2, stop/1]).
 
+-export([reload_config/0]).
+
 start(_Type, _Args) ->
 	Sup = mgw_nat_sup:start_link(),
 	io:format("Sup ~p~n", [Sup]),
@@ -9,3 +11,36 @@
 
 stop(_State) ->
 	ok.
+
+reload_config() ->
+	case init:get_argument(config) of
+	{ok, [ Files ]} ->
+		ConfFiles = [begin
+				S = filename:basename(F,".config"),
+				filename:join(filename:dirname(F),
+				S ++ ".config")
+			     end || F <- Files],
+		% Move sys.config to the head of the list
+		Config = lists:sort(fun("sys.config", _) -> true;
+					(_, _) -> false end, ConfFiles),
+
+		OldEnv = application_controller:prep_config_change(),
+
+		Apps = [{application, A, make_appl(A)}
+		|| {A,_,_} <- application:which_applications()],
+		application_controller:change_application_data(Apps, Config),
+		application_controller:config_change(OldEnv);
+	_ ->
+		{ok, []}
+	end.
+
+make_appl(App) when is_atom(App) ->
+	AppList  = element(2,application:get_all_key(App)),
+	FullName = code:where_is_file(atom_to_list(App) ++ ".app"),
+	case file:consult(FullName) of
+	{ok, [{application, _, Opts}]} ->
+		Env = proplists:get_value(env, Opts, []),
+		lists:keyreplace(env, 1, AppList, {env, Env});
+	{error, _Reason} ->
+		lists:keyreplace(env, 1, AppList, {env, []})
+	end.