PFCP: Added dissection of IEs 127-131

According to 3GPP TS 29.244 v15.1.0

Change-Id: Idcaad3eccf0bd5c9cc57eca5038313fd14916963
Reviewed-on: https://code.wireshark.org/review/26859
Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
Matej Tkac 2018-04-10 17:58:35 +02:00 committed by Anders Broman
parent b79d2bc9a3
commit f2d89daf28
1 changed files with 79 additions and 12 deletions

View File

@ -375,6 +375,7 @@ static int hf_pfcp_query_urr_reference = -1;
static int hf_pfcp_additional_usage_reports_information = -1;
static int hf_pfcp_additional_usage_reports_information_b14_b0_number_value = -1;
static int hf_pfcp_additional_usage_reports_information_b15_auri = -1;
static int hf_pfcp_traffic_endpoint_id = -1;
static int ett_pfcp = -1;
static int ett_pfcp_flags = -1;
@ -464,6 +465,10 @@ static void dissect_pfcp_error_indication_report(tvbuff_t *tvb, packet_info *pin
static void dissect_pfcp_user_plane_path_failure_report(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item, guint16 length, guint8 message_type);
static void dissect_pfcp_update_duplicating_parameters(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item, guint16 length, guint8 message_type);
static void dissect_pfcp_aggregated_urrs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item, guint16 length, guint8 message_type);
static void dissect_pfcp_create_traffic_endpoint(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item, guint16 length, guint8 message_type);
static void dissect_pfcp_created_traffic_endpoint(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item, guint16 length, guint8 message_type);
static void dissect_pfcp_update_traffic_endpoint(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item, guint16 length, guint8 message_type);
static void dissect_pfcp_remove_traffic_endpoint(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item, guint16 length, guint8 message_type);
static const true_false_string pfcp_id_predef_dynamic_tfs = {
"Predefined by UP",
@ -545,6 +550,10 @@ static value_string_ext pfcp_message_type_ext = VALUE_STRING_EXT_INIT(pfcp_messa
#define PFCP_USER_PLANE_PATH_FAILURE_REPORT 102
#define PFCP_UPDATE_DUPLICATING_PARAMETERS 105
#define PFCP_AGGREGATED_URRS 118
#define PFCP_CREATE_TRAFFIC_ENDPOINT 127
#define PFCP_CREATED_TRAFFIC_ENDPOINT 128
#define PFCP_UPDATE_TRAFFIC_ENDPOINT 129
#define PFCP_REMOVE_TRAFFIC_ENDPOINT 130
static const value_string pfcp_ie_type[] = {
@ -671,15 +680,15 @@ static const value_string pfcp_ie_type[] = {
{ 120, "Aggregated URR ID IE" }, /* Fixed Length / Subclause 8.2.85 */
{ 121, "Subsequent Volume Quota" }, /* Extendable / Subclause 8.2.86 */
{ 122, "Subsequent Time Quota" }, /* Extendable / Subclause 8.2.87 */
{ 123, "RQI"}, /* Extendable / Subclause 8.2.88 */
{ 124, "QFI"}, /* Extendable / Subclause 8.2.89 */
{ 125, "Query URR Reference"}, /* Extendable / Subclause 8.2.90 */
{ 126, "Additional Usage Reports Information"}, /* Extendable / Subclause 8.2.91 */
// { 127, "Create Traffic Endpoint"}, /* Extendable / Table 7.5.2.7 */
// { 128, "Created Traffic Endpoint"}, /* Extendable / Table 7.5.3.5 */
// { 129, "Update Traffic Endpoint"}, /* Extendable / Table 7.5.4.13 */
// { 130, "Remove Traffic Endpoint"}, /* Extendable / Table 7.5.4.14 */
// { 131, "Traffic Endpoint ID"}, /* Extendable / Subclause 8.2.92 */
{ 123, "RQI" }, /* Extendable / Subclause 8.2.88 */
{ 124, "QFI" }, /* Extendable / Subclause 8.2.89 */
{ 125, "Query URR Reference" }, /* Extendable / Subclause 8.2.90 */
{ 126, "Additional Usage Reports Information" }, /* Extendable / Subclause 8.2.91 */
{ 127, "Create Traffic Endpoint" }, /* Extendable / Table 7.5.2.7 */
{ 128, "Created Traffic Endpoint" }, /* Extendable / Table 7.5.3.5 */
{ 129, "Update Traffic Endpoint" }, /* Extendable / Table 7.5.4.13 */
{ 130, "Remove Traffic Endpoint" }, /* Extendable / Table 7.5.4.14 */
{ 131, "Traffic Endpoint ID" }, /* Extendable / Subclause 8.2.92*/
// { 132, "Ethernet Packet Filter"}, /* Extendable / Table 7.5.2.2-3 */
// { 133, "MAC address"}, /* Extendable / Subclause 8.2.93 */
// { 134, "C-TAG"}, /* Extendable / Subclause 8.2.94 */
@ -3540,7 +3549,7 @@ dissect_pfcp_rqi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item
if (offset < length) {
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, offset, -1);
}
return ;
return;
}
/*
@ -3559,7 +3568,7 @@ dissect_pfcp_qfi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item
if (offset < length) {
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, offset, -1);
}
return ;
return;
}
/*
@ -3614,6 +3623,22 @@ dissect_pfcp_additional_usage_reports_information(tvbuff_t *tvb, packet_info *pi
}
}
/*
* 8.2.92 Traffic Endpoint ID
*/
static void dissect_pfcp_traffic_endpoint_id(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_)
{
int offset = 0;
proto_tree_add_item(tree, hf_pfcp_traffic_endpoint_id, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
if (offset < length) {
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, offset, -1);
}
return;
}
/* Array of functions to dissect IEs
* (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item, guint16 length, guint8 message_type)
*/
@ -3749,7 +3774,20 @@ static const pfcp_ie_t pfcp_ies[] = {
/* 124 */ { dissect_pfcp_qfi }, /* QFI Extendable / Subclause 8.2.89 */
/* 125 */ { dissect_pfcp_query_urr_reference }, /* Query URR Reference Extendable / Subclause 8.2.90 */
/* 126 */ { dissect_pfcp_additional_usage_reports_information }, /* Additional Usage Reports Information Extendable / Subclause 8.2.91 */
//127 (140) to 65535 Spare. For future use.
/* 127 */ { dissect_pfcp_create_traffic_endpoint }, /* Create Traffic Endpoint Extendable / Table 7.5.2.7 */
/* 128 */ { dissect_pfcp_created_traffic_endpoint }, /* Created Traffic Endpoint Extendable / Table 7.5.3.5 */
/* 129 */ { dissect_pfcp_update_traffic_endpoint }, /* Update Traffic Endpoint Extendable / Table 7.5.4.13 */
/* 130 */ { dissect_pfcp_remove_traffic_endpoint }, /* Remove Traffic Endpoint Extendable / Table 7.5.4.14 */
/* 131 */ { dissect_pfcp_traffic_endpoint_id }, /* Traffic Endpoint ID Extendable / Subclause 8.2.92 */
/* 132 */ /* Ethernet Packet Filter Extendable / Table 7.5.2.2-3 */
/* 133 */ /*MAC address Extendable / Subclause 8.2.93 */
/* 134 */ /*C-TAG Extendable / Subclause 8.2.94 */
/* 135 */ /*S-TAG Extendable / Subclause 8.2.95 */
/* 136 */ /*Ethertype Extendable / Subclause 8.2.96 */
/* 137 */ /*Proxying Extendable / Subclause 8.2.97 */
/* 138 */ /*Ethernet Filter ID Extendable / Subclause 8.2.98 */
/* 139 */ /*Ethernet Filter Properties Extendable / Subclause 8.2.99 */
//140 to 65535 Spare. For future use.
{ NULL }, /* End of List */
};
@ -3985,6 +4023,30 @@ dissect_pfcp_aggregated_urrs(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
dissect_pfcp_grouped_ie(tvb, pinfo, tree, item, length, message_type, ett_pfcp_elem[PFCP_AGGREGATED_URRS]);
}
static void
dissect_pfcp_create_traffic_endpoint(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item, guint16 length, guint8 message_type)
{
dissect_pfcp_grouped_ie(tvb, pinfo, tree, item, length, message_type, ett_pfcp_elem[PFCP_CREATE_TRAFFIC_ENDPOINT]);
}
static void
dissect_pfcp_created_traffic_endpoint(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item, guint16 length, guint8 message_type)
{
dissect_pfcp_grouped_ie(tvb, pinfo, tree, item, length, message_type, ett_pfcp_elem[PFCP_CREATED_TRAFFIC_ENDPOINT]);
}
static void
dissect_pfcp_update_traffic_endpoint(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item, guint16 length, guint8 message_type)
{
dissect_pfcp_grouped_ie(tvb, pinfo, tree, item, length, message_type, ett_pfcp_elem[PFCP_UPDATE_TRAFFIC_ENDPOINT]);
}
static void
dissect_pfcp_remove_traffic_endpoint(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item, guint16 length, guint8 message_type)
{
dissect_pfcp_grouped_ie(tvb, pinfo, tree, item, length, message_type, ett_pfcp_elem[PFCP_REMOVE_TRAFFIC_ENDPOINT]);
}
static void
dissect_pfcp_ies_common(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, gint offset, guint8 message_type)
{
@ -5707,6 +5769,11 @@ proto_register_pfcp(void)
FT_UINT16, BASE_DEC, NULL, 0x7FFF,
NULL, HFILL }
},
{ &hf_pfcp_traffic_endpoint_id,
{ "Traffic Endpoint ID", "pfcp.traffic_endpoint_id",
FT_UINT8, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
};