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
592b8e90
Commit
592b8e90
authored
Sep 22, 2020
by
Tien-Thinh Nguyen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update IE according to Rel 16.0.0
parent
a442a258
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
202 additions
and
27 deletions
+202
-27
src/common/3gpp_29.244.h
src/common/3gpp_29.244.h
+187
-13
src/pfcp/msg_pfcp.hpp
src/pfcp/msg_pfcp.hpp
+15
-14
No files found.
src/common/3gpp_29.244.h
View file @
592b8e90
...
...
@@ -312,16 +312,40 @@ struct pfcp_ie_value_exception : public pfcp_ie_exception {
#define PFCP_IE_MAC_ADDRESSES_REMOVED (145)
#define PFCP_IE_ETHERNET_INACTIVITY_TIMER (146)
#define PFCP_IE_ADDITIONAL_MONITORING_TIME (147)
#define PFCP_IE_EVENT_
INFORMATION
(148)
#define PFCP_IE_EVENT_
REPORTING
(149)
#define PFCP_IE_
EVENT_ID
(150)
#define PFCP_IE_
EVENT_THRESHOLD
(151)
#define PFCP_IE_EVENT_
QUOTA
(148)
#define PFCP_IE_EVENT_
THRESHOLD
(149)
#define PFCP_IE_
SUBSEQUENT_EVENT_QUOTA
(150)
#define PFCP_IE_
SUBSEQUENT_EVENT_THRESHOLD
(151)
#define PFCP_IE_TRACE_INFORMATION (152)
#define PFCP_IE_FRAMED_ROUTE (153)
#define PFCP_IE_FRAMED_ROUTING (154)
#define PFCP_IE_FRAMED_IPV6_ROUTE (155)
#define PFCP_IE_EVENT_TIME_STAMP (156)
#define PFCP_IE_AVERAGING_WINDOW (157)
#define PFCP_IE_PAGING_POLICY_INDICATOR (158)
#define PFCP_IE_APN_DNN (159)
#define PFCP_IE_3GPP_INTERFACE_TYPE (160)
#define PFCP_IE_PFCPSRREQ_FLAGS_3GPP (161)
#define PFCP_IE_PFCPAUREQ_FLAGS (162)
#define PFCP_IE_ACTIVATION_TIME (163)
#define PFCP_IE_DEACTIVATION_TIME (164)
#define PFCP_IE_CREATE_MAR (165)
#define PFCP_IE_ACCESS_FORWARDING_ACTION_INFORMATION_1 (166)
#define PFCP_IE_ACCESS_FORWARDING_ACTION_INFORMATION_2 (167)
#define PFCP_IE_REMOVE_MAR (168)
#define PFCP_IE_UPDATE_MAR (169)
#define PFCP_IE_MAR_ID (170)
#define PFCP_IE_STEERING_FUNCTIONALITY (171)
#define PFCP_IE_STEERING_MODE (172)
#define PFCP_IE_WEIGHT (173)
#define PFCP_IE_PRIORITY (174)
#define PFCP_IE_UPDATE_ACCESS_FORWARDING_ACTION_INFORMATION_1 (175)
#define PFCP_IE_UPDATE_ACCESS_FORWARDING_ACTION_INFORMATION_2 (176)
#define PFCP_IE_UE_IP_ADDRESS_POOL_IDENTITY (177)
#define PFCP_IE_ALTERNATIVE_SMF_IP_ADDRESS (178)
#define PFCP_IE_SPARED (179)
#define PFCP_MESSAGE_RESERVED (0)
// PFCP_NODE_RELATED_MESSAGES
#define PFCP_HEARTBEAT_REQUEST (1)
...
...
@@ -370,7 +394,8 @@ enum cause_value_e {
CAUSE_VALUE_PFCP_ENTITY_IN_CONGESTION
=
74
,
CAUSE_VALUE_NO_RESOURCES_AVAILABLE
=
75
,
CAUSE_VALUE_SERVICE_NOT_SUPPORTED
=
76
,
CAUSE_VALUE_SYSTEM_FAILURE
=
77
CAUSE_VALUE_SYSTEM_FAILURE
=
77
,
CAUSE_VALUE_REDIRECTION_REQUESTED
=
78
};
typedef
struct
cause_s
{
...
...
@@ -1568,16 +1593,16 @@ typedef struct ethernet_inactivity_timer_s {
}
ethernet_inactivity_timer_t
;
//-------------------------------------
// 8.2.106
Event ID
typedef
struct
event_id
_s
{
uint32_t
event_id
;
}
event_id
_t
;
// 8.2.106
Subsequent Event Quota
typedef
struct
subsequent_event_quota
_s
{
uint32_t
subsequent_event_quota
;
}
subsequent_event_quota
_t
;
//-------------------------------------
// 8.2.107 Event Threshold
typedef
struct
event_threshold_s
{
uint32_t
event_threshold
;
}
event_threshold_t
;
// 8.2.107
Subsequent
Event Threshold
typedef
struct
subsequent_
event_threshold_s
{
uint32_t
subsequent_
event_threshold
;
}
subsequent_
event_threshold_t
;
//-------------------------------------
// 8.2.108 Trace Information
...
...
@@ -1593,6 +1618,22 @@ typedef struct trace_information_s {
// TODO CONTINUE
}
trace_information_t
;
//-------------------------------------
// TO BE REMOVED: Event ID
typedef
struct
event_id_s
{
uint32_t
event_id
;
}
event_id_t
;
/*
//-------------------------------------
// 8.2.107 Event Threshold
typedef struct event_threshold_s {
uint32_t event_threshold;
} event_threshold_t;
*/
//-------------------------------------
// 8.2.109 Framed-Route
typedef
struct
framed_route_s
{
...
...
@@ -1611,6 +1652,43 @@ typedef struct framed_ipv6_route_s {
std
::
string
framed_ipv6_route
;
}
framed_ipv6_route_t
;
//-------------------------------------
// 8.2.112 Event Quota
typedef
struct
event_quota_s
{
uint32_t
event_quota
;
}
event_quota_t
;
//-------------------------------------
// 8.2.113 Event Threshold
typedef
struct
event_threshold_s
{
uint32_t
event_threshold
;
}
event_threshold_t
;
//-------------------------------------
// 8.2.114 Event Time Stamp
typedef
struct
event_time_stamp_s
{
uint32_t
event_time_stamp
;
}
event_time_stamp_t
;
//-------------------------------------
// 8.2.115 Averaging Window
typedef
struct
averaging_window_s
{
uint32_t
averaging_window
;
}
averaging_window_t
;
//-------------------------------------
// 8.2.116 Paging Policy Indicator (PPI)
typedef
struct
paging_policy_indicator_s
{
uint8_t
spare
:
4
;
uint8_t
ppi_value
:
4
;
}
paging_policy_indicator_t
;
//-------------------------------------
// 8.2.117 APN/DNN
typedef
struct
apn_dnn_s
{
std
::
string
apn_dnn
;
}
apn_dnn_t
;
//-------------------------------------
// 8.2.118. 3GPP Interface Type
enum
_3gpp_interface_type_e
{
...
...
@@ -1637,6 +1715,102 @@ typedef struct _3gpp_interface_type_s {
uint8_t
interface_type_value
:
6
;
}
_3gpp_interface_type_t
;
//-------------------------------------
// 8.2.119 PFCPSRReq-Flags
typedef
struct
pfcpsrreq_flags_s
{
uint8_t
spare
:
7
;
uint8_t
psdbu
:
1
;
}
pfcpsrreq_flags_t
;
//-------------------------------------
// 8.2.120 PFCPAUReq-Flags
typedef
struct
pfcpaureq_flags_s
{
uint8_t
spare
:
7
;
uint8_t
parps
:
1
;
}
pfcpaureq_flags_t
;
//-------------------------------------
// 8.2.121 Activation Time
typedef
struct
activation_time_s
{
uint32_t
activation_time
;
}
activation_time_t
;
//-------------------------------------
//8.2.122 Deactivation Time
typedef
struct
deactivation_time_s
{
uint32_t
deactivation_time
;
}
deactivation_time_t
;
//-------------------------------------
//8.2.123 MAR ID
typedef
struct
mar_id_s
{
uint8_t
mar_id
;
}
mar_id_t
;
//-------------------------------------
// 8.2.124 Steering Functionality
typedef
struct
steering_functionality_s
{
uint8_t
spare
:
4
;
uint8_t
steering_functionality_value
:
4
;
}
steering_functionality_t
;
enum
steering_functionality_value_e
{
STEERING_FUNCTIONALITY_ATSSS_LL
=
0
,
STEERING_FUNCTIONALITY_MPTCP
=
1
,
STEERING_FUNCTIONALITY_SPARE
=
2
};
//-------------------------------------
// 8.2.125 Steering Mode
typedef
struct
steering_mode_s
{
uint8_t
spare
:
4
;
uint8_t
steering_mode_value
:
4
;
}
steering_mode_t
;
enum
steering_mode_value_e
{
STEERING_MODE_ACTIVE_STANDBY
=
0
,
STEERING_MODE_SMALLEST_DELAY
=
1
,
STEERING_MODE_LOAD_BALANCING
=
2
,
STEERING_MODE_PRIORITY_BASED
=
3
,
STEERING_MODE_SPARED
=
4
};
//-------------------------------------
// 8.2.126 Weight
typedef
struct
weight_s
{
uint8_t
weight_value
;
}
weight_t
;
//-------------------------------------
// 8.2.127 Priority
typedef
struct
priority_s
{
uint8_t
spare
:
4
;
uint8_t
priority_value
:
4
;
}
priority_t
;
enum
priority_value_e
{
PRIORITY_VALUE_ACTIVE
=
0
,
PRIORITY_VALUE_STANDBY
=
1
,
PRIORITY_VALUE_HIGH
=
2
,
PRIORITY_VALUE_LOW
=
3
,
PRIORITY_VALUE_SPARED
=
4
};
//-------------------------------------
// 8.2.128 UE IP address Pool Identity
typedef
struct
ue_ip_address_pool_identity_s
{
std
::
string
ue_ip_address_pool_identity
;
}
ue_ip_address_pool_identity_t
;
//-------------------------------------
// 8.2.129 Alternative SMF IP Address
typedef
struct
alternative_smf_ip_address_s
{
uint8_t
spare
:
6
;
uint8_t
v4
:
1
;
uint8_t
v6
:
1
;
struct
in_addr
ipv4_address
;
struct
in6_addr
ipv6_address
;
}
alternative_smf_ip_address_t
;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Specific IEs
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
...
...
src/pfcp/msg_pfcp.hpp
View file @
592b8e90
...
...
@@ -79,8 +79,8 @@ namespace pfcp {
class
remove_traffic_endpoint
;
class
ethernet_traffic_information
;
class
additional_monitoring_time
;
class
event_information
;
class
event_reporting
;
//
class event_information;
//
class event_reporting;
class
ethernet_packet_filter
;
}
...
...
@@ -535,14 +535,14 @@ namespace pfcp {
virtual
bool
get
(
pfcp
::
additional_monitoring_time
&
v
)
const
{
throw
pfcp_msg_illegal_ie_exception
(
0
,
PFCP_IE_ADDITIONAL_MONITORING_TIME
,
__FILE__
,
__LINE__
);}
virtual
void
set
(
const
pfcp
::
additional_monitoring_time
&
v
)
{
throw
pfcp_msg_illegal_ie_exception
(
0
,
PFCP_IE_ADDITIONAL_MONITORING_TIME
,
__FILE__
,
__LINE__
);}
// PFCP_IE_EVENT_INFORMATION
virtual
bool
get
(
pfcp
::
event_information
&
v
)
const
{
throw
pfcp_msg_illegal_ie_exception
(
0
,
PFCP_IE_EVENT_INFORMATION
,
__FILE__
,
__LINE__
);}
virtual
void
set
(
const
pfcp
::
event_information
&
v
)
{
throw
pfcp_msg_illegal_ie_exception
(
0
,
PFCP_IE_EVENT_INFORMATION
,
__FILE__
,
__LINE__
);}
//
virtual bool get(pfcp::event_information& v) const {throw pfcp_msg_illegal_ie_exception(0, PFCP_IE_EVENT_INFORMATION, __FILE__, __LINE__);}
//
virtual void set(const pfcp::event_information& v) {throw pfcp_msg_illegal_ie_exception(0, PFCP_IE_EVENT_INFORMATION, __FILE__, __LINE__);}
// PFCP_IE_EVENT_REPORTING
virtual
bool
get
(
pfcp
::
event_reporting
&
v
)
const
{
throw
pfcp_msg_illegal_ie_exception
(
0
,
PFCP_IE_EVENT_REPORTING
,
__FILE__
,
__LINE__
);}
virtual
void
set
(
const
pfcp
::
event_reporting
&
v
)
{
throw
pfcp_msg_illegal_ie_exception
(
0
,
PFCP_IE_EVENT_REPORTING
,
__FILE__
,
__LINE__
);}
//
virtual bool get(pfcp::event_reporting& v) const {throw pfcp_msg_illegal_ie_exception(0, PFCP_IE_EVENT_REPORTING, __FILE__, __LINE__);}
//
virtual void set(const pfcp::event_reporting& v) {throw pfcp_msg_illegal_ie_exception(0, PFCP_IE_EVENT_REPORTING, __FILE__, __LINE__);}
// PFCP_IE_EVENT_ID
virtual
bool
get
(
pfcp
::
event_id_t
&
v
)
const
{
throw
pfcp_msg_illegal_ie_exception
(
0
,
PFCP_IE_EVENT_ID
,
__FILE__
,
__LINE__
);}
virtual
void
set
(
const
pfcp
::
event_id_t
&
v
)
{
throw
pfcp_msg_illegal_ie_exception
(
0
,
PFCP_IE_EVENT_ID
,
__FILE__
,
__LINE__
);}
//
virtual bool get(pfcp::event_id_t& v) const {throw pfcp_msg_illegal_ie_exception(0, PFCP_IE_EVENT_ID, __FILE__, __LINE__);}
//
virtual void set(const pfcp::event_id_t& v) {throw pfcp_msg_illegal_ie_exception(0, PFCP_IE_EVENT_ID, __FILE__, __LINE__);}
// PFCP_IE_EVENT_THRESHOLD
virtual
bool
get
(
pfcp
::
event_threshold_t
&
v
)
const
{
throw
pfcp_msg_illegal_ie_exception
(
0
,
PFCP_IE_EVENT_THRESHOLD
,
__FILE__
,
__LINE__
);}
virtual
void
set
(
const
pfcp
::
event_threshold_t
&
v
)
{
throw
pfcp_msg_illegal_ie_exception
(
0
,
PFCP_IE_EVENT_THRESHOLD
,
__FILE__
,
__LINE__
);}
...
...
@@ -2253,7 +2253,7 @@ namespace pfcp {
bool
get
(
pfcp
::
application_instance_id_t
&
v
)
const
{
if
(
application_instance_id
.
first
)
{
v
=
application_instance_id
.
second
;
return
true
;}
return
false
;}
bool
get
(
pfcp
::
flow_information_t
&
v
)
const
{
if
(
flow_information
.
first
)
{
v
=
flow_information
.
second
;
return
true
;}
return
false
;}
};
/*
//------------------------------------------------------------------------------
// Table 7.5.8.3-2A: Event Reporting IE within Usage Report IE
class event_reporting : public pfcp::pfcp_ies_container {
...
...
@@ -2271,6 +2271,7 @@ namespace pfcp {
bool get(pfcp::event_id_t& v) const {if (event_id.first) {v = event_id.second;return true;}return false;}
};
*/
//------------------------------------------------------------------------------
// Table 7.5.8.3-1: Usage Report IE within PFCP Session Report Request
...
...
@@ -2290,7 +2291,7 @@ namespace pfcp {
std
::
pair
<
bool
,
pfcp
::
time_of_last_packet_t
>
time_of_last_packet
;
std
::
pair
<
bool
,
pfcp
::
usage_information_t
>
usage_information
;
std
::
pair
<
bool
,
pfcp
::
query_urr_reference_t
>
query_urr_reference
;
std
::
pair
<
bool
,
pfcp
::
event_reporting
>
event_reporting
;
//
std::pair<bool, pfcp::event_reporting> event_reporting;
std
::
pair
<
bool
,
pfcp
::
ethernet_traffic_information
>
ethernet_traffic_information
;
usage_report_within_pfcp_session_report_request
()
:
...
...
@@ -2308,7 +2309,7 @@ namespace pfcp {
time_of_last_packet
(),
usage_information
(),
query_urr_reference
(),
event_reporting
(),
//
event_reporting(),
ethernet_traffic_information
()
{}
usage_report_within_pfcp_session_report_request
(
const
usage_report_within_pfcp_session_report_request
&
u
)
:
...
...
@@ -2326,7 +2327,7 @@ namespace pfcp {
time_of_last_packet
(
u
.
time_of_last_packet
),
usage_information
(
u
.
usage_information
),
query_urr_reference
(
u
.
query_urr_reference
),
event_reporting
(
u
.
event_reporting
),
//
event_reporting(u.event_reporting),
ethernet_traffic_information
(
u
.
ethernet_traffic_information
)
{}
...
...
@@ -2345,7 +2346,7 @@ namespace pfcp {
void
set
(
const
pfcp
::
time_of_last_packet_t
&
v
)
{
time_of_last_packet
.
first
=
true
;
time_of_last_packet
.
second
=
v
;}
void
set
(
const
pfcp
::
usage_information_t
&
v
)
{
usage_information
.
first
=
true
;
usage_information
.
second
=
v
;}
void
set
(
const
pfcp
::
query_urr_reference_t
&
v
)
{
query_urr_reference
.
first
=
true
;
query_urr_reference
.
second
=
v
;}
void
set
(
const
pfcp
::
event_reporting
&
v
)
{
event_reporting
.
first
=
true
;
event_reporting
.
second
=
v
;}
//
void set(const pfcp::event_reporting& v) {event_reporting.first = true; event_reporting.second = v;}
void
set
(
const
pfcp
::
ethernet_traffic_information
&
v
)
{
ethernet_traffic_information
.
first
=
true
;
ethernet_traffic_information
.
second
=
v
;}
bool
get
(
pfcp
::
urr_id_t
&
v
)
const
{
if
(
urr_id
.
first
)
{
v
=
urr_id
.
second
;
return
true
;}
return
false
;}
...
...
@@ -2362,7 +2363,7 @@ namespace pfcp {
bool
get
(
pfcp
::
time_of_last_packet_t
&
v
)
const
{
if
(
time_of_last_packet
.
first
)
{
v
=
time_of_last_packet
.
second
;
return
true
;}
return
false
;}
bool
get
(
pfcp
::
usage_information_t
&
v
)
const
{
if
(
usage_information
.
first
)
{
v
=
usage_information
.
second
;
return
true
;}
return
false
;}
bool
get
(
pfcp
::
query_urr_reference_t
&
v
)
const
{
if
(
query_urr_reference
.
first
)
{
v
=
query_urr_reference
.
second
;
return
true
;}
return
false
;}
bool
get
(
pfcp
::
event_reporting
&
v
)
const
{
if
(
event_reporting
.
first
)
{
v
=
event_reporting
.
second
;
return
true
;}
return
false
;}
//
bool get(pfcp::event_reporting& v) const {if (event_reporting.first) {v = event_reporting.second;return true;}return false;}
bool
get
(
pfcp
::
ethernet_traffic_information
&
v
)
const
{
if
(
ethernet_traffic_information
.
first
)
{
v
=
ethernet_traffic_information
.
second
;
return
true
;}
return
false
;}
};
...
...
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