Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-SMF-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-SMF-Simple
Commits
7b682c40
Commit
7b682c40
authored
Jan 28, 2021
by
Tien-Thinh Nguyen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix issue when UE attaches again to the network
parent
4e2e3a1e
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
24 additions
and
19 deletions
+24
-19
src/smf_app/smf_context.cpp
src/smf_app/smf_context.cpp
+4
-13
src/smf_app/smf_context.hpp
src/smf_app/smf_context.hpp
+20
-6
No files found.
src/smf_app/smf_context.cpp
View file @
7b682c40
...
@@ -1882,21 +1882,22 @@ bool smf_context::handle_pdu_session_release_complete(
...
@@ -1882,21 +1882,22 @@ bool smf_context::handle_pdu_session_release_complete(
// TODO: return;
// TODO: return;
}
}
Logger
::
smf_app
().
debug
(
"Signal the SM Context Status Change"
);
event_sub
.
sm_context_status
(
event_sub
.
sm_context_status
(
scid
,
scid
,
static_cast
<
uint32_t
>
(
sm_context_status_e
::
SM_CONTEXT_STATUS_RELEASED
),
static_cast
<
uint32_t
>
(
sm_context_status_e
::
SM_CONTEXT_STATUS_RELEASED
),
sm_context_request
.
get
()
->
http_version
);
sm_context_request
.
get
()
->
http_version
);
// Get SUPI
supi64_t
supi64
=
smf_supi_to_u64
(
sm_context_request
.
get
()
->
req
.
get_supi
());
// Trigger PDU Session Release event notification
// Trigger PDU Session Release event notification
supi64_t
supi64
=
smf_supi_to_u64
(
sm_context_request
.
get
()
->
req
.
get_supi
());
Logger
::
smf_app
().
debug
(
"Signal the PDU Session Release Event notification"
);
event_sub
.
ee_pdu_session_release
(
event_sub
.
ee_pdu_session_release
(
supi64
,
sm_context_request
.
get
()
->
req
.
get_pdu_session_id
(),
supi64
,
sm_context_request
.
get
()
->
req
.
get_pdu_session_id
(),
sm_context_request
.
get
()
->
http_version
);
sm_context_request
.
get
()
->
http_version
);
// TODO: if dynamic PCC applied, SMF invokes an SM Policy Association
// TODO: if dynamic PCC applied, SMF invokes an SM Policy Association
// Termination
// Termination
// TODO: SMF unsubscribes from Session Management Subscription data
// TODO: SMF un
-
subscribes from Session Management Subscription data
// changes notification from UDM by invoking Numd_SDM_Unsubscribe
// changes notification from UDM by invoking Numd_SDM_Unsubscribe
// TODO: should check if sd context exist
// TODO: should check if sd context exist
...
@@ -2990,15 +2991,7 @@ void smf_context::update_qos_info(
...
@@ -2990,15 +2991,7 @@ void smf_context::update_qos_info(
QOSFlowDescriptionsContents
qos_flow_description_content
=
{};
QOSFlowDescriptionsContents
qos_flow_description_content
=
{};
// Only one flow description for new requested QoS Flow
// Only one flow description for new requested QoS Flow
// QOSFlowDescriptionsContents* qos_flow_description =
// (QOSFlowDescriptionsContents*) calloc(
// number_of_flow_descriptions, sizeof(QOSFlowDescriptionsContents));
if
(
number_of_flow_descriptions
>
0
)
{
if
(
number_of_flow_descriptions
>
0
)
{
// qos_flow_description =
// nas_msg.plain.sm.pdu_session_modification_request
// .qosflowdescriptions.qosflowdescriptionscontents;
for
(
int
i
=
0
;
i
<
number_of_flow_descriptions
;
i
++
)
{
for
(
int
i
=
0
;
i
<
number_of_flow_descriptions
;
i
++
)
{
if
(
nas_msg
.
plain
.
sm
.
pdu_session_modification_request
.
qosflowdescriptions
if
(
nas_msg
.
plain
.
sm
.
pdu_session_modification_request
.
qosflowdescriptions
.
qosflowdescriptionscontents
[
i
]
.
qosflowdescriptionscontents
[
i
]
...
@@ -3127,8 +3120,6 @@ void smf_context::update_qos_info(
...
@@ -3127,8 +3120,6 @@ void smf_context::update_qos_info(
// rule identifier
// rule identifier
i
++
;
i
++
;
}
}
// free_wrapper((void**) &qos_flow_description);
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
...
...
src/smf_app/smf_context.hpp
View file @
7b682c40
...
@@ -549,16 +549,27 @@ class smf_context : public std::enable_shared_from_this<smf_context> {
...
@@ -549,16 +549,27 @@ class smf_context : public std::enable_shared_from_this<smf_context> {
scid
(
0
),
scid
(
0
),
event_sub
(
smf_event
::
get_instance
())
{
event_sub
(
smf_event
::
get_instance
())
{
supi_prefix
=
{};
supi_prefix
=
{};
// subscribe to sm context status change
// Subscribe to sm context status change
event_sub
.
subscribe_sm_context_status
(
boost
::
bind
(
sm_context_status_connection
=
&
smf_context
::
handle_sm_context_status_change
,
this
,
_1
,
_1
,
_1
));
event_sub
.
subscribe_sm_context_status
(
boost
::
bind
(
// subscribe to pdu session release (event exposure)
&
smf_context
::
handle_sm_context_status_change
,
this
,
_1
,
_1
,
_1
));
event_sub
.
subscribe_ee_pdu_session_release
(
boost
::
bind
(
// Subscribe to pdu session release (event exposure)
&
smf_context
::
handle_ee_pdu_session_release
,
this
,
_1
,
_1
,
_1
));
ee_pdu_session_release_connection
=
event_sub
.
subscribe_ee_pdu_session_release
(
boost
::
bind
(
&
smf_context
::
handle_ee_pdu_session_release
,
this
,
_1
,
_1
,
_1
));
}
}
smf_context
(
smf_context
&
b
)
=
delete
;
smf_context
(
smf_context
&
b
)
=
delete
;
virtual
~
smf_context
()
{
Logger
::
smf_app
().
debug
(
"Delete SMF Context instance..."
);
// Disconnect the boost connection
if
(
sm_context_status_connection
.
connected
())
sm_context_status_connection
.
disconnect
();
if
(
ee_pdu_session_release_connection
.
connected
())
ee_pdu_session_release_connection
.
disconnect
();
}
/*
/*
* Insert a procedure to be processed
* Insert a procedure to be processed
* @param [std::shared_ptr<smf_procedure> &] sproc: procedure to be processed
* @param [std::shared_ptr<smf_procedure> &] sproc: procedure to be processed
...
@@ -1014,8 +1025,11 @@ class smf_context : public std::enable_shared_from_this<smf_context> {
...
@@ -1014,8 +1025,11 @@ class smf_context : public std::enable_shared_from_this<smf_context> {
scid_t
scid
;
// SM Context ID
scid_t
scid
;
// SM Context ID
// Big recursive lock
// Big recursive lock
mutable
std
::
recursive_mutex
m_context
;
mutable
std
::
recursive_mutex
m_context
;
// for Event Handling
// for Event Handling
smf_event
&
event_sub
;
smf_event
&
event_sub
;
bs2
::
connection
sm_context_status_connection
;
bs2
::
connection
ee_pdu_session_release_connection
;
};
};
}
// namespace smf
}
// namespace smf
...
...
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