pfcp: Update to 3GPP TS 29.244 V16.2.0 part5

Change-Id: I7c5a9c3f5279a34d80865cf1ad38329f73e7e739
Reviewed-on: https://code.wireshark.org/review/36216
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
Joakim Karlsson 2020-02-27 17:22:23 +01:00 committed by Anders Broman
parent b6d67794d8
commit 6a0f70041d
1 changed files with 804 additions and 19 deletions

View File

@ -680,6 +680,88 @@ static int hf_pfcp_availability_type = -1;
static int hf_pfcp_mptcp_control_information_flags = -1;
static int hf_pfcp_mptcp_control_information_flags_b0_tci = -1;
static int hf_pfcp_atsss_ll_control_information_flags = -1;
static int hf_pfcp_atsss_ll_control_information_flags_b0_lli = -1;
static int hf_pfcp_pmf_control_information_flags = -1;
static int hf_pfcp_pmf_control_information_flags_b0_pmfi = -1;
static int hf_pfcp_mptcp_address_information_flags = -1;
static int hf_pfcp_mptcp_address_information_flags_b1_v6 = -1;
static int hf_pfcp_mptcp_address_information_flags_b0_v4 = -1;
static int hf_pfcp_mptcp_proxy_type = -1;
static int hf_pfcp_mptcp_proxy_port = -1;
static int hf_pfcp_mptcp_proxy_ip_address_ipv4 = -1;
static int hf_pfcp_mptcp_proxy_ip_address_ipv6 = -1;
static int hf_pfcp_ue_link_specific_ip_address_flags = -1;
static int hf_pfcp_ue_link_specific_ip_address_flags_b3_nv6 = -1;
static int hf_pfcp_ue_link_specific_ip_address_flags_b2_nv4 = -1;
static int hf_pfcp_ue_link_specific_ip_address_flags_b1_v6 = -1;
static int hf_pfcp_ue_link_specific_ip_address_flags_b0_v4 = -1;
static int hf_pfcp_ue_link_specific_ip_address_3gpp_ipv4 = -1;
static int hf_pfcp_ue_link_specific_ip_address_3gpp_ipv6 = -1;
static int hf_pfcp_ue_link_specific_ip_address_non3gpp_ipv4 = -1;
static int hf_pfcp_ue_link_specific_ip_address_non3gpp_ipv6 = -1;
static int hf_pfcp_pmf_address_information_flags = -1;
static int hf_pfcp_pmf_address_information_flags_b2_mac = -1;
static int hf_pfcp_pmf_address_information_flags_b1_v6 = -1;
static int hf_pfcp_pmf_address_information_flags_b0_v4 = -1;
static int hf_pfcp_pmf_address_ipv4 = -1;
static int hf_pfcp_pmf_address_ipv6 = -1;
static int hf_pfcp_pmf_port_3gpp = -1;
static int hf_pfcp_pmf_port_non3gpp = -1;
static int hf_pfcp_pmf_mac_address_3gpp = -1;
static int hf_pfcp_pmf_mac_address_non3gpp = -1;
static int hf_pfcp_atsss_ll_information_flags = -1;
static int hf_pfcp_atsss_ll_information_flags_b0_lli = -1;
static int hf_pfcp_data_network_access_identifier = -1;
static int hf_pfcp_packet_delay_milliseconds = -1;
static int hf_pfcp_qos_report_trigger_flags = -1;
static int hf_pfcp_qos_report_trigger_flags_b2_ire = -1;
static int hf_pfcp_qos_report_trigger_flags_b1_thr = -1;
static int hf_pfcp_qos_report_trigger_flags_b0_per = -1;
static int hf_pfcp_gtp_u_path_interface_type_flags = -1;
static int hf_pfcp_gtp_u_path_interface_type_flags_b1_n3 = -1;
static int hf_pfcp_gtp_u_path_interface_type_flags_b0_n9 = -1;
static int hf_pfcp_requested_qos_monitoring_flags = -1;
static int hf_pfcp_requested_qos_monitoring_flags_b2_rp = -1;
static int hf_pfcp_requested_qos_monitoring_flags_b1_ul = -1;
static int hf_pfcp_requested_qos_monitoring_flags_b0_dl = -1;
static int hf_pfcp_reporting_frequency_flags = -1;
static int hf_pfcp_reporting_frequency_flags_b2_sesrl = -1;
static int hf_pfcp_reporting_frequency_flags_b1_perio = -1;
static int hf_pfcp_reporting_frequency_flags_b0_evett = -1;
static int hf_pfcp_packet_delay_thresholds_flags = -1;
static int hf_pfcp_packet_delay_thresholds_flags_b2_rp = -1;
static int hf_pfcp_packet_delay_thresholds_flags_b1_ul = -1;
static int hf_pfcp_packet_delay_thresholds_flags_b0_dl = -1;
static int hf_pfcp_packet_delay_thresholds_downlink = -1;
static int hf_pfcp_packet_delay_thresholds_uplink = -1;
static int hf_pfcp_packet_delay_thresholds_roundtrip = -1;
static int hf_pfcp_minimum_wait_time_seconds = -1;
static int hf_pfcp_qos_monitoring_measurement_flags = -1;
static int hf_pfcp_qos_monitoring_measurement_flags_b3_plmf = -1;
static int hf_pfcp_qos_monitoring_measurement_flags_b2_rp = -1;
static int hf_pfcp_qos_monitoring_measurement_flags_b1_ul = -1;
static int hf_pfcp_qos_monitoring_measurement_flags_b0_dl = -1;
static int hf_pfcp_qos_monitoring_measurement_downlink = -1;
static int hf_pfcp_qos_monitoring_measurement_uplink = -1;
static int hf_pfcp_qos_monitoring_measurement_roundtrip = -1;
static int ett_pfcp = -1;
static int ett_pfcp_flags = -1;
static int ett_pfcp_ie = -1;
@ -747,6 +829,19 @@ static int ett_pfcp_tsn_bridge_id = -1;
static int ett_pfcp_requested_clock_drift_control_information = -1;
static int ett_pfcp_requested_access_availability_control_information = -1;
static int ett_pfcp_mptcp_control_information = -1;
static int ett_pfcp_atsss_ll_control_information = -1;
static int ett_pfcp_pmf_control_information = -1;
static int ett_pfcp_mptcp_entity_ip_address_information = -1;
static int ett_pfcp_ue_link_specific_entity_ip_address = -1;
static int ett_pfcp_pmf_address_information = -1;
static int ett_pfcp_atsss_ll_information = -1;
static int ett_pfcp_qos_report_trigger = -1;
static int ett_pfcp_gtp_u_path_interface_type = -1;
static int ett_pfcp_requested_qos_monitoring = -1;
static int ett_pfcp_reporting_frequency = -1;
static int ett_pfcp_packet_delay_thresholds = -1;
static int ett_pfcp_qos_monitoring_measurement = -1;
@ -6685,7 +6780,21 @@ dissect_pfcp_mptcp_control_information(tvbuff_t *tvb, packet_info *pinfo, proto_
static void
dissect_pfcp_atsss_ll_control_information(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, pfcp_session_args_t *args _U_)
{
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, 0, length);
int offset = 0;
static const int * pfcp_atsss_ll_control_information_flags[] = {
&hf_pfcp_spare_b7_b1,
&hf_pfcp_atsss_ll_control_information_flags_b0_lli,
NULL
};
/* Octet 5 Spare RRCA */
proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_pfcp_atsss_ll_control_information_flags,
ett_pfcp_atsss_ll_control_information, pfcp_atsss_ll_control_information_flags, ENC_BIG_ENDIAN, BMT_NO_FALSE | BMT_NO_INT);
offset += 1;
if (offset < length) {
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, offset, length);
}
}
/*
@ -6694,7 +6803,21 @@ dissect_pfcp_atsss_ll_control_information(tvbuff_t *tvb, packet_info *pinfo, pro
static void
dissect_pfcp_pmf_control_information(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, pfcp_session_args_t *args _U_)
{
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, 0, length);
int offset = 0;
static const int * pfcp_pmf_control_information_flags[] = {
&hf_pfcp_spare_b7_b1,
&hf_pfcp_pmf_control_information_flags_b0_pmfi,
NULL
};
/* Octet 5 Spare RRCA */
proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_pfcp_pmf_control_information_flags,
ett_pfcp_pmf_control_information, pfcp_pmf_control_information_flags, ENC_BIG_ENDIAN, BMT_NO_FALSE | BMT_NO_INT);
offset += 1;
if (offset < length) {
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, offset, length);
}
}
/*
@ -6703,7 +6826,44 @@ dissect_pfcp_pmf_control_information(tvbuff_t *tvb, packet_info *pinfo, proto_tr
static void
dissect_pfcp_mptcp_address_information(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, pfcp_session_args_t *args _U_)
{
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, 0, length);
int offset = 0;
guint64 mptcp_address_flags;
static const int * pfcp_mptcp_ip_address_information_flags[] = {
&hf_pfcp_spare_b7_b2,
&hf_pfcp_mptcp_address_information_flags_b1_v6,
&hf_pfcp_mptcp_address_information_flags_b0_v4,
NULL
};
/* Octet 5 Spare V6 V4 */
proto_tree_add_bitmask_with_flags_ret_uint64(tree, tvb, offset, hf_pfcp_mptcp_address_information_flags,
ett_pfcp_mptcp_entity_ip_address_information, pfcp_mptcp_ip_address_information_flags, ENC_BIG_ENDIAN, BMT_NO_FALSE | BMT_NO_INT | BMT_NO_TFS, &mptcp_address_flags);
offset += 1;
/* Octet 6 MPTCP Proxy Type */
proto_tree_add_item(tree, hf_pfcp_mptcp_proxy_type, tvb, offset, 1, ENC_NA);
offset++;
/* Octet 7 to 8 MPTCP Proxy Port */
proto_tree_add_item(tree, hf_pfcp_mptcp_proxy_port, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
/* MPTCP Proxy IPv4 address (if present) */
if ((mptcp_address_flags & 0x1)) {
proto_tree_add_item(tree, hf_pfcp_mptcp_proxy_ip_address_ipv4, tvb, offset, 4, ENC_BIG_ENDIAN);
proto_item_append_text(item, ", IPv4 %s", tvb_ip_to_str(tvb, offset));
offset += 4;
}
/* MPTCP Proxy IPv6 address (if present) */
if ((mptcp_address_flags & 0x2)) {
proto_tree_add_item(tree, hf_pfcp_mptcp_proxy_ip_address_ipv6, tvb, offset, 16, ENC_NA);
proto_item_append_text(item, ", IPv6 %s", tvb_ip6_to_str(tvb, offset));
offset += 16;
}
if (offset < length) {
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, offset, -1);
}
}
/*
@ -6712,7 +6872,46 @@ dissect_pfcp_mptcp_address_information(tvbuff_t *tvb, packet_info *pinfo, proto_
static void
dissect_pfcp_ue_link_specific_ip_address(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, pfcp_session_args_t *args _U_)
{
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, 0, length);
int offset = 0;
guint64 ue_link_specific_ip_address_flags;
static const int * pfcp_ue_link_specific_ip_address_flags[] = {
&hf_pfcp_spare_b7_b4,
&hf_pfcp_ue_link_specific_ip_address_flags_b3_nv6,
&hf_pfcp_ue_link_specific_ip_address_flags_b2_nv4,
&hf_pfcp_ue_link_specific_ip_address_flags_b1_v6,
&hf_pfcp_ue_link_specific_ip_address_flags_b0_v4,
NULL
};
/* Octet 5 Spare NV6 NV4 V6 V4 */
proto_tree_add_bitmask_with_flags_ret_uint64(tree, tvb, offset, hf_pfcp_ue_link_specific_ip_address_flags,
ett_pfcp_ue_link_specific_entity_ip_address, pfcp_ue_link_specific_ip_address_flags, ENC_BIG_ENDIAN, BMT_NO_FALSE | BMT_NO_INT | BMT_NO_TFS, &ue_link_specific_ip_address_flags);
offset += 1;
/* UE Link-Specific IPv4 Address for 3GPP Access (if present) */
if ((ue_link_specific_ip_address_flags & 0x1)) {
proto_tree_add_item(tree, hf_pfcp_ue_link_specific_ip_address_3gpp_ipv4, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
}
/* UE Link-Specific IPv6 Address for 3GPP Access (if present) */
if ((ue_link_specific_ip_address_flags & 0x2)) {
proto_tree_add_item(tree, hf_pfcp_ue_link_specific_ip_address_3gpp_ipv6, tvb, offset, 16, ENC_NA);
offset += 16;
}
/* UE Link-Specific IPv4 Address for Non-3GPP Access (if present) */
if ((ue_link_specific_ip_address_flags & 0x1)) {
proto_tree_add_item(tree, hf_pfcp_ue_link_specific_ip_address_non3gpp_ipv4, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
}
/* UE Link-Specific IPv6 Address for Non-3GPP Access (if present) */
if ((ue_link_specific_ip_address_flags & 0x2)) {
proto_tree_add_item(tree, hf_pfcp_ue_link_specific_ip_address_non3gpp_ipv6, tvb, offset, 16, ENC_NA);
offset += 16;
}
if (offset < length) {
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, offset, -1);
}
}
/*
@ -6721,7 +6920,54 @@ dissect_pfcp_ue_link_specific_ip_address(tvbuff_t *tvb, packet_info *pinfo, prot
static void
dissect_pfcp_pmf_address_information(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, pfcp_session_args_t *args _U_)
{
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, 0, length);
int offset = 0;
guint64 pmf_address_information_flags;
static const int * pfcp_pmf_address_information_flags[] = {
&hf_pfcp_spare_b7_b3,
&hf_pfcp_pmf_address_information_flags_b2_mac,
&hf_pfcp_pmf_address_information_flags_b1_v6,
&hf_pfcp_pmf_address_information_flags_b0_v4,
NULL
};
/* Octet 5 Spare MAC V6 V4 */
proto_tree_add_bitmask_with_flags_ret_uint64(tree, tvb, offset, hf_pfcp_pmf_address_information_flags,
ett_pfcp_pmf_address_information, pfcp_pmf_address_information_flags, ENC_BIG_ENDIAN, BMT_NO_FALSE | BMT_NO_INT | BMT_NO_TFS, &pmf_address_information_flags);
offset += 1;
/* p to (p+3) PMF IPv4 address (if present) */
if ((pmf_address_information_flags & 0x1)) {
proto_tree_add_item(tree, hf_pfcp_pmf_address_ipv4, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
}
/* q to (q+15) PMF IPv6 address (if present) */
if ((pmf_address_information_flags & 0x2)) {
proto_tree_add_item(tree, hf_pfcp_pmf_address_ipv6, tvb, offset, 16, ENC_NA);
offset += 16;
}
/* r to (r+1) PMF Port for 3GPP */
proto_tree_add_item(tree, hf_pfcp_pmf_port_3gpp, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
/* s to (s+1) PMF Port for Non-3GPP */
proto_tree_add_item(tree, hf_pfcp_pmf_port_non3gpp, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
/* t to (t+5) PMF MAC address for 3GPP access (if present)*/
if ((pmf_address_information_flags & 0x4)) {
proto_tree_add_item(tree, hf_pfcp_pmf_mac_address_3gpp, tvb, offset, 6, ENC_NA);
offset += 6;
}
/* u to (u+5) PMF MAC address for Non-3GPP access (if present)*/
if ((pmf_address_information_flags & 0x4)) {
proto_tree_add_item(tree, hf_pfcp_pmf_mac_address_non3gpp, tvb, offset, 6, ENC_NA);
offset += 6;
}
if (offset < length) {
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, offset, -1);
}
}
/*
@ -6730,16 +6976,35 @@ dissect_pfcp_pmf_address_information(tvbuff_t *tvb, packet_info *pinfo, proto_tr
static void
dissect_pfcp_atsss_ll_information(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, pfcp_session_args_t *args _U_)
{
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, 0, length);
int offset = 0;
static const int * pfcp_atsss_ll_information_flags[] = {
&hf_pfcp_spare_b7_b1,
&hf_pfcp_atsss_ll_information_flags_b0_lli,
NULL
};
/* Octet 5 Spare LLI */
proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_pfcp_atsss_ll_information_flags,
ett_pfcp_atsss_ll_information, pfcp_atsss_ll_information_flags, ENC_BIG_ENDIAN, BMT_NO_FALSE | BMT_NO_INT);
offset += 1;
if (offset < length) {
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, offset, length);
}
}
/*
* 8.2.161 Data Network Access Identifier
*/
static void
dissect_pfcp_data_network_access_identifier(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, pfcp_session_args_t *args _U_)
dissect_pfcp_data_network_access_identifier(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, pfcp_session_args_t *args _U_)
{
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, 0, length);
int offset = 0;
/* Octet 5 to (n+4) Data Network Access Identifier
* The Data Network Access Identifier field shall be encoded as an OctetString
*/
proto_tree_add_item(tree, hf_pfcp_data_network_access_identifier, tvb, offset, length, ENC_NA);
}
/*
@ -6748,7 +7013,15 @@ dissect_pfcp_data_network_access_identifier(tvbuff_t *tvb, packet_info *pinfo, p
static void
dissect_pfcp_average_packet_delay(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, pfcp_session_args_t *args _U_)
{
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, 0, length);
int offset = 0;
/* Octet 5 to 8 Delay Value in milliseconds */
proto_tree_add_item(tree, hf_pfcp_packet_delay_milliseconds, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
if (offset < length) {
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, offset, length);
}
}
/*
@ -6757,7 +7030,15 @@ dissect_pfcp_average_packet_delay(tvbuff_t *tvb, packet_info *pinfo, proto_tree
static void
dissect_pfcp_minimum_packet_delay(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, pfcp_session_args_t *args _U_)
{
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, 0, length);
int offset = 0;
/* Octet 5 to 8 Delay Value in milliseconds */
proto_tree_add_item(tree, hf_pfcp_packet_delay_milliseconds, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
if (offset < length) {
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, offset, length);
}
}
/*
@ -6766,7 +7047,15 @@ dissect_pfcp_minimum_packet_delay(tvbuff_t *tvb, packet_info *pinfo, proto_tree
static void
dissect_pfcp_maximum_packet_delay(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, pfcp_session_args_t *args _U_)
{
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, 0, length);
int offset = 0;
/* Octet 5 to 8 Delay Value in milliseconds */
proto_tree_add_item(tree, hf_pfcp_packet_delay_milliseconds, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
if (offset < length) {
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, offset, length);
}
}
/*
@ -6775,7 +7064,23 @@ dissect_pfcp_maximum_packet_delay(tvbuff_t *tvb, packet_info *pinfo, proto_tree
static void
dissect_pfcp_qos_report_trigger(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, pfcp_session_args_t *args _U_)
{
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, 0, length);
int offset = 0;
static const int * pfcp_qos_report_trigger_flags[] = {
&hf_pfcp_spare_b7_b3,
&hf_pfcp_qos_report_trigger_flags_b2_ire,
&hf_pfcp_qos_report_trigger_flags_b1_thr,
&hf_pfcp_qos_report_trigger_flags_b0_per,
NULL
};
/* Octet 5 Spare IRE THR PER */
proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_pfcp_qos_report_trigger_flags,
ett_pfcp_qos_report_trigger, pfcp_qos_report_trigger_flags, ENC_BIG_ENDIAN, BMT_NO_FALSE | BMT_NO_INT);
offset += 1;
if (offset < length) {
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, offset, length);
}
}
/*
@ -6784,7 +7089,22 @@ dissect_pfcp_qos_report_trigger(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
static void
dissect_pfcp_gtp_u_path_interface_type(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, pfcp_session_args_t *args _U_)
{
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, 0, length);
int offset = 0;
static const int * pfcp_gtp_u_path_interface_type_flags[] = {
&hf_pfcp_spare_b7_b2,
&hf_pfcp_gtp_u_path_interface_type_flags_b1_n3,
&hf_pfcp_gtp_u_path_interface_type_flags_b0_n9,
NULL
};
/* Octet 5 Spare N3 N9 */
proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_pfcp_gtp_u_path_interface_type_flags,
ett_pfcp_gtp_u_path_interface_type, pfcp_gtp_u_path_interface_type_flags, ENC_BIG_ENDIAN, BMT_NO_FALSE | BMT_NO_INT);
offset += 1;
if (offset < length) {
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, offset, length);
}
}
/*
@ -6793,7 +7113,23 @@ dissect_pfcp_gtp_u_path_interface_type(tvbuff_t *tvb, packet_info *pinfo, proto_
static void
dissect_pfcp_requested_qos_monitoring(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, pfcp_session_args_t *args _U_)
{
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, 0, length);
int offset = 0;
static const int * pfcp_requested_qos_monitoring_flags[] = {
&hf_pfcp_spare_b7_b3,
&hf_pfcp_requested_qos_monitoring_flags_b2_rp,
&hf_pfcp_requested_qos_monitoring_flags_b1_ul,
&hf_pfcp_requested_qos_monitoring_flags_b0_dl,
NULL
};
/* Octet 5 Spare RP Ul DL */
proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_pfcp_requested_qos_monitoring_flags,
ett_pfcp_requested_qos_monitoring, pfcp_requested_qos_monitoring_flags, ENC_BIG_ENDIAN, BMT_NO_FALSE | BMT_NO_INT);
offset += 1;
if (offset < length) {
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, offset, length);
}
}
/*
@ -6802,7 +7138,23 @@ dissect_pfcp_requested_qos_monitoring(tvbuff_t *tvb, packet_info *pinfo, proto_t
static void
dissect_pfcp_reporting_frequency(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, pfcp_session_args_t *args _U_)
{
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, 0, length);
int offset = 0;
static const int * pfcp_reporting_frequency_flags[] = {
&hf_pfcp_spare_b7_b3,
&hf_pfcp_reporting_frequency_flags_b2_sesrl,
&hf_pfcp_reporting_frequency_flags_b1_perio,
&hf_pfcp_reporting_frequency_flags_b0_evett,
NULL
};
/* Octet 5 Spare RP Ul DL */
proto_tree_add_bitmask_with_flags(tree, tvb, offset, hf_pfcp_reporting_frequency_flags,
ett_pfcp_reporting_frequency, pfcp_reporting_frequency_flags, ENC_BIG_ENDIAN, BMT_NO_FALSE | BMT_NO_INT);
offset += 1;
if (offset < length) {
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, offset, length);
}
}
/*
@ -6811,7 +7163,42 @@ dissect_pfcp_reporting_frequency(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
static void
dissect_pfcp_packet_delay_thresholds(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, pfcp_session_args_t *args _U_)
{
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, 0, length);
int offset = 0;
guint64 packet_delay_thresholds_flags;
static const int * pfcp_packet_delay_thresholds_flags[] = {
&hf_pfcp_spare_b7_b3,
&hf_pfcp_packet_delay_thresholds_flags_b2_rp,
&hf_pfcp_packet_delay_thresholds_flags_b1_ul,
&hf_pfcp_packet_delay_thresholds_flags_b0_dl,
NULL
};
/* Octet 5 Spare RP Ul DL */
proto_tree_add_bitmask_with_flags_ret_uint64(tree, tvb, offset, hf_pfcp_packet_delay_thresholds_flags,
ett_pfcp_packet_delay_thresholds, pfcp_packet_delay_thresholds_flags, ENC_BIG_ENDIAN, BMT_NO_FALSE | BMT_NO_INT | BMT_NO_TFS, &packet_delay_thresholds_flags);
offset += 1;
/* m to (m+3) Downlink packet delay threshold */
if ((packet_delay_thresholds_flags & 0x1)) {
proto_tree_add_item(tree, hf_pfcp_packet_delay_thresholds_downlink, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
}
/* p to (p+3) Uplink packet delay threshold */
if ((packet_delay_thresholds_flags & 0x2)) {
proto_tree_add_item(tree, hf_pfcp_packet_delay_thresholds_uplink, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
}
/* q to (q+3) Round trip packet delay threshold */
if ((packet_delay_thresholds_flags & 0x4)) {
proto_tree_add_item(tree, hf_pfcp_packet_delay_thresholds_roundtrip, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
}
if (offset < length) {
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, offset, length);
}
}
/*
@ -6820,7 +7207,15 @@ dissect_pfcp_packet_delay_thresholds(tvbuff_t *tvb, packet_info *pinfo, proto_tr
static void
dissect_pfcp_minimum_wait_time(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, pfcp_session_args_t *args _U_)
{
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, 0, length);
int offset = 0;
/* Octet 5 to 8 Minimum Wait Time */
proto_tree_add_item(tree, hf_pfcp_minimum_wait_time_seconds, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
if (offset < length) {
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, offset, length);
}
}
/*
@ -6829,7 +7224,43 @@ dissect_pfcp_minimum_wait_time(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
static void
dissect_pfcp_qos_monitoring_measurement(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length, guint8 message_type _U_, pfcp_session_args_t *args _U_)
{
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, 0, length);
int offset = 0;
guint64 qos_monitoring_measurement_flags;
static const int * pfcp_qos_monitoring_measurement_flags[] = {
&hf_pfcp_spare_b7_b4,
&hf_pfcp_qos_monitoring_measurement_flags_b3_plmf,
&hf_pfcp_qos_monitoring_measurement_flags_b2_rp,
&hf_pfcp_qos_monitoring_measurement_flags_b1_ul,
&hf_pfcp_qos_monitoring_measurement_flags_b0_dl,
NULL
};
/* Octet 5 Spare RP Ul DL */
proto_tree_add_bitmask_with_flags_ret_uint64(tree, tvb, offset, hf_pfcp_qos_monitoring_measurement_flags,
ett_pfcp_qos_monitoring_measurement, pfcp_qos_monitoring_measurement_flags, ENC_BIG_ENDIAN, BMT_NO_FALSE | BMT_NO_INT | BMT_NO_TFS, &qos_monitoring_measurement_flags);
offset += 1;
/* m to (m+3) Downlink packet delay threshold */
if ((qos_monitoring_measurement_flags & 0x1)) {
proto_tree_add_item(tree, hf_pfcp_qos_monitoring_measurement_downlink, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
}
/* p to (p+3) Uplink packet delay threshold */
if ((qos_monitoring_measurement_flags & 0x2)) {
proto_tree_add_item(tree, hf_pfcp_qos_monitoring_measurement_uplink, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
}
/* q to (q+3) Round trip packet delay threshold */
if ((qos_monitoring_measurement_flags & 0x4)) {
proto_tree_add_item(tree, hf_pfcp_qos_monitoring_measurement_roundtrip, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
}
if (offset < length) {
proto_tree_add_expert(tree, pinfo, &ei_pfcp_ie_data_not_decoded, tvb, offset, length);
}
}
/* Array of functions to dissect IEs
@ -10872,10 +11303,351 @@ proto_register_pfcp(void)
NULL, HFILL }
},
{ &hf_pfcp_atsss_ll_control_information_flags,
{ "Flags", "pfcp.atsss_ll_control_information.flags",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_atsss_ll_control_information_flags_b0_lli,
{ "LLI: ATSSS-LL steering functionality is required", "pfcp.atsss_ll_control_information.flags.lli",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x01,
NULL, HFILL }
},
{ &hf_pfcp_pmf_control_information_flags,
{ "Flags", "pfcp.atsss_ll_control_information.flags",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_pmf_control_information_flags_b0_pmfi,
{ "PMFI: PMF functionality is required", "pfcp.pmf_control_information.flags.pmfi",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x01,
NULL, HFILL }
},
{ &hf_pfcp_mptcp_address_information_flags,
{ "Flags", "pfcp.mptcp_ip_address_information.flags",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_mptcp_address_information_flags_b0_v4,
{ "V4", "pfcp.mptcp_ip_address_information.flags.v4",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x01,
NULL, HFILL }
},
{ &hf_pfcp_mptcp_address_information_flags_b1_v6,
{ "V6", "pfcp.mptcp_ip_address_information.flags.v6",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x02,
NULL, HFILL }
},
{ &hf_pfcp_mptcp_proxy_type,
{ "MPTCP proxy type", "pfcp.mptcp_proxy.type",
FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_mptcp_proxy_port,
{ "MPTCP proxy port", "pfcp.mptcp_proxy.port",
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_mptcp_proxy_ip_address_ipv4,
{ "MPTCP proxy IPv4 address", "pfcp.mptcp_proxy.ipv4",
FT_IPv4, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_mptcp_proxy_ip_address_ipv6,
{ "MPTCP proxy IPv6 address", "pfcp.mptcp_proxy.ipv6",
FT_IPv6, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_ue_link_specific_ip_address_flags,
{ "Flags", "pfcp.ue_link_specific_ip_address.flags",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_ue_link_specific_ip_address_flags_b0_v4,
{ "V4", "pfcp.ue_link_specific_ip_address.flags.v4",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x01,
NULL, HFILL }
},
{ &hf_pfcp_ue_link_specific_ip_address_flags_b1_v6,
{ "V6", "pfcp.ue_link_specific_ip_address.flags.v6",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x02,
NULL, HFILL }
},
{ &hf_pfcp_ue_link_specific_ip_address_flags_b2_nv4,
{ "NV4", "pfcp.ue_link_specific_ip_address.flags.nv4",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x04,
NULL, HFILL }
},
{ &hf_pfcp_ue_link_specific_ip_address_flags_b3_nv6,
{ "NV6", "pfcp.ue_link_specific_ip_address.flags.nv6",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x08,
NULL, HFILL }
},
{ &hf_pfcp_ue_link_specific_ip_address_3gpp_ipv4,
{ "UE Link-Specific IPv4 Address for 3GPP Access", "pfcp.ue_link_specific_ip_address.3gpp.ipv4",
FT_IPv4, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_ue_link_specific_ip_address_3gpp_ipv6,
{ "UE Link-Specific IPv6 Address for 3GPP Access", "pfcp.ue_link_specific_ip_address.3gpp.ipv6",
FT_IPv6, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_ue_link_specific_ip_address_non3gpp_ipv4,
{ "UE Link-Specific IPv4 Address for Non-3GPP Access", "pfcp.ue_link_specific_ip_address.non3gpp.ipv4",
FT_IPv4, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_ue_link_specific_ip_address_non3gpp_ipv6,
{ "UE Link-Specific IPv6 Address for Non-3GPP Access", "pfcp.ue_link_specific_ip_address.non3gpp.ipv6",
FT_IPv6, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_pmf_address_information_flags,
{ "Flags", "pfcp.pmf_address_information.flags",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_pmf_address_information_flags_b0_v4,
{ "V4", "pfcp.pmf_address_information.flags.v4",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x01,
NULL, HFILL }
},
{ &hf_pfcp_pmf_address_information_flags_b1_v6,
{ "V6", "pfcp.pmf_address_information.flags.v6",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x02,
NULL, HFILL }
},
{ &hf_pfcp_pmf_address_information_flags_b2_mac,
{ "MAC", "pfcp.pmf_address_information.flags.mac",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x04,
NULL, HFILL }
},
{ &hf_pfcp_pmf_address_ipv4,
{ "PMF IPv4 Address", "pfcp.pmf_address_information.ipv4",
FT_IPv4, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_pmf_address_ipv6,
{ "PMF IPv6 Address", "pfcp.pmf_address_information.ipv6",
FT_IPv6, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_pmf_port_3gpp,
{ "PMF port for 3GPP", "pfcp.pmf_address_information.port_3gpp",
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_pmf_port_non3gpp,
{ "PMF port for Non-3GPP", "pfcp.pmf_address_information.port_non3gpp",
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_pmf_mac_address_3gpp,
{ "MAC Address for 3GPP", "pfcp.pmf_address_information.mac_address_3gpp",
FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_pmf_mac_address_non3gpp,
{ "MAC Address for Non-3GPP", "pfcp.pmf_address_information.mac_address_non3gpp",
FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_atsss_ll_information_flags,
{ "Flags", "pfcp.atsss_ll_information.flags",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_atsss_ll_information_flags_b0_lli,
{ "LLI: ATSSS-LL steering functionality have been allocated", "pfcp.atsss_ll_information.flags.lli",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x01,
NULL, HFILL }
},
{ &hf_pfcp_data_network_access_identifier,
{ "Data Network Access Identifier", "pfcp.data_network_access_identifier",
FT_BYTES, BASE_NONE, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_packet_delay_milliseconds,
{ "Delay Value in milliseconds", "pfcp.average_packet_delay.milliseconds",
FT_UINT32, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_qos_report_trigger_flags,
{ "Flags", "pfcp.qos_report_trigger.flags",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_qos_report_trigger_flags_b0_per,
{ "PER (Periodic Reporting)", "pfcp.qos_report_trigger.flags.v4",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x01,
NULL, HFILL }
},
{ &hf_pfcp_qos_report_trigger_flags_b1_thr,
{ "THR (Event triggered based on Threshold)", "pfcp.qos_report_trigger.flags.thr",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x02,
NULL, HFILL }
},
{ &hf_pfcp_qos_report_trigger_flags_b2_ire,
{ "IRE (Immediate Report)", "pfcp.qos_report_trigger.flags.ire",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x04,
NULL, HFILL }
},
{ &hf_pfcp_gtp_u_path_interface_type_flags,
{ "Flags", "pfcp.gtp_u_path_interface_type.flags",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_gtp_u_path_interface_type_flags_b0_n9,
{ "N9", "pfcp.qos_report_trigtp_u_path_interface_typegger.flags.n9",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x01,
NULL, HFILL }
},
{ &hf_pfcp_gtp_u_path_interface_type_flags_b1_n3,
{ "N3", "pfcp.gtp_u_path_interface_type.flags.n3",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x02,
NULL, HFILL }
},
{ &hf_pfcp_requested_qos_monitoring_flags,
{ "Flags", "pfcp.requested_qos_monitoring.flags",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_requested_qos_monitoring_flags_b0_dl,
{ "DL (Downlink)", "pfcp.requested_qos_monitoring.flags.dl",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x01,
NULL, HFILL }
},
{ &hf_pfcp_requested_qos_monitoring_flags_b1_ul,
{ "UL (Uplink)", "pfcp.requested_qos_monitoring.flags.ul",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x02,
NULL, HFILL }
},
{ &hf_pfcp_requested_qos_monitoring_flags_b2_rp,
{ "RP (Round Trip)", "pfcp.requested_qos_monitoring.flags.rp",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x04,
NULL, HFILL }
},
{ &hf_pfcp_reporting_frequency_flags,
{ "Flags", "pfcp.reporting_frequency.flags",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_reporting_frequency_flags_b0_evett,
{ "EVETT (Event Triggered QoS monitoring reporting)", "pfcp.reporting_frequency.flags.evett",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x01,
NULL, HFILL }
},
{ &hf_pfcp_reporting_frequency_flags_b1_perio,
{ "PERIO (Periodic QoS monitoring reporting)", "pfcp.reporting_frequency.flags.perio",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x02,
NULL, HFILL }
},
{ &hf_pfcp_reporting_frequency_flags_b2_sesrl,
{ "SESRL (Session Released QoS monitoring reporting)", "pfcp.reporting_frequency.flags.sesrl",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x04,
NULL, HFILL }
},
{ &hf_pfcp_packet_delay_thresholds_flags,
{ "Flags", "pfcp.packet_delay_thresholds.flags",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_packet_delay_thresholds_flags_b0_dl,
{ "DL (Downlink)", "pfcp.packet_delay_thresholds.flags.dl",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x01,
NULL, HFILL }
},
{ &hf_pfcp_packet_delay_thresholds_flags_b1_ul,
{ "UL (Uplink)", "pfcp.packet_delay_thresholds.flags.ul",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x02,
NULL, HFILL }
},
{ &hf_pfcp_packet_delay_thresholds_flags_b2_rp,
{ "RP (Round Trip)", "pfcp.packet_delay_thresholds.flags.rp",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x04,
NULL, HFILL }
},
{ &hf_pfcp_packet_delay_thresholds_downlink,
{ "Downlink packet delay treshold (milliseconds)", "pfcp.packet_delay_thresholds.downlink",
FT_UINT32, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_packet_delay_thresholds_uplink,
{ "Downlink packet delay treshold (milliseconds)", "pfcp.packet_delay_thresholds.uplink",
FT_UINT32, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_packet_delay_thresholds_roundtrip,
{ "Round trip packet delay treshold (milliseconds)", "pfcp.packet_delay_thresholds.roundtrip",
FT_UINT32, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_minimum_wait_time_seconds,
{ "The Minimum Wait Time (seconds)", "pfcp.minimum_wait_time.seconds",
FT_UINT32, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_qos_monitoring_measurement_flags,
{ "Flags", "pfcp.qos_monitoring_measurement.flags",
FT_UINT8, BASE_HEX, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_qos_monitoring_measurement_flags_b0_dl,
{ "DL (Downlink)", "pfcp.qos_monitoring_measurement.flags.dl",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x01,
NULL, HFILL }
},
{ &hf_pfcp_qos_monitoring_measurement_flags_b1_ul,
{ "UL (Uplink)", "pfcp.qos_monitoring_measurement.flags.ul",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x02,
NULL, HFILL }
},
{ &hf_pfcp_qos_monitoring_measurement_flags_b2_rp,
{ "RP (Round Trip)", "pfcp.qos_monitoring_measurement.flags.rp",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x04,
NULL, HFILL }
},
{ &hf_pfcp_qos_monitoring_measurement_flags_b3_plmf,
{ "PLMF (Packet Delay Measurement Failure)", "pfcp.qos_monitoring_measurement.flags.plmf",
FT_BOOLEAN, 8, TFS(&tfs_present_not_present), 0x08,
NULL, HFILL }
},
{ &hf_pfcp_qos_monitoring_measurement_downlink,
{ "Downlink packet delay (milliseconds)", "pfcp.qos_monitoring_measurement.downlink",
FT_UINT32, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_qos_monitoring_measurement_uplink,
{ "Downlink packet delay (milliseconds)", "pfcp.qos_monitoring_measurement.uplink",
FT_UINT32, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
{ &hf_pfcp_qos_monitoring_measurement_roundtrip,
{ "Round trip packet delay (milliseconds)", "pfcp.qos_monitoring_measurement.roundtrip",
FT_UINT32, BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
};
/* Setup protocol subtree array */
#define NUM_INDIVIDUAL_ELEMS_PFCP 67
#define NUM_INDIVIDUAL_ELEMS_PFCP 79
gint *ett[NUM_INDIVIDUAL_ELEMS_PFCP +
(NUM_PFCP_IES - 1)];
@ -10946,6 +11718,19 @@ proto_register_pfcp(void)
ett[64] = &ett_pfcp_requested_clock_drift_control_information;
ett[65] = &ett_pfcp_requested_access_availability_control_information;
ett[66] = &ett_pfcp_mptcp_control_information;
ett[67] = &ett_pfcp_atsss_ll_control_information;
ett[68] = &ett_pfcp_pmf_control_information;
ett[69] = &ett_pfcp_mptcp_entity_ip_address_information;
ett[70] = &ett_pfcp_ue_link_specific_entity_ip_address;
ett[71] = &ett_pfcp_pmf_address_information;
ett[72] = &ett_pfcp_atsss_ll_information;
ett[73] = &ett_pfcp_qos_report_trigger;
ett[74] = &ett_pfcp_gtp_u_path_interface_type;
ett[75] = &ett_pfcp_requested_qos_monitoring;
ett[76] = &ett_pfcp_reporting_frequency;
ett[77] = &ett_pfcp_packet_delay_thresholds;
ett[78] = &ett_pfcp_qos_monitoring_measurement;
static ei_register_info ei[] = {