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 {
#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
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
......
......@@ -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;}
};
......
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