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
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
OpenXG
OpenXG-SMF
Commits
a0e5b73d
Unverified
Commit
a0e5b73d
authored
Feb 04, 2022
by
kharade
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix IE Usage Report in SRR
parent
2f1802ec
Changes
3
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
868 additions
and
532 deletions
+868
-532
src/common/3gpp_29.244.h
src/common/3gpp_29.244.h
+10
-1
src/pfcp/3gpp_29.244.cpp
src/pfcp/3gpp_29.244.cpp
+60
-59
src/pfcp/3gpp_29.244.hpp
src/pfcp/3gpp_29.244.hpp
+798
-472
No files found.
src/common/3gpp_29.244.h
View file @
a0e5b73d
...
...
@@ -1169,6 +1169,8 @@ typedef struct usage_report_trigger_s {
uint16_t
liusa
:
1
;
uint16_t
timqu
:
1
;
uint16_t
volqu
:
1
;
uint16_t
tebur
:
1
;
uint16_t
evequ
:
1
;
}
usage_report_trigger_t
;
//-------------------------------------
...
...
@@ -1181,16 +1183,23 @@ typedef struct measurement_period_s {
// 8.2.43 Fully qualified PDN Connection Set Identifier (FQ-CSID)
// typedef fq_csid_t fq_csid_t;
// Extended as per Release 16.5.0, to handle stats related to packet count
//-------------------------------------
// 8.2.44 Volume Measurement
typedef
struct
volume_measurement_s
{
uint8_t
spare
:
5
;
uint8_t
spare
:
2
;
uint8_t
dlnop
:
1
;
uint8_t
ulnop
:
1
;
uint8_t
tonop
:
1
;
uint8_t
dlvol
:
1
;
uint8_t
ulvol
:
1
;
uint8_t
tovol
:
1
;
uint64_t
total_volume
;
uint64_t
uplink_volume
;
uint64_t
downlink_volume
;
uint64_t
total_nop
;
uint64_t
uplink_nop
;
uint64_t
downlink_nop
;
}
volume_measurement_t
;
//-------------------------------------
...
...
src/pfcp/3gpp_29.244.cpp
View file @
a0e5b73d
...
...
@@ -378,34 +378,34 @@ pfcp_ie* pfcp_ie::new_pfcp_ie_from_stream(std::istream& is) {
// pfcp_measurement_method_ie(tlv); ie->load_from(is); return ie;
// }
// break;
//
case PFCP_IE_USAGE_REPORT_TRIGGER: {
// pfcp_usage_report_trigger_ie *ie = new
// pfcp_usage_report_trigger_ie(tlv); ie->load_from(is); return
// ie
;
// }
//
break;
//
case PFCP_IE_MEASUREMENT_PERIOD: {
// pfcp_measurement_period_ie *ie = new
// pfcp_measurement_period_ie(tlv); ie->load_from(is); return ie
;
// }
//
break;
case
PFCP_IE_USAGE_REPORT_TRIGGER
:
{
pfcp_usage_report_trigger_ie
*
ie
=
new
pfcp_usage_report_trigger_ie
(
tlv
);
ie
->
load_from
(
is
)
;
return
ie
;
}
break
;
case
PFCP_IE_MEASUREMENT_PERIOD
:
{
pfcp_measurement_period_ie
*
ie
=
new
pfcp_measurement_period_ie
(
tlv
);
ie
->
load_from
(
is
)
;
return
ie
;
}
break
;
// case PFCP_IE_FQ_CSID: {
// pfcp_fq_csid_ie *ie = new pfcp_fq_csid_ie(tlv);
// ie->load_from(is);
// return ie;
// }
// break;
//
case PFCP_IE_VOLUME_MEASUREMENT: {
// pfcp_volume_measurement_ie *ie = new
// pfcp_volume_measurement_ie(tlv); ie->load_from(is); return ie
;
// }
//
break;
//
case PFCP_IE_DURATION_MEASUREMENT: {
// pfcp_duration_measurement_ie *ie = new
// pfcp_duration_measurement_ie(tlv); ie->load_from(is); return
// ie
;
// }
//
break;
case
PFCP_IE_VOLUME_MEASUREMENT
:
{
pfcp_volume_measurement_ie
*
ie
=
new
pfcp_volume_measurement_ie
(
tlv
);
ie
->
load_from
(
is
)
;
return
ie
;
}
break
;
case
PFCP_IE_DURATION_MEASUREMENT
:
{
pfcp_duration_measurement_ie
*
ie
=
new
pfcp_duration_measurement_ie
(
tlv
);
ie
->
load_from
(
is
)
;
return
ie
;
}
break
;
// case PFCP_IE_APPLICATION_DETECTION_INFORMATION: {
// pfcp_application_detection_information_ie *ie = new
// pfcp_application_detection_information_ie(tlv);
...
...
@@ -413,18 +413,17 @@ pfcp_ie* pfcp_ie::new_pfcp_ie_from_stream(std::istream& is) {
// return ie;
// }
// break;
// case PFCP_IE_TIME_OF_FIRST_PACKET: {
// pfcp_time_of_first_packet_ie *ie = new
// pfcp_time_of_first_packet_ie(tlv); ie->load_from(is); return
// ie;
// }
// break;
// case PFCP_IE_TIME_OF_LAST_PACKET: {
// pfcp_time_of_last_packet_ie *ie = new
// pfcp_time_of_last_packet_ie(tlv); ie->load_from(is); return
// ie;
// }
// break;
case
PFCP_IE_TIME_OF_FIRST_PACKET
:
{
pfcp_time_of_first_packet_ie
*
ie
=
new
pfcp_time_of_first_packet_ie
(
tlv
);
ie
->
load_from
(
is
);
return
ie
;
}
break
;
case
PFCP_IE_TIME_OF_LAST_PACKET
:
{
pfcp_time_of_last_packet_ie
*
ie
=
new
pfcp_time_of_last_packet_ie
(
tlv
);
ie
->
load_from
(
is
);
return
ie
;
}
break
;
// case PFCP_IE_QUOTA_HOLDING_TIME: {
// pfcp_quota_holding_time_ie *ie = new
// pfcp_quota_holding_time_ie(tlv); ie->load_from(is); return ie;
...
...
@@ -448,18 +447,16 @@ pfcp_ie* pfcp_ie::new_pfcp_ie_from_stream(std::istream& is) {
// return ie;
// }
// break;
// case PFCP_IE_START_TIME: {
// pfcp_start_time_ie *ie = new pfcp_start_time_ie(tlv);
// ie->load_from(is);
// return ie;
// }
// break;
// case PFCP_IE_END_TIME: {
// pfcp_end_time_ie *ie = new pfcp_end_time_ie(tlv);
// ie->load_from(is);
// return ie;
// }
// break;
case
PFCP_IE_START_TIME
:
{
pfcp_start_time_ie
*
ie
=
new
pfcp_start_time_ie
(
tlv
);
ie
->
load_from
(
is
);
return
ie
;
}
break
;
case
PFCP_IE_END_TIME
:
{
pfcp_end_time_ie
*
ie
=
new
pfcp_end_time_ie
(
tlv
);
ie
->
load_from
(
is
);
return
ie
;
}
break
;
// case PFCP_IE_QUERY_URR: {
// pfcp_query_urr_ie *ie = new pfcp_query_urr_ie(tlv);
// ie->load_from(is);
...
...
@@ -482,13 +479,12 @@ pfcp_ie* pfcp_ie::new_pfcp_ie_from_stream(std::istream& is) {
// return ie;
// }
// break;
// case PFCP_IE_USAGE_REPORT_WITHIN_SESSION_REPORT_REQUEST: {
// pfcp_usage_report_within_session_report_request_ie *ie = new
// pfcp_usage_report_within_session_report_request_ie(tlv);
// ie->load_from(is);
// return ie;
// }
// break;
case
PFCP_IE_USAGE_REPORT_WITHIN_SESSION_REPORT_REQUEST
:
{
pfcp_usage_report_within_session_report_request_ie
*
ie
=
new
pfcp_usage_report_within_session_report_request_ie
(
tlv
);
ie
->
load_from
(
is
);
return
ie
;
}
break
;
case
PFCP_IE_URR_ID
:
{
pfcp_urr_id_ie
*
ie
=
new
pfcp_urr_id_ie
(
tlv
);
ie
->
load_from
(
is
);
...
...
@@ -622,12 +618,11 @@ pfcp_ie* pfcp_ie::new_pfcp_ie_from_stream(std::istream& is) {
// pfcp_remote_gtp_u_peer_ie(tlv); ie->load_from(is); return ie;
// }
// break;
// case PFCP_IE_UR_SEQN: {
// pfcp_ur_seqn_ie *ie = new pfcp_ur_seqn_ie(tlv);
// ie->load_from(is);
// return ie;
// }
// break;
case
PFCP_IE_UR_SEQN
:
{
pfcp_ur_seqn_ie
*
ie
=
new
pfcp_ur_seqn_ie
(
tlv
);
ie
->
load_from
(
is
);
return
ie
;
}
break
;
// case PFCP_IE_UPDATE_DUPLICATING_PARAMETERS: {
// pfcp_update_duplicating_parameters_ie *ie = new
// pfcp_update_duplicating_parameters_ie(tlv); ie->load_from(is);
...
...
@@ -1411,6 +1406,12 @@ pfcp_msg::pfcp_msg(const pfcp_session_report_request& pfcp_ies)
new
pfcp_downlink_data_report_ie
(
pfcp_ies
.
downlink_data_report
.
second
));
add_ie
(
sie
);
}
if
(
pfcp_ies
.
usage_report
.
first
)
{
std
::
shared_ptr
<
pfcp_usage_report_within_session_report_request_ie
>
sie
(
new
pfcp_usage_report_within_session_report_request_ie
(
pfcp_ies
.
usage_report
.
second
));
add_ie
(
sie
);
}
// TODO std::pair<bool, pfcp::usage_report_within_pfcp_session_report_request>
// usage_report;
// TODO std::pair<bool, pfcp::error_indication_report>
...
...
src/pfcp/3gpp_29.244.hpp
View file @
a0e5b73d
This diff is collapsed.
Click to expand it.
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