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
8792d6c1
Commit
8792d6c1
authored
Aug 19, 2019
by
gauthier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
GTPV2-C status value "REMOTE PEER NOT RESPONDING"
parent
7cb55cbd
Changes
17
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
271 additions
and
59 deletions
+271
-59
src/common/msg/itti_msg_s11.hpp
src/common/msg/itti_msg_s11.hpp
+15
-1
src/common/msg/itti_msg_s5s8.hpp
src/common/msg/itti_msg_s5s8.hpp
+14
-2
src/gtpv2c/gtpv2c.cpp
src/gtpv2c/gtpv2c.cpp
+37
-27
src/gtpv2c/gtpv2c.hpp
src/gtpv2c/gtpv2c.hpp
+10
-5
src/itti/itti_msg.hpp
src/itti/itti_msg.hpp
+2
-0
src/pgwc/pgw_s5s8.cpp
src/pgwc/pgw_s5s8.cpp
+22
-1
src/pgwc/pgw_s5s8.hpp
src/pgwc/pgw_s5s8.hpp
+1
-0
src/sgwc/sgwc_app.cpp
src/sgwc/sgwc_app.cpp
+61
-17
src/sgwc/sgwc_app.hpp
src/sgwc/sgwc_app.hpp
+2
-0
src/sgwc/sgwc_eps_bearer_context.cpp
src/sgwc/sgwc_eps_bearer_context.cpp
+11
-0
src/sgwc/sgwc_eps_bearer_context.hpp
src/sgwc/sgwc_eps_bearer_context.hpp
+1
-0
src/sgwc/sgwc_procedure.cpp
src/sgwc/sgwc_procedure.cpp
+40
-0
src/sgwc/sgwc_procedure.hpp
src/sgwc/sgwc_procedure.hpp
+6
-1
src/sgwc/sgwc_s11.cpp
src/sgwc/sgwc_s11.cpp
+22
-1
src/sgwc/sgwc_s11.hpp
src/sgwc/sgwc_s11.hpp
+1
-0
src/sgwc/sgwc_s5s8.cpp
src/sgwc/sgwc_s5s8.cpp
+25
-4
src/sgwc/sgwc_s5s8.hpp
src/sgwc/sgwc_s5s8.hpp
+1
-0
No files found.
src/common/msg/itti_msg_s11.hpp
View file @
8792d6c1
...
...
@@ -41,12 +41,14 @@ public:
l_endpoint
=
{};
r_endpoint
=
{};
teid
=
UNASSIGNED_TEID
;
l_teid
=
UNASSIGNED_TEID
;
gtpc_tx_id
=
0
;
}
itti_s11_msg
(
const
itti_s11_msg
&
i
)
:
itti_msg
(
i
)
{
l_endpoint
=
i
.
l_endpoint
;
r_endpoint
=
i
.
r_endpoint
;
teid
=
i
.
teid
;
l_teid
=
i
.
l_teid
;
gtpc_tx_id
=
i
.
gtpc_tx_id
;
}
itti_s11_msg
(
const
itti_s11_msg
&
i
,
const
task_id_t
orig
,
const
task_id_t
dest
)
:
itti_s11_msg
(
i
)
{
...
...
@@ -56,10 +58,22 @@ public:
endpoint
l_endpoint
;
endpoint
r_endpoint
;
teid_t
teid
;
teid_t
teid
;
// remote teid
teid_t
l_teid
;
// local teid
uint64_t
gtpc_tx_id
;
};
class
itti_s11_remote_peer_not_responding
:
public
itti_s11_msg
{
public:
itti_s11_remote_peer_not_responding
(
const
task_id_t
orig
,
const
task_id_t
dest
)
:
itti_s11_msg
(
S11_REMOTE_PEER_NOT_RESPONDING
,
orig
,
dest
)
{}
itti_s11_remote_peer_not_responding
(
const
itti_s11_remote_peer_not_responding
&
i
)
:
itti_s11_msg
(
i
)
{}
itti_s11_remote_peer_not_responding
(
const
itti_s11_remote_peer_not_responding
&
i
,
const
task_id_t
orig
,
const
task_id_t
dest
)
:
itti_s11_msg
(
i
,
orig
,
dest
)
{}
const
char
*
get_msg_name
()
{
return
"S11_REMOTE_PEER_NOT_RESPONDING"
;};
};
//-----------------------------------------------------------------------------
class
itti_s11_create_session_request
:
public
itti_s11_msg
{
public:
itti_s11_create_session_request
(
const
task_id_t
origin
,
const
task_id_t
destination
)
:
...
...
src/common/msg/itti_msg_s5s8.hpp
View file @
8792d6c1
...
...
@@ -41,11 +41,12 @@ public:
l_endpoint
=
{};
r_endpoint
=
{};
teid
=
UNASSIGNED_TEID
;
l_teid
=
UNASSIGNED_TEID
;
gtpc_tx_id
=
0
;
}
itti_s5s8_msg
(
const
itti_s5s8_msg
&
i
)
:
itti_msg
(
i
),
l_endpoint
(
i
.
l_endpoint
),
r_endpoint
(
i
.
r_endpoint
),
teid
(
i
.
teid
),
gtpc_tx_id
(
i
.
gtpc_tx_id
)
{}
r_endpoint
(
i
.
r_endpoint
),
teid
(
i
.
teid
),
l_teid
(
i
.
l_teid
),
gtpc_tx_id
(
i
.
gtpc_tx_id
)
{}
itti_s5s8_msg
(
const
itti_s5s8_msg
&
i
,
const
task_id_t
orig
,
const
task_id_t
dest
)
:
itti_s5s8_msg
(
i
)
...
...
@@ -56,10 +57,21 @@ public:
endpoint
l_endpoint
;
endpoint
r_endpoint
;
teid_t
teid
;
teid_t
teid
;
// remote teid
teid_t
l_teid
;
// local teid
uint64_t
gtpc_tx_id
;
};
class
itti_s5s8_remote_peer_not_responding
:
public
itti_s5s8_msg
{
public:
itti_s5s8_remote_peer_not_responding
(
const
task_id_t
orig
,
const
task_id_t
dest
)
:
itti_s5s8_msg
(
S5S8_REMOTE_PEER_NOT_RESPONDING
,
orig
,
dest
)
{}
itti_s5s8_remote_peer_not_responding
(
const
itti_s5s8_remote_peer_not_responding
&
i
)
:
itti_s5s8_msg
(
i
)
{}
itti_s5s8_remote_peer_not_responding
(
const
itti_s5s8_remote_peer_not_responding
&
i
,
const
task_id_t
orig
,
const
task_id_t
dest
)
:
itti_s5s8_msg
(
i
,
orig
,
dest
)
{}
const
char
*
get_msg_name
()
{
return
"S5S8_REMOTE_PEER_NOT_RESPONDING"
;};
};
//-----------------------------------------------------------------------------
class
itti_s5s8_create_session_request
:
public
itti_s5s8_msg
{
public:
itti_s5s8_create_session_request
(
const
task_id_t
orig
,
const
task_id_t
dest
)
:
...
...
src/gtpv2c/gtpv2c.cpp
View file @
8792d6c1
This diff is collapsed.
Click to expand it.
src/gtpv2c/gtpv2c.hpp
View file @
8792d6c1
...
...
@@ -50,6 +50,7 @@ class gtpv2c_procedure {
public:
std
::
shared_ptr
<
gtpv2c_msg
>
retry_msg
;
endpoint
remote_endpoint
;
teid_t
local_teid
;
// for peer not responding
timer_id_t
retry_timer_id
;
timer_id_t
proc_cleanup_timer_id
;
uint64_t
gtpc_tx_id
;
...
...
@@ -64,6 +65,7 @@ public:
gtpv2c_procedure
()
:
retry_msg
(),
remote_endpoint
(),
local_teid
(
0
),
retry_timer_id
(
0
),
proc_cleanup_timer_id
(
0
),
gtpc_tx_id
(
0
),
...
...
@@ -74,6 +76,7 @@ public:
gtpv2c_procedure
(
const
gtpv2c_procedure
&
p
)
:
retry_msg
(
p
.
retry_msg
),
remote_endpoint
(
p
.
remote_endpoint
),
local_teid
(
p
.
local_teid
),
retry_timer_id
(
p
.
retry_timer_id
),
proc_cleanup_timer_id
(
p
.
proc_cleanup_timer_id
),
gtpc_tx_id
(
p
.
gtpc_tx_id
),
...
...
@@ -129,6 +132,8 @@ public:
static
const
uint8_t
version
=
2
;
gtpv2c_stack
(
const
std
::
string
&
ip_address
,
const
unsigned
short
port_num
,
const
util
::
thread_sched_params
&
sched_param
);
virtual
void
handle_receive
(
char
*
recv_buffer
,
const
std
::
size_t
bytes_transferred
,
const
endpoint
&
r_endpoint
);
virtual
void
notify_ul_error
(
const
endpoint
&
r_endpoint
,
const
teid_t
l_teid
,
const
cause_value_e
cause
,
const
uint64_t
gtpc_tx_id
);
void
handle_receive_message_cb
(
const
gtpv2c_msg
&
msg
,
const
endpoint
&
r_endpoint
,
const
task_id_t
&
task_id
,
bool
&
error
,
uint64_t
&
gtpc_tx_id
);
// Path mangement messages
...
...
@@ -136,11 +141,11 @@ public:
virtual
void
send_triggered_message
(
const
endpoint
&
r_endpoint
,
const
gtpv2c_echo_response
&
gtp_ies
,
const
uint64_t
gtp_tx_id
,
const
gtpv2c_transaction_action
&
a
=
DELETE_TX
);
// Tunnel management messages
virtual
uint32_t
send_initial_message
(
const
endpoint
&
r_endpoint
,
const
teid_t
teid
,
const
gtpv2c_create_session_request
&
gtp_ies
,
const
task_id_t
&
task_id
,
const
uint64_t
gtp_tx_id
);
virtual
uint32_t
send_initial_message
(
const
endpoint
&
r_endpoint
,
const
teid_t
teid
,
const
gtpv2c_delete_session_request
&
gtp_ies
,
const
task_id_t
&
task_id
,
const
uint64_t
gtp_tx_id
);
virtual
uint32_t
send_initial_message
(
const
endpoint
&
r_endpoint
,
const
teid_t
teid
,
const
gtpv2c_modify_bearer_request
&
gtp_ies
,
const
task_id_t
&
task_id
,
const
uint64_t
gtp_tx_id
);
virtual
uint32_t
send_initial_message
(
const
endpoint
&
r_endpoint
,
const
teid_t
teid
,
const
gtpv2c_release_access_bearers_request
&
gtp_ies
,
const
task_id_t
&
task_id
,
const
uint64_t
gtp_tx_id
);
virtual
uint32_t
send_initial_message
(
const
endpoint
&
r_endpoint
,
const
teid_t
teid
,
const
gtpv2c_downlink_data_notification
&
gtp_ies
,
const
task_id_t
&
task_id
,
const
uint64_t
gtp_tx_id
);
virtual
uint32_t
send_initial_message
(
const
endpoint
&
r_endpoint
,
const
teid_t
r_teid
,
const
teid_t
l_
teid
,
const
gtpv2c_create_session_request
&
gtp_ies
,
const
task_id_t
&
task_id
,
const
uint64_t
gtp_tx_id
);
virtual
uint32_t
send_initial_message
(
const
endpoint
&
r_endpoint
,
const
teid_t
r_teid
,
const
teid_t
l_
teid
,
const
gtpv2c_delete_session_request
&
gtp_ies
,
const
task_id_t
&
task_id
,
const
uint64_t
gtp_tx_id
);
virtual
uint32_t
send_initial_message
(
const
endpoint
&
r_endpoint
,
const
teid_t
r_teid
,
const
teid_t
l_
teid
,
const
gtpv2c_modify_bearer_request
&
gtp_ies
,
const
task_id_t
&
task_id
,
const
uint64_t
gtp_tx_id
);
virtual
uint32_t
send_initial_message
(
const
endpoint
&
r_endpoint
,
const
teid_t
r_teid
,
const
teid_t
l_
teid
,
const
gtpv2c_release_access_bearers_request
&
gtp_ies
,
const
task_id_t
&
task_id
,
const
uint64_t
gtp_tx_id
);
virtual
uint32_t
send_initial_message
(
const
endpoint
&
r_endpoint
,
const
teid_t
r_teid
,
const
teid_t
l_
teid
,
const
gtpv2c_downlink_data_notification
&
gtp_ies
,
const
task_id_t
&
task_id
,
const
uint64_t
gtp_tx_id
);
virtual
void
send_triggered_message
(
const
endpoint
&
r_endpoint
,
const
teid_t
teid
,
const
gtpv2c_create_session_response
&
gtp_ies
,
const
uint64_t
gtp_tx_id
,
const
gtpv2c_transaction_action
&
a
=
DELETE_TX
);
virtual
void
send_triggered_message
(
const
endpoint
&
r_endpoint
,
const
teid_t
teid
,
const
gtpv2c_delete_session_response
&
gtp_ies
,
const
uint64_t
gtp_tx_id
,
const
gtpv2c_transaction_action
&
a
=
DELETE_TX
);
...
...
src/itti/itti_msg.hpp
View file @
8792d6c1
...
...
@@ -73,6 +73,7 @@ typedef enum {
ITTI_MSG_TYPE_FIRST
=
0
,
ASYNC_SHELL_CMD
=
ITTI_MSG_TYPE_FIRST
,
RESTORE_SX_SESSIONS
,
S11_REMOTE_PEER_NOT_RESPONDING
,
S11_CREATE_SESSION_REQUEST
,
S11_CREATE_SESSION_RESPONSE
,
S11_CREATE_BEARER_REQUEST
,
...
...
@@ -94,6 +95,7 @@ typedef enum {
S1U_SUPPORTED_EXTENSION_HEADERS_NOTIFICATION
,
S1U_END_MARKER
,
S1U_G_PDU
,
// UNUSED
S5S8_REMOTE_PEER_NOT_RESPONDING
,
S5S8_CREATE_SESSION_REQUEST
,
S5S8_CREATE_SESSION_RESPONSE
,
S5S8_CREATE_BEARER_REQUEST
,
...
...
src/pgwc/pgw_s5s8.cpp
View file @
8792d6c1
...
...
@@ -144,7 +144,7 @@ void pgw_s5s8::send_msg(itti_s5s8_release_access_bearers_response& i)
//------------------------------------------------------------------------------
void
pgw_s5s8
::
send_msg
(
itti_s5s8_downlink_data_notification
&
i
)
{
send_initial_message
(
i
.
r_endpoint
,
i
.
teid
,
i
.
gtp_ies
,
TASK_PGWC_S5S8
,
i
.
gtpc_tx_id
);
send_initial_message
(
i
.
r_endpoint
,
i
.
teid
,
i
.
l_teid
,
i
.
gtp_ies
,
TASK_PGWC_S5S8
,
i
.
gtpc_tx_id
);
}
//------------------------------------------------------------------------------
void
pgw_s5s8
::
handle_receive_create_session_request
(
gtpv2c_msg
&
msg
,
const
endpoint
&
remote_endpoint
)
...
...
@@ -394,6 +394,27 @@ void pgw_s5s8::handle_receive(char* recv_buffer, const std::size_t bytes_transfe
}
}
//------------------------------------------------------------------------------
void
pgw_s5s8
::
notify_ul_error
(
const
endpoint
&
r_endpoint
,
const
teid_t
l_teid
,
const
cause_value_e
cause
,
const
uint64_t
gtpc_tx_id
)
{
switch
(
cause
)
{
case
cause_value_e
:
:
REMOTE_PEER_NOT_RESPONDING
:
{
itti_s5s8_remote_peer_not_responding
*
itti_msg
=
new
itti_s5s8_remote_peer_not_responding
(
TASK_PGWC_S5S8
,
TASK_PGWC_APP
);
itti_msg
->
r_endpoint
=
r_endpoint
;
itti_msg
->
gtpc_tx_id
=
gtpc_tx_id
;
itti_msg
->
teid
=
l_teid
;
std
::
shared_ptr
<
itti_s5s8_remote_peer_not_responding
>
i
=
std
::
shared_ptr
<
itti_s5s8_remote_peer_not_responding
>
(
itti_msg
);
int
ret
=
itti_inst
->
send_msg
(
i
);
if
(
RETURNok
!=
ret
)
{
Logger
::
pgwc_s5s8
().
error
(
"Could not send ITTI message %s to task TASK_PGWC_APP"
,
i
->
get_msg_name
());
}
}
break
;
default:
Logger
::
pgwc_s5s8
().
warn
(
"notify_ul_error cause %d not handled"
,
cause
);
}
}
//------------------------------------------------------------------------------
void
pgw_s5s8
::
time_out_itti_event
(
const
uint32_t
timer_id
)
{
bool
handled
=
false
;
...
...
src/pgwc/pgw_s5s8.hpp
View file @
8792d6c1
...
...
@@ -53,6 +53,7 @@ public:
void
operator
=
(
pgw_s5s8
const
&
)
=
delete
;
void
handle_receive
(
char
*
recv_buffer
,
const
std
::
size_t
bytes_transferred
,
const
endpoint
&
r_endpoint
);
void
notify_ul_error
(
const
endpoint
&
r_endpoint
,
const
teid_t
l_teid
,
const
cause_value_e
cause
,
const
uint64_t
gtpc_tx_id
);
void
send_msg
(
itti_s5s8_create_session_response
&
m
);
void
send_msg
(
itti_s5s8_delete_session_response
&
m
);
...
...
src/sgwc/sgwc_app.cpp
View file @
8792d6c1
...
...
@@ -184,20 +184,20 @@ void sgwc_app_task (void *args_p)
auto
*
msg
=
shared_msg
.
get
();
switch
(
msg
->
msg_type
)
{
case
S11_CREATE_SESSION_REQUEST
:
/*
* We received a create session request from MME (with GTP abstraction here)
* procedures might be:
* E-UTRAN Initial Attach
* UE requests PDN connectivity
*/
if
(
itti_s11_create_session_request
*
m
=
dynamic_cast
<
itti_s11_create_session_request
*>
(
msg
))
{
case
S5S8_CREATE_SESSION_RESPONSE
:
if
(
itti_s5s8_create_session_response
*
m
=
dynamic_cast
<
itti_s5s8_create_session_response
*>
(
msg
))
{
sgwc_app_inst
->
handle_itti_msg
(
ref
(
*
m
));
}
break
;
case
S5S8_CREATE_SESSION_RESPONSE
:
if
(
itti_s5s8_create_session_response
*
m
=
dynamic_cast
<
itti_s5s8_create_session_response
*>
(
msg
))
{
case
S5S8_DELETE_SESSION_RESPONSE
:
if
(
itti_s5s8_delete_session_response
*
m
=
dynamic_cast
<
itti_s5s8_delete_session_response
*>
(
msg
))
{
sgwc_app_inst
->
handle_itti_msg
(
ref
(
*
m
));
}
break
;
case
S5S8_DOWNLINK_DATA_NOTIFICATION
:
if
(
itti_s5s8_downlink_data_notification
*
m
=
dynamic_cast
<
itti_s5s8_downlink_data_notification
*>
(
msg
))
{
sgwc_app_inst
->
handle_itti_msg
(
ref
(
*
m
));
}
break
;
...
...
@@ -214,20 +214,32 @@ void sgwc_app_task (void *args_p)
}
break
;
case
S5S8_
DOWNLINK_DATA_NOTIFICATION
:
if
(
itti_s5s8_
downlink_data_notification
*
m
=
dynamic_cast
<
itti_s5s8_downlink_data_notification
*>
(
msg
))
{
case
S5S8_
REMOTE_PEER_NOT_RESPONDING
:
if
(
itti_s5s8_
remote_peer_not_responding
*
m
=
dynamic_cast
<
itti_s5s8_remote_peer_not_responding
*>
(
msg
))
{
sgwc_app_inst
->
handle_itti_msg
(
ref
(
*
m
));
}
break
;
case
S11_DELETE_SESSION_REQUEST
:
case
S11_CREATE_SESSION_REQUEST
:
/*
* We received a create session request from MME (with GTP abstraction here)
* procedures might be:
* E-UTRAN Initial Attach
* UE requests PDN connectivity
*/
if
(
itti_s11_create_session_request
*
m
=
dynamic_cast
<
itti_s11_create_session_request
*>
(
msg
))
{
sgwc_app_inst
->
handle_itti_msg
(
ref
(
*
m
));
}
break
;
case
S11_DELETE_SESSION_REQUEST
:
if
(
itti_s11_delete_session_request
*
m
=
dynamic_cast
<
itti_s11_delete_session_request
*>
(
msg
))
{
sgwc_app_inst
->
handle_itti_msg
(
ref
(
*
m
));
}
break
;
case
S
5S8_DELETE_SESSION_RESPONS
E
:
if
(
itti_s
5s8_delete_session_response
*
m
=
dynamic_cast
<
itti_s5s8_delete_session_respons
e
*>
(
msg
))
{
case
S
11_DOWNLINK_DATA_NOTIFICATION_ACKNOWLEDG
E
:
if
(
itti_s
11_downlink_data_notification_acknowledge
*
m
=
dynamic_cast
<
itti_s11_downlink_data_notification_acknowledg
e
*>
(
msg
))
{
sgwc_app_inst
->
handle_itti_msg
(
ref
(
*
m
));
}
break
;
...
...
@@ -244,8 +256,8 @@ void sgwc_app_task (void *args_p)
}
break
;
case
S11_
DOWNLINK_DATA_NOTIFICATION_ACKNOWLEDGE
:
if
(
itti_s11_
downlink_data_notification_acknowledge
*
m
=
dynamic_cast
<
itti_s11_downlink_data_notification_acknowledge
*>
(
msg
))
{
case
S11_
REMOTE_PEER_NOT_RESPONDING
:
if
(
itti_s11_
remote_peer_not_responding
*
m
=
dynamic_cast
<
itti_s11_remote_peer_not_responding
*>
(
msg
))
{
sgwc_app_inst
->
handle_itti_msg
(
ref
(
*
m
));
}
break
;
...
...
@@ -447,6 +459,11 @@ void sgwc_app::handle_itti_msg (itti_s11_release_access_bearers_request& m)
}
}
//------------------------------------------------------------------------------
void
sgwc_app
::
handle_itti_msg
(
itti_s11_remote_peer_not_responding
&
m
)
{
Logger
::
sgwc_app
().
debug
(
"Received S11 REMOTE_PEER_NOT_RESPONDING event, gtpc_tx_id "
PROC_ID_FMT
", todo when necessary."
,
m
.
gtpc_tx_id
);
}
//------------------------------------------------------------------------------
void
sgwc_app
::
handle_itti_msg
(
itti_s11_downlink_data_notification_acknowledge
&
m
)
{
Logger
::
sgwc_app
().
debug
(
"Received S11 DOWNLINK_DATA_NOTIFICATION_ACKNOWLEDGE sender teid "
TEID_FMT
" gtpc_tx_id "
PROC_ID_FMT
" "
,
m
.
teid
,
m
.
gtpc_tx_id
);
...
...
@@ -549,6 +566,33 @@ void sgwc_app::handle_itti_msg (itti_s5s8_release_access_bearers_response& m)
}
}
//------------------------------------------------------------------------------
void
sgwc_app
::
handle_itti_msg
(
itti_s5s8_remote_peer_not_responding
&
m
)
{
if
(
!
m
.
l_teid
)
{
// Node not responding to path management messages: ECHO
// TODO
Logger
::
sgwc_app
().
debug
(
"Received S5S8 REMOTE_PEER_NOT_RESPONDING event gtpc_tx_id "
PROC_ID_FMT
" local teid 0"
,
m
.
gtpc_tx_id
);
}
else
if
(
is_s5s8sgw_teid_2_sgw_contexts
(
m
.
l_teid
))
{
Logger
::
sgwc_app
().
debug
(
"Received S5S8 REMOTE_PEER_NOT_RESPONDING event gtpc_tx_id "
PROC_ID_FMT
" local teid "
TEID_FMT
"."
,
m
.
gtpc_tx_id
,
m
.
l_teid
);
std
::
pair
<
std
::
shared_ptr
<
sgw_eps_bearer_context
>
,
std
::
shared_ptr
<
sgw_pdn_connection
>>
p
=
s5s8sgw_teid_2_sgw_contexts
(
m
.
l_teid
);
if
((
p
.
first
.
get
())
&&
(
p
.
second
.
get
()))
{
p
.
first
->
handle_itti_msg
(
m
,
p
.
second
);
// cleanup
if
(
0
==
p
.
first
->
get_num_pdn_connections
())
{
delete_sgw_eps_bearer_context
(
p
.
first
);
}
else
{
Logger
::
sgwc_app
().
debug
(
"sgw_eps_bearer_context: %s!"
,
p
.
first
->
toString
().
c_str
());
}
}
else
{
Logger
::
sgwc_app
().
debug
(
"Received S5S8 REMOTE_PEER_NOT_RESPONDING with local teid "
TEID_FMT
", SGW contexts not found, ignore!"
,
m
.
l_teid
);
}
}
else
{
Logger
::
sgwc_app
().
debug
(
"Received S5S8 REMOTE_PEER_NOT_RESPONDING with local teid "
TEID_FMT
", SGW EPS bearer context not found, ignore!"
,
m
.
l_teid
);
}
}
//------------------------------------------------------------------------------
void
sgwc_app
::
handle_itti_msg
(
itti_s5s8_downlink_data_notification
&
m
)
{
...
...
src/sgwc/sgwc_app.hpp
View file @
8792d6c1
...
...
@@ -117,11 +117,13 @@ public:
void
handle_itti_msg
(
itti_s11_delete_session_request
&
m
);
void
handle_itti_msg
(
itti_s11_modify_bearer_request
&
m
);
void
handle_itti_msg
(
itti_s11_release_access_bearers_request
&
m
);
void
handle_itti_msg
(
itti_s11_remote_peer_not_responding
&
m
);
void
handle_itti_msg
(
itti_s11_downlink_data_notification_acknowledge
&
m
);
void
handle_itti_msg
(
itti_s5s8_create_session_response
&
m
);
void
handle_itti_msg
(
itti_s5s8_delete_session_response
&
m
);
void
handle_itti_msg
(
itti_s5s8_modify_bearer_response
&
m
);
void
handle_itti_msg
(
itti_s5s8_release_access_bearers_response
&
m
);
void
handle_itti_msg
(
itti_s5s8_remote_peer_not_responding
&
m
);
void
handle_itti_msg
(
itti_s5s8_downlink_data_notification
&
m
);
};
...
...
src/sgwc/sgwc_eps_bearer_context.cpp
View file @
8792d6c1
...
...
@@ -373,6 +373,17 @@ void sgw_eps_bearer_context::handle_itti_msg (itti_s5s8_release_access_bearers_r
}
}
//------------------------------------------------------------------------------
void
sgw_eps_bearer_context
::
handle_itti_msg
(
itti_s5s8_remote_peer_not_responding
&
resp
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{
shared_ptr
<
sebc_procedure
>
sp
=
find_procedure
(
resp
.
gtpc_tx_id
);
if
(
sp
.
get
())
{
sp
->
handle_itti_msg
(
resp
,
shared_from_this
(),
spc
);
remove_procedure
(
sp
.
get
());
}
else
{
Logger
::
sgwc_app
().
debug
(
"S5S8 RELEASE_ACCESS_BEARERS_RESPONSE ignored, no procedure found gtpc_tx_id "
PROC_ID_FMT
"!"
,
resp
.
gtpc_tx_id
);
}
}
//------------------------------------------------------------------------------
void
sgw_eps_bearer_context
::
handle_itti_msg
(
itti_s5s8_delete_session_response
&
dsresp
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{
shared_ptr
<
sebc_procedure
>
sp
=
find_procedure
(
dsresp
.
gtpc_tx_id
);
...
...
src/sgwc/sgwc_eps_bearer_context.hpp
View file @
8792d6c1
...
...
@@ -231,6 +231,7 @@ public:
void
handle_itti_msg
(
itti_s5s8_modify_bearer_response
&
m
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
);
void
handle_itti_msg
(
itti_s5s8_release_access_bearers_response
&
m
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
);
void
handle_itti_msg
(
itti_s5s8_downlink_data_notification
&
m
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
);
void
handle_itti_msg
(
itti_s5s8_remote_peer_not_responding
&
resp
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
);
std
::
string
toString
()
const
;
...
...
src/sgwc/sgwc_procedure.cpp
View file @
8792d6c1
...
...
@@ -55,6 +55,10 @@ void sebc_procedure::handle_itti_msg (itti_s5s8_release_access_bearers_response&
{
Logger
::
sgwc_app
().
error
(
"Unhandled message itti_s5s8_release_access_bearers_response"
);
}
void
sebc_procedure
::
handle_itti_msg
(
itti_s5s8_remote_peer_not_responding
&
resp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{
Logger
::
sgwc_app
().
error
(
"Unhandled message itti_s5s8_remote_peer_not_responding"
);
}
void
sebc_procedure
::
handle_itti_msg
(
itti_s5s8_downlink_data_notification
&
resp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{
Logger
::
sgwc_app
().
error
(
"Unhandled message itti_s5s8_downlink_data_notification"
);
...
...
@@ -93,6 +97,7 @@ int create_session_request_procedure::run(shared_ptr<sgw_eps_bearer_context> c)
// Forward to P-GW (temp use ITTI instead of ITTI/GTPv2-C/UDP)
itti_s5s8_create_session_request
*
s5s8_csr
=
new
itti_s5s8_create_session_request
(
TASK_SGWC_APP
,
TASK_SGWC_S5S8
);
s5s8_csr
->
gtpc_tx_id
=
get_trxn_id
();
s5s8_csr
->
l_teid
=
p
->
sgw_fteid_s5_s8_cp
.
teid_gre_key
;
// transfer IEs from S11 msg to S5 msg
// Mandatory imsi
...
...
@@ -271,6 +276,39 @@ void create_session_request_procedure::handle_itti_msg (itti_s5s8_create_session
Logger
::
sgwc_app
().
error
(
"Could not send ITTI message %s to task TASK_SGW_11"
,
s11_csresp
->
get_msg_name
());
}
}
//------------------------------------------------------------------------------
void
create_session_request_procedure
::
handle_itti_msg
(
itti_s5s8_remote_peer_not_responding
&
resp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
pdn
)
{
marked_for_removal
=
true
;
if
(
pdn
->
get_num_bearers
())
{
ebc
->
delete_pdn_connection
(
pdn
);
}
itti_s11_create_session_response
*
s11_csresp
=
new
itti_s11_create_session_response
(
TASK_SGWC_APP
,
TASK_SGWC_S11
);
s11_csresp
->
gtpc_tx_id
=
get_trxn_id
();
s11_csresp
->
r_endpoint
=
this
->
msg
.
r_endpoint
;
s11_csresp
->
teid
=
this
->
msg
.
gtp_ies
.
sender_fteid_for_cp
.
teid_gre_key
;
s11_csresp
->
l_teid
=
resp
.
l_teid
;
cause_t
cause
=
{.
cause_value
=
REMOTE_PEER_NOT_RESPONDING
,
.
pce
=
0
,
.
bce
=
0
,
.
cs
=
1
,
.
offending_ie_instance
=
0
,
.
filler
=
0
,
.
offending_ie_type
=
0
,
.
offending_ie_length
=
0
};
s11_csresp
->
gtp_ies
.
set
(
cause
);
s11_csresp
->
gtp_ies
.
set_sender_fteid_for_cp
(
ebc
->
sgw_fteid_s11_s4_cp
);
std
::
shared_ptr
<
itti_s11_create_session_response
>
msg_send
=
std
::
shared_ptr
<
itti_s11_create_session_response
>
(
s11_csresp
);
int
ret
=
itti_inst
->
send_msg
(
msg_send
);
if
(
RETURNok
!=
ret
)
{
Logger
::
sgwc_app
().
error
(
"Could not send ITTI message %s to task TASK_SGW_11"
,
s11_csresp
->
get_msg_name
());
}
}
//------------------------------------------------------------------------------
int
delete_session_request_procedure
::
run
(
shared_ptr
<
sgw_eps_bearer_context
>
c
)
{
...
...
@@ -291,6 +329,7 @@ int delete_session_request_procedure::run(shared_ptr<sgw_eps_bearer_context> c)
itti_s5s8_delete_session_request
*
s5s8_dsr
=
new
itti_s5s8_delete_session_request
(
TASK_SGWC_APP
,
TASK_SGWC_S5S8
);
s5s8_dsr
->
gtpc_tx_id
=
get_trxn_id
();
s5s8_dsr
->
teid
=
pdn_connection
->
pgw_fteid_s5_s8_cp
.
teid_gre_key
;
s5s8_dsr
->
l_teid
=
pdn_connection
->
sgw_fteid_s5_s8_cp
.
teid_gre_key
;
s5s8_dsr
->
r_endpoint
=
endpoint
(
pgw_cfg
.
s5s8_cp
.
addr4
,
sgwc_cfg
.
s5s8_cp
.
port
);
// transfer IEs from S11 msg to S5 msg
...
...
@@ -511,6 +550,7 @@ int modify_bearer_request_procedure::run(shared_ptr<sgw_eps_bearer_context> c)
px
->
gtpc_tx_id
=
util
::
uint_uid_generator
<
uint64_t
>::
get_instance
().
get_uid
();
s5s8_mbr
->
gtpc_tx_id
=
px
->
gtpc_tx_id
;
s5s8_mbr
->
teid
=
px
->
pdn
->
pgw_fteid_s5_s8_cp
.
teid_gre_key
;
s5s8_mbr
->
l_teid
=
px
->
pdn
->
sgw_fteid_s5_s8_cp
.
teid_gre_key
;
s5s8_mbr
->
r_endpoint
=
endpoint
(
pgw_cfg
.
s5s8_cp
.
addr4
,
sgwc_cfg
.
s5s8_cp
.
port
);
mei_t
mei
;
...
...
src/sgwc/sgwc_procedure.hpp
View file @
8792d6c1
...
...
@@ -63,9 +63,9 @@ public:
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
);
virtual
void
handle_itti_msg
(
itti_s5s8_remote_peer_not_responding
&
resp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
);
virtual
void
handle_itti_msg
(
itti_s5s8_downlink_data_notification
&
resp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
);
virtual
void
handle_itti_msg
(
itti_s11_downlink_data_notification_acknowledge
&
resp
);
};
//------------------------------------------------------------------------------
class
sgw_eps_bearer_context
;
...
...
@@ -81,6 +81,7 @@ public:
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
)
{}
void
handle_itti_msg
(
itti_s5s8_remote_peer_not_responding
&
resp
,
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
;
...
...
@@ -112,6 +113,7 @@ public:
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
)
{}
void
handle_itti_msg
(
itti_s5s8_remote_peer_not_responding
&
resp
,
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
;
...
...
@@ -143,6 +145,7 @@ public:
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) {}
void
handle_itti_msg
(
itti_s5s8_remote_peer_not_responding
&
resp
,
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
;
...
...
@@ -160,6 +163,7 @@ public:
//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
)
{}
void
handle_itti_msg
(
itti_s5s8_remote_peer_not_responding
&
resp
,
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
;
...
...
@@ -174,6 +178,7 @@ public:
int
run
(
std
::
shared_ptr
<
sgw_eps_bearer_context
>
context
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
);
void
handle_itti_msg
(
itti_s11_downlink_data_notification_acknowledge
&
resp
);
void
handle_itti_msg
(
itti_s5s8_remote_peer_not_responding
&
resp
,
std
::
shared_ptr
<
sgw_eps_bearer_context
>
ebc
,
std
::
shared_ptr
<
sgw_pdn_connection
>
spc
)
{}
//~downlink_data_notification_procedure() {}
...
...
src/sgwc/sgwc_s11.cpp
View file @
8792d6c1
...
...
@@ -159,7 +159,7 @@ void sgw_s11::send_msg(itti_s11_release_access_bearers_response& i)
//------------------------------------------------------------------------------
void
sgw_s11
::
send_msg
(
itti_s11_downlink_data_notification
&
i
)
{
send_initial_message
(
i
.
r_endpoint
,
i
.
teid
,
i
.
gtp_ies
,
TASK_SGWC_S11
,
i
.
gtpc_tx_id
);
send_initial_message
(
i
.
r_endpoint
,
i
.
teid
,
i
.
l_teid
,
i
.
gtp_ies
,
TASK_SGWC_S11
,
i
.
gtpc_tx_id
);
}
//------------------------------------------------------------------------------
void
sgw_s11
::
handle_receive_create_session_request
(
gtpv2c_msg
&
msg
,
const
endpoint
&
remote_endpoint
)
...
...
@@ -455,6 +455,27 @@ void sgw_s11::handle_receive(char* recv_buffer, const std::size_t bytes_transfer
}
}
//------------------------------------------------------------------------------
void
sgw_s11
::
notify_ul_error
(
const
endpoint
&
r_endpoint
,
const
teid_t
l_teid
,
const
cause_value_e
cause
,
const
uint64_t
gtpc_tx_id
)
{
switch
(
cause
)
{
case
cause_value_e
:
:
REMOTE_PEER_NOT_RESPONDING
:
{
itti_s11_remote_peer_not_responding
*
itti_msg
=
new
itti_s11_remote_peer_not_responding
(
TASK_SGWC_S11
,
TASK_SGWC_APP
);
itti_msg
->
r_endpoint
=
r_endpoint
;
itti_msg
->
gtpc_tx_id
=
gtpc_tx_id
;
itti_msg
->
teid
=
l_teid
;
std
::
shared_ptr
<
itti_s11_remote_peer_not_responding
>
i
=
std
::
shared_ptr
<
itti_s11_remote_peer_not_responding
>
(
itti_msg
);
int
ret
=
itti_inst
->
send_msg
(
i
);
if
(
RETURNok
!=
ret
)
{
Logger
::
sgwc_s11
().
error
(
"Could not send ITTI message %s to task TASK_SGWC_APP"
,
i
->
get_msg_name
());
}
}
break
;
default:
Logger
::
sgwc_s11
().
warn
(
"notify_ul_error cause %d not handled"
,
cause
);
}
}
//------------------------------------------------------------------------------
void
sgw_s11
::
time_out_itti_event
(
const
uint32_t
timer_id
)
{
bool
handled
=
false
;
...
...
src/sgwc/sgwc_s11.hpp
View file @
8792d6c1
...
...
@@ -55,6 +55,7 @@ public:
void
operator
=
(
sgw_s11
const
&
)
=
delete
;
void
handle_receive
(
char
*
recv_buffer
,
const
std
::
size_t
bytes_transferred
,
const
endpoint
&
remote_endpoint
);
void
notify_ul_error
(
const
endpoint
&
r_endpoint
,
const
teid_t
l_teid
,
const
cause_value_e
cause
,
const
uint64_t
gtpc_tx_id
);
void
send_msg
(
itti_s11_create_session_response
&
m
);
void
send_msg
(
itti_s11_delete_session_response
&
m
);
...
...
src/sgwc/sgwc_s5s8.cpp
View file @
8792d6c1
...
...
@@ -121,22 +121,22 @@ sgw_s5s8::sgw_s5s8 () : gtpv2c_stack(string(inet_ntoa(sgwc_cfg.s5s8_cp.addr4)),
//------------------------------------------------------------------------------
void
sgw_s5s8
::
send_msg
(
itti_s5s8_create_session_request
&
i
)
{
send_initial_message
(
i
.
r_endpoint
,
i
.
teid
,
i
.
gtp_ies
,
TASK_SGWC_S5S8
,
i
.
gtpc_tx_id
);
send_initial_message
(
i
.
r_endpoint
,
i
.
teid
,
i
.
l_teid
,
i
.
gtp_ies
,
TASK_SGWC_S5S8
,
i
.
gtpc_tx_id
);
}
//------------------------------------------------------------------------------
void
sgw_s5s8
::
send_msg
(
itti_s5s8_delete_session_request
&
i
)
{
send_initial_message
(
i
.
r_endpoint
,
i
.
teid
,
i
.
gtp_ies
,
TASK_SGWC_S5S8
,
i
.
gtpc_tx_id
);
send_initial_message
(
i
.
r_endpoint
,
i
.
teid
,
i
.
l_teid
,
i
.
gtp_ies
,
TASK_SGWC_S5S8
,
i
.
gtpc_tx_id
);
}
//------------------------------------------------------------------------------
void
sgw_s5s8
::
send_msg
(
itti_s5s8_modify_bearer_request
&
i
)
{
send_initial_message
(
i
.
r_endpoint
,
i
.
teid
,
i
.
gtp_ies
,
TASK_SGWC_S5S8
,
i
.
gtpc_tx_id
);
send_initial_message
(
i
.
r_endpoint
,
i
.
teid
,
i
.
l_teid
,
i
.
gtp_ies
,
TASK_SGWC_S5S8
,
i
.
gtpc_tx_id
);
}
//------------------------------------------------------------------------------
void
sgw_s5s8
::
send_msg
(
itti_s5s8_release_access_bearers_request
&
i
)
{
send_initial_message
(
i
.
r_endpoint
,
i
.
teid
,
i
.
gtp_ies
,
TASK_SGWC_S5S8
,
i
.
gtpc_tx_id
);
send_initial_message
(
i
.
r_endpoint
,
i
.
teid
,
i
.
l_teid
,
i
.
gtp_ies
,
TASK_SGWC_S5S8
,
i
.
gtpc_tx_id
);
}
//------------------------------------------------------------------------------
void
sgw_s5s8
::
send_msg
(
itti_s5s8_downlink_data_notification_acknowledge
&
i
)
...
...
@@ -390,6 +390,27 @@ void sgw_s5s8::handle_receive(char* recv_buffer, const std::size_t bytes_transfe
}
}
//------------------------------------------------------------------------------
void
sgw_s5s8
::
notify_ul_error
(
const
endpoint
&
r_endpoint
,
const
teid_t
l_teid
,
const
cause_value_e
cause
,
const
uint64_t
gtpc_tx_id
)
{
switch
(
cause
)
{
case
cause_value_e
:
:
REMOTE_PEER_NOT_RESPONDING
:
{
itti_s5s8_remote_peer_not_responding
*
itti_msg
=
new
itti_s5s8_remote_peer_not_responding
(
TASK_SGWC_S5S8
,
TASK_SGWC_APP
);
itti_msg
->
r_endpoint
=
r_endpoint
;
itti_msg
->
gtpc_tx_id
=
gtpc_tx_id
;
itti_msg
->
l_teid
=
l_teid
;
std
::
shared_ptr
<
itti_s5s8_remote_peer_not_responding
>
i
=
std
::
shared_ptr
<
itti_s5s8_remote_peer_not_responding
>
(
itti_msg
);
int
ret
=
itti_inst
->
send_msg
(
i
);
if
(
RETURNok
!=
ret
)
{
Logger
::
sgwc_s5s8
().
error
(
"Could not send ITTI message %s to task TASK_SGWC_APP"
,
i
->
get_msg_name
());
}
}
break
;
default:
Logger
::
sgwc_s5s8
().
warn
(
"notify_ul_error cause %d not handled"
,
cause
);
}
}
//------------------------------------------------------------------------------
void
sgw_s5s8
::
time_out_itti_event
(
const
uint32_t
timer_id
)
{
bool
handled
=
false
;
...
...
src/sgwc/sgwc_s5s8.hpp
View file @
8792d6c1
...
...
@@ -53,6 +53,7 @@ public:
void
operator
=
(
sgw_s5s8
const
&
)
=
delete
;
void
handle_receive
(
char
*
recv_buffer
,
const
std
::
size_t
bytes_transferred
,
const
endpoint
&
remote_endpoint
);
void
notify_ul_error
(
const
endpoint
&
r_endpoint
,
const
teid_t
l_teid
,
const
cause_value_e
cause
,
const
uint64_t
gtpc_tx_id
);
void
send_msg
(
itti_s5s8_create_session_request
&
m
);
void
send_msg
(
itti_s5s8_delete_session_request
&
m
);
...
...
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