Commit 592b8e90 authored by Tien-Thinh Nguyen's avatar Tien-Thinh Nguyen

Update IE according to Rel 16.0.0

parent a442a258
...@@ -312,16 +312,40 @@ struct pfcp_ie_value_exception : public pfcp_ie_exception { ...@@ -312,16 +312,40 @@ struct pfcp_ie_value_exception : public pfcp_ie_exception {
#define PFCP_IE_MAC_ADDRESSES_REMOVED (145) #define PFCP_IE_MAC_ADDRESSES_REMOVED (145)
#define PFCP_IE_ETHERNET_INACTIVITY_TIMER (146) #define PFCP_IE_ETHERNET_INACTIVITY_TIMER (146)
#define PFCP_IE_ADDITIONAL_MONITORING_TIME (147) #define PFCP_IE_ADDITIONAL_MONITORING_TIME (147)
#define PFCP_IE_EVENT_INFORMATION (148) #define PFCP_IE_EVENT_QUOTA (148)
#define PFCP_IE_EVENT_REPORTING (149) #define PFCP_IE_EVENT_THRESHOLD (149)
#define PFCP_IE_EVENT_ID (150) #define PFCP_IE_SUBSEQUENT_EVENT_QUOTA (150)
#define PFCP_IE_EVENT_THRESHOLD (151) #define PFCP_IE_SUBSEQUENT_EVENT_THRESHOLD (151)
#define PFCP_IE_TRACE_INFORMATION (152) #define PFCP_IE_TRACE_INFORMATION (152)
#define PFCP_IE_FRAMED_ROUTE (153) #define PFCP_IE_FRAMED_ROUTE (153)
#define PFCP_IE_FRAMED_ROUTING (154) #define PFCP_IE_FRAMED_ROUTING (154)
#define PFCP_IE_FRAMED_IPV6_ROUTE (155) #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_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) #define PFCP_MESSAGE_RESERVED (0)
// PFCP_NODE_RELATED_MESSAGES // PFCP_NODE_RELATED_MESSAGES
#define PFCP_HEARTBEAT_REQUEST (1) #define PFCP_HEARTBEAT_REQUEST (1)
...@@ -370,7 +394,8 @@ enum cause_value_e { ...@@ -370,7 +394,8 @@ enum cause_value_e {
CAUSE_VALUE_PFCP_ENTITY_IN_CONGESTION = 74, CAUSE_VALUE_PFCP_ENTITY_IN_CONGESTION = 74,
CAUSE_VALUE_NO_RESOURCES_AVAILABLE = 75, CAUSE_VALUE_NO_RESOURCES_AVAILABLE = 75,
CAUSE_VALUE_SERVICE_NOT_SUPPORTED = 76, 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 { typedef struct cause_s {
...@@ -1568,16 +1593,16 @@ typedef struct ethernet_inactivity_timer_s { ...@@ -1568,16 +1593,16 @@ typedef struct ethernet_inactivity_timer_s {
} ethernet_inactivity_timer_t; } ethernet_inactivity_timer_t;
//------------------------------------- //-------------------------------------
// 8.2.106 Event ID // 8.2.106 Subsequent Event Quota
typedef struct event_id_s { typedef struct subsequent_event_quota_s {
uint32_t event_id; uint32_t subsequent_event_quota;
} event_id_t; } subsequent_event_quota_t;
//------------------------------------- //-------------------------------------
// 8.2.107 Event Threshold // 8.2.107 Subsequent Event Threshold
typedef struct event_threshold_s { typedef struct subsequent_event_threshold_s {
uint32_t event_threshold; uint32_t subsequent_event_threshold;
} event_threshold_t; } subsequent_event_threshold_t;
//------------------------------------- //-------------------------------------
// 8.2.108 Trace Information // 8.2.108 Trace Information
...@@ -1593,6 +1618,22 @@ typedef struct trace_information_s { ...@@ -1593,6 +1618,22 @@ typedef struct trace_information_s {
// TODO CONTINUE // TODO CONTINUE
} trace_information_t; } 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 // 8.2.109 Framed-Route
typedef struct framed_route_s { typedef struct framed_route_s {
...@@ -1611,6 +1652,43 @@ typedef struct framed_ipv6_route_s { ...@@ -1611,6 +1652,43 @@ typedef struct framed_ipv6_route_s {
std::string framed_ipv6_route; std::string framed_ipv6_route;
} framed_ipv6_route_t; } 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 // 8.2.118. 3GPP Interface Type
enum _3gpp_interface_type_e { enum _3gpp_interface_type_e {
...@@ -1637,6 +1715,102 @@ typedef struct _3gpp_interface_type_s { ...@@ -1637,6 +1715,102 @@ typedef struct _3gpp_interface_type_s {
uint8_t interface_type_value :6; uint8_t interface_type_value :6;
} _3gpp_interface_type_t; } _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 // Specific IEs
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
......
...@@ -79,8 +79,8 @@ namespace pfcp { ...@@ -79,8 +79,8 @@ namespace pfcp {
class remove_traffic_endpoint; class remove_traffic_endpoint;
class ethernet_traffic_information; class ethernet_traffic_information;
class additional_monitoring_time; class additional_monitoring_time;
class event_information; // class event_information;
class event_reporting; // class event_reporting;
class ethernet_packet_filter; class ethernet_packet_filter;
} }
...@@ -535,14 +535,14 @@ namespace pfcp { ...@@ -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 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__);} 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 // 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 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 void set(const pfcp::event_information& v) {throw pfcp_msg_illegal_ie_exception(0, PFCP_IE_EVENT_INFORMATION, __FILE__, __LINE__);}
// PFCP_IE_EVENT_REPORTING // 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 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 void set(const pfcp::event_reporting& v) {throw pfcp_msg_illegal_ie_exception(0, PFCP_IE_EVENT_REPORTING, __FILE__, __LINE__);}
// PFCP_IE_EVENT_ID // 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 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 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 // 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 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__);} 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 { ...@@ -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::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;} 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 // Table 7.5.8.3-2A: Event Reporting IE within Usage Report IE
class event_reporting : public pfcp::pfcp_ies_container { class event_reporting : public pfcp::pfcp_ies_container {
...@@ -2271,6 +2271,7 @@ namespace pfcp { ...@@ -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;} 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 // Table 7.5.8.3-1: Usage Report IE within PFCP Session Report Request
...@@ -2290,7 +2291,7 @@ namespace pfcp { ...@@ -2290,7 +2291,7 @@ namespace pfcp {
std::pair<bool, pfcp::time_of_last_packet_t> time_of_last_packet; 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::usage_information_t> usage_information;
std::pair<bool, pfcp::query_urr_reference_t> query_urr_reference; 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; std::pair<bool, pfcp::ethernet_traffic_information> ethernet_traffic_information;
usage_report_within_pfcp_session_report_request() : usage_report_within_pfcp_session_report_request() :
...@@ -2308,7 +2309,7 @@ namespace pfcp { ...@@ -2308,7 +2309,7 @@ namespace pfcp {
time_of_last_packet(), time_of_last_packet(),
usage_information(), usage_information(),
query_urr_reference(), query_urr_reference(),
event_reporting(), //event_reporting(),
ethernet_traffic_information() {} ethernet_traffic_information() {}
usage_report_within_pfcp_session_report_request(const usage_report_within_pfcp_session_report_request& u) : usage_report_within_pfcp_session_report_request(const usage_report_within_pfcp_session_report_request& u) :
...@@ -2326,7 +2327,7 @@ namespace pfcp { ...@@ -2326,7 +2327,7 @@ namespace pfcp {
time_of_last_packet(u.time_of_last_packet), time_of_last_packet(u.time_of_last_packet),
usage_information(u.usage_information), usage_information(u.usage_information),
query_urr_reference(u.query_urr_reference), query_urr_reference(u.query_urr_reference),
event_reporting(u.event_reporting), //event_reporting(u.event_reporting),
ethernet_traffic_information(u.ethernet_traffic_information) {} ethernet_traffic_information(u.ethernet_traffic_information) {}
...@@ -2345,7 +2346,7 @@ namespace pfcp { ...@@ -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::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::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::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;} 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;} 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 { ...@@ -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::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::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::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;} bool get(pfcp::ethernet_traffic_information& v) const {if (ethernet_traffic_information.first) {v = ethernet_traffic_information.second;return true;}return false;}
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment