s2b: Use provided APN in CreateSessionReq

Change-Id: I9e48c531aec837aade44a8c87d61a67f6bb44ca9
This commit is contained in:
Pau Espin 2024-02-12 13:10:37 +01:00
parent 9ff8c9e9bf
commit a4b154699f
2 changed files with 12 additions and 14 deletions

View File

@ -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) ->

View File

@ -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) ->