Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-Spgwu-Tiny-Simple
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
CommunityXG
OpenXG-Spgwu-Tiny-Simple
Commits
f13a6ef0
Commit
f13a6ef0
authored
May 02, 2019
by
gauthier
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'pfcp_ids_session' into develop
parents
238ffe40
a0253d3c
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
96 additions
and
55 deletions
+96
-55
src/common/common_root_types.h
src/common/common_root_types.h
+2
-0
src/gtpv2c/gtpv2c.cpp
src/gtpv2c/gtpv2c.cpp
+26
-25
src/sgwc/sgwc_app.cpp
src/sgwc/sgwc_app.cpp
+16
-16
src/sgwc/sgwc_eps_bearer_context.cpp
src/sgwc/sgwc_eps_bearer_context.cpp
+11
-10
src/sgwc/sgwc_procedure.cpp
src/sgwc/sgwc_procedure.cpp
+18
-0
src/sgwc/sgwc_procedure.hpp
src/sgwc/sgwc_procedure.hpp
+23
-4
No files found.
src/common/common_root_types.h
View file @
f13a6ef0
...
...
@@ -40,6 +40,8 @@
#define IMEISV_DIGITS_MAX (16)
#define MAX_APN_PER_UE (5)
#define PROC_ID_FMT "0x%" PRIx64
// TEIDs
typedef
uint32_t
teid_t
;
#define TEID_FMT "0x%" PRIx32
...
...
src/gtpv2c/gtpv2c.cpp
View file @
f13a6ef0
This diff is collapsed.
Click to expand it.
src/sgwc/sgwc_app.cpp
View file @
f13a6ef0
...
...
@@ -297,7 +297,7 @@ void sgwc_app::handle_itti_msg (itti_s11_create_session_request& csreq)
// s_plus_p_gw_eps_bearer_context_information_t *s_plus_p_gw_eps_bearer_ctxt_info_p = NULL;
// sgw_eps_bearer_ctxt_t *eps_bearer_ctxt_p = NULL;
Logger
::
sgwc_app
().
debug
(
"Received S11 CREATE_SESSION_REQUEST sender teid "
TEID_FMT
" gtpc_tx_id
%"
PRIX64
" "
,
csreq
.
teid
,
csreq
.
gtpc_tx_id
);
Logger
::
sgwc_app
().
debug
(
"Received S11 CREATE_SESSION_REQUEST sender teid "
TEID_FMT
" gtpc_tx_id
"
PROC_ID_FMT
" "
,
csreq
.
teid
,
csreq
.
gtpc_tx_id
);
/*
* Upon reception of create session request from MME,
* S-GW should create UE, eNB and MME contexts and forward message to P-GW.
...
...
@@ -337,7 +337,7 @@ void sgwc_app::handle_itti_msg (itti_s11_create_session_request& csreq)
// imsi not authenticated
indication_t
indication
=
{};
if
((
csreq
.
gtp_ies
.
get
(
indication
))
&&
(
indication
.
uimsi
)){
Logger
::
sgwc_app
().
debug
(
"TODO S11 CREATE_SESSION_REQUEST (no AUTHENTICATED IMSI) sender teid "
TEID_FMT
" gtpc_tx_id
%"
PRIX64
" "
,
csreq
.
teid
,
csreq
.
gtpc_tx_id
);
Logger
::
sgwc_app
().
debug
(
"TODO S11 CREATE_SESSION_REQUEST (no AUTHENTICATED IMSI) sender teid "
TEID_FMT
" gtpc_tx_id
"
PROC_ID_FMT
" "
,
csreq
.
teid
,
csreq
.
gtpc_tx_id
);
return
;
}
else
{
imsi64_t
imsi64
=
imsi
.
to_imsi64
();
...
...
@@ -353,12 +353,12 @@ void sgwc_app::handle_itti_msg (itti_s11_create_session_request& csreq)
if
(
is_s11sgw_teid_2_sgw_eps_bearer_context
(
csreq
.
teid
))
{
ebc
=
s11sgw_teid_2_sgw_eps_bearer_context
(
csreq
.
teid
);
}
else
{
Logger
::
sgwc_app
().
debug
(
"Discarding S11 CREATE_SESSION_REQUEST sender teid "
TEID_FMT
" gtpc_tx_id
%"
PRIX64
", invalid teid"
,
csreq
.
teid
,
csreq
.
gtpc_tx_id
);
Logger
::
sgwc_app
().
debug
(
"Discarding S11 CREATE_SESSION_REQUEST sender teid "
TEID_FMT
" gtpc_tx_id
"
PROC_ID_FMT
", invalid teid"
,
csreq
.
teid
,
csreq
.
gtpc_tx_id
);
return
;
}
}
else
{
// TODO
Logger
::
sgwc_app
().
debug
(
"TODO S11 CREATE_SESSION_REQUEST (no IMSI) sender teid "
TEID_FMT
" gtpc_tx_id
%"
PRIX64
"
"
,
csreq
.
teid
,
csreq
.
gtpc_tx_id
);
Logger
::
sgwc_app
().
debug
(
"TODO S11 CREATE_SESSION_REQUEST (no IMSI) sender teid "
TEID_FMT
" gtpc_tx_id
"
PROC_ID_FMT
"
"
,
csreq
.
teid
,
csreq
.
gtpc_tx_id
);
return
;
}
}
...
...
@@ -368,64 +368,64 @@ void sgwc_app::handle_itti_msg (itti_s11_create_session_request& csreq)
//------------------------------------------------------------------------------
void
sgwc_app
::
handle_itti_msg
(
itti_s11_delete_session_request
&
m
)
{
Logger
::
sgwc_app
().
debug
(
"Received S11 DELETE_SESSION_REQUEST sender teid "
TEID_FMT
" gtpc_tx_id
%"
PRIX64
"
"
,
m
.
teid
,
m
.
gtpc_tx_id
);
Logger
::
sgwc_app
().
debug
(
"Received S11 DELETE_SESSION_REQUEST sender teid "
TEID_FMT
" gtpc_tx_id
"
PROC_ID_FMT
"
"
,
m
.
teid
,
m
.
gtpc_tx_id
);
if
(
m
.
teid
)
{
if
(
is_s11sgw_teid_2_sgw_eps_bearer_context
(
m
.
teid
))
{
shared_ptr
<
sgw_eps_bearer_context
>
ebc
=
s11sgw_teid_2_sgw_eps_bearer_context
(
m
.
teid
);
ebc
->
handle_itti_msg
(
m
);
Logger
::
sgwc_app
().
debug
(
"sgw_eps_bearer_context: %s!"
,
ebc
->
toString
().
c_str
());
}
else
{
Logger
::
sgwc_app
().
debug
(
"Discarding S11 CREATE_SESSION_REQUEST sender teid "
TEID_FMT
" gtpc_tx_id
%"
PRIX64
", invalid teid"
,
m
.
teid
,
m
.
gtpc_tx_id
);
Logger
::
sgwc_app
().
debug
(
"Discarding S11 CREATE_SESSION_REQUEST sender teid "
TEID_FMT
" gtpc_tx_id
"
PROC_ID_FMT
", invalid teid"
,
m
.
teid
,
m
.
gtpc_tx_id
);
return
;
}
}
else
{
// TODO
Logger
::
sgwc_app
().
debug
(
"Discarding S11 DELETE_SESSION_REQUEST sender teid "
TEID_FMT
" gtpc_tx_id
%"
PRIX64
"
"
,
m
.
teid
,
m
.
gtpc_tx_id
);
Logger
::
sgwc_app
().
debug
(
"Discarding S11 DELETE_SESSION_REQUEST sender teid "
TEID_FMT
" gtpc_tx_id
"
PROC_ID_FMT
"
"
,
m
.
teid
,
m
.
gtpc_tx_id
);
return
;
}
}
//------------------------------------------------------------------------------
void
sgwc_app
::
handle_itti_msg
(
itti_s11_modify_bearer_request
&
m
)
{
Logger
::
sgwc_app
().
debug
(
"Received S11 MODIFY_BEARER_REQUEST sender teid "
TEID_FMT
" gtpc_tx_id
%"
PRIX64
"
"
,
m
.
teid
,
m
.
gtpc_tx_id
);
Logger
::
sgwc_app
().
debug
(
"Received S11 MODIFY_BEARER_REQUEST sender teid "
TEID_FMT
" gtpc_tx_id
"
PROC_ID_FMT
"
"
,
m
.
teid
,
m
.
gtpc_tx_id
);
if
(
m
.
teid
)
{
if
(
is_s11sgw_teid_2_sgw_eps_bearer_context
(
m
.
teid
))
{
shared_ptr
<
sgw_eps_bearer_context
>
ebc
=
s11sgw_teid_2_sgw_eps_bearer_context
(
m
.
teid
);
ebc
->
handle_itti_msg
(
m
);
Logger
::
sgwc_app
().
debug
(
"sgw_eps_bearer_context: %s!"
,
ebc
->
toString
().
c_str
());
}
else
{
Logger
::
sgwc_app
().
debug
(
"Discarding S11 MODIFY_BEARER_REQUEST sender teid "
TEID_FMT
" gtpc_tx_id
%"
PRIX64
", invalid teid"
,
m
.
teid
,
m
.
gtpc_tx_id
);
Logger
::
sgwc_app
().
debug
(
"Discarding S11 MODIFY_BEARER_REQUEST sender teid "
TEID_FMT
" gtpc_tx_id
"
PROC_ID_FMT
", invalid teid"
,
m
.
teid
,
m
.
gtpc_tx_id
);
return
;
}
}
else
{
// TODO
Logger
::
sgwc_app
().
debug
(
"Discarding S11 MODIFY_BEARER_REQUEST sender teid "
TEID_FMT
" gtpc_tx_id
%"
PRIX64
", invalid teid"
,
m
.
teid
,
m
.
gtpc_tx_id
);
Logger
::
sgwc_app
().
debug
(
"Discarding S11 MODIFY_BEARER_REQUEST sender teid "
TEID_FMT
" gtpc_tx_id
"
PROC_ID_FMT
", invalid teid"
,
m
.
teid
,
m
.
gtpc_tx_id
);
return
;
}
}
//------------------------------------------------------------------------------
void
sgwc_app
::
handle_itti_msg
(
itti_s11_release_access_bearers_request
&
m
)
{
Logger
::
sgwc_app
().
debug
(
"Received S11 RELEASE_ACCESS_BEARERS_REQUEST sender teid "
TEID_FMT
" gtpc_tx_id
%"
PRIX64
"
"
,
m
.
teid
,
m
.
gtpc_tx_id
);
Logger
::
sgwc_app
().
debug
(
"Received S11 RELEASE_ACCESS_BEARERS_REQUEST sender teid "
TEID_FMT
" gtpc_tx_id
"
PROC_ID_FMT
"
"
,
m
.
teid
,
m
.
gtpc_tx_id
);
if
(
m
.
teid
)
{
if
(
is_s11sgw_teid_2_sgw_eps_bearer_context
(
m
.
teid
))
{
shared_ptr
<
sgw_eps_bearer_context
>
ebc
=
s11sgw_teid_2_sgw_eps_bearer_context
(
m
.
teid
);
ebc
->
handle_itti_msg
(
m
);
Logger
::
sgwc_app
().
debug
(
"sgw_eps_bearer_context: %s!"
,
ebc
->
toString
().
c_str
());
}
else
{
Logger
::
sgwc_app
().
debug
(
"Discarding S11 RELEASE_ACCESS_BEARERS_REQUEST sender teid "
TEID_FMT
" gtpc_tx_id
%"
PRIX64
", invalid teid"
,
m
.
teid
,
m
.
gtpc_tx_id
);
Logger
::
sgwc_app
().
debug
(
"Discarding S11 RELEASE_ACCESS_BEARERS_REQUEST sender teid "
TEID_FMT
" gtpc_tx_id
"
PROC_ID_FMT
", invalid teid"
,
m
.
teid
,
m
.
gtpc_tx_id
);
return
;
}
}
else
{
// TODO
Logger
::
sgwc_app
().
debug
(
"Discarding S11 RELEASE_ACCESS_BEARERS_REQUEST sender teid "
TEID_FMT
" gtpc_tx_id
%"
PRIX64
", invalid teid"
,
m
.
teid
,
m
.
gtpc_tx_id
);
Logger
::
sgwc_app
().
debug
(
"Discarding S11 RELEASE_ACCESS_BEARERS_REQUEST sender teid "
TEID_FMT
" gtpc_tx_id
"
PROC_ID_FMT
", invalid teid"
,
m
.
teid
,
m
.
gtpc_tx_id
);
return
;
}
}
//------------------------------------------------------------------------------
void
sgwc_app
::
handle_itti_msg
(
itti_s5s8_create_session_response
&
m
)
{
Logger
::
sgwc_app
().
debug
(
"Received S5S8 CREATE_SESSION_RESPONSE sender teid "
TEID_FMT
" gtpc_tx_id
%"
PRIX64
" "
,
m
.
teid
,
m
.
gtpc_tx_id
);
Logger
::
sgwc_app
().
debug
(
"Received S5S8 CREATE_SESSION_RESPONSE sender teid "
TEID_FMT
" gtpc_tx_id
"
PROC_ID_FMT
" "
,
m
.
teid
,
m
.
gtpc_tx_id
);
if
(
m
.
gtp_ies
.
s5_s8_pgw_fteid
.
second
.
interface_type
!=
S5_S8_PGW_GTP_C
)
{
Logger
::
sgwc_app
().
warn
(
"Received S5S8 CREATE_SESSION_RESPONSE with s5_s8_pgw_fteid.interface_type != S5_S8_PGW_GTP_C %d, ignore CSResp"
,
m
.
gtp_ies
.
sender_fteid_for_cp
.
second
.
interface_type
);
return
;
...
...
@@ -471,7 +471,7 @@ void sgwc_app::handle_itti_msg (itti_s5s8_delete_session_response& m)
//------------------------------------------------------------------------------
void
sgwc_app
::
handle_itti_msg
(
itti_s5s8_modify_bearer_response
&
m
)
{
Logger
::
sgwc_app
().
debug
(
"Received S5S8 MODIFY_BEARER_RESPONSE sender teid "
TEID_FMT
" gtpc_tx_id
%"
PRIX64
" "
,
m
.
teid
,
m
.
gtpc_tx_id
);
Logger
::
sgwc_app
().
debug
(
"Received S5S8 MODIFY_BEARER_RESPONSE sender teid "
TEID_FMT
" gtpc_tx_id
"
PROC_ID_FMT
" "
,
m
.
teid
,
m
.
gtpc_tx_id
);
if
(
is_s5s8sgw_teid_2_sgw_contexts
(
m
.
teid
))
{
std
::
pair
<
std
::
shared_ptr
<
sgw_eps_bearer_context
>
,
std
::
shared_ptr
<
sgw_pdn_connection
>>
p
=
s5s8sgw_teid_2_sgw_contexts
(
m
.
teid
);
if
((
p
.
first
.
get
())
&&
(
p
.
second
.
get
()))
{
...
...
@@ -487,7 +487,7 @@ void sgwc_app::handle_itti_msg (itti_s5s8_modify_bearer_response& m)
//------------------------------------------------------------------------------
void
sgwc_app
::
handle_itti_msg
(
itti_s5s8_release_access_bearers_response
&
m
)
{
Logger
::
sgwc_app
().
debug
(
"Received S5S8 RELEASE_ACCESS_BEARERS_RESPONSE sender teid "
TEID_FMT
" gtpc_tx_id
%"
PRIX64
" "
,
m
.
teid
,
m
.
gtpc_tx_id
);
Logger
::
sgwc_app
().
debug
(
"Received S5S8 RELEASE_ACCESS_BEARERS_RESPONSE sender teid "
TEID_FMT
" gtpc_tx_id
"
PROC_ID_FMT
" "
,
m
.
teid
,
m
.
gtpc_tx_id
);
if
(
is_s5s8sgw_teid_2_sgw_contexts
(
m
.
teid
))
{
std
::
pair
<
std
::
shared_ptr
<
sgw_eps_bearer_context
>
,
std
::
shared_ptr
<
sgw_pdn_connection
>>
p
=
s5s8sgw_teid_2_sgw_contexts
(
m
.
teid
);
if
((
p
.
first
.
get
())
&&
(
p
.
second
.
get
()))
{
...
...
src/sgwc/sgwc_eps_bearer_context.cpp
View file @
f13a6ef0
...
...
@@ -276,7 +276,7 @@ void sgw_eps_bearer_context::handle_itti_msg (itti_s11_release_access_bearers_re
{
shared_ptr
<
sebc_procedure
>
sp
=
find_procedure
(
rabreq
.
gtpc_tx_id
);
if
(
sp
.
get
())
{
Logger
::
sgwc_app
().
error
(
"S11 RELEASE_ACCESS_BEARERS_REQUEST ignored, existing procedure found gtpc_tx_id
%d!
"
,
rabreq
.
gtpc_tx_id
);
Logger
::
sgwc_app
().
error
(
"S11 RELEASE_ACCESS_BEARERS_REQUEST ignored, existing procedure found gtpc_tx_id
"
PROC_ID_FMT
"
"
,
rabreq
.
gtpc_tx_id
);
return
;
}
else
{
create_procedure
(
rabreq
);
...
...
@@ -287,7 +287,7 @@ void sgw_eps_bearer_context::handle_itti_msg (itti_s11_delete_session_request& d
{
shared_ptr
<
sebc_procedure
>
sp
=
find_procedure
(
dsreq
.
gtpc_tx_id
);
if
(
sp
.
get
())
{
Logger
::
sgwc_app
().
error
(
"S11 DELETE_SESSION_REQUEST ignored, existing procedure found gtpc_tx_id
%d
!"
,
dsreq
.
gtpc_tx_id
);
Logger
::
sgwc_app
().
error
(
"S11 DELETE_SESSION_REQUEST ignored, existing procedure found gtpc_tx_id
"
PROC_ID_FMT
"
!"
,
dsreq
.
gtpc_tx_id
);
return
;
}
else
{
indication_t
indication
=
{};
...
...
@@ -309,12 +309,12 @@ void sgw_eps_bearer_context::handle_itti_msg (itti_s5s8_create_session_response&
{
shared_ptr
<
sebc_procedure
>
sp
=
find_procedure
(
csresp
.
gtpc_tx_id
);
if
(
sp
.
get
())
{
sp
.
get
(
)
->
handle_itti_msg
(
csresp
,
shared_from_this
(),
spc
);
dynamic_pointer_cast
<
create_session_request_procedure
>
(
sp
)
->
handle_itti_msg
(
csresp
,
shared_from_this
(),
spc
);
if
(
sp
.
get
()
->
marked_for_removal
)
{
remove_procedure
(
sp
.
get
());
}
}
else
{
Logger
::
sgwc_app
().
debug
(
"S5S8 CREATE_SESSION_RESPONSE ignored, no procedure found gtpc_tx_id
%d
!"
,
csresp
.
gtpc_tx_id
);
Logger
::
sgwc_app
().
debug
(
"S5S8 CREATE_SESSION_RESPONSE ignored, no procedure found gtpc_tx_id
"
PROC_ID_FMT
"
!"
,
csresp
.
gtpc_tx_id
);
}
}
//------------------------------------------------------------------------------
...
...
@@ -322,12 +322,12 @@ void sgw_eps_bearer_context::handle_itti_msg (itti_s5s8_modify_bearer_response&
{
shared_ptr
<
sebc_procedure
>
sp
=
find_procedure
(
resp
.
gtpc_tx_id
);
if
(
sp
.
get
())
{
sp
.
get
(
)
->
handle_itti_msg
(
resp
,
shared_from_this
(),
spc
);
dynamic_pointer_cast
<
modify_bearer_request_procedure
>
(
sp
)
->
handle_itti_msg
(
resp
,
shared_from_this
(),
spc
);
if
(
sp
.
get
()
->
marked_for_removal
)
{
remove_procedure
(
sp
.
get
());
}
}
else
{
Logger
::
sgwc_app
().
debug
(
"S5S8 MODIFY_BEARER_RESPONSE ignored, no procedure found gtpc_tx_id
%d
!"
,
resp
.
gtpc_tx_id
);
Logger
::
sgwc_app
().
debug
(
"S5S8 MODIFY_BEARER_RESPONSE ignored, no procedure found gtpc_tx_id
"
PROC_ID_FMT
"
!"
,
resp
.
gtpc_tx_id
);
}
}
//------------------------------------------------------------------------------
...
...
@@ -335,12 +335,12 @@ void sgw_eps_bearer_context::handle_itti_msg (itti_s5s8_release_access_bearers_r
{
shared_ptr
<
sebc_procedure
>
sp
=
find_procedure
(
resp
.
gtpc_tx_id
);
if
(
sp
.
get
())
{
sp
.
get
(
)
->
handle_itti_msg
(
resp
,
shared_from_this
(),
spc
);
dynamic_pointer_cast
<
release_access_bearers_request_procedure
>
(
sp
)
->
handle_itti_msg
(
resp
,
shared_from_this
(),
spc
);
if
(
sp
.
get
()
->
marked_for_removal
)
{
remove_procedure
(
sp
.
get
());
}
}
else
{
Logger
::
sgwc_app
().
debug
(
"S5S8 RELEASE_ACCESS_BEARERS_RESPONSE ignored, no procedure found gtpc_tx_id
%d
!"
,
resp
.
gtpc_tx_id
);
Logger
::
sgwc_app
().
debug
(
"S5S8 RELEASE_ACCESS_BEARERS_RESPONSE ignored, no procedure found gtpc_tx_id
"
PROC_ID_FMT
"
!"
,
resp
.
gtpc_tx_id
);
}
}
//------------------------------------------------------------------------------
...
...
@@ -348,12 +348,13 @@ void sgw_eps_bearer_context::handle_itti_msg (itti_s5s8_delete_session_response&
{
shared_ptr
<
sebc_procedure
>
sp
=
find_procedure
(
dsresp
.
gtpc_tx_id
);
if
(
sp
.
get
())
{
sp
.
get
()
->
handle_itti_msg
(
dsresp
,
shared_from_this
(),
spc
);
Logger
::
sgwc_app
().
debug
(
"S5S8 DELETE_SESSION_RESPONSE , procedure gtpc_tx_id %d found "
,
dsresp
.
gtpc_tx_id
);
dynamic_pointer_cast
<
delete_session_request_procedure
>
(
sp
)
->
handle_itti_msg
(
dsresp
,
shared_from_this
(),
spc
);
if
(
sp
.
get
()
->
marked_for_removal
)
{
remove_procedure
(
sp
.
get
());
}
}
else
{
Logger
::
sgwc_app
().
debug
(
"S5S8
CREATE_SESSION_RESPONSE ignored, no procedure found gtpc_tx_id %d
!"
,
dsresp
.
gtpc_tx_id
);
Logger
::
sgwc_app
().
debug
(
"S5S8
DELETE_SESSION_RESPONSE ignored, no procedure found gtpc_tx_id "
PROC_ID_FMT
"
!"
,
dsresp
.
gtpc_tx_id
);
}
}
//------------------------------------------------------------------------------
...
...
src/sgwc/sgwc_procedure.cpp
View file @
f13a6ef0
...
...
@@ -39,6 +39,23 @@ extern itti_mw *itti_inst;
extern
sgwc_app
*
sgwc_app_inst
;
extern
sgwc_config
sgwc_cfg
;
void
sebc_procedure
::
handle_itti_msg
(
itti_s5s8_create_session_response
&
csresp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{
Logger
::
sgwc_app
().
error
(
"Unhandled message itti_s5s8_create_session_response"
);
}
void
sebc_procedure
::
handle_itti_msg
(
itti_s5s8_delete_session_response
&
dsresp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{
Logger
::
sgwc_app
().
error
(
"Unhandled message itti_s5s8_delete_session_response"
);
}
void
sebc_procedure
::
handle_itti_msg
(
itti_s5s8_modify_bearer_response
&
dsresp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{
Logger
::
sgwc_app
().
error
(
"Unhandled message itti_s5s8_modify_bearer_response"
);
}
void
sebc_procedure
::
handle_itti_msg
(
itti_s5s8_release_access_bearers_response
&
dsresp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{
Logger
::
sgwc_app
().
error
(
"Unhandled message itti_s5s8_release_access_bearers_response"
);
}
//------------------------------------------------------------------------------
int
create_session_request_procedure
::
run
(
shared_ptr
<
sgw_eps_bearer_context
>
c
)
{
...
...
@@ -51,6 +68,7 @@ int create_session_request_procedure::run(shared_ptr<sgw_eps_bearer_context> c)
//}
std
::
shared_ptr
<
sgw_pdn_connection
>
pdn
=
{};
if
(
c
->
find_pdn_connection
(
msg
.
gtp_ies
.
apn
.
access_point_name
,
msg
.
gtp_ies
.
pdn_type
,
pdn
))
{
Logger
::
sgwc_app
().
info
(
"PDN connection already exist for APN %s"
,
msg
.
gtp_ies
.
apn
.
access_point_name
.
c_str
());
return
RETURNerror
;
}
ebc
=
c
;
...
...
src/sgwc/sgwc_procedure.hpp
View file @
f13a6ef0
...
...
@@ -58,10 +58,10 @@ public:
virtual
bool
has_trxn_id
(
const
uint64_t
trxn_id
)
{
return
(
trxn_id
==
gtpc_tx_id
);}
virtual
uint64_t
get_trxn_id
()
{
return
gtpc_tx_id
;}
virtual
int
run
(
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
)
{
return
RETURNerror
;}
virtual
void
handle_itti_msg
(
itti_s5s8_create_session_response
&
csresp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{}
virtual
void
handle_itti_msg
(
itti_s5s8_delete_session_response
&
dsresp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{}
virtual
void
handle_itti_msg
(
itti_s5s8_modify_bearer_response
&
dsresp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{}
virtual
void
handle_itti_msg
(
itti_s5s8_release_access_bearers_response
&
dsresp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{}
virtual
void
handle_itti_msg
(
itti_s5s8_create_session_response
&
resp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
);
virtual
void
handle_itti_msg
(
itti_s5s8_delete_session_response
&
resp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
);
virtual
void
handle_itti_msg
(
itti_s5s8_modify_bearer_response
&
resp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
);
virtual
void
handle_itti_msg
(
itti_s5s8_release_access_bearers_response
&
resp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
);
};
//------------------------------------------------------------------------------
...
...
@@ -74,6 +74,11 @@ public:
int
run
(
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
);
void
handle_itti_msg
(
itti_s5s8_create_session_response
&
csresp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
);
//void handle_itti_msg (itti_s5s8_create_session_response& csresp, std::shared_ptr<sgw_eps_bearer_context> ebc, std::shared_ptr<sgw_pdn_connection> spc) {}
void
handle_itti_msg
(
itti_s5s8_delete_session_response
&
dsresp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{}
void
handle_itti_msg
(
itti_s5s8_modify_bearer_response
&
dsresp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{}
void
handle_itti_msg
(
itti_s5s8_release_access_bearers_response
&
dsresp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{}
itti_s11_create_session_request
msg
;
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
;
};
...
...
@@ -100,6 +105,10 @@ public:
int
run
(
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
);
void
handle_itti_msg
(
itti_s5s8_modify_bearer_response
&
s5resp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
pdn
);
void
handle_itti_msg
(
itti_s5s8_create_session_response
&
csresp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{}
void
handle_itti_msg
(
itti_s5s8_delete_session_response
&
dsresp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{}
//void handle_itti_msg (itti_s5s8_modify_bearer_response& dsresp, std::shared_ptr<sgw_eps_bearer_context> ebc, std::shared_ptr<sgw_pdn_connection> spc) {}
void
handle_itti_msg
(
itti_s5s8_release_access_bearers_response
&
dsresp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{}
itti_s11_modify_bearer_request
msg
;
std
::
vector
<
std
::
shared_ptr
<
pdn_bearers_to_be_xied
>>
pdn_bearers
;
...
...
@@ -127,6 +136,11 @@ public:
int
run
(
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
);
void
handle_itti_msg
(
itti_s5s8_release_access_bearers_response
&
s5resp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
pdn
);
void
handle_itti_msg
(
itti_s5s8_create_session_response
&
csresp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{}
void
handle_itti_msg
(
itti_s5s8_delete_session_response
&
dsresp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{}
void
handle_itti_msg
(
itti_s5s8_modify_bearer_response
&
dsresp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{}
//void handle_itti_msg (itti_s5s8_release_access_bearers_response& dsresp, std::shared_ptr<sgw_eps_bearer_context> ebc, std::shared_ptr<sgw_pdn_connection> spc) {}
itti_s11_release_access_bearers_request
msg
;
std
::
vector
<
std
::
shared_ptr
<
bearers_to_be_released
>>
bearers
;
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
;
...
...
@@ -139,6 +153,11 @@ public:
int
run
(
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
);
void
handle_itti_msg
(
itti_s5s8_delete_session_response
&
dsresp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>&
spc
);
void
handle_itti_msg
(
itti_s5s8_create_session_response
&
csresp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{}
//void handle_itti_msg (itti_s5s8_delete_session_response& dsresp, std::shared_ptr<sgw_eps_bearer_context> ebc, std::shared_ptr<sgw_pdn_connection> spc) {}
void
handle_itti_msg
(
itti_s5s8_modify_bearer_response
&
dsresp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{}
void
handle_itti_msg
(
itti_s5s8_release_access_bearers_response
&
dsresp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{}
itti_s11_delete_session_request
msg
;
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
;
std
::
shared_ptr
<
sgw_pdn_connection
>
pdn_connection
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment