s2b: Use provided APN in CreateSessionReq
Change-Id: I9e48c531aec837aade44a8c87d61a67f6bb44ca9
This commit is contained in:
parent
9ff8c9e9bf
commit
a4b154699f
|
@ -48,7 +48,7 @@
|
|||
%% gen_server Function Exports
|
||||
-export([init/1, handle_call/3, handle_cast/2, handle_info/2]).
|
||||
-export([code_change/3]).
|
||||
-export([create_session_req/1, delete_session_req/1]).
|
||||
-export([create_session_req/2, delete_session_req/1]).
|
||||
|
||||
%% Application Definitions
|
||||
-define(SERVER, ?MODULE).
|
||||
|
@ -57,8 +57,6 @@
|
|||
-define(CALLBACK_MOD, epdg_gtpc_s2b_cb).
|
||||
-define(ENV_APP_NAME, osmo_epdg).
|
||||
|
||||
%% TODO: make APN configurable? get it from HSS?
|
||||
-define(APN, <<"internet">>).
|
||||
-define(MCC, 901).
|
||||
-define(MNC, 42).
|
||||
-define(MNC_SIZE, 3).
|
||||
|
@ -137,14 +135,16 @@ init(State) ->
|
|||
lager:error("GTPv2C UDP socket open error: ~w~n", [Reason])
|
||||
end.
|
||||
|
||||
create_session_req(Imsi) ->
|
||||
gen_server:call(?SERVER, {gtpc_create_session_req, {Imsi}}).
|
||||
create_session_req(Imsi, Apn) ->
|
||||
gen_server:call(?SERVER, {gtpc_create_session_req, {Imsi, Apn}}).
|
||||
|
||||
delete_session_req(Imsi) ->
|
||||
gen_server:call(?SERVER, {gtpc_delete_session_req, {Imsi}}).
|
||||
|
||||
handle_call({gtpc_create_session_req, {Imsi}}, {Pid, _Tag} = _From, State0) ->
|
||||
{Sess0, State1} = find_or_new_gtp_session(Imsi, Pid, State0),
|
||||
handle_call({gtpc_create_session_req, {Imsi, Apn}}, {Pid, _Tag} = _From, State0) ->
|
||||
{Sess0, State1} = find_or_new_gtp_session(Imsi,
|
||||
#gtp_session{pid = Pid, apn = list_to_binary(Apn)},
|
||||
State0),
|
||||
Req = gen_create_session_request(Sess0, State1),
|
||||
%TODO: increment State.seq_no.
|
||||
tx_gtp(Req, State1),
|
||||
|
@ -199,15 +199,13 @@ terminate(_Reason, _State) ->
|
|||
%% Internal Function Definitions
|
||||
%% ------------------------------------------------------------------
|
||||
|
||||
new_gtp_session(Imsi, Pid, State) ->
|
||||
new_gtp_session(Imsi, SessTpl, State) ->
|
||||
% TODO: find non-used local TEI inside State
|
||||
DefaultBearer = #gtp_bearer{
|
||||
ebi = 5,
|
||||
local_data_tei = State#gtp_state.next_local_data_tei
|
||||
},
|
||||
Sess = #gtp_session{imsi = Imsi,
|
||||
pid = Pid,
|
||||
apn = ?APN,
|
||||
Sess = SessTpl#gtp_session{imsi = Imsi,
|
||||
local_control_tei = State#gtp_state.next_local_control_tei,
|
||||
default_bearer_id = DefaultBearer#gtp_bearer.ebi,
|
||||
bearers = sets:add_element(DefaultBearer, sets:new())
|
||||
|
@ -227,13 +225,13 @@ find_gtp_session_by_imsi(Imsi, State) ->
|
|||
State#gtp_state.sessions),
|
||||
Res.
|
||||
|
||||
find_or_new_gtp_session(Imsi, Pid, State) ->
|
||||
find_or_new_gtp_session(Imsi, SessTpl, State) ->
|
||||
Sess = find_gtp_session_by_imsi(Imsi, State),
|
||||
case Sess of
|
||||
#gtp_session{imsi = Imsi} ->
|
||||
{Sess, State};
|
||||
undefined ->
|
||||
new_gtp_session(Imsi, Pid, State)
|
||||
new_gtp_session(Imsi, SessTpl, State)
|
||||
end.
|
||||
|
||||
update_gtp_session(OldSess, NewSess, State) ->
|
||||
|
|
|
@ -239,7 +239,7 @@ state_authenticated(enter, _OldState, Data) ->
|
|||
|
||||
state_authenticated({call, From}, tunnel_request, Data) ->
|
||||
lager:info("ue_fsm state_authenticated event=tunnel_request, ~p~n", [Data]),
|
||||
epdg_gtpc_s2b:create_session_req(Data#ue_fsm_data.imsi),
|
||||
epdg_gtpc_s2b:create_session_req(Data#ue_fsm_data.imsi, Data#ue_fsm_data.apn),
|
||||
{keep_state, Data, [{reply,From,ok}]};
|
||||
|
||||
state_authenticated({call, From}, {received_gtpc_create_session_response, Result}, Data) ->
|
||||
|
|
Loading…
Reference in New Issue