3 * Routines for Packet Forwarding Control Protocol (PFCP) dissection
5 * Copyright 2017-2018, Anders Broman <anders.broman@ericsson.com>
7 * Updates and corrections:
8 * Copyright 2017-2024, Joakim Karlsson <oakimk@gmail.com>
10 * Wireshark - Network traffic analyzer
11 * By Gerald Combs <gerald@wireshark.org>
12 * Copyright 1998 Gerald Combs
14 * SPDX-License-Identifier: GPL-2.0-or-later
16 * Ref 3GPP TS 29.244 V18.6.0 (2024-06-26)
22 #include <epan/packet.h>
23 #include <epan/conversation.h>
24 #include <epan/etypes.h>
25 #include <epan/expert.h>
26 #include <epan/ipproto.h>
27 #include <epan/sminmpec.h>
28 #include <epan/addr_resolv.h> /* Needed for BASE_ENTERPRISES */
30 #include <epan/srt_table.h>
32 #include <epan/unit_strings.h>
35 #include <wsutil/array.h>
36 #include "packet-e164.h"
37 #include "packet-e212.h"
38 #include "packet-ip.h"
40 void proto_register_pfcp(void);
41 void proto_reg_handoff_pfcp(void);
43 static dissector_handle_t pfcp_handle
;
44 static dissector_handle_t gtpv2_uli_handle
;
46 #define UDP_PORT_PFCP 8805 /* IANA-registered */
48 static int proto_pfcp
;
50 static int hf_pfcp_msg_type
;
51 static int hf_pfcp_msg_length
;
52 static int hf_pfcp_hdr_flags
;
53 static int hf_pfcp_version
;
54 static int hf_pfcp_fo_flag
;
55 static int hf_pfcp_mp_flag
;
56 static int hf_pfcp_s_flag
;
57 static int hf_pfcp_seid
;
58 static int hf_pfcp_seqno
;
59 static int hf_pfcp_mp
;
61 static int hf_pfcp2_ie
;
62 static int hf_pfcp2_ie_len
;
63 static int hf_pfcp2_enterprise_ie
;
64 static int hf_pfcp_enterprise_id
;
65 static int hf_pfcp_enterprise_data
;
67 static int hf_pfcp_response_in
;
68 static int hf_pfcp_response_to
;
69 static int hf_pfcp_response_time
;
71 static int hf_pfcp_session
;
73 static int hf_pfcp_spare_b0
;
74 static int hf_pfcp_spare_b1
;
75 static int hf_pfcp_spare_b2
;
76 static int hf_pfcp_spare_b3
;
77 static int hf_pfcp_spare_b4
;
78 static int hf_pfcp_spare_b5
;
79 static int hf_pfcp_spare_b6
;
80 static int hf_pfcp_spare_b7
;
81 static int hf_pfcp_spare_b7_b6
;
82 static int hf_pfcp_spare_b7_b5
;
83 static int hf_pfcp_spare_b7_b4
;
84 static int hf_pfcp_spare_b7_b3
;
85 static int hf_pfcp_spare_b7_b2
;
86 static int hf_pfcp_spare_b7_b1
;
87 static int hf_pfcp_spare_h0
;
88 static int hf_pfcp_spare_h1
;
89 static int hf_pfcp_spare_oct
;
90 static int hf_pfcp_spare
;
92 static int hf_pfcp2_cause
;
93 static int hf_pfcp_node_id_type
;
94 static int hf_pfcp_node_id_ipv4
;
95 static int hf_pfcp_node_id_ipv6
;
96 static int hf_pfcp_node_id_fqdn
;
97 static int hf_pfcp_recovery_time_stamp
;
98 static int hf_pfcp_b0_v6
;
99 static int hf_pfcp_b1_v4
;
100 static int hf_pfcp_f_seid_ipv4
;
101 static int hf_pfcp_f_seid_ipv6
;
102 static int hf_pfcp_pdr_id
;
103 static int hf_pfcp_precedence
;
104 static int hf_pfcp_source_interface
;
105 static int hf_pfcp_fteid_flg_spare
;
106 static int hf_pfcp_fteid_flg_b3_ch_id
;
107 static int hf_pfcp_fteid_flg_b2_ch
;
108 static int hf_pfcp_fteid_flg_b1_v6
;
109 static int hf_pfcp_fteid_flg_b0_v4
;
110 static int hf_pfcp_f_teid_ch_id
;
111 static int hf_pfcp_f_teid_teid
;
112 static int hf_pfcp_f_teid_ipv4
;
113 static int hf_pfcp_f_teid_ipv6
;
114 static int hf_pfcp_network_instance
;
115 static int hf_pfcp_pdn_type
;
116 static int hf_pfcp_failed_rule_id_type
;
117 static int hf_pfcp_time_quota_mechanism_bti_type
;
118 static int hf_pfcp_time_quota_mechanism_bti
;
119 static int hf_pfcp_multiplier_value_digits
;
120 static int hf_pfcp_multiplier_exponent
;
122 static int hf_pfcp_ue_ip_address_flag_b0_v6
;
123 static int hf_pfcp_ue_ip_address_flag_b1_v4
;
124 static int hf_pfcp_ue_ip_address_flag_b2_sd
;
125 static int hf_pfcp_ue_ip_address_flag_b3_v6d
;
126 static int hf_pfcp_ue_ip_address_flag_b4_chv4
;
127 static int hf_pfcp_ue_ip_address_flag_b5_chv6
;
128 static int hf_pfcp_ue_ip_address_flag_b6_v6pl
;
129 static int hf_pfcp_ue_ip_addr_ipv4
;
130 static int hf_pfcp_ue_ip_add_ipv6
;
131 static int hf_pfcp_ue_ip_add_ipv6_prefix_delegation_bits
;
132 static int hf_pfcp_ue_ip_add_ipv6_prefix_length
;
133 static int hf_pfcp_application_id
;
134 static int hf_pfcp_application_id_str
;
136 static int hf_pfcp_sdf_filter_flags_b0_fd
;
137 static int hf_pfcp_sdf_filter_flags_b1_ttc
;
138 static int hf_pfcp_sdf_filter_flags_b2_spi
;
139 static int hf_pfcp_sdf_filter_flags_b3_fl
;
140 static int hf_pfcp_sdf_filter_flags_b4_bid
;
142 static int hf_pfcp_flow_desc_len
;
143 static int hf_pfcp_flow_desc
;
144 static int hf_pfcp_traffic_class
;
145 static int hf_pfcp_traffic_mask
;
146 static int hf_pfcp_traffic_dscp
;
147 static int hf_pfcp_spi
;
148 static int hf_pfcp_flow_label_spare_bit
;
149 static int hf_pfcp_flow_label
;
150 static int hf_pfcp_sdf_filter_id
;
152 static int hf_pfcp_out_hdr_desc
;
153 static int hf_pfcp_gtpu_ext_hdr_del_b0_pdu_sess_cont
;
154 static int hf_pfcp_far_id_flg
;
155 static int hf_pfcp_far_id
;
156 static int hf_pfcp_urr_id_flg
;
157 static int hf_pfcp_urr_id
;
158 static int hf_pfcp_qer_id_flg
;
159 static int hf_pfcp_qer_id
;
160 static int hf_pfcp_predef_rules_name
;
164 static int hf_pfcp_apply_action_flags_o6_b4_mbsu
;
165 static int hf_pfcp_apply_action_flags_o6_b3_fssm
;
166 static int hf_pfcp_apply_action_flags_o6_b2_ddpn
;
167 static int hf_pfcp_apply_action_flags_o6_b1_bdpn
;
168 static int hf_pfcp_apply_action_flags_o6_b0_edrt
;
169 static int hf_pfcp_apply_action_flags_o5_b7_dfrt
;
170 static int hf_pfcp_apply_action_flags_o5_b6_ipmd
;
171 static int hf_pfcp_apply_action_flags_o5_b5_ipma
;
172 static int hf_pfcp_apply_action_flags_o5_b4_dupl
;
173 static int hf_pfcp_apply_action_flags_o5_b3_nocp
;
174 static int hf_pfcp_apply_action_flags_o5_b2_buff
;
175 static int hf_pfcp_apply_action_flags_o5_b1_forw
;
176 static int hf_pfcp_apply_action_flags_o5_b0_drop
;
178 static int hf_pfcp_bar_id
;
179 static int hf_pfcp_fq_csid_node_id_type
;
180 static int hf_pfcp_num_csid
;
181 static int hf_pfcp_fq_csid_node_id_ipv4
;
182 static int hf_pfcp_fq_csid_node_id_ipv6
;
183 static int hf_pfcp_fq_csid_node_id_mcc_mnc
;
184 static int hf_pfcp_fq_csid_node_id_int
;
185 static int hf_pfcp_fq_csid
;
186 static int hf_pfcp_fq_csid_node_type
;
187 static int hf_pfcp_measurement_period
;
188 static int hf_pfcp_duration_measurement
;
189 static int hf_pfcp_time_of_first_packet
;
190 static int hf_pfcp_time_of_last_packet
;
191 static int hf_pfcp_dst_interface
;
192 static int hf_pfcp_redirect_address_type
;
193 static int hf_pfcp_redirect_server_addr_len
;
194 static int hf_pfcp_redirect_server_address
;
195 static int hf_pfcp_other_redirect_server_addr_len
;
196 static int hf_pfcp_other_redirect_server_address
;
197 static int hf_pfcp_redirect_port
;
198 static int hf_pfcp_outer_hdr_desc_o5_b0_gtp_udp_ipv4
;
199 static int hf_pfcp_outer_hdr_desc_o5_b1_gtp_udp_ipv6
;
200 static int hf_pfcp_outer_hdr_desc_o5_b2_udp_ipv4
;
201 static int hf_pfcp_outer_hdr_desc_o5_b3_udp_ipv6
;
202 static int hf_pfcp_outer_hdr_desc_o5_b4_ipv4
;
203 static int hf_pfcp_outer_hdr_desc_o5_b5_ipv6
;
204 static int hf_pfcp_outer_hdr_desc_o5_b6_ctag
;
205 static int hf_pfcp_outer_hdr_desc_o5_b7_stag
;
206 static int hf_pfcp_outer_hdr_desc_o6_b0_n19
;
207 static int hf_pfcp_outer_hdr_desc_o6_b1_n6
;
208 static int hf_pfcp_outer_hdr_desc_o6_b2_ssm_cteid
;
209 static int hf_pfcp_outer_hdr_desc_o6_spare
;
210 static int hf_pfcp_outer_hdr_creation_teid
;
211 static int hf_pfcp_outer_hdr_creation_ipv4
;
212 static int hf_pfcp_outer_hdr_creation_ipv6
;
213 static int hf_pfcp_outer_hdr_creation_port
;
214 static int hf_pfcp_time_threshold
;
215 static int hf_pfcp_forwarding_policy_id_len
;
216 static int hf_pfcp_forwarding_policy_id
;
218 static int hf_pfcp_measurement_method_flags_b0_durat
;
219 static int hf_pfcp_measurement_method_flags_b1_volume
;
220 static int hf_pfcp_measurement_method_flags_b2_event
;
222 static int hf_pfcp_subsequent_time_threshold
;
223 static int hf_pfcp_inactivity_detection_time
;
224 static int hf_pfcp_monitoring_time
;
226 static int hf_pfcp_reporting_triggers_o5_b7_liusa
;
227 static int hf_pfcp_reporting_triggers_o5_b6_droth
;
228 static int hf_pfcp_reporting_triggers_o5_b5_stopt
;
229 static int hf_pfcp_reporting_triggers_o5_b4_start
;
230 static int hf_pfcp_reporting_triggers_o5_b3_quhti
;
231 static int hf_pfcp_reporting_triggers_o5_b2_timth
;
232 static int hf_pfcp_reporting_triggers_o5_b1_volth
;
233 static int hf_pfcp_reporting_triggers_o5_b0_perio
;
234 static int hf_pfcp_reporting_triggers_o6_b7_quvti
;
235 static int hf_pfcp_reporting_triggers_o6_b6_ipmjl
;
236 static int hf_pfcp_reporting_triggers_o6_b5_evequ
;
237 static int hf_pfcp_reporting_triggers_o6_b4_eveth
;
238 static int hf_pfcp_reporting_triggers_o6_b3_macar
;
239 static int hf_pfcp_reporting_triggers_o6_b2_envcl
;
240 static int hf_pfcp_reporting_triggers_o6_b1_timqu
;
241 static int hf_pfcp_reporting_triggers_o6_b0_volqu
;
242 static int hf_pfcp_reporting_triggers_o7_b1_upint
;
243 static int hf_pfcp_reporting_triggers_o7_b0_reemr
;
245 static int hf_pfcp_volume_threshold_b2_dlvol
;
246 static int hf_pfcp_volume_threshold_b1_ulvol
;
247 static int hf_pfcp_volume_threshold_b0_tovol
;
248 static int hf_pfcp_volume_threshold_tovol
;
249 static int hf_pfcp_volume_threshold_ulvol
;
250 static int hf_pfcp_volume_threshold_dlvol
;
252 static int hf_pfcp_volume_quota_b2_dlvol
;
253 static int hf_pfcp_volume_quota_b1_ulvol
;
254 static int hf_pfcp_volume_quota_b0_tovol
;
255 static int hf_pfcp_volume_quota_tovol
;
256 static int hf_pfcp_volume_quota_ulvol
;
257 static int hf_pfcp_volume_quota_dlvol
;
259 static int hf_pfcp_subseq_volume_threshold_b2_dlvol
;
260 static int hf_pfcp_subseq_volume_threshold_b1_ulvol
;
261 static int hf_pfcp_subseq_volume_threshold_b0_tovol
;
262 static int hf_pfcp_subseq_volume_threshold_tovol
;
263 static int hf_pfcp_subseq_volume_threshold_ulvol
;
264 static int hf_pfcp_subseq_volume_threshold_dlvol
;
266 static int hf_pfcp_time_quota
;
267 static int hf_pfcp_start_time
;
268 static int hf_pfcp_end_time
;
269 static int hf_pfcp_quota_holding_time
;
270 static int hf_pfcp_dropped_dl_traffic_threshold_b1_dlby
;
271 static int hf_pfcp_dropped_dl_traffic_threshold_b0_dlpa
;
272 static int hf_pfcp_downlink_packets
;
273 static int hf_pfcp_bytes_downlink_data
;
274 static int hf_pfcp_qer_correlation_id
;
275 static int hf_pfcp_gate_status_b0b1_dlgate
;
276 static int hf_pfcp_gate_status_b3b2_ulgate
;
277 static int hf_pfcp_ul_mbr
;
278 static int hf_pfcp_dl_mbr
;
279 static int hf_pfcp_ul_gbr
;
280 static int hf_pfcp_dl_gbr
;
282 static int hf_pfcp_report_type_b6_uisr
;
283 static int hf_pfcp_report_type_b5_sesr
;
284 static int hf_pfcp_report_type_b4_tmir
;
285 static int hf_pfcp_report_type_b3_upir
;
286 static int hf_pfcp_report_type_b2_erir
;
287 static int hf_pfcp_report_type_b1_usar
;
288 static int hf_pfcp_report_type_b0_dldr
;
290 static int hf_pfcp_offending_ie
;
291 static int hf_pfcp_offending_ie_value
;
293 static int hf_pfcp_up_function_features_o14_b0_mbsch
;
294 static int hf_pfcp_up_function_features_o13_b7_un6tu
;
295 static int hf_pfcp_up_function_features_o13_b6_umn6ip
;
296 static int hf_pfcp_up_function_features_o13_b5_upsbies
;
297 static int hf_pfcp_up_function_features_o13_b4_mtsdt
;
298 static int hf_pfcp_up_function_features_o13_b3_edbnc
;
299 static int hf_pfcp_up_function_features_o13_b2_qmdrm
;
300 static int hf_pfcp_up_function_features_o13_b1_cntl
;
301 static int hf_pfcp_up_function_features_o13_b0_pdusm
;
302 static int hf_pfcp_up_function_features_o12_b7_eml4s
;
303 static int hf_pfcp_up_function_features_o12_b6_detnet
;
304 static int hf_pfcp_up_function_features_o12_b5_qmcon
;
305 static int hf_pfcp_up_function_features_o12_b4_n6jedb
;
306 static int hf_pfcp_up_function_features_o12_b3_drtsc
;
307 static int hf_pfcp_up_function_features_o12_b2_tscts
;
308 static int hf_pfcp_up_function_features_o12_b1_dbdm
;
309 static int hf_pfcp_up_function_features_o12_b0_redsm
;
310 static int hf_pfcp_up_function_features_o11_b7_mpquic
;
311 static int hf_pfcp_up_function_features_o11_b6_afsfc
;
312 static int hf_pfcp_up_function_features_o11_b5_upidp
;
313 static int hf_pfcp_up_function_features_o11_b4_ratp
;
314 static int hf_pfcp_up_function_features_o11_b3_eppi
;
315 static int hf_pfcp_up_function_features_o11_b2_psuprm
;
316 static int hf_pfcp_up_function_features_o11_b1_mbsn4
;
317 static int hf_pfcp_up_function_features_o11_b0_drqos
;
318 static int hf_pfcp_up_function_features_o10_b7_dnsts
;
319 static int hf_pfcp_up_function_features_o10_b6_iprep
;
320 static int hf_pfcp_up_function_features_o10_b5_resps
;
321 static int hf_pfcp_up_function_features_o10_b4_upber
;
322 static int hf_pfcp_up_function_features_o10_b3_l2tp
;
323 static int hf_pfcp_up_function_features_o10_b2_nspoc
;
324 static int hf_pfcp_up_function_features_o10_b1_quasf
;
325 static int hf_pfcp_up_function_features_o10_b0_rttwp
;
326 static int hf_pfcp_up_function_features_o9_b7_rds
;
327 static int hf_pfcp_up_function_features_o9_b6_ddds
;
328 static int hf_pfcp_up_function_features_o9_b5_ethar
;
329 static int hf_pfcp_up_function_features_o9_b4_ciot
;
330 static int hf_pfcp_up_function_features_o9_b3_mt_edt
;
331 static int hf_pfcp_up_function_features_o9_b2_gpqm
;
332 static int hf_pfcp_up_function_features_o9_b1_qfqm
;
333 static int hf_pfcp_up_function_features_o9_b0_atsss_ll
;
334 static int hf_pfcp_up_function_features_o8_b7_mptcp
;
335 static int hf_pfcp_up_function_features_o8_b6_tsn
;
336 static int hf_pfcp_up_function_features_o8_b5_ip6pl
;
337 static int hf_pfcp_up_function_features_o8_b4_iptv
;
338 static int hf_pfcp_up_function_features_o8_b3_norp
;
339 static int hf_pfcp_up_function_features_o8_b2_vtime
;
340 static int hf_pfcp_up_function_features_o8_b1_rttl
;
341 static int hf_pfcp_up_function_features_o8_b0_mpas
;
342 static int hf_pfcp_up_function_features_o7_b7_gcom
;
343 static int hf_pfcp_up_function_features_o7_b6_bundl
;
344 static int hf_pfcp_up_function_features_o7_b5_mte_n4
;
345 static int hf_pfcp_up_function_features_o7_b4_mnop
;
346 static int hf_pfcp_up_function_features_o7_b3_sset
;
347 static int hf_pfcp_up_function_features_o7_b2_ueip
;
348 static int hf_pfcp_up_function_features_o7_b1_adpdp
;
349 static int hf_pfcp_up_function_features_o7_b0_dpdra
;
350 static int hf_pfcp_up_function_features_o6_b7_epfar
;
351 static int hf_pfcp_up_function_features_o6_b6_pfde
;
352 static int hf_pfcp_up_function_features_o6_b5_frrt
;
353 static int hf_pfcp_up_function_features_o6_b4_trace
;
354 static int hf_pfcp_up_function_features_o6_b3_quoac
;
355 static int hf_pfcp_up_function_features_o6_b2_udbc
;
356 static int hf_pfcp_up_function_features_o6_b1_pdiu
;
357 static int hf_pfcp_up_function_features_o6_b0_empu
;
358 static int hf_pfcp_up_function_features_o5_b7_treu
;
359 static int hf_pfcp_up_function_features_o5_b6_heeu
;
360 static int hf_pfcp_up_function_features_o5_b5_pfdm
;
361 static int hf_pfcp_up_function_features_o5_b4_ftup
;
362 static int hf_pfcp_up_function_features_o5_b3_trst
;
363 static int hf_pfcp_up_function_features_o5_b2_dlbd
;
364 static int hf_pfcp_up_function_features_o5_b1_ddnd
;
365 static int hf_pfcp_up_function_features_o5_b0_bucp
;
367 static int hf_pfcp_sequence_number
;
368 static int hf_pfcp_metric
;
369 static int hf_pfcp_timer_unit
;
370 static int hf_pfcp_timer_value
;
372 static int hf_pfcp_usage_report_trigger_o5_b7_immer
;
373 static int hf_pfcp_usage_report_trigger_o5_b6_droth
;
374 static int hf_pfcp_usage_report_trigger_o5_b5_stopt
;
375 static int hf_pfcp_usage_report_trigger_o5_b4_start
;
376 static int hf_pfcp_usage_report_trigger_o5_b3_quhti
;
377 static int hf_pfcp_usage_report_trigger_o5_b2_timth
;
378 static int hf_pfcp_usage_report_trigger_o5_b1_volth
;
379 static int hf_pfcp_usage_report_trigger_o5_b0_perio
;
380 static int hf_pfcp_usage_report_trigger_o6_b7_eveth
;
381 static int hf_pfcp_usage_report_trigger_o6_b6_macar
;
382 static int hf_pfcp_usage_report_trigger_o6_b5_envcl
;
383 static int hf_pfcp_usage_report_trigger_o6_b4_monit
;
384 static int hf_pfcp_usage_report_trigger_o6_b3_termr
;
385 static int hf_pfcp_usage_report_trigger_o6_b2_liusa
;
386 static int hf_pfcp_usage_report_trigger_o6_b1_timqu
;
387 static int hf_pfcp_usage_report_trigger_o6_b0_volqu
;
388 static int hf_pfcp_usage_report_trigger_o7_b5_upint
;
389 static int hf_pfcp_usage_report_trigger_o7_b4_emrre
;
390 static int hf_pfcp_usage_report_trigger_o7_b3_quvti
;
391 static int hf_pfcp_usage_report_trigger_o7_b2_ipmjl
;
392 static int hf_pfcp_usage_report_trigger_o7_b1_tebur
;
393 static int hf_pfcp_usage_report_trigger_o7_b0_evequ
;
395 static int hf_pfcp_volume_measurement_b5_dlnop
;
396 static int hf_pfcp_volume_measurement_b4_ulnop
;
397 static int hf_pfcp_volume_measurement_b3_tonop
;
398 static int hf_pfcp_volume_measurement_b2_dlvol
;
399 static int hf_pfcp_volume_measurement_b1_ulvol
;
400 static int hf_pfcp_volume_measurement_b0_tovol
;
401 static int hf_pfcp_vol_meas_tovol
;
402 static int hf_pfcp_vol_meas_ulvol
;
403 static int hf_pfcp_vol_meas_dlvol
;
404 static int hf_pfcp_vol_meas_tonop
;
405 static int hf_pfcp_vol_meas_ulnop
;
406 static int hf_pfcp_vol_meas_dlnop
;
408 static int hf_pfcp_cp_function_features_o6_b1_rpgur
;
409 static int hf_pfcp_cp_function_features_o6_b0_psucc
;
410 static int hf_pfcp_cp_function_features_o5_b7_uiaur
;
411 static int hf_pfcp_cp_function_features_o5_b6_ardr
;
412 static int hf_pfcp_cp_function_features_o5_b5_mpas
;
413 static int hf_pfcp_cp_function_features_o5_b4_bundl
;
414 static int hf_pfcp_cp_function_features_o5_b3_sset
;
415 static int hf_pfcp_cp_function_features_o5_b2_epfar
;
416 static int hf_pfcp_cp_function_features_o5_b1_ovrl
;
417 static int hf_pfcp_cp_function_features_o5_b0_load
;
419 static int hf_pfcp_usage_information_b3_ube
;
420 static int hf_pfcp_usage_information_b2_uae
;
421 static int hf_pfcp_usage_information_b1_aft
;
422 static int hf_pfcp_usage_information_b0_bef
;
424 static int hf_pfcp_application_instance_id
;
425 static int hf_pfcp_application_instance_id_str
;
426 static int hf_pfcp_flow_dir
;
427 static int hf_pfcp_packet_rate_b0_ulpr
;
428 static int hf_pfcp_packet_rate_b1_dlpr
;
429 static int hf_pfcp_packet_rate_b2_aprc
;
430 static int hf_pfcp_ul_time_unit
;
431 static int hf_pfcp_max_ul_pr
;
432 static int hf_pfcp_dl_time_unit
;
433 static int hf_pfcp_max_dl_pr
;
434 static int hf_pfcp_a_ul_time_unit
;
435 static int hf_pfcp_a_max_ul_pr
;
436 static int hf_pfcp_a_dl_time_unit
;
437 static int hf_pfcp_a_max_dl_pr
;
439 static int hf_pfcp_dl_flow_level_marking_b0_ttc
;
440 static int hf_pfcp_dl_flow_level_marking_b1_sci
;
442 static int hf_pfcp_sci
;
443 static int hf_pfcp_dl_data_notification_delay
;
444 static int hf_pfcp_packet_count
;
445 static int hf_pfcp_dl_data_service_inf_b0_ppi
;
446 static int hf_pfcp_dl_data_service_inf_b1_qfii
;
447 static int hf_pfcp_dl_data_service_inf_b2_dlpsi
;
448 static int hf_pfcp_paging_policy_indication
;
449 static int hf_pfcp_dldatapacketsize
;
451 static int hf_pfcp_pfcpsmreq_flags_b0_drobu
;
452 static int hf_pfcp_pfcpsmreq_flags_b1_sndem
;
453 static int hf_pfcp_pfcpsmreq_flags_b2_qaurr
;
454 static int hf_pfcp_pfcpsmreq_flags_b3_sumpc
;
455 static int hf_pfcp_pfcpsmreq_flags_b4_rumuc
;
456 static int hf_pfcp_pfcpsmreq_flags_b5_deteid
;
457 static int hf_pfcp_pfcpsmreq_flags_b6_hrsbom
;
459 static int hf_pfcp_pfcpsrrsp_flags_b0_drobu
;
461 static int hf_pfcp_pfd_contents_flags_b7_adnp
;
462 static int hf_pfcp_pfd_contents_flags_b6_aurl
;
463 static int hf_pfcp_pfd_contents_flags_b5_afd
;
464 static int hf_pfcp_pfd_contents_flags_b4_dnp
;
465 static int hf_pfcp_pfd_contents_flags_b3_cp
;
466 static int hf_pfcp_pfd_contents_flags_b2_dn
;
467 static int hf_pfcp_pfd_contents_flags_b1_url
;
468 static int hf_pfcp_pfd_contents_flags_b0_fd
;
470 static int hf_pfcp_url_len
;
471 static int hf_pfcp_url
;
472 static int hf_pfcp_dn_len
;
473 static int hf_pfcp_dn
;
474 static int hf_pfcp_cp_len
;
475 static int hf_pfcp_cp
;
476 static int hf_pfcp_dnp_len
;
477 static int hf_pfcp_dnp
;
478 static int hf_pfcp_afd_len
;
479 static int hf_pfcp_aurl_len
;
480 static int hf_pfcp_adnp_len
;
481 static int hf_pfcp_header_type
;
482 static int hf_pfcp_hf_len
;
483 static int hf_pfcp_hf_name
;
484 static int hf_pfcp_hf_val_len
;
485 static int hf_pfcp_hf_val
;
487 static int hf_pfcp_measurement_info_b0_mbqe
;
488 static int hf_pfcp_measurement_info_b1_inam
;
489 static int hf_pfcp_measurement_info_b2_radi
;
490 static int hf_pfcp_measurement_info_b3_istm
;
491 static int hf_pfcp_measurement_info_b4_mnop
;
492 static int hf_pfcp_measurement_info_b5_sspoc
;
493 static int hf_pfcp_measurement_info_b6_aspoc
;
494 static int hf_pfcp_measurement_info_b7_ciam
;
496 static int hf_pfcp_node_report_type_b0_upfr
;
497 static int hf_pfcp_node_report_type_b1_uprr
;
498 static int hf_pfcp_node_report_type_b2_ckdr
;
499 static int hf_pfcp_node_report_type_b3_gpqr
;
500 static int hf_pfcp_node_report_type_b4_purr
;
501 static int hf_pfcp_node_report_type_b5_vsr
;
503 static int hf_pfcp_remote_gtp_u_peer_flags_b0_v6
;
504 static int hf_pfcp_remote_gtp_u_peer_flags_b1_v4
;
505 static int hf_pfcp_remote_gtp_u_peer_flags_b2_di
;
506 static int hf_pfcp_remote_gtp_u_peer_flags_b3_ni
;
507 static int hf_pfcp_remote_gtp_u_peer_flags_b4_rts
;
508 static int hf_pfcp_remote_gtp_u_peer_ipv4
;
509 static int hf_pfcp_remote_gtp_u_peer_ipv6
;
510 static int hf_pfcp_remote_gtp_u_peer_length_di
;
511 static int hf_pfcp_remote_gtp_u_peer_length_ni
;
512 static int hf_pfcp_remote_gtp_u_peer_time_stamp
;
513 static int hf_pfcp_ur_seqn
;
515 static int hf_pfcp_oci_flags_b0_aoci
;
517 static int hf_pfcp_pfcp_assoc_rel_req_b0_sarr
;
518 static int hf_pfcp_pfcp_assoc_rel_req_b1_urss
;
520 static int hf_pfcp_upiri_flags_b0_v4
;
521 static int hf_pfcp_upiri_flags_b1_v6
;
522 static int hf_pfcp_upiri_flg_b6_assosi
;
523 static int hf_pfcp_upiri_flg_b5_assoni
;
524 static int hf_pfcp_upiri_flg_b2b4_teidri
;
525 static int hf_pfcp_upiri_teidri
;
526 static int hf_pfcp_upiri_teid_range
;
527 static int hf_pfcp_upiri_ipv4
;
528 static int hf_pfcp_upiri_ipv6
;
530 static int hf_pfcp_user_plane_inactivity_timer
;
532 static int hf_pfcp_subsequent_volume_quota_b2_dlvol
;
533 static int hf_pfcp_subsequent_volume_quota_b1_ulvol
;
534 static int hf_pfcp_subsequent_volume_quota_b0_tovol
;
535 static int hf_pfcp_subsequent_volume_quota_tovol
;
536 static int hf_pfcp_subsequent_volume_quota_ulvol
;
537 static int hf_pfcp_subsequent_volume_quota_dlvol
;
539 static int hf_pfcp_subsequent_time_quota
;
541 static int hf_pfcp_rqi_flag
;
542 static int hf_pfcp_qfi
;
543 static int hf_pfcp_query_urr_reference
;
544 static int hf_pfcp_additional_usage_reports_information_b14_b0_number_value
;
545 static int hf_pfcp_additional_usage_reports_information_b15_auri
;
546 static int hf_pfcp_traffic_endpoint_id
;
548 static int hf_pfcp_mac_address_flags_b3_udes
;
549 static int hf_pfcp_mac_address_flags_b2_usou
;
550 static int hf_pfcp_mac_address_flags_b1_dest
;
551 static int hf_pfcp_mac_address_flags_b0_sour
;
552 static int hf_pfcp_mac_address_upper_dest_mac_address
;
553 static int hf_pfcp_mac_address_upper_source_mac_address
;
554 static int hf_pfcp_mac_address_dest_mac_address
;
555 static int hf_pfcp_mac_address_source_mac_address
;
557 static int hf_pfcp_c_tag_flags_b2_vid
;
558 static int hf_pfcp_c_tag_flags_b1_dei
;
559 static int hf_pfcp_c_tag_flags_b0_pcp
;
560 static int hf_pfcp_c_tag_cvid
;
561 static int hf_pfcp_c_tag_dei_flag
;
562 static int hf_pfcp_c_tag_pcp_value
;
564 static int hf_pfcp_s_tag_flags_b2_vid
;
565 static int hf_pfcp_s_tag_flags_b1_dei
;
566 static int hf_pfcp_s_tag_flags_b0_pcp
;
567 static int hf_pfcp_s_tag_svid
;
568 static int hf_pfcp_s_tag_dei_flag
;
569 static int hf_pfcp_s_tag_pcp_value
;
571 static int hf_pfcp_ethertype
;
573 static int hf_pfcp_proxying_flags_b1_ins
;
574 static int hf_pfcp_proxying_flags_b0_arp
;
576 static int hf_pfcp_ethertype_filter_id
;
578 static int hf_pfcp_ethertype_filter_properties_flags_b0_bide
;
580 static int hf_pfcp_suggested_buffering_packets_count_packet_count
;
582 static int hf_pfcp_user_id_flags_b6_peif
;
583 static int hf_pfcp_user_id_flags_b5_gpsif
;
584 static int hf_pfcp_user_id_flags_b4_supif
;
585 static int hf_pfcp_user_id_flags_b3_naif
;
586 static int hf_pfcp_user_id_flags_b2_msisdnf
;
587 static int hf_pfcp_user_id_flags_b1_imeif
;
588 static int hf_pfcp_user_id_flags_b0_imsif
;
589 static int hf_pfcp_user_id_length_of_imsi
;
590 static int hf_pfcp_user_id_length_of_imei
;
591 static int hf_pfcp_user_id_imei
;
592 static int hf_pfcp_user_id_length_of_msisdn
;
593 static int hf_pfcp_user_id_length_of_nai
;
594 static int hf_pfcp_user_id_nai
;
595 static int hf_pfcp_user_id_length_of_supi
;
596 static int hf_pfcp_user_id_supi
;
597 static int hf_pfcp_user_id_length_of_gpsi
;
598 static int hf_pfcp_user_id_gpsi
;
599 static int hf_pfcp_user_id_length_of_pei
;
600 static int hf_pfcp_user_id_pei
;
602 static int hf_pfcp_ethernet_pdu_session_information_flags_b0_ethi
;
604 static int hf_pfcp_mac_addresses_detected_number_of_mac_addresses
;
605 static int hf_pfcp_mac_addresses_detected_mac_address
;
606 static int hf_pfcp_mac_addresses_detected_length_of_ctag
;
607 static int hf_pfcp_mac_addresses_detected_length_of_stag
;
609 static int hf_pfcp_mac_addresses_removed_number_of_mac_addresses
;
610 static int hf_pfcp_mac_addresses_removed_mac_address
;
611 static int hf_pfcp_mac_addresses_removed_length_of_ctag
;
612 static int hf_pfcp_mac_addresses_removed_length_of_stag
;
614 static int hf_pfcp_ethernet_inactivity_timer
;
616 static int hf_pfcp_subsequent_event_quota
;
618 static int hf_pfcp_subsequent_event_threshold
;
620 static int hf_pfcp_trace_information_trace_id
;
621 static int hf_pfcp_trace_information_length_trigger_events
;
622 static int hf_pfcp_trace_information_trigger_events
;
623 static int hf_pfcp_trace_information_session_trace_depth
;
624 static int hf_pfcp_trace_information_length_list_interfaces
;
625 static int hf_pfcp_trace_information_list_interfaces
;
626 static int hf_pfcp_trace_information_length_ipaddress
;
627 static int hf_pfcp_trace_information_ipv4
;
628 static int hf_pfcp_trace_information_ipv6
;
630 static int hf_pfcp_framed_route
;
631 static int hf_pfcp_framed_routing
;
632 static int hf_pfcp_framed_ipv6_route
;
634 static int hf_pfcp_event_quota
;
636 static int hf_pfcp_event_threshold
;
638 static int hf_pfcp_time_stamp
;
640 static int hf_pfcp_averaging_window
;
642 static int hf_pfcp_paging_policy_indicator
;
644 static int hf_pfcp_apn_dnn
;
646 static int hf_pfcp_tgpp_interface_type
;
648 static int hf_pfcp_pfcpsrreq_flags_b0_psdbu
;
650 static int hf_pfcp_pfcpaureq_flags_b0_parps
;
652 static int hf_pfcp_activation_time
;
653 static int hf_pfcp_deactivation_time
;
655 static int hf_pfcp_mar_id
;
657 static int hf_pfcp_steering_functionality
;
658 static int hf_pfcp_steering_mode
;
660 static int hf_pfcp_weight
;
661 static int hf_pfcp_priority
;
663 static int hf_pfcp_ue_ip_address_pool_length
;
664 static int hf_pfcp_ue_ip_address_pool_identity
;
666 static int hf_pfcp_alternative_smf_ip_address_flags_ppe
;
667 static int hf_pfcp_alternative_smf_ip_address_ipv4
;
668 static int hf_pfcp_alternative_smf_ip_address_ipv6
;
670 static int hf_pfcp_packet_replication_and_detection_carry_on_information_flags_b3_dcaroni
;
671 static int hf_pfcp_packet_replication_and_detection_carry_on_information_flags_b2_prin6i
;
672 static int hf_pfcp_packet_replication_and_detection_carry_on_information_flags_b1_prin19i
;
673 static int hf_pfcp_packet_replication_and_detection_carry_on_information_flags_b0_priueai
;
675 static int hf_pfcp_validity_time_value
;
676 static int hf_pfcp_validity_time_str
;
678 static int hf_pfcp_number_of_reports
;
680 static int hf_pfcp_pfcpasrsp_flags_flags_b1_uupsi
;
681 static int hf_pfcp_pfcpasrsp_flags_flags_b0_psrei
;
683 static int hf_pfcp_cp_pfcp_entity_ip_address_ipv4
;
684 static int hf_pfcp_cp_pfcp_entity_ip_address_ipv6
;
686 static int hf_pfcp_pfcpsereq_flags_flags_b2_hrsbom
;
687 static int hf_pfcp_pfcpsereq_flags_flags_b1_sumpc
;
688 static int hf_pfcp_pfcpsereq_flags_flags_b0_resti
;
690 static int hf_pfcp_ip_multicast_address_flags_b3_any
;
691 static int hf_pfcp_ip_multicast_address_flags_b2_range
;
692 static int hf_pfcp_ip_multicast_address_start_ipv4
;
693 static int hf_pfcp_ip_multicast_address_start_ipv6
;
694 static int hf_pfcp_ip_multicast_address_end_ipv4
;
695 static int hf_pfcp_ip_multicast_address_end_ipv6
;
697 static int hf_pfcp_source_ip_address_flags_b2_mpl
;
698 static int hf_pfcp_source_ip_address_ipv4
;
699 static int hf_pfcp_source_ip_address_ipv6
;
700 static int hf_pfcp_source_ip_address_mask_prefix_lengt
;
702 static int hf_pfcp_packet_rate_status_flags_b2_apr
;
703 static int hf_pfcp_packet_rate_status_flags_b1_dl
;
704 static int hf_pfcp_packet_rate_status_flags_b0_ul
;
705 static int hf_pfcp_packet_rate_status_ul
;
706 static int hf_pfcp_packet_rate_status_dl
;
707 static int hf_pfcp_packet_rate_status_apr_ul
;
708 static int hf_pfcp_packet_rate_status_apr_dl
;
709 static int hf_pfcp_packet_rate_status_validity_time
;
711 static int hf_pfcp_create_bridge_router_info_flags_b1_rii
;
712 static int hf_pfcp_create_bridge_router_info_flags_b0_bii
;
714 static int hf_pfcp_port_number
;
716 static int hf_pfcp_nw_tt_port_number
;
718 static int hf_pfcp_5gs_user_plane_node_id_flags_b0_bid
;
719 static int hf_pfcp_5gs_user_plane_node_id_value
;
721 static int hf_pfcp_port_management_information
;
723 static int hf_pfcp_requested_clock_drift_control_information_flags_b1_rrcr
;
724 static int hf_pfcp_requested_clock_drift_control_information_flags_b0_rrto
;
726 static int hf_pfcp_time_domain_number_value
;
728 static int hf_pfcp_time_offset_threshold
;
730 static int hf_pfcp_cumulative_rate_ratio_threshold
;
732 static int hf_pfcp_time_offset_measurement
;
734 static int hf_pfcp_cumulative_rate_ratio_measurement
;
736 static int hf_pfcp_srr_id
;
738 static int hf_pfcp_requested_access_availability_control_information_flags_b0_rrca
;
740 static int hf_pfcp_availability_status
;
741 static int hf_pfcp_availability_type
;
743 static int hf_pfcp_mptcp_control_information_flags_b0_tci
;
745 static int hf_pfcp_atsss_ll_control_information_flags_b0_lli
;
747 static int hf_pfcp_pmf_control_information_flags_b2_pqpm
;
748 static int hf_pfcp_pmf_control_information_flags_b1_drtti
;
749 static int hf_pfcp_pmf_control_information_flags_b0_pmfi
;
750 static int hf_pfcp_pmf_control_information_number_of_qfi
;
752 static int hf_pfcp_mptcp_address_information_flags_b1_v6
;
753 static int hf_pfcp_mptcp_address_information_flags_b0_v4
;
754 static int hf_pfcp_mptcp_proxy_type
;
755 static int hf_pfcp_mptcp_proxy_port
;
756 static int hf_pfcp_mptcp_proxy_ip_address_ipv4
;
757 static int hf_pfcp_mptcp_proxy_ip_address_ipv6
;
759 static int hf_pfcp_link_specific_multipath_ip_address_flags_b3_nv6
;
760 static int hf_pfcp_link_specific_multipath_ip_address_flags_b2_nv4
;
761 static int hf_pfcp_link_specific_multipath_ip_address_flags_b1_v6
;
762 static int hf_pfcp_link_specific_multipath_ip_address_flags_b0_v4
;
763 static int hf_pfcp_link_specific_multipath_ip_address_3gpp_ipv4
;
764 static int hf_pfcp_link_specific_multipath_ip_address_3gpp_ipv6
;
765 static int hf_pfcp_link_specific_multipath_ip_address_non3gpp_ipv4
;
766 static int hf_pfcp_link_specific_multipath_ip_address_non3gpp_ipv6
;
768 static int hf_pfcp_pmf_address_information_flags_b2_mac
;
769 static int hf_pfcp_pmf_address_information_flags_b1_v6
;
770 static int hf_pfcp_pmf_address_information_flags_b0_v4
;
771 static int hf_pfcp_pmf_address_ipv4
;
772 static int hf_pfcp_pmf_address_ipv6
;
773 static int hf_pfcp_pmf_port_3gpp
;
774 static int hf_pfcp_pmf_port_non3gpp
;
775 static int hf_pfcp_pmf_mac_address_3gpp
;
776 static int hf_pfcp_pmf_mac_address_non3gpp
;
778 static int hf_pfcp_atsss_ll_information_flags_b0_lli
;
780 static int hf_pfcp_data_network_access_identifier
;
782 static int hf_pfcp_packet_delay_milliseconds
;
784 static int hf_pfcp_qos_report_trigger_flags_b2_ire
;
785 static int hf_pfcp_qos_report_trigger_flags_b1_thr
;
786 static int hf_pfcp_qos_report_trigger_flags_b0_per
;
788 static int hf_pfcp_gtp_u_path_interface_type_flags_b1_n3
;
789 static int hf_pfcp_gtp_u_path_interface_type_flags_b0_n9
;
791 static int hf_pfcp_requested_qos_monitoring_flags_b7_ulpr
;
792 static int hf_pfcp_requested_qos_monitoring_flags_b6_dlpr
;
793 static int hf_pfcp_requested_qos_monitoring_flags_b5_ulci
;
794 static int hf_pfcp_requested_qos_monitoring_flags_b4_dlci
;
795 static int hf_pfcp_requested_qos_monitoring_flags_b3_gtpupm
;
796 static int hf_pfcp_requested_qos_monitoring_flags_b2_rppd
;
797 static int hf_pfcp_requested_qos_monitoring_flags_b1_ulpd
;
798 static int hf_pfcp_requested_qos_monitoring_flags_b0_dlpd
;
800 static int hf_pfcp_reporting_frequency_flags_b2_sesrl
;
801 static int hf_pfcp_reporting_frequency_flags_b1_perio
;
802 static int hf_pfcp_reporting_frequency_flags_b0_evett
;
804 static int hf_pfcp_packet_delay_thresholds_flags_b2_rp
;
805 static int hf_pfcp_packet_delay_thresholds_flags_b1_ul
;
806 static int hf_pfcp_packet_delay_thresholds_flags_b0_dl
;
807 static int hf_pfcp_packet_delay_thresholds_downlink
;
808 static int hf_pfcp_packet_delay_thresholds_uplink
;
809 static int hf_pfcp_packet_delay_thresholds_roundtrip
;
811 static int hf_pfcp_minimum_wait_time_seconds
;
813 static int hf_pfcp_qos_monitoring_measurement_flags_b5_ulci
;
814 static int hf_pfcp_qos_monitoring_measurement_flags_b4_dlci
;
815 static int hf_pfcp_qos_monitoring_measurement_flags_b3_plmf
;
816 static int hf_pfcp_qos_monitoring_measurement_flags_b2_rppd
;
817 static int hf_pfcp_qos_monitoring_measurement_flags_b1_ulpd
;
818 static int hf_pfcp_qos_monitoring_measurement_flags_b0_dlpd
;
819 static int hf_pfcp_qos_monitoring_measurement_downlink_packet_delay
;
820 static int hf_pfcp_qos_monitoring_measurement_uplink_packet_delay
;
821 static int hf_pfcp_qos_monitoring_measurement_roundtrip
;
822 static int hf_pfcp_qos_monitoring_measurement_downlink_congestion_information
;
823 static int hf_pfcp_qos_monitoring_measurement_uplink_congestion_information
;
824 static int hf_pfcp_qos_monitoring_measurement_downlink_packet_rate
;
825 static int hf_pfcp_qos_monitoring_measurement_uplink_packet_rate
;
827 static int hf_pfcp_mt_edt_control_information_flags_b0_rdsi
;
829 static int hf_pfcp_dl_data_packets_size
;
831 static int hf_pfcp_qer_control_indications_o5_b0_rcsr
;
833 static int hf_pfcp_nf_instance_id
;
835 static int hf_pfcp_s_nssai_sst
;
836 static int hf_pfcp_s_nssai_sd
;
838 static int hf_pfcp_ip_version_flags_b1_v6
;
839 static int hf_pfcp_ip_version_flags_b0_v4
;
841 static int hf_pfcp_pfcpasreq_flags_flags_b0_uupsi
;
843 static int hf_pfcp_data_status_flags_b1_buff
;
844 static int hf_pfcp_data_status_flags_b0_drop
;
846 static int hf_pfcp_rds_configuration_information_flags_b0_rds
;
848 static int hf_pfcp_multipath_application_indication_flags_b1_mqai
;
849 static int hf_pfcp_multipath_application_indication_flags_b0_mtai
;
851 static int hf_pfcp_user_plane_node_management_information_container
;
853 static int hf_pfcp_number_of_ue_ip_addresses_b1_ipv6
;
854 static int hf_pfcp_number_of_ue_ip_addresses_b0_ipv4
;
855 static int hf_pfcp_number_of_ue_ip_addresses_ipv6
;
856 static int hf_pfcp_number_of_ue_ip_addresses_ipv4
;
858 static int hf_pfcp_validity_timer
;
860 static int hf_pfcp_rattype
;
862 static int hf_pfcp_l2tp_user_authentication_proxy_authen_type_value
;
863 static int hf_pfcp_l2tp_user_authentication_b3_pai
;
864 static int hf_pfcp_l2tp_user_authentication_b2_par
;
865 static int hf_pfcp_l2tp_user_authentication_b1_pac
;
866 static int hf_pfcp_l2tp_user_authentication_b0_pan
;
867 static int hf_pfcp_l2tp_user_authentication_proxy_authen_name_len
;
868 static int hf_pfcp_l2tp_user_authentication_proxy_authen_name
;
869 static int hf_pfcp_l2tp_user_authentication_proxy_authen_challenge_len
;
870 static int hf_pfcp_l2tp_user_authentication_proxy_authen_challenge
;
871 static int hf_pfcp_l2tp_user_authentication_proxy_authen_response_len
;
872 static int hf_pfcp_l2tp_user_authentication_proxy_authen_response
;
873 static int hf_pfcp_l2tp_user_authentication_proxy_authen_id
;
875 static int hf_pfcp_lns_address_ipv4
;
876 static int hf_pfcp_lns_address_ipv6
;
878 static int hf_pfcp_tunnel_preference_value
;
880 static int hf_pfcp_calling_number_value
;
881 static int hf_pfcp_called_number_value
;
883 static int hf_pfcp_l2tp_session_indications_o5_b2_rensa
;
884 static int hf_pfcp_l2tp_session_indications_o5_b1_redsa
;
885 static int hf_pfcp_l2tp_session_indications_o5_b0_reuia
;
887 static int hf_pfcp_maximum_receive_unit
;
889 static int hf_pfcp_thresholds_flags_b1_plr
;
890 static int hf_pfcp_thresholds_flags_b0_rtt
;
891 static int hf_pfcp_thresholds_rtt
;
892 static int hf_pfcp_thresholds_plr
;
894 static int hf_pfcp_l2tp_steering_mode_indications_o5_b1_ueai
;
895 static int hf_pfcp_l2tp_steering_mode_indications_o5_b0_albi
;
897 static int hf_pfcp_group_id
;
899 static int hf_pfcp_cp_ip_address_ipv4
;
900 static int hf_pfcp_cp_ip_address_ipv6
;
902 static int hf_pfcp_ip_address_and_port_number_replacement_flag_b0_v4
;
903 static int hf_pfcp_ip_address_and_port_number_replacement_flag_b1_v6
;
904 static int hf_pfcp_ip_address_and_port_number_replacement_flag_b2_dpn
;
905 static int hf_pfcp_ip_address_and_port_number_replacement_flag_b3_sipv4
;
906 static int hf_pfcp_ip_address_and_port_number_replacement_flag_b4_sipv6
;
907 static int hf_pfcp_ip_address_and_port_number_replacement_flag_b5_spn
;
908 static int hf_pfcp_ip_address_and_port_number_replacement_flag_b6_umn6rs
;
909 static int hf_pfcp_ip_address_and_port_number_replacement_destination_ipv4
;
910 static int hf_pfcp_ip_address_and_port_number_replacement_destination_ipv6
;
911 static int hf_pfcp_ip_address_and_port_number_replacement_destination_port
;
912 static int hf_pfcp_ip_address_and_port_number_replacement_source_ipv4
;
913 static int hf_pfcp_ip_address_and_port_number_replacement_source_ipv6
;
914 static int hf_pfcp_ip_address_and_port_number_replacement_source_port
;
916 static int hf_pfcp_dns_query_filter_pattern_len
;
917 static int hf_pfcp_dns_query_filter_pattern
;
919 static int hf_pfcp_event_notification_uri
;
921 static int hf_pfcp_notification_correlation_id
;
923 static int hf_pfcp_reporting_flags_o5_b0_dupl
;
925 static int hf_pfcp_mbs_session_identifier_flag_b0_tmgi
;
926 static int hf_pfcp_mbs_session_identifier_flag_b1_ssmi
;
927 static int hf_pfcp_mbs_session_identifier_flag_b2_nidi
;
928 static int hf_pfcp_mbs_session_identifier_tmgi
;
929 static int hf_pfcp_mbs_session_identifier_nidi
;
930 static int hf_pfcp_mbs_session_identifier_source_address_type
;
931 static int hf_pfcp_mbs_session_identifier_source_address_length
;
932 static int hf_pfcp_mbs_session_identifier_source_address_ipv4
;
933 static int hf_pfcp_mbs_session_identifier_source_address_ipv6
;
935 static int hf_pfcp_multicast_transport_information_endpoint_identifier
;
936 static int hf_pfcp_multicast_transport_information_distribution_address_type
;
937 static int hf_pfcp_multicast_transport_information_distribution_address_length
;
938 static int hf_pfcp_multicast_transport_information_distribution_address_ipv4
;
939 static int hf_pfcp_multicast_transport_information_distribution_address_ipv6
;
940 static int hf_pfcp_multicast_transport_information_source_address_type
;
941 static int hf_pfcp_multicast_transport_information_source_address_length
;
942 static int hf_pfcp_multicast_transport_information_source_address_ipv4
;
943 static int hf_pfcp_multicast_transport_information_source_address_ipv6
;
945 static int hf_pfcp_mbsn4mbreq_flags_o5_b2_mbs_resti
;
946 static int hf_pfcp_mbsn4mbreq_flags_o5_b1_jmbssm
;
947 static int hf_pfcp_mbsn4mbreq_flags_o5_b0_pllssm
;
949 static int hf_pfcp_local_ingress_tunnel_flags_b2_ch
;
950 static int hf_pfcp_local_ingress_tunnel_flags_b1_v6
;
951 static int hf_pfcp_local_ingress_tunnel_flags_b0_v4
;
952 static int hf_pfcp_local_ingress_tunnel_udp_port
;
953 static int hf_pfcp_local_ingress_tunnel_ipv4
;
954 static int hf_pfcp_local_ingress_tunnel_ipv6
;
956 static int hf_pfcp_mbs_unicast_parameters_id
;
958 static int hf_pfcp_mbsn4resp_flags_o5_b2_n19dtr
;
959 static int hf_pfcp_mbsn4resp_flags_o5_b1_jmti
;
960 static int hf_pfcp_mbsn4resp_flags_o5_b0_nn19dt
;
962 static int hf_pfcp_tunnel_password_value
;
964 static int hf_pfcp_area_session_id_value
;
966 static int hf_pfcp_dscp_to_ppi_mapping_info_ppi_value
;
967 static int hf_pfcp_dscp_to_ppi_mapping_info_dscp_value
;
969 static int hf_pfcp_pfcpsdrsp_flags_b0_puru
;
971 static int hf_pfcp_qer_indications_flags_b3_pdusm
;
972 static int hf_pfcp_qer_indications_flags_b2_eml4s
;
973 static int hf_pfcp_qer_indications_flags_b1_edbmi
;
974 static int hf_pfcp_qer_indications_flags_b0_iqfis
;
976 static int hf_pfcp_configured_time_domain_flags_b0_ctdi
;
978 static int hf_pfcp_metadata
;
979 static int hf_pfcp_metadata_binary_metadata
;
981 static int hf_pfcp_traffic_parameter_threshold_flags_b0_dl
;
982 static int hf_pfcp_traffic_parameter_threshold_downlink_n6_jitter_threshold
;
984 static int hf_pfcp_dl_periodicity_value
;
986 static int hf_pfcp_n6_jitter_measurement_flags_b0_dl
;
987 static int hf_pfcp_n6_jitter_measurement_dl_periodicity
;
988 static int hf_pfcp_n6_jitter_measurement_lower_dl_jitter_measurement
;
989 static int hf_pfcp_n6_jitter_measurement_higher_dl_jitter_measurement
;
992 static int hf_pfcp_traffic_parameter_measurement_indication_flags_b2_n6jmi
;
993 static int hf_pfcp_traffic_parameter_measurement_indication_flags_b1_dlpmi
;
994 static int hf_pfcp_traffic_parameter_measurement_indication_flags_b0_ulpmi
;
996 static int hf_pfcp_ul_periodicity_value
;
998 static int hf_pfcp_mpquic_control_information_flags_b0_cupd
;
1000 static int hf_pfcp_mpquic_address_information_flags_b1_v6
;
1001 static int hf_pfcp_mpquic_address_information_flags_b0_v4
;
1002 static int hf_pfcp_mpquic_address_information_type
;
1003 static int hf_pfcp_mpquic_address_information_port
;
1004 static int hf_pfcp_mpquic_address_information_address_ipv4
;
1005 static int hf_pfcp_mpquic_address_information_address_ipv6
;
1007 static int hf_pfcp_transport_mode_value
;
1009 static int hf_pfcp_protocol_description_flags_b2_srtp
;
1010 static int hf_pfcp_protocol_description_flags_b1_rtp
;
1011 static int hf_pfcp_protocol_description_flags_b0_h264
;
1013 static int hf_pfcp_reporting_suggestion_info_reporting_urgency_value
;
1014 static int hf_pfcp_reporting_suggestion_info_reporting_time_info
;
1016 static int hf_pfcp_tl_container
;
1018 static int hf_pfcp_measurement_indication_flags_b0_dqfi
;
1020 static int hf_pfcp_hplmn_s_nssai_sst
;
1021 static int hf_pfcp_hplmn_s_nssai_sd
;
1023 static int hf_pfcp_media_transport_protocol
;
1025 static int hf_pfcp_rtp_header_extension_type
;
1027 static int hf_pfcp_rtp_header_extension_id
;
1029 static int hf_pfcp_rtp_payload_type
;
1031 static int hf_pfcp_rtp_payload_format
;
1033 static int hf_pfcp_extended_dl_buffering_notification_policy_flags_b0_edbn
;
1035 static int hf_pfcp_mt_sdt_control_information_flags_b0_rdsi
;
1037 static int hf_pfcp_reporting_thresholds_flags_b3_uldr
;
1038 static int hf_pfcp_reporting_thresholds_flags_b2_dldr
;
1039 static int hf_pfcp_reporting_thresholds_flags_b1_ulci
;
1040 static int hf_pfcp_reporting_thresholds_flags_b0_dlci
;
1041 static int hf_pfcp_reporting_thresholds_dl_congestion_information_threshold
;
1042 static int hf_pfcp_reporting_thresholds_ul_congestion_information_threshold
;
1043 static int hf_pfcp_reporting_thresholds_dl_data_rate_threshold
;
1044 static int hf_pfcp_reporting_thresholds_ul_data_rate_threshold
;
1046 static int hf_pfcp_rtp_header_extension_additional_information_flags_b1_pssai
;
1047 static int hf_pfcp_rtp_header_extension_additional_information_flags_b0_fi
;
1048 static int hf_pfcp_rtp_header_extension_additional_information_pssa
;
1049 static int hf_pfcp_rtp_header_extension_additional_information_format
;
1051 static int hf_pfcp_mapped_n6_ip_address_b0_chv4
;
1052 static int hf_pfcp_mapped_n6_ip_address_b1_v4
;
1053 static int hf_pfcp_mapped_n6_ip_address_ipv4
;
1055 static int hf_pfcp_n6_routing_information_flag_b0_sipv4
;
1056 static int hf_pfcp_n6_routing_information_flag_b1_sipv6
;
1057 static int hf_pfcp_n6_routing_information_flag_b2_spo
;
1058 static int hf_pfcp_n6_routing_information_flag_b3_dipv4
;
1059 static int hf_pfcp_n6_routing_information_flag_b4_dipv6
;
1060 static int hf_pfcp_n6_routing_information_flag_b5_dpo
;
1061 static int hf_pfcp_n6_routing_information_source_ipv4
;
1062 static int hf_pfcp_n6_routing_information_source_ipv6
;
1063 static int hf_pfcp_n6_routing_information_source_port
;
1064 static int hf_pfcp_n6_routing_information_destination_ipv4
;
1065 static int hf_pfcp_n6_routing_information_destination_ipv6
;
1066 static int hf_pfcp_n6_routing_information_destination_port
;
1068 /* Enterprise IEs */
1070 static int hf_pfcp_bbf_up_function_features_o7_b7_nat_up
;
1071 static int hf_pfcp_bbf_up_function_features_o7_b6_nat_cp
;
1072 static int hf_pfcp_bbf_up_function_features_o7_b5_iptv
;
1073 static int hf_pfcp_bbf_up_function_features_o7_b4_lcp_keepalive_offload
;
1074 static int hf_pfcp_bbf_up_function_features_o7_b3_lns
;
1075 static int hf_pfcp_bbf_up_function_features_o7_b2_lac
;
1076 static int hf_pfcp_bbf_up_function_features_o7_b1_ipoe
;
1077 static int hf_pfcp_bbf_up_function_features_o7_b0_pppoe
;
1079 static int hf_pfcp_bbf_logical_port_id
;
1080 static int hf_pfcp_bbf_logical_port_id_str
;
1083 static int hf_pfcp_bbf_outer_hdr_creation_desc_spare
;
1084 static int hf_pfcp_bbf_outer_hdr_creation_desc_o7_b4_ppp
;
1085 static int hf_pfcp_bbf_outer_hdr_creation_desc_o7_b3_l2tp
;
1086 static int hf_pfcp_bbf_outer_hdr_creation_desc_o7_b2_traffic_endpoint
;
1087 static int hf_pfcp_bbf_outer_hdr_creation_desc_o7_b1_crp_nsh
;
1088 static int hf_pfcp_bbf_outer_hdr_creation_tunnel_id
;
1089 static int hf_pfcp_bbf_outer_hdr_creation_session_id
;
1091 static int hf_pfcp_bbf_out_hdr_desc
;
1093 static int hf_pfcp_bbf_pppoe_session_id
;
1095 static int hf_pfcp_bbf_ppp_protocol_flags
;
1096 static int hf_pfcp_bbf_ppp_protocol_b2_control
;
1097 static int hf_pfcp_bbf_ppp_protocol_b1_data
;
1098 static int hf_pfcp_bbf_ppp_protocol_b0_specific
;
1099 static int hf_pfcp_bbf_ppp_protocol
;
1101 static int hf_pfcp_bbf_verification_timer_interval
;
1102 static int hf_pfcp_bbf_verification_timer_count
;
1104 static int hf_pfcp_bbf_ppp_lcp_magic_number_tx
;
1105 static int hf_pfcp_bbf_ppp_lcp_magic_number_rx
;
1107 static int hf_pfcp_bbf_mtu
;
1109 static int hf_pfcp_bbf_l2tp_endp_flags
;
1110 static int hf_pfcp_bbf_l2tp_endp_flags_b2_ch
;
1111 static int hf_pfcp_bbf_l2tp_endp_flags_b1_v6
;
1112 static int hf_pfcp_bbf_l2tp_endp_flags_b0_v4
;
1113 static int hf_pfcp_bbf_l2tp_endp_id_tunnel_id
;
1114 static int hf_pfcp_bbf_l2tp_endp_id_ipv4
;
1115 static int hf_pfcp_bbf_l2tp_endp_id_ipv6
;
1117 static int hf_pfcp_bbf_l2tp_session_id
;
1119 static int hf_pfcp_bbf_l2tp_type_flags
;
1120 static int hf_pfcp_bbf_l2tp_type_flags_b0_t
;
1122 static int hf_pfcp_bbf_multicast_flags_o7_b1_routeralertoff
;
1123 static int hf_pfcp_bbf_multicast_flags_o7_b0_fastleave
;
1125 static int hf_pfcp_bbf_multicast_query_param_robustness
;
1126 static int hf_pfcp_bbf_multicast_query_param_query_interval
;
1127 static int hf_pfcp_bbf_multicast_query_param_query_response_interval
;
1128 static int hf_pfcp_bbf_multicast_query_param_group_query_interval
;
1130 static int hf_pfcp_bbf_multicast_group_limit_max_joins
;
1132 static int hf_pfcp_bbf_apply_action_flags_b0_nat
;
1134 static int hf_pfcp_bbf_nat_external_port_range_start
;
1135 static int hf_pfcp_bbf_nat_external_port_range_end
;
1137 static int hf_pfcp_bbf_nat_port_forward
;
1138 static int hf_pfcp_bbf_nat_port_forward_inside_ip
;
1139 static int hf_pfcp_bbf_nat_port_forward_inside_port
;
1140 static int hf_pfcp_bbf_nat_port_forward_outside_port
;
1141 static int hf_pfcp_bbf_nat_port_forward_protocol
;
1143 static int hf_pfcp_bbf_reporting_trigger
;
1145 static int hf_pfcp_bbf_dynamic_nat_block_port_range_start_port
;
1146 static int hf_pfcp_bbf_dynamic_nat_block_port_range_end_port
;
1148 static int hf_pfcp_bbf_event_time_stamp
;
1150 static int hf_pfcp_bbf_direction
= -1;
1151 static int hf_pfcp_bbf_family
= -1;
1152 static int hf_pfcp_bbf_sgrp_identifier
= -1;
1153 static int hf_pfcp_bbf_sgrp_state
= -1;
1154 static int hf_pfcp_bbf_sgrp_flags
= -1;
1155 static int hf_pfcp_bbf_sgrp_flags_b0_ras
= -1;
1156 static int hf_pfcp_bbf_sgrp_flags_b1_psa
= -1;
1157 static int hf_pfcp_bbf_operational_condition
= -1;
1158 static int hf_pfcp_bbf_ipv4_prefix
= -1;
1159 static int hf_pfcp_bbf_ipv4_prefix_length
= -1;
1160 static int hf_pfcp_bbf_ipv6_prefix
= -1;
1161 static int hf_pfcp_bbf_ipv6_prefix_length
= -1;
1162 static int hf_pfcp_bbf_prefix_tag_usage
= -1;
1163 static int hf_pfcp_bbf_prefix_tag
= -1;
1164 static int hf_pfcp_bbf_error_code
= -1;
1165 static int hf_pfcp_bbf_error_message
= -1;
1166 static int hf_pfcp_bbf_maximum_acl_chain_length
= -1;
1167 static int hf_pfcp_bbf_forwarding_capability
= -1;
1168 static int hf_pfcp_bbf_connectivity_status
= -1;
1169 static int hf_pfcp_bbf_vendor_specific_node_report_type
= -1;
1170 static int hf_pfcp_bbf_vendor_specific_node_report_type_b0_lpr
= -1;
1171 static int hf_pfcp_bbf_vendor_specific_node_report_type_b1_sgr
= -1;
1172 static int hf_pfcp_bbf_vendor_specific_node_report_type_b2_nir
= -1;
1173 static int hf_pfcp_bbf_ctag_range_start
= -1;
1174 static int hf_pfcp_bbf_ctag_range_end
= -1;
1175 static int hf_pfcp_bbf_stag_range_start
= -1;
1176 static int hf_pfcp_bbf_stag_range_end
= -1;
1179 static int hf_pfcp_enterprise_travelping_packet_measurement
;
1180 static int hf_pfcp_enterprise_travelping_packet_measurement_b2_dlnop
;
1181 static int hf_pfcp_enterprise_travelping_packet_measurement_b1_ulnop
;
1182 static int hf_pfcp_enterprise_travelping_packet_measurement_b0_tonop
;
1183 static int hf_pfcp_travelping_pkt_meas_tonop
;
1184 static int hf_pfcp_travelping_pkt_meas_ulnop
;
1185 static int hf_pfcp_travelping_pkt_meas_dlnop
;
1187 static int hf_pfcp_travelping_build_id
;
1188 static int hf_pfcp_travelping_build_id_str
;
1189 static int hf_pfcp_travelping_now
;
1190 static int hf_pfcp_travelping_error_message
;
1191 static int hf_pfcp_travelping_error_message_str
;
1192 static int hf_pfcp_travelping_file_name
;
1193 static int hf_pfcp_travelping_file_name_str
;
1194 static int hf_pfcp_travelping_line_number
;
1195 static int hf_pfcp_travelping_ipfix_policy
;
1196 static int hf_pfcp_travelping_ipfix_policy_str
;
1197 static int hf_pfcp_travelping_trace_parent
;
1198 static int hf_pfcp_travelping_trace_parent_str
;
1199 static int hf_pfcp_travelping_trace_state
;
1200 static int hf_pfcp_travelping_trace_state_str
;
1204 static int hf_pfcp_nokia_sap_template
;
1205 static int hf_pfcp_nokia_group_iface_template
;
1206 static int hf_pfcp_nokia_session_state_id
;
1207 static int hf_pfcp_nokia_detailed_stats_key
;
1208 static int hf_pfcp_nokia_detailed_stats_key_direction
;
1209 static int hf_pfcp_nokia_detailed_stats_key_object_id
;
1210 static int hf_pfcp_nokia_detailed_stats_key_stat_mode
;
1211 static int hf_pfcp_nokia_detailed_stats_key_type
;
1212 static int hf_pfcp_nokia_detailed_stats_bitmap_item
;
1213 static int hf_pfcp_nokia_detailed_stats_octets
;
1214 static int hf_pfcp_nokia_detailed_error
;
1215 static int hf_pfcp_nokia_qos_override
;
1216 static int hf_pfcp_nokia_measurement_info
;
1217 static int hf_pfcp_nokia_measurement_info_b0_det
;
1218 static int hf_pfcp_nokia_pfcpsmreq_flags
;
1219 static int hf_pfcp_nokia_pfcpsmreq_flags_b0_abs
;
1220 static int hf_pfcp_nokia_pfcpsmreq_flags_b1_audit
;
1221 static int hf_pfcp_nokia_up_function_features_bulk_audit
;
1222 static int hf_pfcp_nokia_up_function_features_sssg
;
1223 static int hf_pfcp_nokia_filter_override_type
;
1224 static int hf_pfcp_nokia_filter_override_name
;
1225 static int hf_pfcp_nokia_intermediate_destination
;
1226 static int hf_pfcp_nokia_nat_isa_members
;
1227 static int hf_pfcp_nokia_pfcphb_flags
;
1228 static int hf_pfcp_nokia_pfcphb_flags_b0_aud_r
;
1229 static int hf_pfcp_nokia_pfcphb_flags_b1_aud_s
;
1230 static int hf_pfcp_nokia_pfcphb_flags_b2_aud_e
;
1231 static int hf_pfcp_nokia_l2tp_lcp_request
;
1232 static int hf_pfcp_nokia_l2tp_auth_type
;
1233 static int hf_pfcp_nokia_l2tp_auth_name
;
1234 static int hf_pfcp_nokia_l2tp_auth_id
;
1235 static int hf_pfcp_nokia_l2tp_auth_challenge
;
1236 static int hf_pfcp_nokia_l2tp_auth_response
;
1237 static int hf_pfcp_nokia_l2tp_tunnel_endpoint_ipv4_address
;
1238 static int hf_pfcp_nokia_l2tp_tunnel_endpoint_ipv6_address
;
1239 static int hf_pfcp_nokia_l2tp_client_auth_id
;
1240 static int hf_pfcp_nokia_l2tp_server_auth_id
;
1241 static int hf_pfcp_nokia_l2tp_password
;
1242 static int hf_pfcp_nokia_l2tp_assignment_id
;
1243 static int hf_pfcp_nokia_l2tp_private_group_id
;
1244 static int hf_pfcp_nokia_l2tp_tunnel_params_flags
;
1245 static int hf_pfcp_nokia_l2tp_params_flags_b31_hello_interval
;
1246 static int hf_pfcp_nokia_l2tp_params_flags_b30_idle_timeout
;
1247 static int hf_pfcp_nokia_l2tp_params_flags_b29_session_limit
;
1248 static int hf_pfcp_nokia_l2tp_params_flags_b28_preference
;
1249 static int hf_pfcp_nokia_l2tp_params_flags_b27_df_bit
;
1250 static int hf_pfcp_nokia_l2tp_params_flags_b26_challenge
;
1251 static int hf_pfcp_nokia_l2tp_params_flags_b25_avp_hiding
;
1252 static int hf_pfcp_nokia_l2tp_params_flags_b24_algorithm
;
1253 static int hf_pfcp_nokia_l2tp_params_flags_b19_rx_window_size
;
1254 static int hf_pfcp_nokia_l2tp_params_flags_b18_max_retries_not_estab
;
1255 static int hf_pfcp_nokia_l2tp_params_flags_b17_max_retries_estab
;
1256 static int hf_pfcp_nokia_l2tp_params_flags_b16_destruct_timeout
;
1257 static int hf_pfcp_nokia_l2tp_params_hello_interval
;
1258 static int hf_pfcp_nokia_l2tp_params_idle_timeout
;
1259 static int hf_pfcp_nokia_l2tp_params_session_limit
;
1260 static int hf_pfcp_nokia_l2tp_params_preference
;
1261 static int hf_pfcp_nokia_l2tp_params_df_bit
;
1262 static int hf_pfcp_nokia_l2tp_params_challenge
;
1263 static int hf_pfcp_nokia_l2tp_params_avp_hiding
;
1264 static int hf_pfcp_nokia_l2tp_params_algorithm
;
1265 static int hf_pfcp_nokia_l2tp_params_rx_window_size
;
1266 static int hf_pfcp_nokia_l2tp_params_max_retries_not_estab
;
1267 static int hf_pfcp_nokia_l2tp_params_max_retries_estab
;
1268 static int hf_pfcp_nokia_l2tp_params_destruct_timeout
;
1269 static int hf_pfcp_nokia_l2tp_local_tunnel_id
;
1270 static int hf_pfcp_nokia_l2tp_remote_tunnel_id
;
1271 static int hf_pfcp_nokia_l2tp_local_session_id
;
1272 static int hf_pfcp_nokia_l2tp_remote_session_id
;
1273 static int hf_pfcp_nokia_l2tp_call_serial_num
;
1274 static int hf_pfcp_nokia_snat_inside_ipv4_address
;
1275 static int hf_pfcp_nokia_access_line_circuit_id
;
1276 static int hf_pfcp_nokia_access_line_remote_id
;
1277 static int hf_pfcp_nokia_access_line_params_flags
;
1278 static int hf_pfcp_nokia_access_line_params_flags_b24_act_up
;
1279 static int hf_pfcp_nokia_access_line_params_flags_b25_act_down
;
1280 static int hf_pfcp_nokia_access_line_params_flags_b26_min_up
;
1281 static int hf_pfcp_nokia_access_line_params_flags_b27_min_down
;
1282 static int hf_pfcp_nokia_access_line_params_flags_b28_att_up
;
1283 static int hf_pfcp_nokia_access_line_params_flags_b29_att_down
;
1284 static int hf_pfcp_nokia_access_line_params_flags_b30_max_up
;
1285 static int hf_pfcp_nokia_access_line_params_flags_b31_max_down
;
1286 static int hf_pfcp_nokia_access_line_params_flags_b16_min_up_lp
;
1287 static int hf_pfcp_nokia_access_line_params_flags_b17_min_down_lp
;
1288 static int hf_pfcp_nokia_access_line_params_flags_b18_max_inter_delay_up
;
1289 static int hf_pfcp_nokia_access_line_params_flags_b19_act_inter_delay_up
;
1290 static int hf_pfcp_nokia_access_line_params_flags_b20_max_inter_delay_down
;
1291 static int hf_pfcp_nokia_access_line_params_flags_b21_act_inter_delay_down
;
1292 static int hf_pfcp_nokia_access_line_params_flags_b22_access_loop_encap
;
1293 static int hf_pfcp_nokia_access_line_params_flags_b23_iw_session
;
1294 static int hf_pfcp_nokia_access_line_params_act_up
;
1295 static int hf_pfcp_nokia_access_line_params_act_down
;
1296 static int hf_pfcp_nokia_access_line_params_min_up
;
1297 static int hf_pfcp_nokia_access_line_params_min_down
;
1298 static int hf_pfcp_nokia_access_line_params_att_up
;
1299 static int hf_pfcp_nokia_access_line_params_att_down
;
1300 static int hf_pfcp_nokia_access_line_params_max_up
;
1301 static int hf_pfcp_nokia_access_line_params_max_down
;
1302 static int hf_pfcp_nokia_access_line_params_min_up_lp
;
1303 static int hf_pfcp_nokia_access_line_params_min_down_lp
;
1304 static int hf_pfcp_nokia_access_line_params_max_inter_delay_up
;
1305 static int hf_pfcp_nokia_access_line_params_act_inter_delay_up
;
1306 static int hf_pfcp_nokia_access_line_params_max_inter_delay_down
;
1307 static int hf_pfcp_nokia_access_line_params_act_inter_delay_down
;
1308 static int hf_pfcp_nokia_access_line_params_access_loop_encap
;
1309 static int hf_pfcp_nokia_acct_session_id
;
1310 static int hf_pfcp_nokia_fsg_template_name
;
1311 static int hf_pfcp_nokia_up_profile
;
1312 static int hf_pfcp_nokia_default_qos_id
;
1313 static int hf_pfcp_nokia_serving_node_id_flags
;
1314 static int hf_pfcp_nokia_serving_node_id_flg_b2_uuid
;
1315 static int hf_pfcp_nokia_serving_node_id_flg_b1_v6
;
1316 static int hf_pfcp_nokia_serving_node_id_flg_b0_v4
;
1317 static int hf_pfcp_nokia_serving_node_id_ipv4
;
1318 static int hf_pfcp_nokia_serving_node_id_ipv6
;
1319 static int hf_pfcp_nokia_serving_node_id_uuid
;
1320 static int hf_pfcp_nokia_pcc_rule_name
;
1321 static int hf_pfcp_nokia_calltrace_profile
;
1322 static int hf_pfcp_nokia_custom_charging_group
;
1325 static int ett_pfcp
;
1326 static int ett_pfcp_flags
;
1327 static int ett_pfcp_ie
;
1328 static int ett_pfcp_unknown_enterprise_ie
;
1329 static int ett_pfcp_grouped_ie
;
1330 static int ett_pfcp_reporting_triggers
;
1331 static int ett_pfcp_up_function_features
;
1332 static int ett_pfcp_report_trigger
;
1333 static int ett_pfcp_flow_desc
;
1334 static int ett_pfcp_tos
;
1335 static int ett_pfcp_spi
;
1336 static int ett_pfcp_flow_label
;
1337 static int ett_pfcp_sdf_filter_id
;
1338 static int ett_pfcp_adf
;
1339 static int ett_pfcp_aurl
;
1340 static int ett_pfcp_adnp
;
1342 static int ett_pfcp_enterprise_travelping_packet_measurement
;
1343 static int ett_pfcp_enterprise_travelping_error_report
;
1344 static int ett_pfcp_enterprise_travelping_created_nat_binding
;
1345 static int ett_pfcp_enterprise_travelping_trace_info
;
1347 static int ett_pfcp_bbf_ppp_protocol_flags
;
1348 static int ett_pfcp_bbf_l2tp_endp_flags
;
1349 static int ett_pfcp_bbf_l2tp_type_flags
;
1350 static int ett_pfcp_bbf_ppp_lcp_connectivity
;
1351 static int ett_pfcp_bbf_l2tp_tunnel
;
1352 static int ett_pfcp_bbf_nat_port_forward_list
;
1353 static int ett_pfcp_bbf_sgrp_flags
;
1354 static int ett_pfcp_bbf_vendor_specific_node_report_type
;
1356 static int ett_pfcp_nokia_detailed_stats_key
;
1357 static int ett_pfcp_nokia_detailed_stats_bitmap
;
1358 static int ett_pfcp_nokia_measurement_info
;
1359 static int ett_pfcp_nokia_pfcpsmreq_flags
;
1360 static int ett_pfcp_nokia_pfcphb_flags
;
1361 static int ett_pfcp_nokia_l2tp_tunnel_params_flags
;
1362 static int ett_pfcp_nokia_access_line_params_flags
;
1363 static int ett_pfcp_nokia_serving_node_id_flags
;
1365 static expert_field ei_pfcp_ie_reserved
;
1366 static expert_field ei_pfcp_ie_data_not_decoded
;
1367 static expert_field ei_pfcp_ie_not_decoded_null
;
1368 static expert_field ei_pfcp_ie_not_decoded_too_large
;
1369 static expert_field ei_pfcp_ie_encoding_error
;
1371 static int pfcp_tap
= -1;
1373 static bool g_pfcp_session
;
1374 static unsigned pref_pair_matching_max_interval_ms
; /* Default: disable */
1376 static uint32_t pfcp_session_count
;
1378 typedef struct pfcp_rule_ids
{
1388 typedef struct pfcp_session_args
{
1389 wmem_list_t
*seid_list
;
1390 wmem_list_t
*ip_list
;
1394 pfcp_rule_ids_t last_rule_ids
;
1395 } pfcp_session_args_t
;
1397 typedef struct _pfcp_hdr
{
1398 uint8_t message
; /* Message type */
1399 uint16_t length
; /* Length of header */
1400 uint64_t seid
; /* Session End-point ID */
1403 /* Relation between frame -> session */
1404 GHashTable
* pfcp_session_table
;
1405 /* Relation between <seid,ip> -> frame */
1406 wmem_map_t
* pfcp_frame_map
;
1409 typedef struct pfcp_info
{
1414 typedef struct _pfcp_sub_dis_t
{
1415 uint8_t message_type
;
1416 pfcp_session_args_t
*args
;
1419 static dissector_table_t pfcp_enterprise_ies_dissector_table
;
1422 dissect_pfcp_ies_common(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int offset
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
);
1424 static const true_false_string pfcp_id_predef_dynamic_tfs
= {
1429 #define PFCP_MSG_RESERVED_0 0
1431 #define PFCP_MSG_HEARTBEAT_REQUEST 1
1432 #define PFCP_MSG_HEARTBEAT_RESPONSE 2
1433 #define PFCP_MSG_PFD_MANAGEMENT_REQUEST 3
1434 #define PFCP_MSG_PFD_MANAGEMENT_RESPONSE 4
1435 #define PFCP_MSG_ASSOCIATION_SETUP_REQUEST 5
1436 #define PFCP_MSG_ASSOCIATION_SETUP_RESPONSE 6
1437 #define PFCP_MSG_ASSOCIATION_UPDATE_REQUEST 7
1438 #define PFCP_MSG_ASSOCIATION_UPDATE_RESPONSE 8
1439 #define PFCP_MSG_ASSOCIATION_RELEASE_REQUEST 9
1440 #define PFCP_MSG_ASSOCIATION_RELEASE_RESPONSE 10
1441 #define PFCP_MSG_VERSION_NOT_SUPPORTED_RESPONSE 11
1442 #define PFCP_MSG_NODE_REPORT_REQEUST 12
1443 #define PFCP_MSG_NODE_REPORT_RERESPONSE 13
1444 #define PFCP_MSG_SESSION_SET_DELETION_REQUEST 14
1445 #define PFCP_MSG_SESSION_SET_DELETION_RESPONSE 15
1446 #define PFCP_MSG_SESSION_SET_MODIFICATION_REQUEST 16
1447 #define PFCP_MSG_SESSION_SET_MODIFICATION_RESPONSE 17
1448 #define PFCP_MSG_SESSION_ESTABLISHMENT_REQUEST 50
1449 #define PFCP_MSG_SESSION_ESTABLISHMENT_RESPONSE 51
1450 #define PFCP_MSG_SESSION_MODIFICATION_REQUEST 52
1451 #define PFCP_MSG_SESSION_MODIFICATION_RESPONSE 53
1452 #define PFCP_MSG_SESSION_DELETION_REQUEST 54
1453 #define PFCP_MSG_SESSION_DELETION_RESPONSE 55
1454 #define PFCP_MSG_SESSION_REPORT_REQUEST 56
1455 #define PFCP_MSG_SESSION_REPORT_RESPONSE 57
1457 static const value_string pfcp_message_type
[] = {
1458 {PFCP_MSG_RESERVED_0
, "Reserved"},
1459 /* PFCP Node related messages */
1461 { PFCP_MSG_HEARTBEAT_REQUEST
, "PFCP Heartbeat Request"},
1462 { PFCP_MSG_HEARTBEAT_RESPONSE
, "PFCP Heartbeat Response"},
1463 { PFCP_MSG_PFD_MANAGEMENT_REQUEST
, "PFCP PFD Management Request"},
1464 { PFCP_MSG_PFD_MANAGEMENT_RESPONSE
, "PFCP PFD Management Response"},
1465 { PFCP_MSG_ASSOCIATION_SETUP_REQUEST
, "PFCP Association Setup Request"},
1466 { PFCP_MSG_ASSOCIATION_SETUP_RESPONSE
, "PFCP Association Setup Response"},
1467 { PFCP_MSG_ASSOCIATION_UPDATE_REQUEST
, "PFCP Association Update Request"},
1468 { PFCP_MSG_ASSOCIATION_UPDATE_RESPONSE
, "PFCP Association Update Response"},
1469 { PFCP_MSG_ASSOCIATION_RELEASE_REQUEST
, "PFCP Association Release Request"},
1470 { PFCP_MSG_ASSOCIATION_RELEASE_RESPONSE
, "PFCP Association Release Response"},
1471 { PFCP_MSG_VERSION_NOT_SUPPORTED_RESPONSE
, "PFCP Version Not Supported Response"},
1472 { PFCP_MSG_NODE_REPORT_REQEUST
, "PFCP Node Report Request"},
1473 { PFCP_MSG_NODE_REPORT_RERESPONSE
, "PFCP Node Report Response"},
1474 { PFCP_MSG_SESSION_SET_DELETION_REQUEST
, "PFCP Session Set Deletion Request"},
1475 { PFCP_MSG_SESSION_SET_DELETION_RESPONSE
, "PFCP Session Set Deletion Response"},
1476 { PFCP_MSG_SESSION_SET_MODIFICATION_REQUEST
, "PFCP Session Set Modification Request"},
1477 { PFCP_MSG_SESSION_SET_MODIFICATION_RESPONSE
, "PFCP Session Set Modification Response"},
1478 //18 to 49 For future use
1479 //PFCP Session related messages
1480 { PFCP_MSG_SESSION_ESTABLISHMENT_REQUEST
, "PFCP Session Establishment Request"},
1481 { PFCP_MSG_SESSION_ESTABLISHMENT_RESPONSE
, "PFCP Session Establishment Response"},
1482 { PFCP_MSG_SESSION_MODIFICATION_REQUEST
, "PFCP Session Modification Request"},
1483 { PFCP_MSG_SESSION_MODIFICATION_RESPONSE
, "PFCP Session Modification Response"},
1484 { PFCP_MSG_SESSION_DELETION_REQUEST
, "PFCP Session Deletion Request"},
1485 { PFCP_MSG_SESSION_DELETION_RESPONSE
, "PFCP Session Deletion Response"},
1486 { PFCP_MSG_SESSION_REPORT_REQUEST
, "PFCP Session Report Request"},
1487 { PFCP_MSG_SESSION_REPORT_RESPONSE
, "PFCP Session Report Response"},
1488 //58 to 99 For future use
1490 //100 to 255 For future use
1493 static value_string_ext pfcp_message_type_ext
= VALUE_STRING_EXT_INIT(pfcp_message_type
);
1495 /* 8.1.2 Information Element Types */
1496 #define PFCP_IE_ID_CREATE_PDR 1
1497 #define PFCP_IE_ID_PDI 2
1498 #define PFCP_IE_CREATE_FAR 3
1499 #define PFCP_IE_FORWARDING_PARAMETERS 4
1500 #define PFCP_IE_DUPLICATING_PARAMETERS 5
1501 #define PFCP_IE_CREATE_URR 6
1502 #define PFCP_IE_CREATE_QER 7
1503 #define PFCP_IE_CREATED_PDR 8
1504 #define PFCP_IE_UPDATE_PDR 9
1505 #define PFCP_IE_UPDATE_FAR 10
1506 #define PFCP_IE_UPD_FORWARDING_PARAM 11
1507 #define PFCP_IE_UPDATE_BAR 12
1508 #define PFCP_IE_UPDATE_URR 13
1509 #define PFCP_IE_UPDATE_QER 14
1510 #define PFCP_IE_REMOVE_PDR 15
1511 #define PFCP_IE_REMOVE_FAR 16
1512 #define PFCP_IE_REMOVE_URR 17
1513 #define PFCP_IE_REMOVE_QER 18
1515 #define PFCP_IE_LOAD_CONTROL_INFORMATION 51
1516 #define PFCP_IE_OVERLOAD_CONTROL_INFORMATION 54
1517 #define PFCP_IE_APPLICATION_IDS_PFDS 58
1518 #define PFCP_IE_PFD_CONTEXT 59
1519 #define PFCP_IE_APPLICATION_DETECTION_INF 68
1520 #define PFCP_IE_QUERY_URR 77
1521 #define PFCP_IE_USAGE_REPORT_SMR 78
1522 #define PFCP_IE_USAGE_REPORT_SDR 79
1523 #define PFCP_IE_USAGE_REPORT_SRR 80
1524 #define PFCP_IE_DOWNLINK_DATA_REPORT 83
1525 #define PFCP_IE_CREATE_BAR 85
1526 #define PFCP_IE_UPDATE_BAR_SMR 86
1527 #define PFCP_IE_REMOVE_BAR 87
1528 #define PFCP_IE_ERROR_INDICATION_REPORT 99
1529 #define PFCP_IE_USER_PLANE_PATH_FAILURE_REPORT 102
1530 #define PFCP_IE_UPDATE_DUPLICATING_PARAMETERS 105
1531 #define PFCP_IE_AGGREGATED_URRS 118
1532 #define PFCP_IE_CREATE_TRAFFIC_ENDPOINT 127
1533 #define PFCP_IE_CREATED_TRAFFIC_ENDPOINT 128
1534 #define PFCP_IE_UPDATE_TRAFFIC_ENDPOINT 129
1535 #define PFCP_IE_REMOVE_TRAFFIC_ENDPOINT 130
1536 #define PFCP_IE_ETHERNET_PACKET_FILTER 132
1537 #define PFCP_IE_ETHERNET_TRAFFIC_INFORMATION 143
1538 #define PFCP_IE_ADDITIONAL_MONITORING_TIME 147
1539 #define PFCP_IE_EVENT_INFORMATION 148
1540 #define PFCP_IE_EVENT_REPORTING 149
1541 #define PFCP_IE_CREATE_MAR 165
1542 #define PFCP_IE_ACCESS_FORWARDING_ACTION_INORMATION_1 166
1543 #define PFCP_IE_ACCESS_FORWARDING_ACTION_INORMATION_2 167
1544 #define PFCP_IE_REMOVE_MAR 168
1545 #define PFCP_IE_UPDATE_MAR 169
1546 #define PFCP_IE_UPDATE_ACCESS_FORWARDING_ACTION_INORMATION_1 175
1547 #define PFCP_IE_UPDATE_ACCESS_FORWARDING_ACTION_INORMATION_2 176
1548 #define PFCP_IE_PFCP_SESSION_RETENTION_INFORMATION_WITHIN_ASSOCIATION_SETUP_REQUEST 183
1549 #define PFCP_IE_USER_PLANE_PATH_RECOVERY_REPORT 187
1550 #define PFCP_IE_IP_MULTICAST_ADDRESSING_INFO 189
1551 #define PFCP_IE_JOIN_IP_MULTICAST_INFORMATION 189
1552 #define PFCP_IE_LEAVE_IP_MULTICAST_INFORMATION 190
1553 #define PFCP_IE_CREATED_BRIDGE_INFO_FOR_TSC 195
1554 #define PFCP_IE_TSC_MANAGEMENT_INFORMATION_WITHIN_PCFP_SESSION_MODIFICATION_REQUEST 199
1555 #define PFCP_IE_TSC_MANAGEMENT_INFORMATION_WITHIN_PCFP_SESSION_MODIFICATION_RESPONSE 200
1556 #define PFCP_IE_TSC_MANAGEMENT_INFORMATION_WITHIN_PCFP_SESSION_REPORT_REQUEST 201
1557 #define PFCP_IE_CLOCK_DRIFT_CONTROL_INFORMATION 203
1558 #define PFCP_IE_CLOCK_DRIFT_REPORT 205
1559 #define PFCP_IE_REMOVE_SRR 211
1560 #define PFCP_IE_CREATE_SRR 212
1561 #define PFCP_IE_UPDATE_SRR 213
1562 #define PFCP_IE_SESSION_REPORT 214
1563 #define PFCP_IE_ACCESS_AVAILABILITY_CONTROL_INFORMATION 216
1564 #define PFCP_IE_ACCESS_AVAILABILITY_REPORT 218
1565 #define PFCP_IE_PROVICE_ATSSS_CONTROL_INFORMATION 220
1566 #define PFCP_IE_ATSSS_CONTROl_PARAMETERS 221
1567 #define PFCP_IE_MPTCP_PARAMETERS 225
1568 #define PFCP_IE_ATSSS_LL_PARAMETERS 226
1569 #define PFCP_IE_PMF_PARAMETERS 227
1570 #define PFCP_IE_UE_IP_ADDRESS_POOL_INFORMATION 233
1571 #define PFCP_IE_GTP_U_PATH_QOS_CONTROL_INFORMATION 238
1572 #define PFCP_IE_GTP_U_PATH_QOS_REPORT 239
1573 #define PFCP_IE_QOS_INFORMATION_IN_GTP_U_PATH_QOS_REPORT 240
1574 #define PFCP_IE_QOS_MONITORING_PER_QOS_FLOW_CONTROL_INFORMATION 242
1575 #define PFCP_IE_QOS_MONITORING_REPORT 247
1576 #define PFCP_IE_PACKET_RATE_STATUS_REPORT_IE_WITHIN_PFCP_SESSION_DELETION_RESPONSE 252
1577 #define PCFP_IE_ETHERNET_CONTEXT_INFORMATION_WITHIN_PFCP_SESSION_MODIFICATION_REQUEST 254
1578 #define PFCP_IE_REDUNDANT_TRANSMISSION_DETECTION_PARAMETERS_IE_IN_PDI 255
1579 #define PFCP_IE_UPDATED_PDR_IE_WITHIN_PFCP_SESSION_MODIFICATION_RESPONSE 256
1580 #define PFCP_IE_PROVIDE_RDS_CONFIGURATION_INFORMATION_IE_WITHIN_PCFP_SESSION_ESTABLISHMENT_REQUEST 261
1581 #define PFCP_IE_QUERY_PACKET_RATE_STATUS_IE_WITHIN_PCFP_SESSION_ESTABLISHMENT_REQUEST 263
1582 #define PFCP_IE_QUERY_PACKET_RATE_STATUS_REPORT_IE_WITHIN_PCFP_SESSION_ESTABLISHMENT_RESPONSE 264
1583 #define PFCP_IE_UE_IP_ADDRESS_USAGE_INFORMATION_IE_WITHIN_PFCP_ASSOCIATION_UPDATE_REQUEST 267
1584 #define PFCP_IE_REDUNDANT_TRANSMISSION_FORWARD_PARAMETERS_IE_IN_FAR 270
1585 #define PFCP_IE_TRANSPORT_DELAY_REPORTING 271
1586 #define PFCP_IE_PARTIAL_FAILURE_INFORMATION_WITHIN_PFCP_SESSION_ESTABLISHMENT_RESPONSE 272
1587 #define PFCP_IE_PARTIAL_FAILURE_INFORMATION_WITHIN_PFCP_SESSION_MODIFICATION_RESPONSE 273
1588 #define PFCP_IE_L2TP_TUNNEL_INFORMATION 276
1589 #define PFCP_IE_L2TP_SESSION_INFORMATION_WITHIN_PFCP_SESSION_ESTABLISHMENT_REQUEST 277
1590 #define PFCP_IE_L2TP_SESSION_INFORMATION_WITHIN_PFCP_SESSION_ESTABLISHMENT_RESPONSE 279
1591 #define PFCP_IE_PFCP_SESSION_CHANGE_INFO 290
1592 #define PFCP_IE_DIRECT_REPORTING_INFORMATION 295
1593 #define PFCP_IE_MBS_SESSION_N4MB_CONTROL_INFORMATION 300
1594 #define PFCP_IE_MBS_MULTICAST_PARAMETERS 301
1595 #define PFCP_IE_ADD_MBS_UNICAST_PARAMETERS_IE_IN_CREATE_FAR 302
1596 #define PFCP_IE_MBS_SESSION_N4MB_INFORMATION 300
1597 #define PFCP_IE_REMOVE_MBS_UNICAST_PARAMETERS_IE_IN_UPDATE_FAR 304
1598 #define PFCP_IE_MBS_SESSION_N4_CONTROl_INFORMATION_IE_WITHIN_PFCP_SESSION_ESTABLISHMENT_REQUEST 310
1599 #define PFCP_IE_MBS_SESSION_N4_CONTROl_INFORMATION_IE_WITHIN_PFCP_SESSION_ESTABLISHMENT_RESPONSE 311
1600 #define PFCP_IE_PEER_UP_REPORT_IE_WITING_PFCP_NODE_REPORT_REQUEST 315
1601 #define PFCP_IE_DSCP_TO_PPI_CONTROL_INFORMATION_IE_WITIN_PCFP_SESSION_ESTABLISHMENT_REQUEST 316
1603 static const value_string pfcp_ie_type
[] = {
1606 { 1, "Create PDR"}, /* Extendable / Table 7.5.2.2-1 */
1607 { 2, "PDI"}, /* Extendable / Table 7.5.2.2-2 */
1608 { 3, "Create FAR"}, /* Extendable / Table 7.5.2.3-1 */
1609 { 4, "Forwarding Parameters"}, /* Extendable / Table 7.5.2.3-2 */
1610 { 5, "Duplicating Parameters"}, /* Extendable / Table 7.5.2.3-3 */
1611 { 6, "Create URR"}, /* Extendable / Table 7.5.2.4-1 */
1612 { 7, "Create QER"}, /* Extendable / Table 7.5.2.5-1 */
1613 { 8, "Created PDR"}, /* Extendable / Table 7.5.3.2-1 */
1614 { 9, "Update PDR" }, /* Extendable / Table 7.5.4.2-1 */
1615 { 10, "Update FAR" }, /* Extendable / Table 7.5.4.3-1 */
1616 { 11, "Update Forwarding Parameters" }, /* Extendable / Table 7.5.4.3-2 */
1617 { 12, "Update BAR (PFCP Session Report Response)" }, /* Extendable / Table 7.5.9.2-1 */
1618 { 13, "Update URR" }, /* Extendable / Table 7.5.4.4 */
1619 { 14, "Update QER" }, /* Extendable / Table 7.5.4.5 */
1620 { 15, "Remove PDR" }, /* Extendable / Table 7.5.4.6 */
1621 { 16, "Remove FAR" }, /* Extendable / Table 7.5.4.7 */
1622 { 17, "Remove URR" }, /* Extendable / Table 7.5.4.8 */
1623 { 18, "Remove QER" }, /* Extendable / Table 7.5.4.9 */
1624 { 19, "Cause" }, /* Fixed / Subclause 8.2.1 */
1625 { 20, "Source Interface" }, /* Extendable / Subclause 8.2.2 */
1626 { 21, "F-TEID" }, /* Extendable / Subclause 8.2.3 */
1627 { 22, "Network Instance" }, /* Variable Length / Subclause 8.2.4 */
1628 { 23, "SDF Filter" }, /* Extendable / Subclause 8.2.5 */
1629 { 24, "Application ID" }, /* Variable Length / Subclause 8.2.6 */
1630 { 25, "Gate Status" }, /* Extendable / Subclause 8.2.7 */
1631 { 26, "MBR" }, /* Extendable / Subclause 8.2.8 */
1632 { 27, "GBR" }, /* Extendable / Subclause 8.2.9 */
1633 { 28, "QER Correlation ID" }, /* Extendable / Subclause 8.2.10 */
1634 { 29, "Precedence" }, /* Extendable / Subclause 8.2.11 */
1635 { 30, "Transport Level Marking" }, /* Extendable / Subclause 8.2.12 */
1636 { 31, "Volume Threshold" }, /* Extendable /Subclause 8.2.13 */
1637 { 32, "Time Threshold" }, /* Extendable /Subclause 8.2.14 */
1638 { 33, "Monitoring Time" }, /* Extendable /Subclause 8.2.15 */
1639 { 34, "Subsequent Volume Threshold" }, /* Extendable /Subclause 8.2.16 */
1640 { 35, "Subsequent Time Threshold" }, /* Extendable /Subclause 8.2.17 */
1641 { 36, "Inactivity Detection Time" }, /* Extendable /Subclause 8.2.18 */
1642 { 37, "Reporting Triggers" }, /* Extendable /Subclause 8.2.19 */
1643 { 38, "Redirect Information" }, /* Extendable /Subclause 8.2.20 */
1644 { 39, "Report Type" }, /* Extendable / Subclause 8.2.21 */
1645 { 40, "Offending IE" }, /* Fixed / Subclause 8.2.22 */
1646 { 41, "Forwarding Policy" }, /* Extendable / Subclause 8.2.23 */
1647 { 42, "Destination Interface" }, /* Extendable / Subclause 8.2.24 */
1648 { 43, "UP Function Features" }, /* Extendable / Subclause 8.2.25 */
1649 { 44, "Apply Action" }, /* Extendable / Subclause 8.2.26 */
1650 { 45, "Downlink Data Service Information" }, /* Extendable / Subclause 8.2.27 */
1651 { 46, "Downlink Data Notification Delay" }, /* Extendable / Subclause 8.2.28 */
1652 { 47, "DL Buffering Duration" }, /* Extendable / Subclause 8.2.29 */
1653 { 48, "DL Buffering Suggested Packet Count" }, /* Variable / Subclause 8.2.30 */
1654 { 49, "PFCPSMReq-Flags" }, /* Extendable / Subclause 8.2.31 */
1655 { 50, "PFCPSRRsp-Flags" }, /* Extendable / Subclause 8.2.32 */
1656 { 51, "Load Control Information" }, /* Extendable / Table 7.5.3.3-1 */
1657 { 52, "Sequence Number" }, /* Fixed Length / Subclause 8.2.33 */
1658 { 53, "Metric" }, /* Fixed Length / Subclause 8.2.34 */
1659 { 54, "Overload Control Information" }, /* Extendable / Table 7.5.3.4-1 */
1660 { 55, "Timer" }, /* Extendable / Subclause 8.2 35 */
1661 { 56, "PDR ID" }, /* Extendable / Subclause 8.2 36 */
1662 { 57, "F-SEID" }, /* Extendable / Subclause 8.2 37 */
1663 { 58, "Application ID's PFDs" }, /* Extendable / Table 7.4.3.1-2 */
1664 { 59, "PFD context" }, /* Extendable / Table 7.4.3.1-3 */
1665 { 60, "Node ID" }, /* Extendable / Subclause 8.2.38 */
1666 { 61, "PFD contents" }, /* Extendable / Subclause 8.2.39 */
1667 { 62, "Measurement Method" }, /* Extendable / Subclause 8.2.40 */
1668 { 63, "Usage Report Trigger" }, /* Extendable / Subclause 8.2.41 */
1669 { 64, "Measurement Period" }, /* Extendable / Subclause 8.2.42 */
1670 { 65, "FQ-CSID" }, /* Extendable / Subclause 8.2.43 */
1671 { 66, "Volume Measurement" }, /* Extendable / Subclause 8.2.44 */
1672 { 67, "Duration Measurement" }, /* Extendable / Subclause 8.2.45 */
1673 { 68, "Application Detection Information" }, /* Extendable / Table 7.5.8.3-2 */
1674 { 69, "Time of First Packet" }, /* Extendable / Subclause 8.2.46 */
1675 { 70, "Time of Last Packet" }, /* Extendable / Subclause 8.2.47 */
1676 { 71, "Quota Holding Time" }, /* Extendable / Subclause 8.2.48 */
1677 { 72, "Dropped DL Traffic Threshold" }, /* Extendable / Subclause 8.2.49 */
1678 { 73, "Volume Quota" }, /* Extendable / Subclause 8.2.50 */
1679 { 74, "Time Quota" }, /* Extendable / Subclause 8.2.51 */
1680 { 75, "Start Time" }, /* Extendable / Subclause 8.2.52 */
1681 { 76, "End Time" }, /* Extendable / Subclause 8.2.53 */
1682 { 77, "Query URR" }, /* Extendable / Table 7.5.4.10-1 */
1683 { 78, "Usage Report (Session Modification Response)" }, /* Extendable / Table 7.5.5.2-1 */
1684 { 79, "Usage Report (Session Deletion Response)" }, /* Extendable / Table 7.5.7.2-1 */
1685 { 80, "Usage Report (Session Report Request)" }, /* Extendable / Table 7.5.8.3-1 */
1686 { 81, "URR ID" }, /* Extendable / Subclause 8.2.54 */
1687 { 82, "Linked URR ID" }, /* Extendable / Subclause 8.2.55 */
1688 { 83, "Downlink Data Report" }, /* Extendable / Table 7.5.8.2-1 */
1689 { 84, "Outer Header Creation" }, /* Extendable / Subclause 8.2.56 */
1690 { 85, "Create BAR" }, /* Extendable / Table 7.5.2.6-1 */
1691 { 86, "Update BAR (Session Modification Request)" }, /* Extendable / Table 7.5.4.11-1 */
1692 { 87, "Remove BAR" }, /* Extendable / Table 7.5.4.12-1 */
1693 { 88, "BAR ID" }, /* Extendable / Subclause 8.2.57 */
1694 { 89, "CP Function Features" }, /* Extendable / Subclause 8.2.58 */
1695 { 90, "Usage Information" }, /* Extendable / Subclause 8.2.59 */
1696 { 91, "Application Instance ID" }, /* Variable Length / Subclause 8.2.60 */
1697 { 92, "Flow Information" }, /* Extendable / Subclause 8.2.61 */
1698 { 93, "UE IP Address" }, /* Extendable / Subclause 8.2.62 */
1699 { 94, "Packet Rate" }, /* Extendable / Subclause 8.2.63 */
1700 { 95, "Outer Header Removal" }, /* Extendable / Subclause 8.2.64 */
1701 { 96, "Recovery Time Stamp" }, /* Extendable / Subclause 8.2.65 */
1702 { 97, "DL Flow Level Marking" }, /* Extendable / Subclause 8.2.66 */
1703 { 98, "Header Enrichment" }, /* Extendable / Subclause 8.2.67 */
1704 { 99, "Error Indication Report" }, /* Extendable / Table 7.5.8.4-1 */
1705 { 100, "Measurement Information" }, /* Extendable / Subclause 8.2.68 */
1706 { 101, "Node Report Type" }, /* Extendable / Subclause 8.2.69 */
1707 { 102, "User Plane Path Failure Report" }, /* Extendable / Table 7.4.5.1.2-1 */
1708 { 103, "Remote GTP-U Peer" }, /* Extendable / Subclause 8.2.70 */
1709 { 104, "UR-SEQN" }, /* Fixed Length / Subclause 8.2.71 */
1710 { 105, "Update Duplicating Parameters" }, /* Extendable / Table 7.5.4.3-3 */
1711 { 106, "Activate Predefined Rules" }, /* Variable Length / Subclause 8.2.72 */
1712 { 107, "Deactivate Predefined Rules" }, /* Variable Length / Subclause 8.2.73 */
1713 { 108, "FAR ID" }, /* Extendable / Subclause 8.2.74 */
1714 { 109, "QER ID" }, /* Extendable / Subclause 8.2.75 */
1715 { 110, "OCI Flags" }, /* Extendable / Subclause 8.2.76 */
1716 { 111, "PFCP Association Release Request" }, /* Extendable / Subclause 8.2.77 */
1717 { 112, "Graceful Release Period" }, /* Extendable / Subclause 8.2.78 */
1718 { 113, "PDN Type" }, /* Fixed Length / Subclause 8.2.79 */
1719 { 114, "Failed Rule ID" }, /* Extendable / Subclause 8.2.80 */
1720 { 115, "Time Quota Mechanism" }, /* Extendable / Subclause 8.2.81 */
1721 { 116, "User Plane IP Resource Information (removed in Rel 16.3)" }, /* Extendable / Subclause 8.2.82 */
1722 { 117, "User Plane Inactivity Timer" }, /* Extendable / Subclause 8.2.83 */
1723 { 118, "Aggregated URRs" }, /* Extendable / Table 7.5.2.4-2 */
1724 { 119, "Multiplier" }, /* Fixed Length / Subclause 8.2.84 */
1725 { 120, "Aggregated URR ID IE" }, /* Fixed Length / Subclause 8.2.85 */
1726 { 121, "Subsequent Volume Quota" }, /* Extendable / Subclause 8.2.86 */
1727 { 122, "Subsequent Time Quota" }, /* Extendable / Subclause 8.2.87 */
1728 { 123, "RQI" }, /* Extendable / Subclause 8.2.88 */
1729 { 124, "QFI" }, /* Extendable / Subclause 8.2.89 */
1730 { 125, "Query URR Reference" }, /* Extendable / Subclause 8.2.90 */
1731 { 126, "Additional Usage Reports Information" }, /* Extendable / Subclause 8.2.91 */
1732 { 127, "Create Traffic Endpoint" }, /* Extendable / Table 7.5.2.7 */
1733 { 128, "Created Traffic Endpoint" }, /* Extendable / Table 7.5.3.5 */
1734 { 129, "Update Traffic Endpoint" }, /* Extendable / Table 7.5.4.13 */
1735 { 130, "Remove Traffic Endpoint" }, /* Extendable / Table 7.5.4.14 */
1736 { 131, "Traffic Endpoint ID" }, /* Extendable / Subclause 8.2.92*/
1737 { 132, "Ethernet Packet Filter"}, /* Extendable / Table 7.5.2.2-3 */
1738 { 133, "MAC address"}, /* Extendable / Subclause 8.2.93 */
1739 { 134, "C-TAG"}, /* Extendable / Subclause 8.2.94 */
1740 { 135, "S-TAG"}, /* Extendable / Subclause 8.2.95 */
1741 { 136, "Ethertype"}, /* Extendable / Subclause 8.2.96 */
1742 { 137, "Proxying"}, /* Extendable / Subclause 8.2.97 */
1743 { 138, "Ethernet Filter ID"}, /* Extendable / Subclause 8.2.98 */
1744 { 139, "Ethernet Filter Properties"}, /* Extendable / Subclause 8.2.99 */
1745 { 140, "Suggested Buffering Packets Count"}, /* Extendable / Subclause 8.2.100 */
1746 { 141, "User ID"}, /* Extendable / Subclause 8.2.101 */
1747 { 142, "Ethernet PDU Session Information"}, /* Extendable / Subclause 8.2.102 */
1748 { 143, "Ethernet Traffic Information"}, /* Extendable / Table 7.5.8.3-3 */
1749 { 144, "MAC Addresses Detected"}, /* Extendable / Subclause 8.2.103 */
1750 { 145, "MAC Addresses Removed"}, /* Extendable / Subclause 8.2.104 */
1751 { 146, "Ethernet Inactivity Timer"}, /* Extendable / Subclause 8.2.105 */
1752 { 147, "Additional Monitoring Time"}, /* Extendable / Table 7.5.2.4-3 */
1753 { 148, "Event Quota"}, /* Extendable / Subclause 8.2.112 */
1754 { 149, "Event Threshold"}, /* Extendable / Subclause 8.2.113 */
1755 { 150, "Subsequent Event Quota"}, /* Extendable / Subclause 8.2.106 */
1756 { 151, "Subsequent Event Threshold"}, /* Extendable / Subclause 8.2.107 */
1757 { 152, "Trace Information"}, /* Extendable / Subclause 8.2.108 */
1758 { 153, "Framed-Route"}, /* Variable Length / Subclause 8.2.109 */
1759 { 154, "Framed-Routing"}, /* Fixed Length / Subclause 8.2.110 */
1760 { 155, "Framed-IPv6-Route"}, /* Variable Length / Subclause 8.2.111 */
1761 { 156, "Time Stamp"}, /* Extendable / Subclause 8.2.114 */
1762 { 157, "Averaging Window"}, /* Extendable / Subclause 8.2.115 */
1763 { 158, "Paging Policy Indicator"}, /* Extendable / Subclause 8.2.116 */
1764 { 159, "APN/DNN"}, /* Variable Length / Subclause 8.2.117 */
1765 { 160, "3GPP Interface Type"}, /* Extendable / Subclause 8.2.118 */
1766 { 161, "PFCPSRReq-Flags"}, /* ExtendableClause 8.2.119 */
1767 { 162, "PFCPAUReq-Flags"}, /* ExtendableClause 8.2.120 */
1768 { 163, "Activation Time"}, /* Extendable Clause 8.2.121 */
1769 { 164, "Deactivation Time"}, /* Extendable Clause 8.2.122 */
1770 { 165, "Create MAR"}, /* Extendable / Table 7.5.2.8-1 */
1771 { 166, "Access Forwarding Action Information 1"}, /* Extendable / Table 7.5.2.8-2 */
1772 { 167, "Access Forwarding Action Information 2"}, /* Extendable / Table 7.5.2.8-3 */
1773 { 168, "Remove MAR"}, /* Extendable / Table 7.5.2.15-1 */
1774 { 169, "Update MAR"}, /* Extendable / Table 7.5.2.16-1 */
1775 { 175, "Update Access Forwarding Action Information 1"}, /* Fixed / Clause 8.2.126 */
1776 { 176, "Update Access Forwarding Action Information 2"}, /* Extendable / Clause 8.2.127 */
1777 { 177, "UE IP address Pool Identity"}, /* Variable Length / Clause 8.2.128 */
1778 { 178, "Alternative SMF IP Address"}, /* Extendable / Clause 8.2.129 */
1779 { 179, "Packet Replication and Detection Carry-On Information"},/* Extendable / Clause 8.2.130 */
1780 { 180, "SMF Set ID"}, /* Extendable / Clause 8.2.131 */
1781 { 181, "Quota Validity Time"}, /* Extendable / Clause 8.2.132 */
1782 { 182, "Number of Reports"}, /* Fixed / Clause 8.2.133 */
1783 { 183, "PFCP Session Retention Information (within PFCP Association Setup Request)"}, /* Extendable / Table 7.4.4.1-2 */
1784 { 184, "PFCPASRsp-Flags"}, /* Extendable / Clause 8.2.134 */
1785 { 185, "CP PFCP Entity IP Address"}, /* Extendable / Clause 8.2.135 */
1786 { 186, "PFCPSEReq-Flags"}, /* Extendable / Clause 8.2.136 */
1787 { 187, "User Plane Path Recovery Report"}, /* Extendable / Table 7.4.5.1.3-1 */
1788 { 188, "IP Multicast Addressing Info within PFCP Session Establishment Request"}, /* Extendable / Clause 7.5.2.2-4 */
1789 { 189, "Join IP Multicast Information IE within Usage Report"}, /* Extendable / Table 7.5.8.3-4 */
1790 { 190, "Leave IP Multicast Information IE within Usage Report"},/* Extendable / Table 7.5.8.3-5 */
1791 { 191, "IP Multicast Address"}, /* Extendable / Clause 8.2.137 */
1792 { 192, "Source IP Address"}, /* Extendable / Clause 8.2.138 */
1793 { 193, "Packet Rate Status"}, /* Extendable / Clause 8.2.139 */
1794 { 194, "Create Bridge/Router Info"}, /* Extendable / Clause 8.2.140 */
1795 { 195, "Created Bridge/Router Info"}, /* Extendable / Table 7.5.3.6-1 */
1796 { 196, "Port Number"}, /* Fixed Length / Clause 8.2.141 */
1797 { 197, "NW-TT Port Number"}, /* Fixed Length / Clause 8.2.142 */
1798 { 198, "5GS User Plane Node"}, /* Extendable / Clause 8.2.143 */
1799 { 199, "TSC Management Information IE within PFCP Session Modification Request"}, /* Extendable / Table 7.5.4.18-1 */
1800 { 200, "Port Management Information for TSC IE within PFCP Session Modification Response"}, /* Extendable / Table 7.5.5.3-1 */
1801 { 201, "Port Management Information for TSC IE within PFCP Session Report Request"}, /* Extendable / Table 7.5.8.5-1 */
1802 { 202, "Port Management Information Container"}, /* Variable Length / Clause 8.2.144 */
1803 { 203, "Clock Drift Control Information"}, /* Extendable / Table 7.4.4.1.2-1 */
1804 { 204, "Requested Clock Drift Information"}, /* Extendable / Clause 8.2.145 */
1805 { 205, "Clock Drift Report"}, /* Extendable / Table 7.4.5.1.4-1 */
1806 { 206, "Time Domain Number"}, /* Extendable / Clause 8.2.146 */
1807 { 207, "Time Offset Threshold"}, /* Extendable / Clause 8.2.147 */
1808 { 208, "Cumulative rateRatio Threshold"}, /* Extendable / Clause 8.2.148 */
1809 { 209, "Time Offset Measurement"}, /* Extendable / Clause 8.2.149 */
1810 { 210, "Cumulative rateRatio Measurement"}, /* Extendable / Clause 8.2.150 */
1811 { 211, "Remove SRR"}, /* Extendable/ Table 7.5.4.19-1 */
1812 { 212, "Create SRR"}, /* Extendable/ Table 7.5.2.9-1 */
1813 { 213, "Update SRR"}, /* Extendable/ Table 7.5.4.21-1 */
1814 { 214, "Session Report"}, /* Extendable / Table 7.5.8.7-1 */
1815 { 215, "SRR ID"}, /* Extendable / Clause 8.2.151 */
1816 { 216, "Access Availability Control Information"}, /* Extendable / Table 7.5.2.9-2 */
1817 { 217, "Requested Access Availability Information"}, /* Extendable / Clause 8.2.152 */
1818 { 218, "Access Availability Report"}, /* Extendable / Table 7.5.8.6-2 */
1819 { 219, "Access Availability Information"}, /* Extendable / Clause 8.2.153 */
1820 { 220, "Provide ATSSS Control Information"}, /* Extendable / Table 7.5.2.10-1 */
1821 { 221, "ATSSS Control Parameters"}, /* Extendable / Table 7.5.3.7-1 */
1822 { 222, "MPTCP Control Information"}, /* Extendable / Clause 8.2.154 */
1823 { 223, "ATSSS-LL Control Information"}, /* Extendable / Clause 8.2.155 */
1824 { 224, "PMF Control Information"}, /* Extendable / Clause 8.2.156 */
1825 { 225, "MPTCP Parameters"}, /* Extendable / Table 7.5.3.7-2 */
1826 { 226, "ATSSS-LL Parameters"}, /* Extendable / Table 7.5.3.7-3 */
1827 { 227, "PMF Parameters"}, /* Extendable / Table 7.5.3.7-4 */
1828 { 228, "MPTCP Address Information"}, /* Extendable / Clause 8.2.157 */
1829 { 229, "Link-Specific Multipath IP Address"}, /* Extendable / Clause 8.2.158 */
1830 { 230, "PMF Address Information"}, /* Extendable / Clause 8.2.159 */
1831 { 231, "ATSSS-LL Information"}, /* Extendable / Clause 8.2.160 */
1832 { 232, "Data Network Access Identifier"}, /* Variable Length / Clause 8.2.161 */
1833 { 233, "UE IP address Pool Information"}, /* Extendable / Table 7.4.4.1-3 */
1834 { 234, "Average Packet Delay"}, /* Extendable / Clause 8.2.162 */
1835 { 235, "Minimum Packet Delay"}, /* Extendable / Clause 8.2.163 */
1836 { 236, "Maximum Packet Delay"}, /* Extendable / Clause 8.2.164 */
1837 { 237, "QoS Report Trigger"}, /* Extendable / Clause 8.2.165 */
1838 { 238, "GTP-U Path QoS Control Information"}, /* Extendable / Table 7.4.4.1.3-1 */
1839 { 239, "GTP-U Path QoS Report (PFCP Node Report Request)"}, /* Extendable / Table 7.4.5.1.5-1 */
1840 { 240, "QoS Information in GTP-U Path QoS Report"}, /* Extendable / Table 7.4.5.1.6-1 */
1841 { 241, "GTP-U Path Interface Type"}, /* Extendable / Clause 8.2.166 */
1842 { 242, "QoS Monitoring per QoS flow Control Information"}, /* Extendable / Table 7.5.2.9-3 */
1843 { 243, "Requested QoS Monitoring"}, /* Extendable / Clause 8.2.167 */
1844 { 244, "Reporting Frequency"}, /* Extendable / Clause 8.2.168 */
1845 { 245, "Packet Delay Thresholds"}, /* Extendable / Clause 8.2.169 */
1846 { 246, "Minimum Wait Time"}, /* Extendable / Clause 8.2.170 */
1847 { 247, "QoS Monitoring Report"}, /* Extendable / Table 7.5.8.6-3 */
1848 { 248, "QoS Monitoring Measurement"}, /* Extendable / Clause 8.2.171 */
1849 { 249, "MT-EDT Control Information"}, /* Extendable / Clause 8.2.172 */
1850 { 250, "DL Data Packets Size"}, /* Extendable / Clause 8.2.173 */
1851 { 251, "QER Control Indications"}, /* Extendable / Clause 8.2.174 */
1852 { 252, "Packet Rate Status Report IE within PFCP Session Deletion Response"}, /* Extendable / Table 7.5.7.1-2 */
1853 { 253, "NF Instance ID"}, /* Extendable / Clause 8.2.175 */
1854 { 255, "Redundant Transmission Detection Parameters IE in PDI"}, /* Extendable / Table 7.5.2.2-5 */
1855 { 256, "Updated PDR"}, /* Extendable / Table 7.5.9.3-1 */
1856 { 257, "S-NSSAI"}, /* Fixed Length / Clause 8.2.176 */
1857 { 258, "IP version"}, /* Extendable / Clause 8.2.177 */
1858 { 259, "PFCPASReq-Flags"}, /* Extendable / Clause 8.2.178 */
1859 { 260, "Data Status"}, /* Extendable / Clause 8.2.179 */
1860 { 261, "Provide RDS Configuration Information IE within PFCP Session Establishment Request"}, /* Extendable / Table 7.5.2.11-1 */
1861 { 262, "RDS Configuration Information"}, /* Extendable / Clause 8.2.180 */
1862 { 263, "Query Packet Rate Status IE within PFCP Session Modification Request"}, /* Extendable / Table 7.5.4.22-1 */
1863 { 264, "Query Packet Rate Status Report IE within PFCP Session Modification Response"}, /* Extendable / Table 7.5.5.4-1 */
1864 { 265, "Multipath Applicable Indication"}, /* Extendable / Clause 8.2.181 */
1865 { 266, "User Plane Node Management Information Container"}, /* Variable Length / Clause 8.2.182 */
1866 { 267, "UE IP Address Usage Information"}, /* Extendable / Table 7.4.4.3.1-1 */
1867 { 268, "Number of UE IP Addresses"}, /* Extendable / Clause 8.2.183 */
1868 { 269, "Validity Timer"}, /* Extendable / Clause 8.2.184 */
1869 { 270, "Redundant Transmission Forwarding Parameters"}, /* Extendable / Table 7.5.2.3-4 */
1870 { 271, "Transport Delay Reporting"}, /* Extendable / Table 7.5.2.2-6 */
1871 { 272, "Partial Failure Information"}, /* Extendable / Table 7.5.3.1-2 */
1872 { 273, "Partial Failure Information within PFCP Session Modification Response (Removed in Rel 17.2.0)"}, /* Extendable / Table 7.5.5.1-2 */
1873 { 274, "Offending IE Information"}, /* Extendable / Clause 8.2.185 */
1874 { 275, "RAT Type"}, /* Extendable / Clause 8.2.186 */
1875 { 276, "L2TP Tunnel Information"}, /* Extendable / Table 7.5.2.1-2 */
1876 { 277, "L2TP Session Information within PFCP Session Establishment Request"}, /* Extendable / Table 7.5.2.1-3 */
1877 { 278, "L2TP User Authentication"}, /* Variable Length / Clause 8.2.187 */
1878 { 279, "L2TP Session Information within PFCP Session Establishment Response"}, /* Extendable / Table 7.5.3.1-3 */
1879 { 280, "LNS Address"}, /* Variable Length / Clause 8.2.188 */
1880 { 281, "Tunnel Preference"}, /* Fixed / Clause 8.2.189 */
1881 { 282, "Calling Number"}, /* Variable Length / Clause 8.2.190 */
1882 { 283, "Called Number"}, /* Variable Length / Clause 8.2.191 */
1883 { 284, "L2TP Session Indications"}, /* Extendable / Clause 8.2.192 */
1884 { 285, "DNS Server Address"}, /* Extendable / Clause 8.2.193 */
1885 { 286, "NBNS Server Address"}, /* Fixed / Clause 8.2.194 */
1886 { 287, "Maximum Receive Unit"}, /* Variable Length / Clause 8.2.195 */
1887 { 288, "Thresholds"}, /* Variable Length / Clause 8.2.196 */
1888 { 289, "Steering Mode Indicator"}, /* Extendable / Clause 8.2.197 */
1889 { 290, "PFCP Session Change Info"}, /* Extendable / Table 7.4.7.1-2 */
1890 { 291, "Group ID"}, /* Fixed / Clause 8.2.198 */
1891 { 292, "CP IP Address"}, /* Extendable / Clause 8.2.199 */
1892 { 293, "IP Address and Port Number Replacement"}, /* Variable Length / Clause 8.2.200 */
1893 { 294, "DNS Query/Response Filter"}, /* Variable Length / Clause 8.2.201 */
1894 { 295, "Direct Reporting Information"}, /* Extendable / Table 7.5.2.9-4 */
1895 { 296, "Event Notification URI"}, /* Variable Length / Clause 8.2.202 */
1896 { 297, "Notification Correlation ID"}, /* Variable Length / Clause 8.2.203 */
1897 { 298, "Reporting Flags"}, /* Extendable / Clause 8.2.204 */
1898 { 299, "Predefined Rules Name"}, /* Variable Length / Clause 8.2.205 */
1899 { 300, "MBS Session N4mb Control Information"}, /* Extendable / Table 7.5.2.1-5 */
1900 { 301, "MBS Multicast Parameters"}, /* Extendable / Table 7.5.2.3-5 */
1901 { 302, "Add MBS Unicast Parameters IE in Create FAR"}, /* Extendable / Table 7.5.2.3-6 */
1902 { 303, "MBS Session N4mb Information"}, /* Extendable / Table 7.5.3.1-4 */
1903 { 304, "Remove MBS Unicast Parameters IE in Update FAR"}, /* Extendable / Table 7.5.4.3-4 */
1904 { 305, "MBS Session Identifier"}, /* Extendable Length / Clause 8.2.206 */
1905 { 306, "Multicast Transport Information"}, /* Extendable Length / Clause 8.2.207 */
1906 { 307, "MBSN4mbReq Flags"}, /* Extendable Length / Clause 8.2.208 */
1907 { 308, "Local Ingress Tunnel"}, /* Extendable Length / Clause 8.2.209 */
1908 { 309, "MBS Unicast Parameters ID"}, /* Extendable Length / Clause 8.2.210 */
1909 { 310, "MBS Session N4 Control Information IE within PFCP Session Establishment Request"}, /* Extendable / Table 7.5.2.1-6 */
1910 { 311, "MBS Session N4 Control Information IE within PFCP Session Establishment Response"}, /* Extendable / Table 7.5.3.1-5 */
1911 { 312, "MBSN4Resp-Flags"}, /* Extendable / Clause 8.2.211 */
1912 { 313, "Tunnel Password"}, /* Variable Length / Clause 8.2.212 */
1913 { 314, "Area Session ID"}, /* Fixed / Clause 8.2.213 */
1914 { 315, "Peer UP Restart Report IE within PFCP Node Report Request"}, /* Extendable / Table 7.4.5.1-7 */
1915 { 316, "DSCP to PPI Control Information IE within PFCP Session Establishment Request"}, /* Extendable / Table 7.5.2.1-6 */
1916 { 317, "DSCP to PPI Mapping Information"}, /* Extendable / Clause 8.2.214 */
1917 { 318, "PFCPSDRsp-Flags"}, /* Extendable / Clause 8.2.215 */
1918 { 319, "QER Indications"}, /* Extendable / Clause 8.2.216 */
1919 { 320, "Vendor-Specific Node Report Type"}, /* Extendable / Clause 8.2.217 */
1920 { 321, "Configured Time Domain"}, /* Extendable / Clause 8.2.218 */
1921 { 322, "Metadata"}, /* Variable Length / Clause 8.2.219 */
1922 { 323, "Traffic Parameter Measurement Control Information"}, /* Extendable / Table 7.5.2.9-5 */
1923 { 324, "Traffic Parameter Measurement Report"}, /* Extendable / Table 7.5.8.6-4 */
1924 { 325, "Traffic Parameter Threshold"}, /* Extendable / Clause 8.2.220 */
1925 { 326, "DL Periodicity"}, /* Extendable / Clause 8.2.221 */
1926 { 327, "N6 Jitter Measurement"}, /* Extendable / Clause 8.2.222 */
1927 { 328, "Traffic Parameter Measurement Indication"}, /* Extendable / Clause 8.2.223 */
1928 { 329, "UL Periodicity"}, /* Extendable / Clause 8.2.224 */
1929 { 330, "MPQUIC Control Information"}, /* Extendable / Clause 8.2.225 */
1930 { 331, "MPQUIC Parameters"}, /* Extendable / Table 7.5.3.7-5 */
1931 { 332, "MPQUIC Address Information"}, /* Extendable / Clause 8.2.226 */
1932 { 333, "Transport Mode"}, /* Extendable / Clause 8.2.227 */
1933 { 334, "Protocol Description"}, /* Extendable / Table 7.5.2.2-7 */
1934 { 335, "Reporting Suggestion Info"}, /* Extendable / Clause 8.2.289 */
1935 { 336, "TL-Container"}, /* Variable Length / Clause 8.2.230 */
1936 { 337, "Measurement Indication"}, /* Extendable / Clause 8.2.231 */
1937 { 338, "HPLMN S-NSSAI"}, /* Fixed Length / Clause 8.2.232 */
1938 { 339, "Media Transport Protocol"}, /* Extendable / Clause 8.2.233 */
1939 { 340, "RTP Header Extension Information"}, /* Extendable / Table 7.5.2.2-8 */
1940 { 341, "RTP Payload Information"}, /* Extendable / Table 7.5.2.2-9 */
1941 { 342, "RTP Header Extension Type"}, /* Fixed Length / Clause 8.2.234 */
1942 { 343, "RTP Header Extension ID"}, /* Fixed Length / Clause 8.2.235 */
1943 { 344, "RTP Payload Type"}, /* Fixed Length / Clause 8.2.236 */
1944 { 345, "RTP Payload Format"}, /* Fixed Length / Clause 8.2.237 */
1945 { 346, "Extended DL Buffering Notification Policy"}, /* Extendable / Clause 8.2.238 */
1946 { 347, "MT-SDT Control Information"}, /* Extendable / Clause 8.2.239 */
1947 { 348, "Reporting Thresholds"}, /* Extendable / Clause 8.2.240 */
1948 { 349, "RTP Header Extension Additional Information"}, /* Extendable / Clause 8.2.241 */
1949 { 350, "Mapped N6 IP Address"}, /* Extendable / Clause 8.2.242 */
1950 { 351, "N6 Routing Information"}, /* Extendable / Clause 8.2.243 */
1951 //352 to 32767 Spare. For future use.
1952 //32768 to 65535 Vendor-specific IEs.
1956 static value_string_ext pfcp_ie_type_ext
= VALUE_STRING_EXT_INIT(pfcp_ie_type
);
1958 /* PFCP Session funcs*/
1960 pfcp_info_hash(gconstpointer key
)
1962 const pfcp_info_t
*k
= (const pfcp_info_t
*)key
;
1964 /* The SEID is likely unique, so just use it. */
1965 return g_int_hash(&k
->seid
);
1969 pfcp_info_equal(gconstpointer key1
, gconstpointer key2
)
1971 const pfcp_info_t
*a
= (const pfcp_info_t
*)key1
;
1972 const pfcp_info_t
*b
= (const pfcp_info_t
*)key2
;
1974 return (a
->seid
== b
->seid
&& (cmp_address(&a
->addr
, &b
->addr
) == 0));
1978 pfcp_get_frame(address ip
, uint64_t seid
, uint32_t *frame
) {
1983 copy_address_shallow(&info
.addr
, &ip
);
1984 value
= wmem_map_lookup(pfcp_frame_map
, &info
);
1985 if (value
!= NULL
) {
1986 *frame
= GPOINTER_TO_UINT(value
);
1993 pfcp_frame_equal(void *key _U_
, void *value
, void *data
){
1994 uint32_t frame
= GPOINTER_TO_UINT(data
);
1996 return (GPOINTER_TO_UINT(value
) == frame
);
2000 pfcp_remove_frame_info(uint32_t f
) {
2001 /* XXX: This iterates through the entire map and it is slow if done
2002 * often. For large files with lots of removals, there are better
2003 * alternatives, e.g. marking sessions as expired and then periodically
2004 * removing all expired sessions from the map, or using a bijective
2005 * map to coordinate removals.
2007 wmem_map_foreach_remove(pfcp_frame_map
, pfcp_frame_equal
, GUINT_TO_POINTER(f
));
2012 pfcp_add_session(uint32_t frame
, uint32_t session
) {
2013 g_hash_table_insert(pfcp_session_table
, GUINT_TO_POINTER(frame
), GUINT_TO_POINTER(session
));
2018 pfcp_seid_exists(uint64_t seid
, wmem_list_t
*seid_list
) {
2019 wmem_list_frame_t
*elem
;
2023 elem
= wmem_list_head(seid_list
);
2024 while (!found
&& elem
) {
2025 info
= (uint32_t*)wmem_list_frame_data(elem
);
2026 found
= *info
== seid
;
2027 elem
= wmem_list_frame_next(elem
);
2033 pfcp_ip_exists(address ip
, wmem_list_t
*ip_list
) {
2034 wmem_list_frame_t
*elem
;
2038 elem
= wmem_list_head(ip_list
);
2039 while (!found
&& elem
) {
2040 info
= (address
*)wmem_list_frame_data(elem
);
2041 found
= addresses_equal(info
, &ip
);
2042 elem
= wmem_list_frame_next(elem
);
2048 pfcp_fill_map(wmem_list_t
*seid_list
, wmem_list_t
*ip_list
, uint32_t frame
) {
2049 wmem_list_frame_t
*elem_ip
, *elem_seid
;
2050 pfcp_info_t
*pfcp_info
;
2051 gpointer session_p
, fr_p
;
2052 GHashTableIter iter
;
2057 elem_ip
= wmem_list_head(ip_list
);
2059 ip
= (address
*)wmem_list_frame_data(elem_ip
);
2060 /* We loop over the seid list */
2061 elem_seid
= wmem_list_head(seid_list
);
2063 seid
= *(uint64_t*)wmem_list_frame_data(elem_seid
);
2064 pfcp_info
= wmem_new0(wmem_file_scope(), pfcp_info_t
);
2065 pfcp_info
->seid
= seid
;
2066 copy_address_wmem(wmem_file_scope(), &pfcp_info
->addr
, ip
);
2067 if (wmem_map_lookup(pfcp_frame_map
, pfcp_info
)) {
2068 /* If the seid and ip already maps to a session, that means
2069 * that we need to remove old info about that session */
2070 /* We look for its session ID */
2071 session
= GPOINTER_TO_UINT(g_hash_table_lookup(pfcp_session_table
, GUINT_TO_POINTER(frame
)));
2073 g_hash_table_iter_init(&iter
, pfcp_session_table
);
2074 while (g_hash_table_iter_next(&iter
, &fr_p
, &session_p
)) {
2075 /* If the msg has the same session ID and it's not the upd req we have to remove its info */
2076 if (GPOINTER_TO_UINT(session_p
) == session
) {
2077 /* If it's the session we are looking for, we remove all the frame information */
2078 pfcp_remove_frame_info(GPOINTER_TO_UINT(fr_p
));
2083 wmem_map_insert(pfcp_frame_map
, pfcp_info
, GUINT_TO_POINTER(frame
));
2084 elem_seid
= wmem_list_frame_next(elem_seid
);
2086 elem_ip
= wmem_list_frame_next(elem_ip
);
2091 pfcp_is_cause_accepted(uint8_t cause
) {
2095 /* Data structure attached to a conversation,
2096 * to keep track of request/response-pairs
2098 typedef struct pfcp_conv_info_t
{
2099 wmem_map_t
*unmatched
;
2100 wmem_map_t
*matched
;
2103 /* structure used to track responses to requests using sequence number */
2104 typedef struct pfcp_msg_hash_entry
{
2105 bool is_request
; /* true/false */
2106 uint32_t req_frame
; /* frame with request */
2107 nstime_t req_time
; /* req time */
2108 uint32_t rep_frame
; /* frame with reply */
2109 int seq_nr
; /* sequence number */
2110 unsigned msgtype
; /* messagetype */
2114 pfcp_sn_hash(gconstpointer k
)
2116 const pfcp_msg_hash_t
*key
= (const pfcp_msg_hash_t
*)k
;
2122 pfcp_sn_equal_matched(gconstpointer k1
, gconstpointer k2
)
2124 const pfcp_msg_hash_t
*key1
= (const pfcp_msg_hash_t
*)k1
;
2125 const pfcp_msg_hash_t
*key2
= (const pfcp_msg_hash_t
*)k2
;
2127 if (key1
->req_frame
&& key2
->req_frame
&& (key1
->req_frame
!= key2
->req_frame
)) {
2131 if (key1
->rep_frame
&& key2
->rep_frame
&& (key1
->rep_frame
!= key2
->rep_frame
)) {
2135 if (key1
->seq_nr
== key2
->seq_nr
) {
2136 if (pref_pair_matching_max_interval_ms
) {
2138 nstime_delta(&delta
, &key1
->req_time
, &key2
->req_time
);
2139 double diff
= fabs(nstime_to_msec(&delta
));
2140 return diff
< pref_pair_matching_max_interval_ms
;
2149 pfcp_sn_equal_unmatched(gconstpointer k1
, gconstpointer k2
)
2151 const pfcp_msg_hash_t
*key1
= (const pfcp_msg_hash_t
*)k1
;
2152 const pfcp_msg_hash_t
*key2
= (const pfcp_msg_hash_t
*)k2
;
2154 if (key1
->seq_nr
== key2
->seq_nr
) {
2155 if (pref_pair_matching_max_interval_ms
) {
2157 nstime_delta(&delta
, &key1
->req_time
, &key2
->req_time
);
2158 double diff
= fabs(nstime_to_msec(&delta
));
2159 return diff
< pref_pair_matching_max_interval_ms
;
2167 static GHashTable
*pfcp_stat_msg_idx_hash
;
2170 pfcp_stat_init(struct register_srt
* srt _U_
, GArray
*srt_array
)
2172 if (pfcp_stat_msg_idx_hash
!= NULL
) {
2173 g_hash_table_destroy(pfcp_stat_msg_idx_hash
);
2175 pfcp_stat_msg_idx_hash
= g_hash_table_new(g_direct_hash
, g_direct_equal
);
2177 init_srt_table("PFCP Requests", NULL
, srt_array
, 0, NULL
, NULL
, NULL
);
2180 static tap_packet_status
2181 pfcp_stat_packet(void *pss
, packet_info
*pinfo
, epan_dissect_t
*edt _U_
, const void *prv
, tap_flags_t flags _U_
)
2184 srt_stat_table
*pfcp_srt_table
;
2185 srt_data_t
*srt_data
= (srt_data_t
*)pss
;
2186 const pfcp_msg_hash_t
*pcrp
= (const pfcp_msg_hash_t
*)prv
;
2189 /* We are only interested in matched reply packets. */
2190 if (pcrp
->is_request
) {
2191 return TAP_PACKET_DONT_REDRAW
;
2193 if (!pcrp
->req_frame
) {
2194 return TAP_PACKET_DONT_REDRAW
;
2197 pfcp_srt_table
= g_array_index(srt_data
->srt_array
, srt_stat_table
*, i
);
2199 /* XXX: It would be nice if srt_table handled hashing so that the
2200 * real procedure number could be displayed in the table without
2201 * having to add empty rows for unused message types and responses
2202 * (requests and responses have different message types, and we
2203 * only use the request value.)
2205 idx
= GPOINTER_TO_UINT(g_hash_table_lookup(pfcp_stat_msg_idx_hash
, GUINT_TO_POINTER(pcrp
->msgtype
)));
2207 /* Store the row value incremented by 1 to distinguish 0 from NULL */
2209 idx
= g_hash_table_size(pfcp_stat_msg_idx_hash
);
2210 g_hash_table_insert(pfcp_stat_msg_idx_hash
, GUINT_TO_POINTER(pcrp
->msgtype
), GUINT_TO_POINTER(idx
+ 1));
2211 init_srt_table_row(pfcp_srt_table
, idx
, val_to_str_ext_const(pcrp
->msgtype
, &pfcp_message_type_ext
, "Unknown"));
2216 add_srt_table_data(pfcp_srt_table
, idx
, &pcrp
->req_time
, pinfo
);
2218 return TAP_PACKET_REDRAW
;
2222 pfcp_track_session(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, pfcp_hdr_t
* pfcp_hdr
, wmem_list_t
*seid_list
, wmem_list_t
*ip_list
, uint64_t last_seid _U_
, address last_ip _U_
)
2224 uint32_t session
, frame_seid_cp
;
2229 session
= GPOINTER_TO_UINT(g_hash_table_lookup(pfcp_session_table
, GUINT_TO_POINTER(pinfo
->num
)));
2231 it
= proto_tree_add_uint(tree
, hf_pfcp_session
, tvb
, 0, 0, session
);
2232 proto_item_set_generated(it
);
2236 if (!PINFO_FD_VISITED(pinfo
)) {
2237 /* If the message does not have any session ID */
2238 session
= GPOINTER_TO_UINT(g_hash_table_lookup(pfcp_session_table
, GUINT_TO_POINTER(pinfo
->num
)));
2240 /* If the message is not a SEREQ, SERES, SMREQ, SERES, SDREQ, SDRES, SRREQ or SRRES
2241 * then we remove its information from seid and ip lists
2242 * XXX: Wouldn't it be better not to insert this information
2243 * in the first place for other message types, instead of
2244 * inserting it and then immediately removing it?
2245 * At the very least, it would be faster to iterate through the
2246 * seid_list and ip_list and remove via keys rather than doing
2247 * removal through a reverse lookup.
2249 if ((pfcp_hdr
->message
!= PFCP_MSG_SESSION_ESTABLISHMENT_REQUEST
&& pfcp_hdr
->message
!= PFCP_MSG_SESSION_ESTABLISHMENT_RESPONSE
&&
2250 pfcp_hdr
->message
!= PFCP_MSG_SESSION_MODIFICATION_REQUEST
&& pfcp_hdr
->message
!= PFCP_MSG_SESSION_MODIFICATION_RESPONSE
&&
2251 pfcp_hdr
->message
!= PFCP_MSG_SESSION_DELETION_REQUEST
&& pfcp_hdr
->message
!= PFCP_MSG_SESSION_DELETION_RESPONSE
&&
2252 pfcp_hdr
->message
!= PFCP_MSG_SESSION_REPORT_REQUEST
&& pfcp_hdr
->message
!= PFCP_MSG_SESSION_REPORT_RESPONSE
)) {
2253 /* If the lists are not empty*/
2254 if (wmem_list_count(seid_list
) && wmem_list_count(ip_list
)) {
2255 pfcp_remove_frame_info(pinfo
->num
);
2258 if (pfcp_hdr
->message
== PFCP_MSG_SESSION_ESTABLISHMENT_REQUEST
){
2259 /* If SEREQ and not already in the list then we create a new session*/
2260 pfcp_add_session(pinfo
->num
, pfcp_session_count
++);
2262 else if (pfcp_hdr
->message
!= PFCP_MSG_SESSION_ESTABLISHMENT_RESPONSE
) {
2263 /* We have to check if its seid == seid_cp and ip.dst == gsn_ipv4 from the lists, if that is the case then we have to assign
2264 the corresponding session ID */
2265 if ((pfcp_get_frame(pinfo
->dst
, pfcp_hdr
->seid
, &frame_seid_cp
) == 1)) {
2266 /* Then we have to set its session ID */
2267 session
= GPOINTER_TO_UINT(g_hash_table_lookup(pfcp_session_table
, GUINT_TO_POINTER(frame_seid_cp
)));
2269 /* We add the corresponding session to the list so that when a response came we can associate its session ID*/
2270 pfcp_add_session(pinfo
->num
, session
);
2279 dissect_pfcp_reserved(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
2281 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_reserved
, tvb
, 0, length
);
2284 static int dissect_pfcp_string_ie(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, int hf
)
2286 char* string_value
= NULL
;
2287 proto_tree_add_item_ret_display_string(tree
, hf
, tvb
, 0, -1, ENC_ASCII
, pinfo
->pool
, &string_value
);
2288 proto_item_append_text(proto_tree_get_parent(tree
), " : %s", string_value
);
2290 return tvb_reported_length(tvb
);
2293 /* Functions for C-Tag and S-TAG
2294 * See 8.2.94 and 8.2.95
2297 /* From Tables G-2,3 of IEEE standard 802.1Q-2005 (and I-2,3,7 of 2011 and 2015 revisions) */
2298 static const value_string pfcp_vlan_tag_pcp_vals
[] = {
2299 { 0, "Best Effort (default), Drop Eligible" },
2300 { 1, "Best Effort (default)" },
2301 { 2, "Critical Applications, Drop Eligible" },
2302 { 3, "Critical Applications" },
2303 { 4, "Voice, < 10ms latency and jitter, Drop Eligible" },
2304 { 5, "Voice, < 10ms latency and jitter" },
2305 { 6, "Internetwork Control" },
2306 { 7, "Network Control" },
2310 static const true_false_string tfs_eligible_ineligible
= {
2315 static int decode_pfcp_c_tag(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, int offset
)
2317 static const crumb_spec_t pfcp_c_tag_cvid_crumbs
[] = {
2323 static int * const pfcp_c_tag_flags
[] = {
2324 &hf_pfcp_spare_b7_b3
,
2325 &hf_pfcp_c_tag_flags_b2_vid
,
2326 &hf_pfcp_c_tag_flags_b1_dei
,
2327 &hf_pfcp_c_tag_flags_b0_pcp
,
2330 /* Octet 5 Spare VID DEI PCP */
2331 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_c_tag_flags
, ENC_BIG_ENDIAN
);
2334 // Octet 8 7 6 5 4 3 2 1
2335 // 6 | C-VID value |DEI| PCP value |
2336 // 7 | C-VID value |
2337 proto_tree_add_split_bits_item_ret_val(tree
, hf_pfcp_c_tag_cvid
, tvb
, offset
<< 3, pfcp_c_tag_cvid_crumbs
, NULL
);
2338 proto_tree_add_item(tree
, hf_pfcp_c_tag_dei_flag
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2339 proto_tree_add_item(tree
, hf_pfcp_c_tag_pcp_value
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2345 static int decode_pfcp_s_tag(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, unsigned offset
)
2347 static const crumb_spec_t pfcp_s_tag_svid_crumbs
[] = {
2353 static int * const pfcp_s_tag_flags
[] = {
2354 &hf_pfcp_spare_b7_b3
,
2355 &hf_pfcp_s_tag_flags_b2_vid
,
2356 &hf_pfcp_s_tag_flags_b1_dei
,
2357 &hf_pfcp_s_tag_flags_b0_pcp
,
2360 /* Octet 5 Spare VID DEI PCP */
2361 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_s_tag_flags
, ENC_BIG_ENDIAN
);
2364 // Octet 8 7 6 5 4 3 2 1
2365 // 6 | S-VID value |DEI| PCP value |
2366 // 7 | S-VID value |
2367 proto_tree_add_split_bits_item_ret_val(tree
, hf_pfcp_s_tag_svid
, tvb
, offset
<< 3, pfcp_s_tag_svid_crumbs
, NULL
);
2368 proto_tree_add_item(tree
, hf_pfcp_s_tag_dei_flag
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2369 proto_tree_add_item(tree
, hf_pfcp_s_tag_pcp_value
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2378 static const value_string pfcp_cause_vals
[] = {
2381 { 1, "Request accepted(success)" },
2382 { 2, "More Usage Report to send" },
2383 { 3, "Request partially accepted" },
2385 { 64, "Request rejected(reason not specified)" },
2386 { 65, "Session context not found" },
2387 { 66, "Mandatory IE missing" },
2388 { 67, "Conditional IE missing" },
2389 { 68, "Invalid length" },
2390 { 69, "Mandatory IE incorrect" },
2391 { 70, "Invalid Forwarding Policy" },
2392 { 71, "Invalid F-TEID allocation option" },
2393 { 72, "No established PFCP Association" },
2394 { 73, "Rule creation / modification Failure" },
2395 { 74, "PFCP entity in congestion" },
2396 { 75, "No resources available" },
2397 { 76, "Service not supported" },
2398 { 77, "System failure" },
2399 { 78, "Redirection Requested" },
2400 { 79, "All dynamic addresses are occupied" },
2401 { 80, "Unknown Pre-defined Rule" },
2402 { 81, "Unknown Application ID" },
2403 { 82, "L2TP tunnel Establishment failure" },
2404 { 83, "L2TP session Establishment failure" },
2405 { 84, "L2TP tunnel release" },
2406 { 85, "L2TP session release" },
2407 { 86, "PFCP session restoration failure" },
2408 { 87, "L2TP tunnel Establishment failure - Tunnel Auth Failure"},
2409 { 88, "L2TP Session Establishment failure - Session Auth Failure"},
2410 { 89, "L2TP tunnel Establishment failure - LNS not reachable"},
2411 /* 90 to 255 Spare for future use in a response message. */
2416 dissect_pfcp_cause(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args
)
2419 /* Octet 5 Cause value */
2420 proto_tree_add_item_ret_uint(tree
, hf_pfcp2_cause
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &value
);
2421 if (g_pfcp_session
) {
2422 args
->last_cause
= (uint8_t)value
;
2424 proto_item_append_text(item
, "%s", val_to_str_const(value
, pfcp_cause_vals
, "Unknown"));
2428 * 8.2.2 Source Interface
2430 static const value_string pfcp_source_interface_vals
[] = {
2434 { 2, "SGi-LAN/N6-LAN" },
2435 { 3, "CP-function" },
2436 { 4, "5G VN Internal" },
2440 decode_pfcp_source_interface(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, int offset
)
2443 /* Octet 5 Spare Interface value */
2444 proto_tree_add_item(tree
, hf_pfcp_spare_h1
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2445 proto_tree_add_item_ret_uint(tree
, hf_pfcp_source_interface
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
2448 proto_item_append_text(item
, "%s", val_to_str_const(value
, pfcp_source_interface_vals
, "Unknown"));
2454 dissect_pfcp_source_interface(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
2458 offset
= decode_pfcp_source_interface(tvb
, pinfo
, tree
, item
, offset
);
2460 if (offset
< length
) {
2461 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
2470 dissect_pfcp_f_teid(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
2473 uint64_t fteid_flags_val
;
2475 static int * const pfcp_fteid_flags
[] = {
2476 &hf_pfcp_fteid_flg_spare
,
2477 &hf_pfcp_fteid_flg_b3_ch_id
,
2478 &hf_pfcp_fteid_flg_b2_ch
,
2479 &hf_pfcp_fteid_flg_b1_v6
,
2480 &hf_pfcp_fteid_flg_b0_v4
,
2483 /* Octet 5 Spare Spare Spare Spare CHID CH V6 V4*/
2484 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_fteid_flags
, ENC_BIG_ENDIAN
, &fteid_flags_val
);
2486 /* The following flags are coded within Octet 5:
2487 * Bit 1 - V4: If this bit is set to "1" and the CH bit is not set, then the IPv4 address field shall be present,
2488 * otherwise the IPv4 address field shall not be present.
2489 * Bit 2 - V6: If this bit is set to "1" and the CH bit is not set, then the IPv6 address field shall be present,
2490 * otherwise the IPv6 address field shall not be present.
2491 * Bit 3 - CH (CHOOSE): If this bit is set to "1", then the TEID, IPv4 address and IPv6 address fields shall not be
2492 * present and the UP function shall assign an F-TEID with an IP4 or an IPv6 address if the V4 or V6 bit is set respectively.
2493 * This bit shall only be set by the CP function.
2494 * Bit 4 - CHID (CHOOSE_ID):If this bit is set to "1", then the UP function shall assign the same F-TEID to the
2495 * PDRs requested to be created in a PFCP Session Establishment Request or PFCP Session Modification Request with
2496 * the same CHOOSE ID value.
2497 * This bit may only be set to "1" if the CH bit is set to "1".
2498 * This bit shall only be set by the CP function.
2501 if ((fteid_flags_val
& 0x4) == 4) {
2502 if ((fteid_flags_val
& 0x8) == 8) {
2503 proto_tree_add_item(tree
, hf_pfcp_f_teid_ch_id
, tvb
, offset
, 1, ENC_NA
);
2508 /* Octet 6 to 9 TEID */
2509 proto_tree_add_item(tree
, hf_pfcp_f_teid_teid
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
2510 proto_item_append_text(item
, "TEID: 0x%s", tvb_bytes_to_str(pinfo
->pool
, tvb
, offset
, 4));
2513 if ((fteid_flags_val
& 0x1) == 1) {
2514 /* m to (m+3) IPv4 address */
2515 proto_tree_add_item(tree
, hf_pfcp_f_teid_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
2516 proto_item_append_text(item
, ", IPv4 %s", tvb_ip_to_str(pinfo
->pool
, tvb
, offset
));
2519 if ((fteid_flags_val
& 0x2) == 2) {
2520 /* p to (p+15) IPv6 address */
2521 proto_tree_add_item(tree
, hf_pfcp_f_teid_ipv6
, tvb
, offset
, 16, ENC_NA
);
2522 proto_item_append_text(item
, ", IPv6 %s", tvb_ip6_to_str(pinfo
->pool
, tvb
, offset
));
2525 /* If the value of CH bit is set to "0", but the value of CHID bit is "1" */
2526 if ((fteid_flags_val
& 0x8) == 8) {
2527 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_encoding_error
, tvb
, 0, 1);
2530 if (offset
< length
) {
2531 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
2536 * 8.2.4 Network Instance
2539 decode_pfcp_network_instance(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, int offset
, int length
)
2545 name_len
= tvb_get_uint8(tvb
, offset
);
2546 if (name_len
< 0x41) {
2548 uint8_t *apn
= NULL
;
2550 name_len
= tvb_get_uint8(tvb
, offset
);
2552 if (name_len
< 0x20) {
2553 apn
= tvb_get_string_enc(pinfo
->pool
, tvb
, offset
, length
, ENC_APN_STR
);
2555 apn
= tvb_get_string_enc(pinfo
->pool
, tvb
, offset
, length
, ENC_ASCII
);
2557 proto_tree_add_string(tree
, hf_pfcp_network_instance
, tvb
, offset
, length
, apn
);
2558 proto_item_append_text(item
, "%s", apn
);
2562 const uint8_t* string_value
;
2563 proto_tree_add_item_ret_string(tree
, hf_pfcp_network_instance
, tvb
, offset
, length
, ENC_ASCII
| ENC_NA
, pinfo
->pool
, &string_value
);
2564 proto_item_append_text(item
, "%s", string_value
);
2568 return offset
+ length
;
2571 dissect_pfcp_network_instance(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
2575 /* Octet 5 Network Instance
2576 * The Network instance field shall be encoded as an OctetString and shall contain an identifier
2577 * which uniquely identifies a particular Network instance (e.g. PDN instance) in the UP function.
2578 * It may be encoded as a Domain Name or an Access Point Name (APN)
2580 /* Test for Printable character or length indicator(APN), assume first character of Domain name >= 0x41 */
2582 decode_pfcp_network_instance(tvb
, pinfo
, tree
, item
, offset
, length
);
2590 dissect_pfcp_sdf_filter(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
2595 proto_tree
*flow_desc_tree
, *tos_tree
, *spi_tree
, *flow_label_tree
, *sdf_filter_id_tree
;
2597 static int * const pfcp_sdf_filter_flags
[] = {
2599 &hf_pfcp_sdf_filter_flags_b4_bid
,
2600 &hf_pfcp_sdf_filter_flags_b3_fl
,
2601 &hf_pfcp_sdf_filter_flags_b2_spi
,
2602 &hf_pfcp_sdf_filter_flags_b1_ttc
,
2603 &hf_pfcp_sdf_filter_flags_b0_fd
,
2606 /* Octet 5 Spare FL SPI TTC FD*/
2607 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_sdf_filter_flags
, ENC_BIG_ENDIAN
, &flags_val
);
2610 proto_tree_add_item(tree
, hf_pfcp_spare
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2613 if ((flags_val
& 0x1) == 1) {
2614 /* FD (Flow Description): If this bit is set to "1",
2615 * then the Length of Flow Description and the Flow Description fields shall be present
2617 flow_desc_tree
= proto_item_add_subtree(item
, ett_pfcp_flow_desc
);
2618 /* m to (m+1) Length of Flow Description */
2619 proto_tree_add_item_ret_uint(flow_desc_tree
, hf_pfcp_flow_desc_len
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &fd_length
);
2622 * The Flow Description field, when present, shall be encoded as an OctetString
2623 * as specified in subclause 5.4.2 of 3GPP TS 29.212
2625 proto_tree_add_item(flow_desc_tree
, hf_pfcp_flow_desc
, tvb
, offset
, fd_length
, ENC_ASCII
);
2626 offset
+= fd_length
;
2628 if ((flags_val
& 0x2) == 2) {
2629 /* TTC (ToS Traffic Class): If this bit is set to "1", then the ToS Traffic Class field shall be present */
2630 /* ToS Traffic Class field, when present, shall be encoded as an OctetString on two octets
2631 * as specified in subclause 5.3.15 of 3GPP TS 29.212
2633 tos_tree
= proto_item_add_subtree(item
, ett_pfcp_tos
);
2634 proto_tree_add_item(tos_tree
, hf_pfcp_traffic_class
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2636 proto_tree_add_item(tos_tree
, hf_pfcp_traffic_mask
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2640 if ((flags_val
& 0x4) == 4) {
2641 /* SPI (The Security Parameter Index) field, when present, shall be encoded as an OctetString on four octets and shall
2642 * contain the IPsec security parameter index (which is a 32-bit field),
2643 * as specified in subclause 5.3.51 of 3GPP TS 29.212
2645 spi_tree
= proto_item_add_subtree(item
, ett_pfcp_spi
);
2646 proto_tree_add_item(spi_tree
, hf_pfcp_spi
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
2649 if ((flags_val
& 0x8) == 8) {
2650 /* FL (Flow Label), when present, shall be encoded as an OctetString on 3 octets as specified in
2651 * subclause 5.3.52 of 3GPP TS 29.212 and shall contain an IPv6 flow label (which is a 20-bit field).
2652 * The bits 8 to 5 of the octet "v" shall be spare and set to zero, and the remaining 20 bits shall
2653 * contain the IPv6 flow label.*/
2654 flow_label_tree
= proto_item_add_subtree(item
, ett_pfcp_flow_label
);
2655 proto_tree_add_bits_item(flow_label_tree
, hf_pfcp_flow_label_spare_bit
, tvb
, (offset
<<3), 4, ENC_BIG_ENDIAN
);
2656 proto_tree_add_item(flow_label_tree
, hf_pfcp_flow_label
, tvb
, offset
, 3, ENC_BIG_ENDIAN
);
2659 if ((flags_val
& 0x10) == 16) {
2660 /* The SDF Filter ID, when present, shall be encoded as an Unsigned32 binary integer value.
2661 * It shall uniquely identify an SDF Filter among all the SDF Filters provisioned for a given PFCP Session. */
2662 sdf_filter_id_tree
= proto_item_add_subtree(item
, ett_pfcp_sdf_filter_id
);
2663 proto_tree_add_item(sdf_filter_id_tree
, hf_pfcp_sdf_filter_id
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
2667 if (offset
< length
) {
2668 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
2672 * 8.2.6 Application ID
2675 dissect_pfcp_application_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
2679 /* Octet 5 to (n+4) Application Identifier
2680 * The Application Identifier shall be encoded as an OctetString (see 3GPP TS 29.212)
2682 if (tvb_ascii_isprint(tvb
, offset
, length
))
2684 const uint8_t* string_value
;
2685 proto_tree_add_item_ret_string(tree
, hf_pfcp_application_id_str
, tvb
, offset
, length
, ENC_ASCII
| ENC_NA
, pinfo
->pool
, &string_value
);
2686 proto_item_append_text(item
, "%s", string_value
);
2690 proto_tree_add_item(tree
, hf_pfcp_application_id
, tvb
, offset
, length
, ENC_NA
);
2696 static const value_string pfcp_gate_status_vals
[] = {
2704 dissect_pfcp_gate_status(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
2708 static int * const pfcp_gate_status_flags
[] = {
2709 &hf_pfcp_gate_status_b3b2_ulgate
,
2710 &hf_pfcp_gate_status_b0b1_dlgate
,
2713 /* Octet 5 Spare UL Gate DL Gate */
2714 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_gate_status_flags
, ENC_BIG_ENDIAN
);
2717 if (offset
< length
) {
2718 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
2728 dissect_pfcp_mbr(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
2731 int len1
= (length
!= 10) ? length
/2 : 5;
2733 /* In case length is not in accordance with documentation */
2734 if ( length
!= 10) {
2735 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_encoding_error
, tvb
, 0, 1);
2739 * The UL/DL MBR fields shall be encoded as kilobits per second (1 kbps = 1000 bps) in binary value
2741 proto_tree_add_item(tree
, hf_pfcp_ul_mbr
, tvb
, offset
, len1
, ENC_BIG_ENDIAN
);
2744 /* 10 to 14 DL MBR */
2745 proto_tree_add_item(tree
, hf_pfcp_dl_mbr
, tvb
, offset
, len1
, ENC_BIG_ENDIAN
);
2748 if (offset
< length
) {
2749 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
2758 dissect_pfcp_gbr(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
2761 int len1
= (length
!= 10) ? length
/2 : 5;
2763 /* In case length is not in accordance with documentation */
2764 if ( length
!= 10) {
2765 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_encoding_error
, tvb
, 0, 1);
2769 * The UL/DL MBR fields shall be encoded as kilobits per second (1 kbps = 1000 bps) in binary value
2771 proto_tree_add_item(tree
, hf_pfcp_ul_gbr
, tvb
, offset
, len1
, ENC_BIG_ENDIAN
);
2774 /* 10 to 14 DL GBR */
2775 proto_tree_add_item(tree
, hf_pfcp_dl_gbr
, tvb
, offset
, len1
, ENC_BIG_ENDIAN
);
2778 if (offset
< length
) {
2779 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
2785 * 8.2.10 QER Correlation ID
2788 dissect_pfcp_qer_correlation_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
2792 /* 5 to 8 QER Correlation ID value */
2793 proto_tree_add_item_ret_uint(tree
, hf_pfcp_qer_correlation_id
, tvb
, offset
, 4, ENC_BIG_ENDIAN
, &value
);
2796 proto_item_append_text(item
, "%u", value
);
2798 if (offset
< length
) {
2799 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
2807 dissect_pfcp_precedence(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
2811 /* Octet 5 5 to 8 Precedence value */
2812 proto_tree_add_item_ret_uint(tree
, hf_pfcp_precedence
, tvb
, offset
, 4, ENC_BIG_ENDIAN
, &value
);
2815 proto_item_append_text(item
, "%u", value
);
2817 if (offset
< length
) {
2818 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
2823 * 8.2.12 Transport Level Marking
2826 dissect_pfcp_transport_level_marking(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
2829 proto_item
*dscp_it
;
2830 const char *dscp_str
;
2833 /* Octet 5 to 6 ToS/Traffic Class
2834 * The ToS/Traffic Class shall be encoded on two octets as an OctetString.
2835 * The first octet shall contain the IPv4 Type-of-Service or the IPv6 Traffic-Class field and the second octet shall contain the ToS/Traffic Class mask field
2837 proto_tree_add_item_ret_uint(tree
, hf_pfcp_traffic_class
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &tos
);
2839 proto_tree_add_item_ret_uint(tree
, hf_pfcp_traffic_mask
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &mask
);
2842 /* display DSCP value */
2843 dscp_str
= val_to_str_ext_const(((tos
& mask
) >> 2), &dscp_vals_ext
, "Unknown");
2844 dscp_it
= proto_tree_add_string(tree
, hf_pfcp_traffic_dscp
, tvb
, 0, 2, dscp_str
);
2845 proto_item_set_generated(dscp_it
);
2847 if (offset
< length
) {
2848 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
2854 * 8.2.13 Volume Threshold
2857 dissect_pfcp_volume_threshold(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
2862 static int * const pfcp_volume_threshold_flags
[] = {
2863 &hf_pfcp_spare_b7_b3
,
2864 &hf_pfcp_volume_threshold_b2_dlvol
,
2865 &hf_pfcp_volume_threshold_b1_ulvol
,
2866 &hf_pfcp_volume_threshold_b0_tovol
,
2869 /* Octet 5 Spare DLVOL ULVOL TOVOL*/
2870 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_volume_threshold_flags
, ENC_BIG_ENDIAN
, &flags_val
);
2873 /* The Total Volume, Uplink Volume and Downlink Volume fields shall be encoded as an Unsigned64 binary integer value.
2874 * They shall contain the total, uplink or downlink number of octets respectively.
2876 if ((flags_val
& 0x1) == 1) {
2877 /* m to (m+7) Total Volume
2878 * TOVOL: If this bit is set to "1", then the Total Volume field shall be present
2880 proto_tree_add_item(tree
, hf_pfcp_volume_threshold_tovol
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
2883 if ((flags_val
& 0x2) == 2) {
2884 /* p to (p+7) Uplink Volume
2885 * ULVOL: If this bit is set to "1", then the Uplink Volume field shall be present
2887 proto_tree_add_item(tree
, hf_pfcp_volume_threshold_ulvol
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
2890 if ((flags_val
& 0x4) == 4) {
2891 /* q to (q+7) Downlink Volume
2892 * DLVOL: If this bit is set to "1", then the Downlink Volume field shall be present
2894 proto_tree_add_item(tree
, hf_pfcp_volume_threshold_dlvol
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
2898 if (offset
< length
) {
2899 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
2903 * 8.2.14 Time Threshold
2906 dissect_pfcp_time_threshold(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
2911 /* Octet 5 to 8 Time Threshold
2912 * The Time Threshold field shall be encoded as an Unsigned32 binary integer value.
2913 * It shall contain the duration in seconds.
2915 proto_tree_add_item_ret_uint(tree
, hf_pfcp_time_threshold
, tvb
, offset
, 4, ENC_BIG_ENDIAN
, &value
);
2918 proto_item_append_text(item
, "%u s", value
);
2920 if (offset
< length
) {
2921 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
2927 * 8.2.15 Monitoring Time
2930 dissect_pfcp_monitoring_time(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
2935 /* The Monitoring Time field shall indicate the monitoring time in UTC time.
2936 * Octets 5 to 8 shall be encoded in the same format as the first four octets
2937 * of the 64-bit timestamp format as defined in section 6 of IETF RFC 5905.
2939 proto_tree_add_item_ret_time_string(tree
, hf_pfcp_monitoring_time
, tvb
, offset
, 4, ENC_TIME_NTP
| ENC_BIG_ENDIAN
, pinfo
->pool
, &time_str
);
2940 proto_item_append_text(item
, "%s", time_str
);
2943 if (offset
< length
) {
2944 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
2949 * 8.2.16 Subsequent Volume Threshold
2952 dissect_pfcp_subseq_volume_threshold(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
2957 static int * const pfcp_subseq_volume_threshold_flags
[] = {
2958 &hf_pfcp_spare_b7_b3
,
2959 &hf_pfcp_subseq_volume_threshold_b2_dlvol
,
2960 &hf_pfcp_subseq_volume_threshold_b1_ulvol
,
2961 &hf_pfcp_subseq_volume_threshold_b0_tovol
,
2964 /* Octet 5 Spare DLVOL ULVOL TOVOL*/
2965 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_subseq_volume_threshold_flags
, ENC_BIG_ENDIAN
, &flags_val
);
2968 /* The Total Volume, Uplink Volume and Downlink Volume fields shall be encoded as an Unsigned64 binary integer value.
2969 * They shall contain the total, uplink or downlink number of octets respectively.
2971 if ((flags_val
& 0x1) == 1) {
2972 /* m to (m+7) Total Volume
2973 * TOVOL: If this bit is set to "1", then the Total Volume field shall be present
2975 proto_tree_add_item(tree
, hf_pfcp_subseq_volume_threshold_tovol
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
2978 if ((flags_val
& 0x2) == 2) {
2979 /* p to (p+7) Uplink Volume
2980 * ULVOL: If this bit is set to "1", then the Uplink Volume field shall be present
2982 proto_tree_add_item(tree
, hf_pfcp_subseq_volume_threshold_ulvol
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
2985 if ((flags_val
& 0x4) == 4) {
2986 /* q to (q+7) Downlink Volume
2987 * DLVOL: If this bit is set to "1", then the Downlink Volume field shall be present
2989 proto_tree_add_item(tree
, hf_pfcp_subseq_volume_threshold_dlvol
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
2993 if (offset
< length
) {
2994 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
2999 * 8.2.17 Subsequent Time Threshold
3002 dissect_pfcp_subsequent_time_threshold(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
3006 /* 5 to 8 Subsequent Time Threshold */
3007 proto_tree_add_item_ret_uint(tree
, hf_pfcp_subsequent_time_threshold
, tvb
, offset
, 4, ENC_BIG_ENDIAN
, &value
);
3010 proto_item_append_text(item
, "%u s", value
);
3012 if (offset
< length
) {
3013 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
3017 * 8.2.18 Inactivity Detection Time
3020 dissect_pfcp_inactivity_detection_time(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
3024 /* 5 to 8 Inactivity Detection Time */
3025 proto_tree_add_item_ret_uint(tree
, hf_pfcp_inactivity_detection_time
, tvb
, offset
, 4, ENC_BIG_ENDIAN
, &value
);
3028 proto_item_append_text(item
, "%u s", value
);
3030 if (offset
< length
) {
3031 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
3036 * 8.2.19 Reporting Triggers
3039 dissect_pfcp_reporting_triggers(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
3043 static int * const pfcp_reporting_triggers_o5_flags
[] = {
3044 &hf_pfcp_reporting_triggers_o5_b7_liusa
,
3045 &hf_pfcp_reporting_triggers_o5_b6_droth
,
3046 &hf_pfcp_reporting_triggers_o5_b5_stopt
,
3047 &hf_pfcp_reporting_triggers_o5_b4_start
,
3048 &hf_pfcp_reporting_triggers_o5_b3_quhti
,
3049 &hf_pfcp_reporting_triggers_o5_b2_timth
,
3050 &hf_pfcp_reporting_triggers_o5_b1_volth
,
3051 &hf_pfcp_reporting_triggers_o5_b0_perio
,
3054 /* Octet 5 LIUSA DROTH STOPT START QUHTI TIMTH VOLTH PERIO */
3055 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_reporting_triggers_o5_flags
, ENC_BIG_ENDIAN
);
3058 if (offset
== length
) {
3062 static int * const pfcp_reporting_triggers_o6_flags
[] = {
3063 &hf_pfcp_reporting_triggers_o6_b7_quvti
,
3064 &hf_pfcp_reporting_triggers_o6_b6_ipmjl
,
3065 &hf_pfcp_reporting_triggers_o6_b5_evequ
,
3066 &hf_pfcp_reporting_triggers_o6_b4_eveth
,
3067 &hf_pfcp_reporting_triggers_o6_b3_macar
,
3068 &hf_pfcp_reporting_triggers_o6_b2_envcl
,
3069 &hf_pfcp_reporting_triggers_o6_b1_timqu
,
3070 &hf_pfcp_reporting_triggers_o6_b0_volqu
,
3073 /* Octet 6 QUVTI IPMJL EVEQU EVETH MACAR ENVCL TIMQU VOLQU */
3074 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_reporting_triggers_o6_flags
, ENC_BIG_ENDIAN
);
3077 if (offset
== length
) {
3081 static int * const pfcp_reporting_triggers_o7_flags
[] = {
3082 &hf_pfcp_spare_b7_b2
,
3083 &hf_pfcp_reporting_triggers_o7_b1_upint
,
3084 &hf_pfcp_reporting_triggers_o7_b0_reemr
,
3087 /* Octet 7 Spare Spare Spare Spare Spare Spare UPINT REEMR */
3088 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_reporting_triggers_o7_flags
, ENC_BIG_ENDIAN
);
3091 if (offset
== length
) {
3096 if (offset
< length
) {
3097 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
3103 * 8.2.20 Redirect Information
3105 static const value_string pfcp_redirect_address_type_vals
[] = {
3107 { 0, "IPv4 address" },
3108 { 1, "IPv6 address" },
3111 { 4, "IPv4 and IPv6 addresses" },
3113 { 6, "IPv4 address and Port" },
3114 { 7, "IPv6 address and Port" },
3115 { 8, "IPv4 and IPv6 addresses and Port" },
3120 dissect_pfcp_redirect_information(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
3123 uint32_t redirect_address_type
, addr_len
, other_addr_len
;
3125 /* Octet Spare Redirect Address Type */
3126 proto_tree_add_item(tree
, hf_pfcp_spare_h1
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3127 proto_tree_add_item_ret_uint(tree
, hf_pfcp_redirect_address_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &redirect_address_type
);
3130 /* If the Redirect Address Type is set to Port, the Redirect Address Server Address shall not be present */
3131 if(!(redirect_address_type
== 5)) {
3132 /* 6-7 Redirect Server Address Length=a */
3133 proto_tree_add_item_ret_uint(tree
, hf_pfcp_redirect_server_addr_len
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &addr_len
);
3136 /* 8-(8+a-1) Redirect Server Address */
3137 proto_tree_add_item(tree
, hf_pfcp_redirect_server_address
, tvb
, offset
, addr_len
, ENC_UTF_8
| ENC_NA
);
3140 /* - If the Redirect Address type is set to "IPv4 and IPv6 address", the Redirect Information IE shall include an IPv4 address
3141 * and an IPv6 address in the Redirect Server Address IE and Other Redirect Server Address.
3142 * - When Redirect Address Type is set to "IPv4 and IPv6 addresses and Port", the Other Redirect Server Address shall also be present.
3144 if((redirect_address_type
== 4) || (redirect_address_type
== 8)) {
3145 /* p-(p+1) Other Redirect Server Address Length=b */
3146 proto_tree_add_item_ret_uint(tree
, hf_pfcp_other_redirect_server_addr_len
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &other_addr_len
);
3149 /* (p+2)-(p+2+b-1) Other Redirect Server Address */
3150 proto_tree_add_item(tree
, hf_pfcp_other_redirect_server_address
, tvb
, offset
, other_addr_len
, ENC_UTF_8
| ENC_NA
);
3151 offset
+= other_addr_len
;
3155 if((redirect_address_type
== 5) || (redirect_address_type
== 6) || (redirect_address_type
== 7) || (redirect_address_type
== 8)) {
3156 /* m to (m+1) Port */
3157 proto_tree_add_item(tree
, hf_pfcp_redirect_port
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
3161 if (offset
< length
) {
3162 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
3166 * 8.2.21 Report Type
3169 dissect_pfcp_report_type(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
3173 static int * const pfcp_report_type_flags
[] = {
3175 &hf_pfcp_report_type_b6_uisr
,
3176 &hf_pfcp_report_type_b5_sesr
,
3177 &hf_pfcp_report_type_b4_tmir
,
3178 &hf_pfcp_report_type_b3_upir
,
3179 &hf_pfcp_report_type_b2_erir
,
3180 &hf_pfcp_report_type_b1_usar
,
3181 &hf_pfcp_report_type_b0_dldr
,
3184 /* Octet 5 Spare UISR SESR TMIR UPIR ERIR USAR DLDR */
3185 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_report_type_flags
, ENC_BIG_ENDIAN
);
3188 if (offset
< length
) {
3189 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
3194 * 8.2.22 Offending IE
3197 dissect_pfcp_offending_ie(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
3200 /* Octet 5 to 6 Type of the offending IE */
3201 proto_tree_add_item_ret_uint(tree
, hf_pfcp_offending_ie
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &value
);
3203 proto_item_append_text(item
, "%s", val_to_str_const(value
, pfcp_ie_type
, "Unknown"));
3207 * 8.2.23 Forwarding Policy
3210 dissect_pfcp_forwarding_policy(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
3215 /* Octet Forwarding Policy Identifier Length */
3216 proto_tree_add_item_ret_uint(tree
, hf_pfcp_forwarding_policy_id_len
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &id_len
);
3219 proto_tree_add_item(tree
, hf_pfcp_forwarding_policy_id
, tvb
, offset
, id_len
, ENC_NA
);
3222 if (offset
< length
) {
3223 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
3228 * 8.2.24 Destination Interface
3230 static const value_string pfcp_dst_interface_vals
[] = {
3234 { 2, "SGi-LAN/N6-LAN" },
3235 { 3, "CP- Function" },
3236 { 4, "LI Function" },
3237 { 5, "5G VN Internal" },
3242 decode_pfcp_destination_interface(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, int offset
, int length
)
3246 /* Octet 5 Spare Interface value*/
3247 proto_tree_add_item(tree
, hf_pfcp_spare_h1
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3248 proto_tree_add_item_ret_uint(tree
, hf_pfcp_dst_interface
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
3251 proto_item_append_text(item
, "%s", val_to_str_const(value
, pfcp_dst_interface_vals
, "Unknown"));
3253 if (offset
< length
) {
3254 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
3260 dissect_pfcp_destination_interface(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
3264 decode_pfcp_destination_interface(tvb
, pinfo
, tree
, item
, offset
, length
);
3268 * 8.2.25 UP Function Features
3271 dissect_pfcp_up_function_features(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
3275 static int * const pfcp_up_function_features_o5_flags
[] = {
3276 &hf_pfcp_up_function_features_o5_b7_treu
,
3277 &hf_pfcp_up_function_features_o5_b6_heeu
,
3278 &hf_pfcp_up_function_features_o5_b5_pfdm
,
3279 &hf_pfcp_up_function_features_o5_b4_ftup
,
3280 &hf_pfcp_up_function_features_o5_b3_trst
,
3281 &hf_pfcp_up_function_features_o5_b2_dlbd
,
3282 &hf_pfcp_up_function_features_o5_b1_ddnd
,
3283 &hf_pfcp_up_function_features_o5_b0_bucp
,
3286 /* Octet 5 TREU HEEU PFDM FTUP TRST DLBD DDND BUCP */
3287 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_up_function_features_o5_flags
, ENC_BIG_ENDIAN
);
3290 if (offset
== length
) {
3294 static int * const pfcp_up_function_features_o6_flags
[] = {
3295 &hf_pfcp_up_function_features_o6_b7_epfar
,
3296 &hf_pfcp_up_function_features_o6_b6_pfde
,
3297 &hf_pfcp_up_function_features_o6_b5_frrt
,
3298 &hf_pfcp_up_function_features_o6_b4_trace
,
3299 &hf_pfcp_up_function_features_o6_b3_quoac
,
3300 &hf_pfcp_up_function_features_o6_b2_udbc
,
3301 &hf_pfcp_up_function_features_o6_b1_pdiu
,
3302 &hf_pfcp_up_function_features_o6_b0_empu
,
3305 /* Octet 6 EPFAR PFDE FRRT TRACE QUOAC UDBC PDIU EMPU */
3306 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_up_function_features_o6_flags
, ENC_BIG_ENDIAN
);
3309 if (offset
== length
) {
3313 static int * const pfcp_up_function_features_o7_flags
[] = {
3314 &hf_pfcp_up_function_features_o7_b7_gcom
,
3315 &hf_pfcp_up_function_features_o7_b6_bundl
,
3316 &hf_pfcp_up_function_features_o7_b5_mte_n4
,
3317 &hf_pfcp_up_function_features_o7_b4_mnop
,
3318 &hf_pfcp_up_function_features_o7_b3_sset
,
3319 &hf_pfcp_up_function_features_o7_b2_ueip
,
3320 &hf_pfcp_up_function_features_o7_b1_adpdp
,
3321 &hf_pfcp_up_function_features_o7_b0_dpdra
,
3324 /* Octet 7 GCOM BUNDL MTE N4 MNOP SSET UEIP ADPDP DPDRA */
3325 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_up_function_features_o7_flags
, ENC_BIG_ENDIAN
);
3328 if (offset
== length
) {
3332 static int * const pfcp_up_function_features_o8_flags
[] = {
3333 &hf_pfcp_up_function_features_o8_b7_mptcp
,
3334 &hf_pfcp_up_function_features_o8_b6_tsn
,
3335 &hf_pfcp_up_function_features_o8_b5_ip6pl
,
3336 &hf_pfcp_up_function_features_o8_b4_iptv
,
3337 &hf_pfcp_up_function_features_o8_b3_norp
,
3338 &hf_pfcp_up_function_features_o8_b2_vtime
,
3339 &hf_pfcp_up_function_features_o8_b1_rttl
,
3340 &hf_pfcp_up_function_features_o8_b0_mpas
,
3343 /* Octet 8 MPTCP TSN IP6PL IPTV NORP VTIME RTTL MPAS */
3344 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_up_function_features_o8_flags
, ENC_BIG_ENDIAN
);
3347 if (offset
== length
) {
3351 static int * const pfcp_up_function_features_o9_flags
[] = {
3352 &hf_pfcp_up_function_features_o9_b7_rds
,
3353 &hf_pfcp_up_function_features_o9_b6_ddds
,
3354 &hf_pfcp_up_function_features_o9_b5_ethar
,
3355 &hf_pfcp_up_function_features_o9_b4_ciot
,
3356 &hf_pfcp_up_function_features_o9_b3_mt_edt
,
3357 &hf_pfcp_up_function_features_o9_b2_gpqm
,
3358 &hf_pfcp_up_function_features_o9_b1_qfqm
,
3359 &hf_pfcp_up_function_features_o9_b0_atsss_ll
,
3362 /* Octet 9 RDS DDDS ETHAR CIOT MT-EDT GPQM QFQM ATSSS-LL */
3363 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_up_function_features_o9_flags
, ENC_BIG_ENDIAN
);
3366 if (offset
== length
) {
3370 static int * const pfcp_up_function_features_o10_flags
[] = {
3371 &hf_pfcp_up_function_features_o10_b7_dnsts
,
3372 &hf_pfcp_up_function_features_o10_b6_iprep
,
3373 &hf_pfcp_up_function_features_o10_b5_resps
,
3374 &hf_pfcp_up_function_features_o10_b4_upber
,
3375 &hf_pfcp_up_function_features_o10_b3_l2tp
,
3376 &hf_pfcp_up_function_features_o10_b2_nspoc
,
3377 &hf_pfcp_up_function_features_o10_b1_quasf
,
3378 &hf_pfcp_up_function_features_o10_b0_rttwp
,
3381 /* Octet 10 DNSTS IPREP RESPS UPBER L2TP NSPOC QUOSF RTTWP */
3382 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_up_function_features_o10_flags
, ENC_BIG_ENDIAN
);
3385 if (offset
== length
) {
3389 static int * const pfcp_up_function_features_o11_flags
[] = {
3390 &hf_pfcp_up_function_features_o11_b7_mpquic
,
3391 &hf_pfcp_up_function_features_o11_b6_afsfc
,
3392 &hf_pfcp_up_function_features_o11_b5_upidp
,
3393 &hf_pfcp_up_function_features_o11_b4_ratp
,
3394 &hf_pfcp_up_function_features_o11_b3_eppi
,
3395 &hf_pfcp_up_function_features_o11_b2_psuprm
,
3396 &hf_pfcp_up_function_features_o11_b1_mbsn4
,
3397 &hf_pfcp_up_function_features_o11_b0_drqos
,
3400 /* Octet 11 MPQUIC AFSFC UPIDP RATP EPPI PSUPRM MBSN4 DRQOS */
3401 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_up_function_features_o11_flags
, ENC_BIG_ENDIAN
);
3404 if (offset
== length
) {
3408 static int * const pfcp_up_function_features_o12_flags
[] = {
3409 &hf_pfcp_up_function_features_o12_b7_eml4s
,
3410 &hf_pfcp_up_function_features_o12_b6_detnet
,
3411 &hf_pfcp_up_function_features_o12_b5_qmcon
,
3412 &hf_pfcp_up_function_features_o12_b4_n6jedb
,
3413 &hf_pfcp_up_function_features_o12_b3_drtsc
,
3414 &hf_pfcp_up_function_features_o12_b2_tscts
,
3415 &hf_pfcp_up_function_features_o12_b1_dbdm
,
3416 &hf_pfcp_up_function_features_o12_b0_redsm
,
3419 /* Octet 12 EML4S DETNET QMCON N6JEDB DRTSC TSCTS DBDM REDSM */
3420 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_up_function_features_o12_flags
, ENC_BIG_ENDIAN
);
3423 if (offset
== length
) {
3427 static int * const pfcp_up_function_features_o13_flags
[] = {
3428 &hf_pfcp_up_function_features_o13_b7_un6tu
,
3429 &hf_pfcp_up_function_features_o13_b6_umn6ip
,
3430 &hf_pfcp_up_function_features_o13_b5_upsbies
,
3431 &hf_pfcp_up_function_features_o13_b4_mtsdt
,
3432 &hf_pfcp_up_function_features_o13_b3_edbnc
,
3433 &hf_pfcp_up_function_features_o13_b2_qmdrm
,
3434 &hf_pfcp_up_function_features_o13_b1_cntl
,
3435 &hf_pfcp_up_function_features_o13_b0_pdusm
,
3438 /* Octet 13 UN6TU UMN6IP UPSBIES MT-SDT EDBNC QMDRM CN-TL PDUSM */
3439 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_up_function_features_o13_flags
, ENC_BIG_ENDIAN
);
3442 if (offset
== length
) {
3446 static int * const pfcp_up_function_features_o14_flags
[] = {
3447 &hf_pfcp_spare_b7_b6
,
3448 &hf_pfcp_up_function_features_o14_b0_mbsch
,
3451 /* Octet 13 Spare MBSCH */
3452 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_up_function_features_o14_flags
, ENC_BIG_ENDIAN
);
3455 if (offset
== length
) {
3458 if (offset
< length
) {
3459 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
3464 * 8.2.26 Apply Action
3467 dissect_pfcp_apply_action(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
3471 static int * const pfcp_apply_action_o5_flags
[] = {
3472 &hf_pfcp_apply_action_flags_o5_b7_dfrt
,
3473 &hf_pfcp_apply_action_flags_o5_b6_ipmd
,
3474 &hf_pfcp_apply_action_flags_o5_b5_ipma
,
3475 &hf_pfcp_apply_action_flags_o5_b4_dupl
,
3476 &hf_pfcp_apply_action_flags_o5_b3_nocp
,
3477 &hf_pfcp_apply_action_flags_o5_b2_buff
,
3478 &hf_pfcp_apply_action_flags_o5_b1_forw
,
3479 &hf_pfcp_apply_action_flags_o5_b0_drop
,
3482 /* Octet 5 DFRT IPMD IPMA DUPL NOCP BUFF FORW DROP */
3483 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_apply_action_o5_flags
, ENC_BIG_ENDIAN
);
3486 if (offset
== length
) {
3490 static int * const pfcp_apply_action_o6_flags
[] = {
3491 &hf_pfcp_spare_b7_b5
,
3492 &hf_pfcp_apply_action_flags_o6_b4_mbsu
,
3493 &hf_pfcp_apply_action_flags_o6_b3_fssm
,
3494 &hf_pfcp_apply_action_flags_o6_b2_ddpn
,
3495 &hf_pfcp_apply_action_flags_o6_b1_bdpn
,
3496 &hf_pfcp_apply_action_flags_o6_b0_edrt
,
3499 /* Octet 6 Spare MBSU FSSM DDPN BDPN EDRT */
3500 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_apply_action_o6_flags
, ENC_BIG_ENDIAN
);
3503 if (offset
< length
) {
3504 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
3509 * 8.2.27 Downlink Data Service Information
3512 dissect_pfcp_dl_data_service_inf(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
3517 static int * const pfcp_dl_data_service_inf_flags
[] = {
3518 &hf_pfcp_spare_b7_b3
,
3519 &hf_pfcp_dl_data_service_inf_b2_dlpsi
,
3520 &hf_pfcp_dl_data_service_inf_b1_qfii
,
3521 &hf_pfcp_dl_data_service_inf_b0_ppi
,
3524 /* Octet 5 Spare DLPSI QFII PPI */
3525 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_dl_data_service_inf_flags
, ENC_BIG_ENDIAN
, &flags
);
3528 /* The PPI flag in octet 5 indicates whether the Paging Policy Indication value in octet 'm' shall be present */
3529 if ((flags
& 0x1) == 1) {
3530 /* m Spare Paging Policy Indication value
3531 * encoded as the DSCP in TOS (IPv4) or TC (IPv6) information received in the IP payload of the GTP-U packet
3532 * from the PGW (see IETF RFC 2474
3534 proto_tree_add_item(tree
, hf_pfcp_spare_b7_b6
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3535 proto_tree_add_item(tree
, hf_pfcp_paging_policy_indication
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3539 /* The QFII flag in octet 5 indicates whether the QFI value in octet 'p' shall be present */
3540 if ((flags
& 0x2) == 2) {
3541 /* m Spare QFI value
3542 * encoded as the octet 5 of the QFI IE in subclause 8.2.89.
3544 proto_tree_add_item(tree
, hf_pfcp_spare_b7_b6
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3545 proto_tree_add_item(tree
, hf_pfcp_qfi
, tvb
, offset
, 1, ENC_NA
);
3549 /* The DLPSI flag in octet 5 indicates whether the DL Data Packet Size value in octet 'q' to 'q+1' shall be present */
3550 if ((flags
& 0x4) == 4) {
3552 * DL Data Packet Size
3554 proto_tree_add_item(tree
, hf_pfcp_dldatapacketsize
, tvb
, offset
, 2, ENC_NA
);
3558 if (offset
< length
) {
3559 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
3564 * 8.2.28 Downlink Data Notification Delay
3567 dissect_pfcp_dl_data_notification_delay(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
3571 /* Octet 5 Delay Value in integer multiples of 50 millisecs, or zero */
3572 proto_tree_add_item_ret_uint(tree
, hf_pfcp_dl_data_notification_delay
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
3575 proto_item_append_text(item
, "%u ms", value
* 50);
3577 if (offset
< length
) {
3578 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
3583 * 8.2.29 DL Buffering Duration
3585 static const value_string pfcp_timer_unit_vals
[] = {
3586 { 0, "value is incremented in multiples of 2 seconds" },
3587 { 1, "value is incremented in multiples of 1 minute" },
3588 { 2, "value is incremented in multiples of 10 minutes" },
3589 { 3, "value is incremented in multiples of 1 hour" },
3590 { 4, "value is incremented in multiples of 10 hour" },
3591 { 5, "values shall be interpreted as multiples of 1 minute(version 14.0.0)" },
3592 { 6, "values shall be interpreted as multiples of 1 minute(version 14.0.0)" },
3593 { 7, "value indicates that the timer is infinite" },
3598 dissect_pfcp_dl_buffering_dur(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
3601 uint32_t unit
, value
;
3603 /* Octet 5 Timer unit Timer value */
3604 proto_tree_add_item_ret_uint(tree
, hf_pfcp_timer_unit
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &unit
);
3605 proto_tree_add_item_ret_uint(tree
, hf_pfcp_timer_value
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
3608 if ((unit
== 0) && (value
== 0)) {
3609 proto_item_append_text(item
, " Stopped");
3613 proto_item_append_text(item
, "%u s", value
* 2);
3616 proto_item_append_text(item
, "%u min", value
);
3619 proto_item_append_text(item
, "%u min", value
* 10);
3622 proto_item_append_text(item
, "%u hours", value
);
3625 proto_item_append_text(item
, "%u hours", value
* 10);
3628 proto_item_append_text(item
, "Infinite (%u)", value
);
3632 proto_item_append_text(item
, "%u min", value
);
3637 if (offset
< length
) {
3638 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
3644 * 8.2.30 DL Buffering Suggested Packet Count
3647 dissect_pfcp_dl_buffering_suggested_packet_count(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
3650 /* Octet 5 to n+4 Packet Count Value
3651 * The length shall be set to 1 or 2 octets.
3653 proto_tree_add_item_ret_uint(tree
, hf_pfcp_packet_count
, tvb
, 0, length
, ENC_BIG_ENDIAN
, &value
);
3655 proto_item_append_text(item
, "%u", value
);
3658 * 8.2.31 PFCPSMReq-Flags
3661 dissect_pfcp_pfcpsmreq_flags(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
3665 static int * const pfcp_pfcpsmreq_flags
[] = {
3667 &hf_pfcp_pfcpsmreq_flags_b6_hrsbom
,
3668 &hf_pfcp_pfcpsmreq_flags_b5_deteid
,
3669 &hf_pfcp_pfcpsmreq_flags_b4_rumuc
,
3670 &hf_pfcp_pfcpsmreq_flags_b3_sumpc
,
3671 &hf_pfcp_pfcpsmreq_flags_b2_qaurr
,
3672 &hf_pfcp_pfcpsmreq_flags_b1_sndem
,
3673 &hf_pfcp_pfcpsmreq_flags_b0_drobu
,
3676 /* Octet 5 Spare HRBOM DETEID RUMUC SUMPC QAURR SNDEM DROBU */
3677 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_pfcpsmreq_flags
, ENC_BIG_ENDIAN
);
3680 if (offset
< length
) {
3681 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
3686 * 8.2.32 PFCPSRRsp-Flags
3689 dissect_pfcp_pfcpsrrsp_flags(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
3693 static int * const pfcp_pfcpsrrsp_flags
[] = {
3694 &hf_pfcp_spare_b7_b1
,
3695 &hf_pfcp_pfcpsrrsp_flags_b0_drobu
,
3698 /* Octet 5 Spare Spare Spare Spare Spare Spare Spare DROBU */
3699 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_pfcpsrrsp_flags
, ENC_BIG_ENDIAN
);
3702 if (offset
< length
) {
3703 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
3709 * 8.2.33 Sequence Number
3712 dissect_pfcp_sequence_number(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
3715 /* Octet 5 to 8 Sequence Number */
3716 proto_tree_add_item_ret_uint(tree
, hf_pfcp_sequence_number
, tvb
, 0, 4, ENC_BIG_ENDIAN
, &value
);
3718 proto_item_append_text(item
, "%u", value
);
3726 dissect_pfcp_metric(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
3729 /* Octet 5 Metric */
3730 proto_tree_add_item_ret_uint(tree
, hf_pfcp_metric
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &value
);
3732 proto_item_append_text(item
, "%u", value
);
3740 dissect_pfcp_timer(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
3743 uint32_t unit
, value
;
3745 /* Octet 5 Timer unit Timer value */
3746 proto_tree_add_item_ret_uint(tree
, hf_pfcp_timer_unit
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &unit
);
3747 proto_tree_add_item_ret_uint(tree
, hf_pfcp_timer_value
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
3750 if ((unit
== 0) && (value
== 0)) {
3751 proto_item_append_text(item
, " Stopped");
3755 proto_item_append_text(item
, "%u s", value
* 2);
3758 proto_item_append_text(item
, "%u min", value
);
3761 proto_item_append_text(item
, "%u min", value
* 10);
3764 proto_item_append_text(item
, "%u hours", value
);
3767 proto_item_append_text(item
, "%u hours", value
* 10);
3770 proto_item_append_text(item
, "%u Infinite", value
);
3774 proto_item_append_text(item
, "%u min", value
* 1);
3779 if (offset
< length
) {
3780 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
3789 decode_pfcp_pdr_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, int offset
, pfcp_session_args_t
*args
)
3792 /* Octet 5 to 6 Rule ID*/
3793 proto_tree_add_item_ret_uint(tree
, hf_pfcp_pdr_id
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &rule_id
);
3796 proto_item_append_text(item
, "%u", rule_id
);
3799 args
->last_rule_ids
.pdr
= rule_id
;
3806 dissect_pfcp_pdr_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args
)
3810 offset
= decode_pfcp_pdr_id(tvb
, pinfo
, tree
, item
, offset
, args
);
3812 if (offset
< length
) {
3813 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
3820 dissect_pfcp_f_seid(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args
)
3823 uint64_t f_seid_flags
;
3824 address
*ipv4
= NULL
, *ipv6
= NULL
;
3825 uint64_t seid_cp
, *seid
;
3828 static int * const pfcp_f_seid_flags
[] = {
3839 /* Octet 5 Spare Spare Spare Spare Spare Spare V4 V6*/
3840 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_f_seid_flags
, ENC_BIG_ENDIAN
, &f_seid_flags
);
3843 if ((f_seid_flags
& 0x3) == 0) {
3844 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_encoding_error
, tvb
, 0, 1);
3847 /* Octet 6 to 13 SEID */
3848 proto_tree_add_item_ret_uint64(tree
, hf_pfcp_seid
, tvb
, offset
, 8, ENC_BIG_ENDIAN
, &seid_cp
);
3849 proto_item_append_text(item
, "SEID: 0x%s", tvb_bytes_to_str(pinfo
->pool
, tvb
, offset
, 8));
3851 /* IPv4 address (if present)*/
3852 if ((f_seid_flags
& 0x2) == 2) {
3853 ipv4
= wmem_new0(pinfo
->pool
, address
);
3854 proto_tree_add_item(tree
, hf_pfcp_f_seid_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
3855 proto_item_append_text(item
, ", IPv4 %s", tvb_ip_to_str(pinfo
->pool
, tvb
, offset
));
3856 set_address_tvb(ipv4
, AT_IPv4
, 4, tvb
, offset
);
3859 /* IPv6 address (if present)*/
3860 if ((f_seid_flags
& 0x1) == 1) {
3861 ipv6
= wmem_new0(pinfo
->pool
, address
);
3862 proto_tree_add_item(tree
, hf_pfcp_f_seid_ipv6
, tvb
, offset
, 16, ENC_NA
);
3863 proto_item_append_text(item
, ", IPv6 %s", tvb_ip6_to_str(pinfo
->pool
, tvb
, offset
));
3864 set_address_tvb(ipv6
, AT_IPv6
, 16, tvb
, offset
);
3868 if (g_pfcp_session
) {
3869 session
= (uint32_t *)g_hash_table_lookup(pfcp_session_table
, &pinfo
->num
);
3871 /* We save the seid so that we could assignate its corresponding session ID later */
3872 args
->last_seid
= seid_cp
;
3873 if (!pfcp_seid_exists(seid_cp
, args
->seid_list
)) {
3874 seid
= wmem_new(pinfo
->pool
, uint64_t);
3876 wmem_list_prepend(args
->seid_list
, seid
);
3878 if (ipv4
!= NULL
&& !pfcp_ip_exists(*ipv4
, args
->ip_list
)) {
3879 copy_address_wmem(pinfo
->pool
, &args
->last_ip
, ipv4
);
3880 wmem_list_prepend(args
->ip_list
, ipv4
);
3882 if (ipv6
!= NULL
&& !pfcp_ip_exists(*ipv6
, args
->ip_list
)) {
3883 copy_address_wmem(pinfo
->pool
, &args
->last_ip
, ipv6
);
3884 wmem_list_prepend(args
->ip_list
, ipv6
);
3889 if (offset
< length
) {
3890 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
3898 static const value_string pfcp_node_id_type_vals
[] = {
3900 { 0, "IPv4 address" },
3901 { 1, "IPv6 address" },
3907 decode_pfcp_fqdn(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, int offset
, uint16_t length
)
3910 uint8_t *fqdn
= NULL
;
3912 /* FQDN, the Node ID value encoding shall be identical to the encoding of a FQDN
3913 * within a DNS message of section 3.1 of IETF RFC 1035 [27] but excluding the trailing zero byte.
3917 name_len
= tvb_get_uint8(tvb
, offset
);
3918 /* NOTE 1: The FQDN field in the IE is not encoded as a dotted string as commonly used in DNS master zone files. */
3919 if (name_len
< 0x40) {
3920 fqdn
= tvb_get_string_enc(pinfo
->pool
, tvb
, offset
, length
- 1, ENC_APN_STR
);
3922 /* In case the FQDN field is incorrectly in dotted string form.*/
3924 fqdn
= tvb_get_string_enc(pinfo
->pool
, tvb
, offset
, length
- 1, ENC_ASCII
);
3925 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_encoding_error
, tvb
, offset
, length
- 1);
3927 proto_tree_add_string(tree
, hf_pfcp_node_id_fqdn
, tvb
, offset
, length
- 1, fqdn
);
3928 proto_item_append_text(item
, "%s", fqdn
);
3929 offset
+= length
- 1;
3935 decode_pfcp_address(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, int offset
, uint16_t length
)
3937 uint32_t node_id_type
;
3939 /* Octet 5 Spare Node ID Type*/
3940 proto_tree_add_item(tree
, hf_pfcp_spare_h1
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
3941 proto_tree_add_item_ret_uint(tree
, hf_pfcp_node_id_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &node_id_type
);
3942 proto_item_append_text(item
, "%s: ", val_to_str_const(node_id_type
, pfcp_node_id_type_vals
, "Unknown"));
3945 switch (node_id_type
) {
3948 proto_tree_add_item(tree
, hf_pfcp_node_id_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
3949 proto_item_append_text(item
, "%s", tvb_ip_to_str(pinfo
->pool
, tvb
, offset
));
3954 proto_tree_add_item(tree
, hf_pfcp_node_id_ipv6
, tvb
, offset
, 16, ENC_NA
);
3955 proto_item_append_text(item
, "%s", tvb_ip6_to_str(pinfo
->pool
, tvb
, offset
));
3960 offset
= decode_pfcp_fqdn(tvb
, pinfo
, tree
, item
, offset
, length
);
3968 dissect_pfcp_node_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
3972 offset
= decode_pfcp_address(tvb
, pinfo
, tree
, item
, offset
, length
);
3974 if (offset
< length
) {
3975 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
3980 * 8.2.39 PFD Contents
3983 dissect_pfcp_pfd_contents(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
3986 int dissected_len
= 0;
3989 proto_tree
*afd_tree
, *aurl_tree
, *adnp_tree
;
3991 static int * const pfcp_pfd_contents_flags
[] = {
3992 &hf_pfcp_pfd_contents_flags_b7_adnp
,
3993 &hf_pfcp_pfd_contents_flags_b6_aurl
,
3994 &hf_pfcp_pfd_contents_flags_b5_afd
,
3995 &hf_pfcp_pfd_contents_flags_b4_dnp
,
3996 &hf_pfcp_pfd_contents_flags_b3_cp
,
3997 &hf_pfcp_pfd_contents_flags_b2_dn
,
3998 &hf_pfcp_pfd_contents_flags_b1_url
,
3999 &hf_pfcp_pfd_contents_flags_b0_fd
,
4002 /* Octet 5 ADNP AURL AFD DNP CP DN URL FD */
4003 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_pfd_contents_flags
, ENC_BIG_ENDIAN
, &flags
);
4006 // Octet 6 Spare Octet
4007 proto_tree_add_item(tree
, hf_pfcp_spare_oct
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
4010 /* Bit 1 - FD (Flow Description): If this bit is set to "1", then the Length of Flow Description
4011 * and the Flow Description fields shall be present
4014 /* The Flow Description field, when present, shall be encoded as an OctetString
4015 * as specified in subclause 6.4.3.7 of 3GPP TS 29.251
4017 /* m to (m+1) Length of Flow Description */
4018 proto_tree_add_item_ret_uint(tree
, hf_pfcp_flow_desc_len
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &len
);
4021 /* (m+2) to p Flow Description */
4022 proto_tree_add_item(tree
, hf_pfcp_flow_desc
, tvb
, offset
, len
, ENC_ASCII
);
4026 /* Bit 2 - URL (URL): The URL field, when present,
4027 * shall be encoded as an OctetString as specified in subclause 6.4.3.8 of 3GPP TS 29.251 [21].
4030 /* q to (q+1) Length of URL */
4031 proto_tree_add_item_ret_uint(tree
, hf_pfcp_url_len
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &len
);
4034 /* (q+2) to r URL */
4035 proto_tree_add_item(tree
, hf_pfcp_url
, tvb
, offset
, len
, ENC_ASCII
);
4040 /* Bit 3 - DN (Domain Name): The Domain Name field, when present,
4041 * shall be encoded as an OctetString as specified in subclause 6.4.3.9 of 3GPP TS 29.251 [21].
4044 /* s to (s+1) Length of Domain Name */
4045 proto_tree_add_item_ret_uint(tree
, hf_pfcp_dn_len
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &len
);
4048 /* (s+2) to t Domain Name */
4049 proto_tree_add_item(tree
, hf_pfcp_dn
, tvb
, offset
, len
, ENC_ASCII
);
4053 /* Bit 4 - CP (Custom PFD Content): If this bit is set to "1", then the Length of Custom PFD Content and
4054 * the Custom PFD Content fields shall be present
4057 /* u to (u+1) Length of Custom PFD Content */
4058 proto_tree_add_item_ret_uint(tree
, hf_pfcp_cp_len
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &len
);
4061 /* (u+2) to v Custom PFD Content */
4062 proto_tree_add_item(tree
, hf_pfcp_cp
, tvb
, offset
, len
, ENC_NA
);
4066 /* Bit 5 - DNP (Domain Name Protocol): If this bit is set to "1", then the Length of Domain Name Protocol and
4067 * the Domain Name Protocol shall be present, otherwise they shall not be present; and if this bit is set to "1",
4068 * the Length of Domain Name and the Domain Name fields shall also be present.
4071 /* The Domain Name Protocol field, when present, shall be encoded as an OctetString
4072 * as specified in subclause 6.4.3.x of 3GPP TS 29.251 [21].
4074 /* w to (w+1) Length of Domain Name Protocol */
4075 proto_tree_add_item_ret_uint(tree
, hf_pfcp_dnp_len
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &len
);
4078 /* (w+2) to x Domain Name Protocol */
4079 proto_tree_add_item(tree
, hf_pfcp_dnp
, tvb
, offset
, len
, ENC_ASCII
);
4084 /* Bit 6 - AFD (Additional Flow Description): If this bit is set to "1",
4085 * the Length of Additional Flow Description and the Additional Flow Description field shall be present,
4086 * otherwise they shall not be present.
4089 /* y to (y+1) Length of Additional Flow Description */
4090 proto_tree_add_item_ret_uint(tree
, hf_pfcp_afd_len
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &len
);
4093 /* (y+2) to z Additional Flow Description */
4095 afd_tree
= proto_item_add_subtree(item
, ett_pfcp_adf
);
4096 while (dissected_len
< (int)len
) {
4097 uint32_t flow_desc_len
;
4098 /* (y+2) to (y+3) Length of Flow Description */
4099 proto_tree_add_item_ret_uint(afd_tree
, hf_pfcp_flow_desc_len
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &flow_desc_len
);
4103 /* (y+4) to i Flow Description */
4104 proto_tree_add_item(afd_tree
, hf_pfcp_flow_desc
, tvb
, offset
, flow_desc_len
, ENC_ASCII
);
4105 offset
+= flow_desc_len
;
4106 dissected_len
+= flow_desc_len
;
4110 /* Bit 7 - AURL (Additional URL): If this bit is set to "1",
4111 * the Length of Additional URL and the Additional URL field shall be present,
4112 * otherwise they shall not be present.
4115 /* a to (a+1) Length of Additional URL */
4116 proto_tree_add_item_ret_uint(tree
, hf_pfcp_aurl_len
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &len
);
4119 /* (a+2) to b Additional URL */
4121 aurl_tree
= proto_item_add_subtree(item
, ett_pfcp_aurl
);
4122 while (dissected_len
< (int)len
) {
4124 /* (a+2) to (a+3) Length of URL */
4125 proto_tree_add_item_ret_uint(aurl_tree
, hf_pfcp_url_len
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &url_len
);
4129 /* (a+4) to o URL */
4130 proto_tree_add_item(aurl_tree
, hf_pfcp_url
, tvb
, offset
, url_len
, ENC_ASCII
);
4131 dissected_len
+= url_len
;
4136 /* Bit 8 - ADNP (Additional Domain Name and Domain Name Protocol): If this bit is set to "1",
4137 * the Length of Additional Domain Name and Domain Name Protocol, and the Additional Domain Name and
4138 * Domain Name Protocol field shall be present, otherwise they shall not be present.
4141 /* c to (c+1) Length of Additional Domain Name and Domain Name Protocol */
4142 proto_tree_add_item_ret_uint(tree
, hf_pfcp_adnp_len
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &len
);
4145 /* (c+2) to d Additional Domain Name and Domain Name Protocol */
4147 adnp_tree
= proto_item_add_subtree(item
, ett_pfcp_adnp
);
4148 while (dissected_len
< (int)len
) {
4149 uint32_t domain_name_len
, domain_name_prot_len
;
4150 /* (c+2) to (c+3) Length of Domain Name */
4151 proto_tree_add_item_ret_uint(adnp_tree
, hf_pfcp_dn_len
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &domain_name_len
);
4155 /* (c+4) to pd Domain Name */
4156 proto_tree_add_item(adnp_tree
, hf_pfcp_dn
, tvb
, offset
, domain_name_len
, ENC_ASCII
);
4157 dissected_len
+= domain_name_len
;
4158 offset
+= domain_name_len
;
4160 /* (pe) to (pe+1) Length of Domain Name Protocol */
4161 proto_tree_add_item_ret_uint(adnp_tree
, hf_pfcp_dnp_len
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &domain_name_prot_len
);
4165 /* (pe+2) to ph Domain Name Protocol */
4166 proto_tree_add_item(adnp_tree
, hf_pfcp_dnp
, tvb
, offset
, domain_name_prot_len
, ENC_ASCII
);
4167 dissected_len
+= domain_name_prot_len
;
4168 offset
+= domain_name_prot_len
;
4172 if (offset
< length
) {
4173 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4178 * 8.2.40 Measurement Method
4181 dissect_pfcp_measurement_method(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
4185 static int * const pfcp_measurement_method_flags
[] = {
4186 &hf_pfcp_spare_b7_b3
,
4187 &hf_pfcp_measurement_method_flags_b2_event
,
4188 &hf_pfcp_measurement_method_flags_b1_volume
,
4189 &hf_pfcp_measurement_method_flags_b0_durat
,
4192 /* Octet 5 Spare Spare Spare Spare Spare EVENT VOLUM DURAT */
4193 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_measurement_method_flags
, ENC_BIG_ENDIAN
);
4196 if (offset
< length
) {
4197 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4203 * 8.2.41 Usage Report Trigger
4206 dissect_pfcp_usage_report_trigger(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
4210 static int * const pfcp_usage_report_trigger_o5_flags
[] = {
4211 &hf_pfcp_usage_report_trigger_o5_b7_immer
,
4212 &hf_pfcp_usage_report_trigger_o5_b6_droth
,
4213 &hf_pfcp_usage_report_trigger_o5_b5_stopt
,
4214 &hf_pfcp_usage_report_trigger_o5_b4_start
,
4215 &hf_pfcp_usage_report_trigger_o5_b3_quhti
,
4216 &hf_pfcp_usage_report_trigger_o5_b2_timth
,
4217 &hf_pfcp_usage_report_trigger_o5_b1_volth
,
4218 &hf_pfcp_usage_report_trigger_o5_b0_perio
,
4221 /* Octet 5 IMMER DROTH STOPT START QUHTI TIMTH VOLTH PERIO */
4222 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_usage_report_trigger_o5_flags
, ENC_BIG_ENDIAN
);
4225 if (offset
== length
) {
4229 static int * const pfcp_usage_report_trigger_o6_flags
[] = {
4230 &hf_pfcp_usage_report_trigger_o6_b7_eveth
,
4231 &hf_pfcp_usage_report_trigger_o6_b6_macar
,
4232 &hf_pfcp_usage_report_trigger_o6_b5_envcl
,
4233 &hf_pfcp_usage_report_trigger_o6_b4_monit
,
4234 &hf_pfcp_usage_report_trigger_o6_b3_termr
,
4235 &hf_pfcp_usage_report_trigger_o6_b2_liusa
,
4236 &hf_pfcp_usage_report_trigger_o6_b1_timqu
,
4237 &hf_pfcp_usage_report_trigger_o6_b0_volqu
,
4240 /* Octet 6 EVETH MACAR ENVCL MONIT TERMR LIUSA TIMQU VOLQU */
4241 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_usage_report_trigger_o6_flags
, ENC_BIG_ENDIAN
);
4244 if (offset
== length
) {
4248 static int * const pfcp_usage_report_trigger_o7_flags
[] = {
4249 &hf_pfcp_spare_b7_b6
,
4250 &hf_pfcp_usage_report_trigger_o7_b5_upint
,
4251 &hf_pfcp_usage_report_trigger_o7_b4_emrre
,
4252 &hf_pfcp_usage_report_trigger_o7_b3_quvti
,
4253 &hf_pfcp_usage_report_trigger_o7_b2_ipmjl
,
4254 &hf_pfcp_usage_report_trigger_o7_b1_tebur
,
4255 &hf_pfcp_usage_report_trigger_o7_b0_evequ
,
4258 /* Octet 7 Spare Spare UPINT EMRRE QUVTI IPMJL TEBUR EVEQU */
4259 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_usage_report_trigger_o7_flags
, ENC_BIG_ENDIAN
);
4262 if (offset
== length
) {
4266 if (offset
< length
) {
4267 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4273 * 8.2.42 Measurement Period
4276 dissect_pfcp_measurement_period(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
4280 /* 5 to 8 Measurement Period*/
4281 proto_tree_add_item_ret_uint(tree
, hf_pfcp_measurement_period
, tvb
, offset
, 4, ENC_BIG_ENDIAN
, &value
);
4284 proto_item_append_text(item
, "%u", value
);
4286 if (offset
< length
) {
4287 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4292 * 8.2.43 Fully qualified PDN Connection Set Identifier (FQ-CSID)
4294 static const value_string pfcp_fq_csid_node_id_type_vals
[] = {
4296 { 0, "Node-Address is a global unicast IPv4 address" },
4297 { 1, "Node-Address is a global unicast IPv6 address" },
4298 { 2, "Node-Address is a 4 octets long field" },
4302 static const value_string pfcp_fq_csid_node_type_vals
[] = {
4309 { 5, "PGW-U/SGW-U/UPF" },
4314 dissect_pfcp_fq_csid(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
4317 uint32_t node_id_type
, num_csid
;
4319 /* Octet 5 FQ-CSID Node-ID Type Number of CSIDs= m*/
4320 proto_tree_add_item_ret_uint(tree
, hf_pfcp_fq_csid_node_id_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &node_id_type
);
4321 proto_tree_add_item_ret_uint(tree
, hf_pfcp_num_csid
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &num_csid
);
4324 /* 6 to p Node-Address */
4325 switch (node_id_type
) {
4327 /* 0 indicates that Node-Address is a global unicast IPv4 address and p = 9 */
4328 proto_tree_add_item(tree
, hf_pfcp_fq_csid_node_id_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
4332 /* 1 indicates that Node-Address is a global unicast IPv6 address and p = 21 */
4333 proto_tree_add_item(tree
, hf_pfcp_fq_csid_node_id_ipv6
, tvb
, offset
, 16, ENC_NA
);
4337 /* 2 indicates that Node-Address is a 4 octets long field with a 32 bit value stored in network order, and p= 9
4338 * Most significant 20 bits are the binary encoded value of (MCC * 1000 + MNC).
4339 * Least significant 12 bits is a 12 bit integer assigned by an operator to an MME, SGW-C, SGW-U, PGW-C or PGW-U
4341 proto_tree_add_item(tree
, hf_pfcp_fq_csid_node_id_mcc_mnc
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
4342 proto_tree_add_item(tree
, hf_pfcp_fq_csid_node_id_int
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
4346 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4350 while (num_csid
> 0) {
4351 proto_tree_add_item(tree
, hf_pfcp_fq_csid
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
4356 if (offset
< length
) {
4357 proto_tree_add_item(tree
, hf_pfcp_spare_b7_b4
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
4358 proto_tree_add_item(tree
, hf_pfcp_fq_csid_node_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
4362 if (offset
< length
) {
4363 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4368 * 8.2.44 Volume Measurement
4371 dissect_pfcp_volume_measurement(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
4376 static int * const pfcp_volume_measurement_flags
[] = {
4377 &hf_pfcp_spare_b7_b6
,
4378 &hf_pfcp_volume_measurement_b5_dlnop
,
4379 &hf_pfcp_volume_measurement_b4_ulnop
,
4380 &hf_pfcp_volume_measurement_b3_tonop
,
4381 &hf_pfcp_volume_measurement_b2_dlvol
,
4382 &hf_pfcp_volume_measurement_b1_ulvol
,
4383 &hf_pfcp_volume_measurement_b0_tovol
,
4386 /* Octet 5 Spare DLNOP ULNOP TONOP DLVOL ULVOL TOVOL*/
4387 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_volume_measurement_flags
, ENC_BIG_ENDIAN
, &flags
);
4390 /* Bit 1 - TOVOL: If this bit is set to "1", then the Total Volume field shall be present*/
4391 if ((flags
& 0x1)) {
4392 /* m to (m+7) Total Volume */
4393 proto_tree_add_item(tree
, hf_pfcp_vol_meas_tovol
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
4396 /* Bit 2 - ULVOL: If this bit is set to "1", then the Total Volume field shall be present*/
4397 if ((flags
& 0x2)) {
4398 /* p to (p+7) Uplink Volume */
4399 proto_tree_add_item(tree
, hf_pfcp_vol_meas_ulvol
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
4402 /* Bit 3 - DLVOL: If this bit is set to "1", then the Total Volume field shall be present*/
4403 if ((flags
& 0x4)) {
4404 /*q to (q+7) Downlink Volume */
4405 proto_tree_add_item(tree
, hf_pfcp_vol_meas_dlvol
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
4408 /* Bit 4 - TONOP: If this bit is set to "1", then the Total Number of Packets field shall be present*/
4409 if ((flags
& 0x8)) {
4410 /* r to (r+7) Total Number of Packets */
4411 proto_tree_add_item(tree
, hf_pfcp_vol_meas_tonop
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
4414 /* Bit 5 - ULNOP: If this bit is set to "1", then the Total Number of Packets field shall be present*/
4415 if ((flags
& 0x10)) {
4416 /* s to (s+7) Uplink Number of Packets */
4417 proto_tree_add_item(tree
, hf_pfcp_vol_meas_ulnop
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
4420 /* Bit 6 - DLNOP: If this bit is set to "1", then the Total Number of Packets field shall be present*/
4421 if ((flags
& 0x20)) {
4422 /*t to (t+7) Downlink Number of Packets */
4423 proto_tree_add_item(tree
, hf_pfcp_vol_meas_dlnop
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
4427 if (offset
< length
) {
4428 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4433 * 8.2.45 Duration Measurement
4436 dissect_pfcp_duration_measurement(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
4440 /* 5 to 8 Duration value*/
4441 proto_tree_add_item_ret_uint(tree
, hf_pfcp_duration_measurement
, tvb
, offset
, 4, ENC_BIG_ENDIAN
, &value
);
4444 proto_item_append_text(item
, "%u s", value
);
4446 if (offset
< length
) {
4447 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4451 * 8.2.46 Time of First Packet
4454 dissect_pfcp_time_of_first_packet(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
4459 /* Octets 5 to 8 shall be encoded in the same format as the first four octets of the 64-bit timestamp
4460 * format as defined in section 6 of IETF RFC 5905
4463 proto_tree_add_item_ret_time_string(tree
, hf_pfcp_time_of_first_packet
, tvb
, offset
, 4, ENC_TIME_NTP
| ENC_BIG_ENDIAN
, pinfo
->pool
, &time_str
);
4464 proto_item_append_text(item
, "%s", time_str
);
4467 if (offset
< length
) {
4468 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4472 * 8.2.47 Time of Last Packet
4475 dissect_pfcp_time_of_last_packet(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
4480 /* Octets 5 to 8 shall be encoded in the same format as the first four octets of the 64-bit timestamp
4481 * format as defined in section 6 of IETF RFC 5905
4484 proto_tree_add_item_ret_time_string(tree
, hf_pfcp_time_of_last_packet
, tvb
, offset
, 4, ENC_TIME_NTP
| ENC_BIG_ENDIAN
, pinfo
->pool
, &time_str
);
4485 proto_item_append_text(item
, "%s", time_str
);
4488 if (offset
< length
) {
4489 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4493 * 8.2.48 Quota Holding Time
4496 dissect_pfcp_quota_holding_time(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
4500 /* Octet 5 to 8 Time Quota value
4501 * TThe Time Quota value shall be encoded as an Unsigned32 binary integer value. It contains a duration in seconds
4503 proto_tree_add_item_ret_uint(tree
, hf_pfcp_quota_holding_time
, tvb
, offset
, 4, ENC_BIG_ENDIAN
, &value
);
4506 proto_item_append_text(item
, "%u s", value
);
4508 if (offset
< length
) {
4509 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4515 * 8.2.49 Dropped DL Traffic Threshold
4518 dissect_pfcp_dropped_dl_traffic_threshold(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
4523 static int * const pfcp_dropped_dl_traffic_threshold_flags
[] = {
4524 &hf_pfcp_dropped_dl_traffic_threshold_b1_dlby
,
4525 &hf_pfcp_dropped_dl_traffic_threshold_b0_dlpa
,
4528 /* Octet 5 Spare DLBY DLPA*/
4529 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_dropped_dl_traffic_threshold_flags
, ENC_BIG_ENDIAN
, &flags_val
);
4532 if ((flags_val
& 0x1) == 1) {
4533 /* m to (m+7) Downlink Packets
4534 * DLPA: If this bit is set to "1", then the Downlink Packets field shall be present
4536 proto_tree_add_item(tree
, hf_pfcp_downlink_packets
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
4540 if ((flags_val
& 0x2) == 2) {
4541 /* o to (o+7) Number of Bytes of Downlink Data
4542 * DLBY: If this bit is set to "1", then the Number of Bytes of Downlink Data field shall be present
4544 proto_tree_add_item(tree
, hf_pfcp_bytes_downlink_data
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
4548 if (offset
< length
) {
4549 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4553 * 8.2.50 Volume Quota
4556 dissect_pfcp_volume_quota(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
4561 static int * const pfcp_volume_quota_flags
[] = {
4562 &hf_pfcp_spare_b7_b3
,
4563 &hf_pfcp_volume_quota_b2_dlvol
,
4564 &hf_pfcp_volume_quota_b1_ulvol
,
4565 &hf_pfcp_volume_quota_b0_tovol
,
4568 /* Octet 5 Spare DLVOL ULVOL TOVOL*/
4569 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_volume_quota_flags
, ENC_BIG_ENDIAN
, &flags_val
);
4572 /* The Total Volume, Uplink Volume and Downlink Volume fields shall be encoded as an Unsigned64 binary integer value.
4573 * They shall contain the total, uplink or downlink number of octets respectively.
4575 if ((flags_val
& 0x1) == 1) {
4576 /* m to (m+7) Total Volume
4577 * TOVOL: If this bit is set to "1", then the Total Volume field shall be present
4579 proto_tree_add_item(tree
, hf_pfcp_volume_quota_tovol
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
4582 if ((flags_val
& 0x2) == 2) {
4583 /* p to (p+7) Uplink Volume
4584 * ULVOL: If this bit is set to "1", then the Uplink Volume field shall be present
4586 proto_tree_add_item(tree
, hf_pfcp_volume_quota_ulvol
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
4589 if ((flags_val
& 0x4) == 4) {
4590 /* q to (q+7) Downlink Volume
4591 * DLVOL: If this bit is set to "1", then the Downlink Volume field shall be present
4593 proto_tree_add_item(tree
, hf_pfcp_volume_quota_dlvol
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
4597 if (offset
< length
) {
4598 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4605 dissect_pfcp_time_quota(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
4609 /* Octet 5 to 8 Time Quota value
4610 * TThe Time Quota value shall be encoded as an Unsigned32 binary integer value. It contains a duration in seconds
4612 proto_tree_add_item_ret_uint(tree
, hf_pfcp_time_quota
, tvb
, offset
, 4, ENC_BIG_ENDIAN
, &value
);
4615 proto_item_append_text(item
, "%u s", value
);
4617 if (offset
< length
) {
4618 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4626 dissect_pfcp_start_time(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
4631 /* The Start Time field shall contain a UTC time. Octets 5 to 8 are encoded in the same format as
4632 * the first four octets of the 64-bit timestamp format as defined in section 6 of IETF RFC 5905 [26].
4634 proto_tree_add_item_ret_time_string(tree
, hf_pfcp_start_time
, tvb
, offset
, 4, ENC_TIME_NTP
| ENC_BIG_ENDIAN
, pinfo
->pool
, &time_str
);
4635 proto_item_append_text(item
, "%s", time_str
);
4638 if (offset
< length
) {
4639 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4647 dissect_pfcp_end_time(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
4652 /* The End Time field shall contain a UTC time. Octets 5 to 8 are encoded in the same format as
4653 * the first four octets of the 64-bit timestamp format as defined in section 6 of IETF RFC 5905 [26].
4655 proto_tree_add_item_ret_time_string(tree
, hf_pfcp_end_time
, tvb
, offset
, 4, ENC_TIME_NTP
| ENC_BIG_ENDIAN
, pinfo
->pool
, &time_str
);
4656 proto_item_append_text(item
, "%s", time_str
);
4659 if (offset
< length
) {
4660 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4669 decode_pfcp_urr_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, unsigned offset
, pfcp_session_args_t
*args
)
4672 /* Octet 5 to 8 URR ID value
4673 * The bit 8 of octet 5 is used to indicate if the Rule ID is dynamically allocated by the CP function
4674 * or predefined in the UP function. If set to 0, it indicates that the Rule is dynamically provisioned
4675 * by the CP Function. If set to 1, it indicates that the Rule is predefined in the UP Function
4677 urr_id
= tvb_get_uint32(tvb
, offset
, ENC_BIG_ENDIAN
);
4679 proto_tree_add_item(tree
, hf_pfcp_urr_id_flg
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
4680 proto_tree_add_item(tree
, hf_pfcp_urr_id
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
4683 proto_item_append_text(item
, "%s %u",
4684 tfs_get_string((urr_id
& 0x80000000), &pfcp_id_predef_dynamic_tfs
),
4685 (urr_id
& 0x7fffffff));
4688 args
->last_rule_ids
.urr
= urr_id
;
4695 dissect_pfcp_urr_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args
)
4699 offset
= decode_pfcp_urr_id(tvb
, pinfo
, tree
, item
, offset
, args
);
4701 if (offset
< length
) {
4702 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4707 * 8.2.55 Linked URR ID IE
4710 dissect_pfcp_linked_urr_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
4714 /* Octet 5 to 8 Linked URR ID value
4715 * The Linked URR ID value shall be encoded as an Unsigned32 binary integer value
4717 offset
= decode_pfcp_urr_id(tvb
, pinfo
, tree
, item
, offset
, NULL
);
4719 if (offset
< length
) {
4720 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4725 * 8.2.56 Outer Header Creation
4728 dissect_pfcp_outer_header_creation(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
4733 static int * const outer_hdr_desc
[] = {
4734 &hf_pfcp_outer_hdr_desc_o5_b7_stag
,
4735 &hf_pfcp_outer_hdr_desc_o5_b6_ctag
,
4736 &hf_pfcp_outer_hdr_desc_o5_b5_ipv6
,
4737 &hf_pfcp_outer_hdr_desc_o5_b4_ipv4
,
4738 &hf_pfcp_outer_hdr_desc_o5_b3_udp_ipv6
,
4739 &hf_pfcp_outer_hdr_desc_o5_b2_udp_ipv4
,
4740 &hf_pfcp_outer_hdr_desc_o5_b1_gtp_udp_ipv6
,
4741 &hf_pfcp_outer_hdr_desc_o5_b0_gtp_udp_ipv4
,
4742 &hf_pfcp_outer_hdr_desc_o6_spare
,
4743 &hf_pfcp_outer_hdr_desc_o6_b2_ssm_cteid
,
4744 &hf_pfcp_outer_hdr_desc_o6_b1_n6
,
4745 &hf_pfcp_outer_hdr_desc_o6_b0_n19
,
4749 /* Octet 5-6 Outer Header Creation Description */
4750 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 2, outer_hdr_desc
, ENC_BIG_ENDIAN
, &value
);
4755 * The TEID field shall be present if the Outer Header Creation Description requests the creation of a GTP-U header.
4756 * Otherwise it shall not be present
4758 if ((value
& 0x0100) || (value
& 0x0200)) {
4759 proto_tree_add_item(tree
, hf_pfcp_outer_hdr_creation_teid
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
4765 * The IPv4 Address field shall be present if the Outer Header Creation Description requests the creation of a IPv4 header
4767 if ((value
& 0x0100) || (value
& 0x0400) || (value
& 0x1000)) {
4768 proto_tree_add_item(tree
, hf_pfcp_outer_hdr_creation_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
4774 * The IPv6 Address field shall be present if the Outer Header Creation Description requests the creation of a IPv6 header
4776 if ((value
& 0x0200) || (value
& 0x0800) || (value
& 0x2000)) {
4777 proto_tree_add_item(tree
, hf_pfcp_outer_hdr_creation_ipv6
, tvb
, offset
, 16, ENC_NA
);
4782 * r to (r+1) Port Number
4783 * The Port Number field shall be present if the Outer Header Creation Description requests the creation of a UDP/IP header
4785 if ((value
& 0x0400) || (value
& 0x0800)) {
4786 proto_tree_add_item(tree
, hf_pfcp_outer_hdr_creation_port
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
4792 * The C-TAG field shall be present if the Outer Header Creation Description requests the setting of the C-Tag in Ethernet packet
4794 if (value
& 0x4000) {
4795 offset
= decode_pfcp_c_tag(tvb
, pinfo
, tree
, item
, offset
);
4800 * The S-TAG field shall be present if the Outer Header Creation Description requests the setting of the S-Tag in Ethernet packet
4802 if (value
& 0x8000) {
4803 offset
= decode_pfcp_s_tag(tvb
, pinfo
, tree
, item
, offset
);
4806 if (offset
< length
) {
4807 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4815 decode_pfcp_bar_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t offset
, pfcp_session_args_t
*args
)
4818 /* Octet 5 BAR ID value
4819 * The BAR ID value shall be encoded as a binary integer value
4821 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bar_id
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
4823 proto_item_append_text(item
, "%u", value
);
4826 args
->last_rule_ids
.bar
= value
;
4832 dissect_pfcp_bar_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args
)
4836 offset
= decode_pfcp_bar_id(tvb
, pinfo
, tree
, item
, offset
, args
);
4838 if (offset
< length
) {
4839 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4845 * 8.2.58 CP Function Features
4848 dissect_pfcp_cp_function_features(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
4852 static int * const pfcp_cp_function_features_o5_flags
[] = {
4853 &hf_pfcp_cp_function_features_o5_b7_uiaur
,
4854 &hf_pfcp_cp_function_features_o5_b6_ardr
,
4855 &hf_pfcp_cp_function_features_o5_b5_mpas
,
4856 &hf_pfcp_cp_function_features_o5_b4_bundl
,
4857 &hf_pfcp_cp_function_features_o5_b3_sset
,
4858 &hf_pfcp_cp_function_features_o5_b2_epfar
,
4859 &hf_pfcp_cp_function_features_o5_b1_ovrl
,
4860 &hf_pfcp_cp_function_features_o5_b0_load
,
4863 /* Octet 5 UIAUR ARDR MPAS BUNDL SSET EPFAR OVRL LOAD */
4864 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_cp_function_features_o5_flags
, ENC_BIG_ENDIAN
);
4867 if (offset
== length
) {
4871 static int * const pfcp_cp_function_features_o6_flags
[] = {
4872 &hf_pfcp_spare_b7_b2
,
4873 &hf_pfcp_cp_function_features_o6_b1_rpgur
,
4874 &hf_pfcp_cp_function_features_o6_b0_psucc
,
4877 /* Octet 6 Spare Spare Spare Spare Spare Spare RPGUR PSUCC */
4878 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_cp_function_features_o6_flags
, ENC_BIG_ENDIAN
);
4881 if (offset
< length
) {
4882 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4888 * 8.2.59 Usage Information
4891 dissect_pfcp_usage_information(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
4895 static int * const pfcp_usage_information_flags
[] = {
4897 &hf_pfcp_usage_information_b3_ube
,
4898 &hf_pfcp_usage_information_b2_uae
,
4899 &hf_pfcp_usage_information_b1_aft
,
4900 &hf_pfcp_usage_information_b0_bef
,
4903 /* Octet 5 Spare UBE UAE AFT BEF */
4904 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_usage_information_flags
, ENC_BIG_ENDIAN
);
4907 if (offset
< length
) {
4908 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4914 * 8.2.60 Application Instance ID
4917 dissect_pfcp_application_instance_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
4921 /* Octet 5 5 to (n+4) Application Instance Identifier
4922 * The Application Instance Identifier shall be encoded as an OctetString (see 3GPP TS 29.212)
4924 if (tvb_ascii_isprint(tvb
, offset
, length
))
4926 const uint8_t* string_value
;
4927 proto_tree_add_item_ret_string(tree
, hf_pfcp_application_instance_id_str
, tvb
, offset
, length
, ENC_ASCII
| ENC_NA
, pinfo
->pool
, &string_value
);
4928 proto_item_append_text(item
, "%s", string_value
);
4932 proto_tree_add_item(tree
, hf_pfcp_application_instance_id
, tvb
, offset
, length
, ENC_NA
);
4937 * 8.2.61 Flow Information
4939 static const value_string pfcp_flow_dir_vals
[] = {
4940 { 0, "Unspecified" },
4941 { 1, "Downlink (traffic to the UE)" },
4942 { 2, "Uplink (traffic from the UE)" },
4943 { 3, "Bidirectional" },
4948 dissect_pfcp_flow_inf(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
4952 /* Octet 5 Spare Flow Direction */
4953 proto_tree_add_item(tree
, hf_pfcp_spare_b7_b3
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
4954 proto_tree_add_item(tree
, hf_pfcp_flow_dir
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
4957 /* 6 to 7 Length of Flow Description */
4958 proto_tree_add_item_ret_uint(tree
, hf_pfcp_flow_desc_len
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &len
);
4961 * The Flow Description field, when present, shall be encoded as an OctetString
4962 * as specified in subclause 5.4.2 of 3GPP TS 29.212
4964 proto_tree_add_item(tree
, hf_pfcp_flow_desc
, tvb
, offset
, len
, ENC_ASCII
);
4967 if (offset
< length
) {
4968 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
4974 * 8.2.62 UE IP Address
4976 static const true_false_string pfcp_ue_ip_add_sd_flag_vals
= {
4977 "Destination IP address",
4978 "Source IP address",
4982 dissect_pfcp_ue_ip_address(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
4985 uint64_t ue_ip_address_flags
;
4987 static int * const pfcp_ue_ip_address_flags
[] = {
4989 &hf_pfcp_ue_ip_address_flag_b6_v6pl
,
4990 &hf_pfcp_ue_ip_address_flag_b5_chv6
,
4991 &hf_pfcp_ue_ip_address_flag_b4_chv4
,
4992 &hf_pfcp_ue_ip_address_flag_b3_v6d
,
4993 &hf_pfcp_ue_ip_address_flag_b2_sd
,
4994 &hf_pfcp_ue_ip_address_flag_b1_v4
,
4995 &hf_pfcp_ue_ip_address_flag_b0_v6
,
4998 /* Octet 5 Spare IPV6PL CHV6 CHV4 IPv6D S/D V4 V6*/
4999 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_ue_ip_address_flags
, ENC_BIG_ENDIAN
, &ue_ip_address_flags
);
5002 /* IPv4 address (if present)*/
5003 if ((ue_ip_address_flags
& 0x2)) {
5004 proto_tree_add_item(tree
, hf_pfcp_ue_ip_addr_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
5007 /* IPv6 address (if present)*/
5008 if ((ue_ip_address_flags
& 0x1)) {
5009 proto_tree_add_item(tree
, hf_pfcp_ue_ip_add_ipv6
, tvb
, offset
, 16, ENC_NA
);
5012 /* IPv6 Prefix Delegation Bits (if present)*/
5013 if ((ue_ip_address_flags
& 0x8)) {
5014 proto_tree_add_item(tree
, hf_pfcp_ue_ip_add_ipv6_prefix_delegation_bits
, tvb
, offset
, 1, ENC_NA
);
5017 /* IPv6 Prefix Lengths (if present)*/
5018 if ((ue_ip_address_flags
& 0x40)) {
5019 proto_tree_add_item(tree
, hf_pfcp_ue_ip_add_ipv6_prefix_length
, tvb
, offset
, 1, ENC_NA
);
5023 if (offset
< length
) {
5024 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
5029 * 8.2.63 Packet Rate
5031 static const value_string pfcp_pr_time_unit_vals
[] = {
5041 dissect_pfcp_packet_rate(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5046 static int * const pfcp_packet_rate_flags
[] = {
5047 &hf_pfcp_spare_b7_b4
,
5048 &hf_pfcp_packet_rate_b2_aprc
,
5049 &hf_pfcp_packet_rate_b1_dlpr
,
5050 &hf_pfcp_packet_rate_b0_ulpr
,
5053 /* Octet 5 Spare DLPR ULPR */
5054 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_packet_rate_flags
, ENC_BIG_ENDIAN
, &flags
);
5057 /* Bit 1 - ULPR (Uplink Packet Rate): If this bit is set to "1", then octets m to (m+2) shall be present */
5058 if ((flags
& 0x1)) {
5060 proto_tree_add_item(tree
, hf_pfcp_spare_b7_b3
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
5061 proto_tree_add_item(tree
, hf_pfcp_ul_time_unit
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
5063 /* (m+1) to (m+2) Maximum Uplink Packet Rate */
5064 proto_tree_add_item(tree
, hf_pfcp_max_ul_pr
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
5067 /* Bit 2 - DLPR (Downlink Packet Rate): If this bit is set to "1", then octets p to (p+2) shall be present*/
5068 if ((flags
& 0x2)) {
5070 proto_tree_add_item(tree
, hf_pfcp_spare_b7_b3
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
5071 proto_tree_add_item(tree
, hf_pfcp_dl_time_unit
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
5073 /* (p+1) to (p+2) Maximum Uplink Packet Rate */
5074 proto_tree_add_item(tree
, hf_pfcp_max_dl_pr
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
5077 /* Bit 4 - APRC (Additional Packet Rate Control) */
5078 if ((flags
& 0x8)) {
5079 /* If bit 1 (ULPR) is set to "1", then octets q to (q+2), the Additional Maximum Uplink Packet Rate shall be present. */
5080 if ((flags
& 0x1)) {
5082 proto_tree_add_item(tree
, hf_pfcp_spare_b7_b3
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
5083 proto_tree_add_item(tree
, hf_pfcp_a_ul_time_unit
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
5085 /* (q+1) to (q+2) Additional Maximum Uplink Packet Rate */
5086 proto_tree_add_item(tree
, hf_pfcp_a_max_ul_pr
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
5089 /* If bit 2 (DLPR) is set to "1", then octets r to (r+2), the Additional Maximum Downlink Packet Rate shall be present. */
5090 if ((flags
& 0x2)) {
5092 proto_tree_add_item(tree
, hf_pfcp_spare_b7_b3
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
5093 proto_tree_add_item(tree
, hf_pfcp_a_dl_time_unit
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
5095 /* (r+1) to (r+2) Additional Maximum Uplink Packet Rate */
5096 proto_tree_add_item(tree
, hf_pfcp_a_max_dl_pr
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
5101 if (offset
< length
) {
5102 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
5108 * 8.2.64 Outer Header Removal
5110 static const value_string pfcp_out_hdr_desc_vals
[] = {
5111 { 0, "GTP-U/UDP/IPv4" },
5112 { 1, "GTP-U/UDP/IPv6" },
5117 { 6, "GTP-U/UDP/IP" },
5118 { 7, "VLAN TAG POP" },
5119 { 8, "VLAN TAGs POP-POP" },
5124 dissect_pfcp_outer_hdr_rem(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5129 static int * const pfcp_gtpu_ext_hdr_del_flags
[] = {
5130 &hf_pfcp_gtpu_ext_hdr_del_b0_pdu_sess_cont
,
5134 proto_tree_add_item_ret_uint(tree
, hf_pfcp_out_hdr_desc
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
5136 proto_item_append_text(item
, "%s", val_to_str_const(value
, pfcp_out_hdr_desc_vals
, "Unknown"));
5138 /* Octet 6 GTP-U Extension Header Deletion */
5139 if (offset
< length
) {
5140 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_gtpu_ext_hdr_del_flags
, ENC_BIG_ENDIAN
);
5144 if (offset
< length
) {
5145 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
5149 * 8.2.65 Recovery Time Stamp
5153 dissect_pfcp_recovery_time_stamp(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5158 /* indicates the UTC time when the node started. Octets 5 to 8 are encoded in the same format as
5159 * the first four octets of the 64-bit timestamp format as defined in section 6 of IETF RFC 5905 [26].
5161 proto_tree_add_item_ret_time_string(tree
, hf_pfcp_recovery_time_stamp
, tvb
, offset
, 4, ENC_TIME_NTP
| ENC_BIG_ENDIAN
, pinfo
->pool
, &time_str
);
5162 proto_item_append_text(item
, "%s", time_str
);
5165 if (offset
< length
) {
5166 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
5171 * 8.2.66 DL Flow Level Marking
5174 dissect_pfcp_dl_flow_level_marking(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5179 static int * const pfcp_dl_flow_level_marking_flags
[] = {
5180 &hf_pfcp_spare_b7_b2
,
5181 &hf_pfcp_dl_flow_level_marking_b1_sci
,
5182 &hf_pfcp_dl_flow_level_marking_b0_ttc
,
5185 /* Octet 5 Spare SCI TTC*/
5186 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_dl_flow_level_marking_flags
, ENC_BIG_ENDIAN
, &flags_val
);
5189 /* Bit 1 - TTC (ToS/Traffic Class): If this bit is set to "1",
5190 * then the ToS/Traffic Class field shall be present
5192 if ((flags_val
& 0x1) == 1) {
5193 /* m to (m+1) ToS/Traffic Class
5194 * The ToS/Traffic Class shall be encoded on two octets as an OctetString.
5195 * The first octet shall contain the IPv4 Type-of-Service or the IPv6 Traffic-Class field and
5196 * the second octet shall contain the ToS/Traffic Class mask field
5198 proto_tree_add_item(tree
, hf_pfcp_traffic_class
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
5200 proto_tree_add_item(tree
, hf_pfcp_traffic_mask
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
5203 /* SCI (Service Class Indicator): If this bit is set to "1",
5204 * then the Service Class Indicator field shall be present
5206 if ((flags_val
& 0x2) == 2) {
5207 /* Octets p and (p+1) of the Service Class Indicator field, when present,
5208 * shall be encoded respectively as octets 2 and 3 of the Service Class Indicator Extension Header
5209 * specified in Figure 5.2.2.3-1 of 3GPP TS 29.281
5211 proto_tree_add_item(tree
, hf_pfcp_sci
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
5215 if (offset
< length
) {
5216 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
5222 * 8.2.67 Header Enrichment
5224 static const value_string pfcp_header_type_vals
[] = {
5230 dissect_pfcp_header_enrichment(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5235 /* Octet 5 Spare Header Type
5237 proto_tree_add_item(tree
, hf_pfcp_spare_b7_b5
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
5238 proto_tree_add_item(tree
, hf_pfcp_header_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
5241 /* 6 Length of Header Field Name */
5242 proto_tree_add_item_ret_uint(tree
, hf_pfcp_hf_len
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &len
);
5245 /* 7 to m Header Field Name
5246 * Header Field Name shall be encoded as an OctetString
5248 proto_tree_add_item(tree
, hf_pfcp_hf_name
, tvb
, offset
, len
, ENC_NA
);
5251 /* p Length of Header Field Value*/
5252 proto_tree_add_item_ret_uint(tree
, hf_pfcp_hf_val_len
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &len
);
5255 /* (p+1) to q Header Field Value */
5256 proto_tree_add_item(tree
, hf_pfcp_hf_val
, tvb
, offset
, len
, ENC_NA
);
5259 if (offset
< length
) {
5260 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
5265 * 8.2.68 Measurement Information
5268 dissect_pfcp_measurement_info(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5272 static int * const pfcp_measurement_info_flags
[] = {
5273 &hf_pfcp_measurement_info_b7_ciam
,
5274 &hf_pfcp_measurement_info_b6_aspoc
,
5275 &hf_pfcp_measurement_info_b5_sspoc
,
5276 &hf_pfcp_measurement_info_b4_mnop
,
5277 &hf_pfcp_measurement_info_b3_istm
,
5278 &hf_pfcp_measurement_info_b2_radi
,
5279 &hf_pfcp_measurement_info_b1_inam
,
5280 &hf_pfcp_measurement_info_b0_mbqe
,
5283 /* Octet 5 CIAM ASPOC SSPOC MNOP ISTM INAM MBQE */
5284 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_measurement_info_flags
, ENC_BIG_ENDIAN
);
5287 if (offset
< length
) {
5288 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
5293 * 8.2.69 Node Report Type
5296 dissect_pfcp_node_report_type(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5300 static int * const pfcp_node_report_type_flags
[] = {
5301 &hf_pfcp_spare_b7_b6
,
5302 &hf_pfcp_node_report_type_b5_vsr
,
5303 &hf_pfcp_node_report_type_b4_purr
,
5304 &hf_pfcp_node_report_type_b3_gpqr
,
5305 &hf_pfcp_node_report_type_b2_ckdr
,
5306 &hf_pfcp_node_report_type_b1_uprr
,
5307 &hf_pfcp_node_report_type_b0_upfr
,
5310 /* Octet 5 Spare VSR PURR GPQR CKDR UPRR MBQE */
5311 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_node_report_type_flags
, ENC_BIG_ENDIAN
);
5314 if (offset
< length
) {
5315 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
5320 * 8.2.70 Remote GTP-U Peer
5323 dissect_pfcp_remote_gtp_u_peer(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5327 uint32_t length_di
, length_ni
;
5329 static int * const pfcp_remote_gtp_u_peer_flags
[] = {
5330 &hf_pfcp_spare_b7_b5
,
5331 &hf_pfcp_remote_gtp_u_peer_flags_b4_rts
,
5332 &hf_pfcp_remote_gtp_u_peer_flags_b3_ni
,
5333 &hf_pfcp_remote_gtp_u_peer_flags_b2_di
,
5334 &hf_pfcp_remote_gtp_u_peer_flags_b1_v4
,
5335 &hf_pfcp_remote_gtp_u_peer_flags_b0_v6
,
5338 /* Octet 5 Spare RTS NI DI V4 V6*/
5339 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_remote_gtp_u_peer_flags
, ENC_BIG_ENDIAN
, &flags
);
5342 /* IPv4 address (if present)*/
5344 proto_tree_add_item(tree
, hf_pfcp_remote_gtp_u_peer_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
5345 proto_item_append_text(item
, "IPv4 %s ", tvb_ip_to_str(pinfo
->pool
, tvb
, offset
));
5348 /* IPv6 address (if present)*/
5350 proto_tree_add_item(tree
, hf_pfcp_remote_gtp_u_peer_ipv6
, tvb
, offset
, 16, ENC_NA
);
5351 proto_item_append_text(item
, "IPv6 %s ", tvb_ip6_to_str(pinfo
->pool
, tvb
, offset
));
5354 /* DI (if present)*/
5356 /* Length of Destination Interface field */
5357 proto_tree_add_item_ret_uint(tree
, hf_pfcp_remote_gtp_u_peer_length_di
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &length_di
);
5360 /* Destination Interface */
5361 offset
+= decode_pfcp_destination_interface(tvb
, pinfo
, tree
, item
, offset
, length_di
);
5363 /* NI (if present)*/
5365 /* Length of Network Instance field */
5366 proto_tree_add_item_ret_uint(tree
, hf_pfcp_remote_gtp_u_peer_length_ni
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &length_ni
);
5369 /* Network Instance */
5370 offset
+= decode_pfcp_network_instance(tvb
, pinfo
, tree
, item
, offset
, length_ni
);
5372 /* RTS (if present)*/
5374 proto_tree_add_item(tree
, hf_pfcp_remote_gtp_u_peer_time_stamp
, tvb
, offset
, 4, ENC_TIME_NTP
| ENC_BIG_ENDIAN
);
5378 if (offset
< length
) {
5379 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
5388 dissect_pfcp_ur_seqn(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5393 * The UR-SEQN value shall be encoded as an Unsigned32 binary integer value
5395 proto_tree_add_item_ret_uint(tree
, hf_pfcp_ur_seqn
, tvb
, 0, 4, ENC_BIG_ENDIAN
, &value
);
5397 proto_item_append_text(item
, "%u", value
);
5403 * 8.2.72 Activate Predefined Rules
5406 dissect_pfcp_act_predef_rules(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5409 /* Octet 5 to (n+4) Predefined Rules Name
5410 * The Predefined Rules Name field shall be encoded as an OctetString
5412 proto_tree_add_item(tree
, hf_pfcp_predef_rules_name
, tvb
, offset
, length
, ENC_NA
);
5415 * 8.2.73 Deactivate Predefined Rules
5418 dissect_pfcp_deact_predef_rules(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5421 /* Octet 5 to (n+4) Predefined Rules Name
5422 * The Predefined Rules Name field shall be encoded as an OctetString
5424 proto_tree_add_item(tree
, hf_pfcp_predef_rules_name
, tvb
, offset
, length
, ENC_NA
);
5430 decode_pfcp_far_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, int offset
, pfcp_session_args_t
*args
)
5433 /* Octet 5 to 8 FAR ID value
5434 * The bit 8 of octet 5 is used to indicate if the Rule ID is dynamically allocated
5435 * by the CP function or predefined in the UP function. If set to 0, it indicates that
5436 * the Rule is dynamically provisioned by the CP Function. If set to 1, it indicates that
5437 * the Rule is predefined in the UP Function.
5439 far_id
= tvb_get_uint32(tvb
, offset
, ENC_BIG_ENDIAN
);
5441 proto_tree_add_item(tree
, hf_pfcp_far_id_flg
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
5442 proto_tree_add_item(tree
, hf_pfcp_far_id
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
5445 proto_item_append_text(item
, "%s %u",
5446 tfs_get_string((far_id
& 0x80000000), &pfcp_id_predef_dynamic_tfs
),
5447 (far_id
& 0x7fffffff));
5450 args
->last_rule_ids
.far
= far_id
;
5457 dissect_pfcp_far_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args
)
5461 offset
= decode_pfcp_far_id(tvb
, pinfo
, tree
, item
, offset
, args
);
5463 if (offset
< length
) {
5464 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
5472 decode_pfcp_qer_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, unsigned offset
, pfcp_session_args_t
*args
)
5475 /* Octet 5 to 8 QER ID value
5476 * The bit 8 of octet 5 is used to indicate if the Rule ID is dynamically allocated by the CP function
5477 * or predefined in the UP function. If set to 0, it indicates that the Rule is dynamically provisioned
5478 * by the CP Function. If set to 1, it indicates that the Rule is predefined in the UP Function
5480 qer_id
= tvb_get_uint32(tvb
, offset
, ENC_BIG_ENDIAN
);
5482 proto_tree_add_item(tree
, hf_pfcp_qer_id_flg
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
5483 proto_tree_add_item(tree
, hf_pfcp_qer_id
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
5486 proto_item_append_text(item
, "%s %u",
5487 tfs_get_string((qer_id
& 0x80000000), &pfcp_id_predef_dynamic_tfs
),
5488 (qer_id
& 0x7fffffff));
5491 args
->last_rule_ids
.qer
= qer_id
;
5497 dissect_pfcp_qer_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args
)
5501 offset
= decode_pfcp_qer_id(tvb
, pinfo
, tree
, item
, offset
, args
);
5503 if (offset
< length
) {
5504 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
5512 dissect_pfcp_oci_flags(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5516 static int * const pfcp_oci_flags_flags
[] = {
5517 &hf_pfcp_spare_b7_b1
,
5518 &hf_pfcp_oci_flags_b0_aoci
,
5521 /* Octet 5 Spare AOCI */
5522 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_oci_flags_flags
, ENC_BIG_ENDIAN
);
5525 if (offset
< length
) {
5526 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
5532 * 8.2.77 PFCP Association Release Request
5535 dissect_pfcp_pfcp_assoc_rel_req(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5539 static int * const pfcp_pfcp_assoc_rel_req_flags
[] = {
5540 &hf_pfcp_spare_b7_b2
,
5541 &hf_pfcp_pfcp_assoc_rel_req_b1_urss
,
5542 &hf_pfcp_pfcp_assoc_rel_req_b0_sarr
,
5545 /* Octet 5 Spare URSS SARR */
5546 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_pfcp_assoc_rel_req_flags
, ENC_BIG_ENDIAN
);
5549 if (offset
< length
) {
5550 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
5556 * 8.2.78 Graceful Release Period
5559 dissect_pfcp_graceful_release_period(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5562 uint32_t unit
, value
;
5564 /* Octet 5 Timer unit Timer value */
5565 proto_tree_add_item_ret_uint(tree
, hf_pfcp_timer_unit
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &unit
);
5566 proto_tree_add_item_ret_uint(tree
, hf_pfcp_timer_value
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
5569 if ((unit
== 0) && (value
== 0)) {
5570 proto_item_append_text(item
, " Stopped");
5574 proto_item_append_text(item
, "%u s", value
* 2);
5577 proto_item_append_text(item
, "%u min", value
);
5580 proto_item_append_text(item
, "%u min", value
* 10);
5583 proto_item_append_text(item
, "%u hours", value
);
5586 proto_item_append_text(item
, "%u hours", value
* 10);
5589 proto_item_append_text(item
, "%u Infinite", value
);
5593 proto_item_append_text(item
, "%u min", value
* 1);
5598 if (offset
< length
) {
5599 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
5606 static const value_string pfcp_pdn_type_vals
[] = {
5617 dissect_pfcp_pdn_type(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5621 /* Octet 5 Application Identifier
5622 * The Application Identifier shall be encoded as an OctetString (see 3GPP TS 29.212)
5624 proto_tree_add_item_ret_uint(tree
, hf_pfcp_pdn_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
5627 proto_item_append_text(item
, "%s", val_to_str_const(value
, pfcp_pdn_type_vals
, "Unknown"));
5629 if (offset
< length
) {
5630 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
5634 * 8.2.80 Failed Rule ID
5636 static const value_string pfcp_failed_rule_id_type_vals
[] = {
5651 decode_pfcp_mar_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, int offset
, pfcp_session_args_t
*args
)
5654 /* Octet 5 to 6 MAR ID*/
5655 proto_tree_add_item_ret_uint(tree
, hf_pfcp_mar_id
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &mar_id
);
5658 proto_item_append_text(item
, "%u", mar_id
);
5661 args
->last_rule_ids
.mar
= mar_id
;
5670 decode_pfcp_srr_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, int offset
, pfcp_session_args_t
*args
)
5673 /* Oct 5 The SRR ID value shall be encoded as a binary integer value. */
5674 proto_tree_add_item_ret_uint(tree
, hf_pfcp_srr_id
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &srr_id
);
5677 proto_item_append_text(item
, "%u", srr_id
);
5680 args
->last_rule_ids
.srr
= srr_id
;
5687 dissect_pfcp_failed_rule_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5692 /* Octet 5 Rule ID Type */
5693 proto_tree_add_item_ret_uint(tree
, hf_pfcp_failed_rule_id_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &rule_type
);
5696 proto_item_append_text(item
, "%s: ", val_to_str_const(rule_type
, pfcp_failed_rule_id_type_vals
, "Unknown"));
5698 /* 6 to p Rule ID value
5699 * The length and the value of the Rule ID value field shall be set as specified for the
5700 * PDR ID, FAR ID, QER ID, URR ID, BAR ID, MAR ID and SRR ID IE types respectively.
5702 switch (rule_type
) {
5705 offset
= decode_pfcp_pdr_id(tvb
, pinfo
, tree
, item
, offset
, NULL
);
5709 offset
= decode_pfcp_far_id(tvb
, pinfo
, tree
, item
, offset
, NULL
);
5713 offset
= decode_pfcp_qer_id(tvb
, pinfo
, tree
, item
, offset
, NULL
);
5717 offset
= decode_pfcp_urr_id(tvb
, pinfo
, tree
, item
, offset
, NULL
);
5721 offset
= decode_pfcp_bar_id(tvb
, pinfo
, tree
, item
, offset
, NULL
);
5725 offset
= decode_pfcp_mar_id(tvb
, pinfo
, tree
, item
, offset
, NULL
);
5729 offset
= decode_pfcp_srr_id(tvb
, pinfo
, tree
, item
, offset
, NULL
);
5735 if (offset
< length
) {
5736 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
5740 * 8.2.81 Time Quota Mechanism
5742 static const value_string pfcp_time_quota_mechanism_bti_type_vals
[] = {
5749 dissect_pfcp_time_quota_mechanism(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5754 /* Octet 5 BIT Type */
5755 proto_tree_add_item_ret_uint(tree
, hf_pfcp_time_quota_mechanism_bti_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &bti_type
);
5758 proto_item_append_text(item
, "%s", val_to_str_const(bti_type
, pfcp_time_quota_mechanism_bti_type_vals
, "Unknown"));
5760 /* Base Time Interval
5761 * The Base Time Interval, shall be encoded as an Unsigned32
5762 * as specified in subclause 7.2.29 of 3GPP TS 32.299
5764 proto_tree_add_item(tree
, hf_pfcp_time_quota_mechanism_bti
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
5767 if (offset
< length
) {
5768 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
5772 * 8.2.82 User Plane IP Resource Information (removed in Rel 16.3)
5775 dissect_pfcp_user_plane_ip_resource_infomation(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5778 uint64_t upiri_flags_val
;
5779 uint32_t upiri_teid_range
;
5781 static int * const pfcp_upiri_flags
[] = {
5782 &hf_pfcp_spare_b7_b6
,
5783 &hf_pfcp_upiri_flg_b6_assosi
,
5784 &hf_pfcp_upiri_flg_b5_assoni
,
5785 &hf_pfcp_upiri_flg_b2b4_teidri
,
5786 &hf_pfcp_upiri_flags_b1_v6
,
5787 &hf_pfcp_upiri_flags_b0_v4
,
5790 /* Octet 5 Spare ASSOSI ASSONI TEIDRI TEIDRI TEIDRI V6 V4*/
5791 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_upiri_flags
, ENC_BIG_ENDIAN
, &upiri_flags_val
);
5793 /* The following flags are coded within Octet 5:
5794 * Bit 1 - V4: If this bit is set to "1" and the CH bit is not set, then the IPv4 address field shall be present,
5795 * otherwise the IPv4 address field shall not be present.
5796 * Bit 2 - V6: If this bit is set to "1" and the CH bit is not set, then the IPv6 address field shall be present,
5797 * otherwise the IPv6 address field shall not be present.
5798 * Bit 3-5 - TEIDRI (TEID Range Indication): the value of this field indicates the number of bits in the most significant
5799 * octet of a TEID that are used to partition the TEID range, e.g. if this field is set to "4", then the first
5800 * 4 bits in the TEID are used to partition the TEID range.
5801 * Bit 6 - ASSONI (Associated Network Instance): if this bit is set to "1", then the Network Instance field shall be present,
5802 * otherwise the Network Instance field shall not be present,
5803 * i.e. User Plane IP Resource Information provided can be used by CP function for any Network Instance of
5804 * GTP-U user plane in the UP function.
5805 * Bit 7 - ASSOSI (Associated Source Interface): if this bit is set to "1", then the Source Interface field shall be present,
5806 * otherwise the Source Interface field shall not be present.
5809 /* Octet 5, bit 3-5, TEID Range Indication */
5810 proto_tree_add_item_ret_uint(tree
, hf_pfcp_upiri_teidri
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &upiri_teid_range
);
5813 if (upiri_teid_range
> 0)
5815 /* Octet t TEID Range */
5816 proto_tree_add_item(tree
, hf_pfcp_upiri_teid_range
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
5820 if ((upiri_flags_val
& 0x1) == 1) {
5821 /* m to (m+3) IPv4 address */
5822 proto_tree_add_item(tree
, hf_pfcp_upiri_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
5825 if ((upiri_flags_val
& 0x2) == 2) {
5826 /* p to (p+15) IPv6 address */
5827 proto_tree_add_item(tree
, hf_pfcp_upiri_ipv6
, tvb
, offset
, 16, ENC_NA
);
5830 if ((upiri_flags_val
& 0x20) == 0x20) {
5831 /* k to (l) Network Instance */
5832 uint16_t ni_len
= length
- offset
;
5833 if ((upiri_flags_val
& 0x40) == 0x40) {
5836 offset
= decode_pfcp_network_instance(tvb
, pinfo
, tree
, item
, offset
, ni_len
);
5838 if ((upiri_flags_val
& 0x40) == 0x40) {
5839 /* r Source Interface */
5840 offset
= decode_pfcp_source_interface(tvb
, pinfo
, tree
, item
, offset
);
5842 if (offset
< length
) {
5843 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
5849 * 8.2.83 User Plane Inactivity Timer
5852 dissect_pfcp_user_plane_inactivity_timer(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5857 * The User Plane Inactivity Timer field shall be encoded as an Unsigned32 binary integer value.
5858 * The timer value "0" shall be interpreted as an indication that
5859 * user plane inactivity detection and reporting is stopped.
5862 /* 5 to 8 Inactivity Timer */
5863 proto_tree_add_item_ret_uint(tree
, hf_pfcp_user_plane_inactivity_timer
, tvb
, offset
, 4, ENC_BIG_ENDIAN
, &value
);
5867 proto_item_append_text(item
, " (Stopped)");
5869 if (offset
< length
) {
5870 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
5879 dissect_pfcp_multiplier(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5882 /* 5 to 12 Value-Digits */
5883 proto_tree_add_item(tree
, hf_pfcp_multiplier_value_digits
, tvb
, 0, 8, ENC_BIG_ENDIAN
);
5885 /* 12 to 15 Exponent */
5886 proto_tree_add_item(tree
, hf_pfcp_multiplier_exponent
, tvb
, 8, 4, ENC_BIG_ENDIAN
);
5891 * 8.2.85 Aggregated URR ID IE
5894 dissect_pfcp_aggregated_urr_id_ie(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5897 decode_pfcp_urr_id(tvb
, pinfo
, tree
, item
, 0, NULL
);
5901 * 8.2.86 Subsequent Volume Quota
5904 dissect_pfcp_subsequent_volume_quota(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5909 static int * const pfcp_subsequent_volume_quota_flags
[] = {
5910 &hf_pfcp_spare_b7_b3
,
5911 &hf_pfcp_subsequent_volume_quota_b2_dlvol
,
5912 &hf_pfcp_subsequent_volume_quota_b1_ulvol
,
5913 &hf_pfcp_subsequent_volume_quota_b0_tovol
,
5916 /* Octet 5 Spare DLVOL ULVOL TOVOL*/
5917 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_subsequent_volume_quota_flags
, ENC_BIG_ENDIAN
, &flags_val
);
5920 /* The Total Volume, Uplink Volume and Downlink Volume fields shall be encoded as an Unsigned64 binary integer value.
5921 * They shall contain the total, uplink or downlink number of octets respectively.
5923 if ((flags_val
& 0x1) == 1) {
5924 /* m to (m+7) Total Volume
5925 * TOVOL: If this bit is set to "1", then the Total Volume field shall be present
5927 proto_tree_add_item(tree
, hf_pfcp_subsequent_volume_quota_tovol
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
5930 if ((flags_val
& 0x2) == 2) {
5931 /* p to (p+7) Uplink Volume
5932 * ULVOL: If this bit is set to "1", then the Uplink Volume field shall be present
5934 proto_tree_add_item(tree
, hf_pfcp_subsequent_volume_quota_ulvol
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
5937 if ((flags_val
& 0x4) == 4) {
5938 /* q to (q+7) Downlink Volume
5939 * DLVOL: If this bit is set to "1", then the Downlink Volume field shall be present
5941 proto_tree_add_item(tree
, hf_pfcp_subsequent_volume_quota_dlvol
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
5945 if (offset
< length
) {
5946 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
5951 * 8.2.87 Subsequent Time Quota
5954 dissect_pfcp_subsequent_time_quota(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5959 /* Octet 5 to 8 Time Quota
5960 * The Time Quota field shall be encoded as an Unsigned32 binary integer value.
5961 * It shall contain the duration in seconds.
5963 proto_tree_add_item_ret_uint(tree
, hf_pfcp_subsequent_time_quota
, tvb
, offset
, 4, ENC_BIG_ENDIAN
, &value
);
5966 proto_item_append_text(item
, "%u s", value
);
5968 if (offset
< length
) {
5969 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
5978 dissect_pfcp_rqi(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
5982 proto_tree_add_item(tree
, hf_pfcp_spare_b7_b1
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
5983 proto_tree_add_item(tree
, hf_pfcp_rqi_flag
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
5986 if (offset
< length
) {
5987 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
5996 decode_pfcp_qfi(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, int offset
)
5998 /* Octets 5 SPARE QFI
5999 * The Application Identifier shall be encoded as an OctetString
6001 proto_tree_add_item(tree
, hf_pfcp_spare_b7_b6
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
6002 proto_tree_add_item(tree
, hf_pfcp_qfi
, tvb
, offset
, 1, ENC_NA
);
6008 dissect_pfcp_qfi(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6012 offset
= decode_pfcp_qfi(tvb
, pinfo
, tree
, item
, offset
);
6014 if (offset
< length
) {
6015 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6021 * 8.2.90 Querry URR Reference
6024 dissect_pfcp_query_urr_reference(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6028 /* Octets 5 to 8 Query URR Reference value
6029 * The Query URR Reference value shall be encoded as an Unsigned32 binary integer value.
6030 * It shall contain the reference of a query request for URR(s).
6032 proto_tree_add_item(tree
, hf_pfcp_query_urr_reference
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
6035 if (offset
< length
) {
6036 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6042 * 8.2.91 Additional Usage Reports Information
6045 dissect_pfcp_additional_usage_reports_information(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6049 * Octet 8 7 6 5 4 3 2 1
6050 * 5 | AURI | Number of Additional Usage Reports value |
6051 * 6 | Number of Additional Usage Reports value |
6053 * The Number of Additional Usage Reports value shall be encoded as
6054 * an unsigned binary integer value on 15 bits.
6055 * Bit 7 of Octet 5 is the most significant bit and bit 1 of Octet 6 is the least significant bit.
6056 * The bit 8 of octet 5 shall encode the AURI (Additional Usage Reports Indication) flag{...}.
6058 static int * const pfcp_additional_usage_reports_information_flags
[] = {
6059 &hf_pfcp_additional_usage_reports_information_b15_auri
,
6060 &hf_pfcp_additional_usage_reports_information_b14_b0_number_value
,
6063 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 2, pfcp_additional_usage_reports_information_flags
, ENC_BIG_ENDIAN
);
6066 if (offset
< length
) {
6067 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6072 * 8.2.92 Traffic Endpoint ID
6074 static void dissect_pfcp_traffic_endpoint_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6078 proto_tree_add_item(tree
, hf_pfcp_traffic_endpoint_id
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
6081 if (offset
< length
) {
6082 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6088 * 8.2.93 MAC Address
6090 static void dissect_pfcp_mac_address(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6095 static int * const pfcp_mac_address_flags
[] = {
6096 &hf_pfcp_spare_b7_b4
,
6097 &hf_pfcp_mac_address_flags_b3_udes
,
6098 &hf_pfcp_mac_address_flags_b2_usou
,
6099 &hf_pfcp_mac_address_flags_b1_dest
,
6100 &hf_pfcp_mac_address_flags_b0_sour
,
6103 /* Octet 5 Spare EDES USOU DEST SOUR */
6104 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_mac_address_flags
, ENC_BIG_ENDIAN
, &flags_val
);
6107 // Octets "m to (m+5)" or "n to (n+5)" and "o to (o+5)" or "p to (p+5)", if present,
6108 // shall contain a MAC address value (12-digit hexadecimal numbers).
6109 if ((flags_val
& 0x1) == 1) {
6110 /* m to (m+5) Source MAC Address
6111 * SOUR: If this bit is set to "1", then the Source MAC Address field shall be present
6113 proto_tree_add_item(tree
, hf_pfcp_mac_address_source_mac_address
, tvb
, offset
, 6, ENC_NA
);
6117 if ((flags_val
& 0x2) == 2) {
6118 /* n to (n+5) Destination MAC Address
6119 * DEST: If this bit is set to "1", then the Destination MAC Address field shall be present
6121 proto_tree_add_item(tree
, hf_pfcp_mac_address_dest_mac_address
, tvb
, offset
, 6, ENC_NA
);
6125 if ((flags_val
& 0x4) == 4) {
6126 /* o to (o+5) Upper Source MAC Address
6127 * USOU: If this bit is set to "1", then the Upper Source MAC Address field shall be present
6129 proto_tree_add_item(tree
, hf_pfcp_mac_address_upper_source_mac_address
, tvb
, offset
, 6, ENC_NA
);
6133 if ((flags_val
& 0x8) == 8) {
6134 /* p to (p+5) Upper Destination MAC Address
6135 * UDES: If this bit is set to "1", then the Upper Destination MAC Address field shall be present
6137 proto_tree_add_item(tree
, hf_pfcp_mac_address_upper_dest_mac_address
, tvb
, offset
, 6, ENC_NA
);
6141 if (offset
< length
) {
6142 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6148 * 8.2.94 C-TAG (Customer-VLAN tag)
6150 static void dissect_pfcp_c_tag(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6154 offset
= decode_pfcp_c_tag(tvb
, pinfo
, tree
, item
, offset
);
6156 if (offset
< length
) {
6157 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6163 * 8.2.95 S-TAG (Service-VLAN tag)
6165 static void dissect_pfcp_s_tag(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6169 offset
= decode_pfcp_s_tag(tvb
, pinfo
, tree
, item
, offset
);
6171 if (offset
< length
) {
6172 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6180 static void dissect_pfcp_ethertype(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6184 proto_tree_add_item(tree
, hf_pfcp_ethertype
, tvb
, offset
, 2, ENC_NA
);
6187 if (offset
< length
) {
6188 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6196 static void dissect_pfcp_proxying(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6201 static int * const pfcp_proxying_flags
[] = {
6202 &hf_pfcp_spare_b7_b2
,
6203 &hf_pfcp_proxying_flags_b1_ins
,
6204 &hf_pfcp_proxying_flags_b0_arp
,
6207 /* Octet 5 Spare INS ARP */
6208 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_proxying_flags
, ENC_BIG_ENDIAN
, &flags_val
);
6211 if (offset
< length
) {
6212 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6218 * 8.2.98 Ethertype Filter ID
6220 static void dissect_pfcp_ethertype_filter_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6224 proto_tree_add_item(tree
, hf_pfcp_ethertype_filter_id
, tvb
, offset
, 4, ENC_NA
);
6227 if (offset
< length
) {
6228 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6234 * 8.2.99 Ethernet Filter Properties
6236 static void dissect_pfcp_ethernet_filter_properties(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6241 static int * const pfcp_ethernet_filter_properties_flags
[] = {
6242 &hf_pfcp_spare_b7_b1
,
6243 &hf_pfcp_ethertype_filter_properties_flags_b0_bide
,
6246 /* Octet 5 Spare BIDE */
6247 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_ethernet_filter_properties_flags
, ENC_BIG_ENDIAN
, &flags_val
);
6250 if (offset
< length
) {
6251 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6257 * 8.2.100 Suggested Buffering Packets Count
6260 dissect_pfcp_suggested_buffering_packets_count(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6264 /* 5 Packet count value */
6265 proto_tree_add_item_ret_uint(tree
, hf_pfcp_suggested_buffering_packets_count_packet_count
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
6268 proto_item_append_text(item
, "%u packets", value
);
6270 if (offset
< length
) {
6271 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6278 static void dissect_pfcp_user_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6282 uint32_t length_imsi
, length_imei
, length_msisdn
, length_nai
, length_supi
, length_gpsi
, length_pei
;
6284 static int * const pfcp_user_id_flags
[] = {
6286 &hf_pfcp_user_id_flags_b6_peif
,
6287 &hf_pfcp_user_id_flags_b5_gpsif
,
6288 &hf_pfcp_user_id_flags_b4_supif
,
6289 &hf_pfcp_user_id_flags_b3_naif
,
6290 &hf_pfcp_user_id_flags_b2_msisdnf
,
6291 &hf_pfcp_user_id_flags_b1_imeif
,
6292 &hf_pfcp_user_id_flags_b0_imsif
,
6295 /* Octet 5 Spare IMEIF IMSIF */
6296 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_user_id_flags
, ENC_BIG_ENDIAN
, &flags_val
);
6299 /* Bit 1 - IMSIF: If this bit is set to "1", then the Length of IMSI and IMSI fields shall be present */
6300 if ((flags_val
& 0x1)) {
6301 /* 6 Length of IMSI */
6302 proto_tree_add_item_ret_uint(tree
, hf_pfcp_user_id_length_of_imsi
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &length_imsi
);
6305 dissect_e212_imsi(tvb
, pinfo
, tree
, offset
, length_imsi
, false);
6306 offset
+= length_imsi
;
6309 /* Bit 2 - IMEIF: If this bit is set to "1", then the Length of IMEI and IMEI fields shall be present */
6310 if ((flags_val
& 0x2)) {
6311 /* b Length of IMEI */
6312 proto_tree_add_item_ret_uint(tree
, hf_pfcp_user_id_length_of_imei
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &length_imei
);
6315 /* (b+1) to c IMEI */
6316 /* Fetch the BCD encoded digits from tvb low half byte, formating the digits according to
6317 * a default digit set of 0-9 returning "?" for overdecadic digits a pointer to the EP
6318 * allocated string will be returned.
6320 proto_tree_add_item(tree
, hf_pfcp_user_id_imei
, tvb
, offset
, length_imei
, ENC_BCD_DIGITS_0_9
|ENC_LITTLE_ENDIAN
);
6321 offset
+= length_imei
;
6324 /* Bit 3 - MSIDNF: If this bit is set to "1", then the Length of MSISDN and MSISDN fields shall be present */
6325 if ((flags_val
& 0x4)) {
6326 /* d Length of MSISDN */
6327 proto_tree_add_item_ret_uint(tree
, hf_pfcp_user_id_length_of_msisdn
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &length_msisdn
);
6329 /* (d+1) to e MSISDN */
6330 dissect_e164_msisdn(tvb
, tree
, offset
, length_msisdn
, E164_ENC_BCD
);
6331 offset
+= length_msisdn
;
6334 /* Bit 4 - NAIF: If this bit is set to "1", then the Length of NAI and NAI fields shall be present */
6335 if ((flags_val
& 0x8)) {
6336 /* f Length of NAI */
6337 proto_tree_add_item_ret_uint(tree
, hf_pfcp_user_id_length_of_nai
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &length_nai
);
6339 /* (f+1) to g NAI */
6340 proto_tree_add_item(tree
, hf_pfcp_user_id_nai
, tvb
, offset
, length_nai
, ENC_ASCII
);
6341 offset
+= length_nai
;
6344 /* Bit 5 - SUPIF: If this bit is set to "1", then the Length of SUPI and SUPI fields shall be present */
6345 if ((flags_val
& 0x10)) {
6346 /* f Length of SUPI */
6347 proto_tree_add_item_ret_uint(tree
, hf_pfcp_user_id_length_of_supi
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &length_supi
);
6349 /* (f+1) to g SUPI */
6350 proto_tree_add_item(tree
, hf_pfcp_user_id_supi
, tvb
, offset
, length_supi
, ENC_ASCII
);
6351 offset
+= length_supi
;
6354 /* Bit 6 - GPSIF: If this bit is set to "1", then the Length of GPSI and GPSI fields shall be present */
6355 if ((flags_val
& 0x20)) {
6356 /* f Length of GPSI */
6357 proto_tree_add_item_ret_uint(tree
, hf_pfcp_user_id_length_of_gpsi
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &length_gpsi
);
6359 /* (f+1) to g GPSI */
6360 proto_tree_add_item(tree
, hf_pfcp_user_id_gpsi
, tvb
, offset
, length_gpsi
, ENC_ASCII
);
6361 offset
+= length_gpsi
;
6364 /* Bit 7 - PEIF: If this bit is set to "1", then the Length of PEI and PEI fields shall be present */
6365 if ((flags_val
& 0x40)) {
6366 /* f Length of PEI */
6367 proto_tree_add_item_ret_uint(tree
, hf_pfcp_user_id_length_of_pei
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &length_pei
);
6369 /* (f+1) to g PEI */
6370 proto_tree_add_item(tree
, hf_pfcp_user_id_pei
, tvb
, offset
, length_pei
, ENC_ASCII
);
6371 offset
+= length_pei
;
6374 if (offset
< length
) {
6375 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6381 * 8.2.102 Ethernet PDU Session Information
6383 static void dissect_pfcp_ethernet_pdu_session_information(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6387 static int * const pfcp_ethernet_pdu_session_information_flags
[] = {
6388 &hf_pfcp_spare_b7_b1
,
6389 &hf_pfcp_ethernet_pdu_session_information_flags_b0_ethi
,
6392 /* Octet 5 Spare ETHI */
6393 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_ethernet_pdu_session_information_flags
, ENC_BIG_ENDIAN
);
6396 if (offset
< length
) {
6397 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6403 * 8.2.103 MAC Addresses Detected
6406 dissect_pfcp_mac_addresses_detected(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6409 uint32_t value
, i
, length_ctag
, length_stag
;
6411 /* 5 Number of MAC addresses */
6412 proto_tree_add_item_ret_uint(tree
, hf_pfcp_mac_addresses_detected_number_of_mac_addresses
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
6415 /* o to (o+6) MAC Address */
6416 for (i
= 0; i
< value
; i
++)
6418 proto_tree_add_item(tree
, hf_pfcp_mac_addresses_detected_mac_address
, tvb
, offset
, 6, ENC_NA
);
6422 if (offset
== length
) {
6426 /* s Length of C-TAG */
6427 proto_tree_add_item_ret_uint(tree
, hf_pfcp_mac_addresses_detected_length_of_ctag
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &length_ctag
);
6429 /* (s+1) to t C-TAG */
6430 if (length_ctag
> 0)
6432 offset
= decode_pfcp_c_tag(tvb
, pinfo
, tree
, item
, offset
);
6435 /* u Length of S-TAG */
6436 proto_tree_add_item_ret_uint(tree
, hf_pfcp_mac_addresses_detected_length_of_stag
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &length_stag
);
6438 /* (u+1) to v S-TAG */
6439 if (length_stag
> 0)
6441 offset
= decode_pfcp_s_tag(tvb
, pinfo
, tree
, item
, offset
);
6444 if (offset
< length
) {
6445 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6450 * 8.2.104 MAC Addresses Removed
6453 dissect_pfcp_mac_addresses_removed(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6456 uint32_t value
, i
, length_ctag
, length_stag
;
6458 /* 5 Number of MAC addresses */
6459 proto_tree_add_item_ret_uint(tree
, hf_pfcp_mac_addresses_removed_number_of_mac_addresses
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
6462 /* o to (o+6) MAC Address */
6463 for (i
= 0; i
< value
; i
++)
6465 proto_tree_add_item(tree
, hf_pfcp_mac_addresses_removed_mac_address
, tvb
, offset
, 6, ENC_NA
);
6469 if (offset
== length
) {
6473 /* s Length of C-TAG */
6474 proto_tree_add_item_ret_uint(tree
, hf_pfcp_mac_addresses_removed_length_of_ctag
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &length_ctag
);
6476 /* (s+1) to t C-TAG */
6477 if (length_ctag
> 0)
6479 offset
= decode_pfcp_c_tag(tvb
, pinfo
, tree
, item
, offset
);
6482 /* u Length of S-TAG */
6483 proto_tree_add_item_ret_uint(tree
, hf_pfcp_mac_addresses_removed_length_of_stag
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &length_stag
);
6485 /* (u+1) to v S-TAG */
6486 if (length_stag
> 0)
6488 offset
= decode_pfcp_s_tag(tvb
, pinfo
, tree
, item
, offset
);
6491 if (offset
< length
) {
6492 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6497 * 8.2.105 Ethernet Inactivity Timer
6500 dissect_pfcp_ethernet_inactivity_timer(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6505 * The Ethernet Inactivity Timer field shall be encoded as an Unsigned32 binary integer value.
6508 /* 5 to 8 Inactivity Timer */
6509 proto_tree_add_item_ret_uint(tree
, hf_pfcp_ethernet_inactivity_timer
, tvb
, offset
, 4, ENC_BIG_ENDIAN
, &value
);
6512 if (offset
< length
) {
6513 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6519 * 8.2.106 Subsequent Event Quota
6522 dissect_pfcp_subsequent_event_quota(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6527 * The Subsequent Event Quota field shall be encoded as an Unsigned32 binary integer value.
6530 /* 5 to 8 Subsequent Event Quota */
6531 proto_tree_add_item_ret_uint(tree
, hf_pfcp_subsequent_event_quota
, tvb
, offset
, 4, ENC_BIG_ENDIAN
, &value
);
6534 proto_item_append_text(item
, "%u", value
);
6536 if (offset
< length
) {
6537 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6542 * 8.2.107 Subsequent Event Threshold
6545 dissect_pfcp_subsequent_event_threshold(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6550 * The Subsequent Event Threshold field shall be encoded as an Unsigned32 binary integer value.
6553 /* 5 to 8 Subsequent Event Threshold */
6554 proto_tree_add_item_ret_uint(tree
, hf_pfcp_subsequent_event_threshold
, tvb
, offset
, 4, ENC_BIG_ENDIAN
, &value
);
6557 proto_item_append_text(item
, "%u", value
);
6559 if (offset
< length
) {
6560 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6565 * 8.2.108 Trace Information
6568 dissect_pfcp_trace_information(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6571 uint32_t length_trigger_events
, length_list_interfaces
, length_ipaddress
;
6573 /* 5 to 7 MCC MNC */
6574 offset
= dissect_e212_mcc_mnc(tvb
, pinfo
, tree
, offset
, E212_NONE
, true);
6576 /* 8 to 10 Trace ID */
6577 proto_tree_add_item(tree
, hf_pfcp_trace_information_trace_id
, tvb
, offset
, 3, ENC_BIG_ENDIAN
);
6580 /* 11 Length of Trigger Events */
6581 proto_tree_add_item_ret_uint(tree
, hf_pfcp_trace_information_length_trigger_events
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &length_trigger_events
);
6584 /* 12 to m Trigger Events */
6585 proto_tree_add_item(tree
, hf_pfcp_trace_information_trigger_events
, tvb
, offset
, length_trigger_events
, ENC_NA
);
6586 offset
+= length_trigger_events
;
6588 /* m+1 Session Trace Depth */
6589 proto_tree_add_item(tree
, hf_pfcp_trace_information_session_trace_depth
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
6592 /* m+2 Length of List of Interfaces */
6593 proto_tree_add_item_ret_uint(tree
, hf_pfcp_trace_information_length_list_interfaces
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &length_list_interfaces
);
6596 /* (m+3) to p List of Interfaces */
6597 proto_tree_add_item(tree
, hf_pfcp_trace_information_list_interfaces
, tvb
, offset
, length_list_interfaces
, ENC_NA
);
6598 offset
+= length_list_interfaces
;
6600 /* p+1 Length of IP address of Trace Collection Entity */
6601 proto_tree_add_item_ret_uint(tree
, hf_pfcp_trace_information_length_ipaddress
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &length_ipaddress
);
6604 /* (p+2) to q IP Address of Trace Collection Entity */
6605 if (length_ipaddress
== 4) {
6606 proto_tree_add_item(tree
, hf_pfcp_trace_information_ipv4
, tvb
, offset
, length_ipaddress
, ENC_NA
);
6607 } else if (length_ipaddress
== 16) {
6608 proto_tree_add_item(tree
, hf_pfcp_trace_information_ipv6
, tvb
, offset
, length_ipaddress
, ENC_NA
);
6610 offset
+= length_ipaddress
;
6612 if (offset
< length
) {
6613 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6618 * 8.2.109 Framed-Route
6621 dissect_pfcp_framed_route(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6623 /* Octet 5 to (n+4) Framed-Route
6624 * The Framed-Route field shall be encoded as an Octet String as the value part of the Framed-Route AVP specified in IETF RFC 2865
6626 * The Text field is one or more octets, and its contents are
6627 * implementation dependent. It is intended to be human readable and
6628 * MUST NOT affect operation of the protocol. It is recommended that
6629 * the message contain UTF-8 encoded 10646 [7] characters.
6631 proto_tree_add_item(tree
, hf_pfcp_framed_route
, tvb
, 0, length
, ENC_UTF_8
);
6635 * 8.2.110 Framed-Routing
6638 dissect_pfcp_framed_routing(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6640 /* Octet 5 to (n+4) Framed-Routing
6641 * The Framed-Routing field shall be encoded as an Octet String as the value part of the Framed-Routing AVP specified in IETF RFC 2865
6643 proto_tree_add_item(tree
, hf_pfcp_framed_routing
, tvb
, 0, length
, ENC_NA
);
6647 * 8.2.111 Framed-IPv6-Route
6650 dissect_pfcp_framed_ipv6_route(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6652 /* Octet 5 to (n+4) Framed-IPv6-Route
6653 * The Framed-IPv6-Route field shall be encoded as an Octet String as the value part of the Framed-IPv6-Route AVP specified in RFC 3162
6655 * "...It is intended to be human readable..."
6657 proto_tree_add_item(tree
, hf_pfcp_framed_ipv6_route
, tvb
, 0, length
, ENC_UTF_8
);
6661 * 8.2.112 Event Quota
6664 dissect_pfcp_event_quota(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6669 /* 5 to 8 Event Quota
6670 * The Event Quota field shall be encoded as an Unsigned32 binary integer value.
6672 proto_tree_add_item_ret_uint(tree
, hf_pfcp_event_quota
, tvb
, offset
, 4, ENC_BIG_ENDIAN
, &value
);
6675 proto_item_append_text(item
, "%u", value
);
6677 if (offset
< length
) {
6678 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6683 * 8.2.113 Event Threshold
6686 dissect_pfcp_event_threshold(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6691 /* 5 to 8 Event Threshold
6692 * The Event Threshold field shall be encoded as an Unsigned32 binary integer value.
6694 proto_tree_add_item_ret_uint(tree
, hf_pfcp_event_threshold
, tvb
, offset
, 4, ENC_BIG_ENDIAN
, &value
);
6697 proto_item_append_text(item
, "%u", value
);
6699 if (offset
< length
) {
6700 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6705 * 8.2.114 Time Stamp
6708 dissect_pfcp_time_stamp(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6713 /* The Time Stamp field shall contain a UTC time.
6714 * Octets 5 to 8 shall be encoded in the same format as the first four octets
6715 * of the 64-bit timestamp format as defined in section 6 of IETF RFC 5905.
6717 proto_tree_add_item_ret_time_string(tree
, hf_pfcp_time_stamp
, tvb
, offset
, 4, ENC_TIME_NTP
| ENC_BIG_ENDIAN
, pinfo
->pool
, &time_str
);
6718 proto_item_append_text(item
, "%s", time_str
);
6721 if (offset
< length
) {
6722 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6727 * 8.2.115 Averaging Window
6730 dissect_pfcp_averaging_window(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6735 /* 5 to 8 Averaging Window
6736 * The Averaging Window field shall be encoded as an Unsigned32 binary integer value.
6738 proto_tree_add_item_ret_uint(tree
, hf_pfcp_averaging_window
, tvb
, offset
, 4, ENC_BIG_ENDIAN
, &value
);
6741 proto_item_append_text(item
, "%u", value
);
6743 if (offset
< length
) {
6744 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6749 * 8.2.116 Paging Policy Indicator (PPI)
6752 dissect_pfcp_paging_policy_indicator(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6757 /* Octet 5 Paging Policy Indicator (PPI)
6758 * The PPI shall be encoded as a value between 0 and 7, as specified in clause 5.5.3.7 of 3GPP TS 38.415
6760 proto_tree_add_item_ret_uint(tree
, hf_pfcp_paging_policy_indicator
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
6763 proto_item_append_text(item
, "%u", value
);
6765 if (offset
< length
) {
6766 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6774 dissect_pfcp_apn_dnn(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6779 * The encoding the APN/DNN field follows 3GPP TS 23.003 [2] clause 9.1.
6780 * The content of the APN/DNN field shall be the full APN/DNN with both the
6781 * APN/DNN Network Identifier and APN/DNN Operator Identifier
6783 /* NOTE: The APN/DNN field is not encoded as a dotted string as commonly used in documentation. */
6785 const uint8_t* string_value
;
6786 proto_tree_add_item_ret_string(tree
, hf_pfcp_apn_dnn
, tvb
, offset
, length
, ENC_APN_STR
| ENC_NA
, pinfo
->pool
, &string_value
);
6787 proto_item_append_text(item
, "%s", string_value
);
6792 * 8.2.118 3GPP Interface Type
6795 static const value_string pfcp_tgpp_interface_type_vals
[] = {
6805 { 8, "eNodeB GTP-U interface for DL data forwarding" },
6806 { 9, "eNodeB GTP-U interface for UL data forwarding" },
6807 { 10, "SGW/UPF GTP-U interface for DL data forwarding" },
6808 { 11, "N3 3GPP Access" },
6809 { 12, "N3 Trusted Non-3GPP Access" },
6810 { 13, "N3 Untrusted Non-3GPP Access" },
6811 { 14, "N3 for data forwarding" },
6812 { 15, "N9 (or N9 for non-roaming)" },
6818 { 21, "N9 for roaming" },
6820 { 23, "N9 for data forwarding" },
6825 { 28, "SGW/UPF GTP-U interface for UL data forwarding" },
6826 { 29, "N6mb/Nmb9" },
6833 dissect_pfcp_tgpp_interface_type(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6836 uint32_t tgpp_interface_type
;
6838 /* Octet 5 Spare Node ID Type*/
6839 proto_tree_add_item(tree
, hf_pfcp_spare_h1
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
6840 proto_tree_add_item_ret_uint(tree
, hf_pfcp_tgpp_interface_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &tgpp_interface_type
);
6841 proto_item_append_text(item
, "%s: ", val_to_str_const(tgpp_interface_type
, pfcp_tgpp_interface_type_vals
, "Unknown"));
6844 if (offset
< length
) {
6845 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6851 * 8.2.119 PFCPSRReq-Flags
6854 dissect_pfcp_pfcpsrreq_flags(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6858 static int * const pfcp_pfcpsrreq_flags
[] = {
6859 &hf_pfcp_spare_b7_b1
,
6860 &hf_pfcp_pfcpsrreq_flags_b0_psdbu
,
6863 /* Octet 5 Spare Spare Spare Spare Spare Spare Spare PSDBU */
6864 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_pfcpsrreq_flags
, ENC_BIG_ENDIAN
);
6867 if (offset
< length
) {
6868 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6874 * 8.2.120 PFCPAUReq-Flags
6877 dissect_pfcp_pfcpaureq_flags(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6881 static int * const pfcp_pfcpaureq_flags
[] = {
6882 &hf_pfcp_spare_b7_b1
,
6883 &hf_pfcp_pfcpaureq_flags_b0_parps
,
6886 /* Octet 5 Spare Spare Spare Spare Spare Spare Spare PSDBU */
6887 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_pfcpaureq_flags
, ENC_BIG_ENDIAN
);
6890 if (offset
< length
) {
6891 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6897 * 8.2.121 Activation Time
6900 dissect_pfcp_activation_time(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6905 /* Octets 5 to 8 shall be encoded in the same format as the first four octets of the 64-bit timestamp
6906 * format as defined in section 6 of IETF RFC 5905
6909 proto_tree_add_item_ret_time_string(tree
, hf_pfcp_activation_time
, tvb
, offset
, 4, ENC_TIME_NTP
| ENC_BIG_ENDIAN
, pinfo
->pool
, &time_str
);
6910 proto_item_append_text(item
, "%s", time_str
);
6913 if (offset
< length
) {
6914 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6919 * 8.2.122 Deactivation Time
6922 dissect_pfcp_deactivation_time(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6927 /* Octets 5 to 8 shall be encoded in the same format as the first four octets of the 64-bit timestamp
6928 * format as defined in section 6 of IETF RFC 5905
6931 proto_tree_add_item_ret_time_string(tree
, hf_pfcp_deactivation_time
, tvb
, offset
, 4, ENC_TIME_NTP
| ENC_BIG_ENDIAN
, pinfo
->pool
, &time_str
);
6932 proto_item_append_text(item
, "%s", time_str
);
6935 if (offset
< length
) {
6936 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6945 dissect_pfcp_mar_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args
)
6949 offset
= decode_pfcp_mar_id(tvb
, pinfo
, tree
, item
, offset
, args
);
6951 if (offset
< length
) {
6952 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6957 * 8.2.124 Steering Functionality
6959 static const value_string pfcp_steering_functionality_vals
[] = {
6966 dissect_pfcp_steering_functionality(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
6970 /* Octet 5 Steering Functionality Value
6971 * The Steering Functionality shall be encoded as a 4 bits binary
6973 proto_tree_add_item_ret_uint(tree
, hf_pfcp_steering_functionality
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
6976 proto_item_append_text(item
, "%s", val_to_str_const(value
, pfcp_steering_functionality_vals
, "Unknown"));
6978 if (offset
< length
) {
6979 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
6984 * 8.2.125 Steering Mode
6986 static const value_string pfcp_steering_mode_vals
[] = {
6987 { 0, "Active-Standby" },
6988 { 1, "Smallest Delay" },
6989 { 2, "Load Balancing" },
6990 { 3, "Priority-based" },
6996 dissect_pfcp_steering_mode(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7000 /* Octet 5 Steering Mode Value
7001 * The Steering Mode shall be encoded as a 4 bits binary
7003 proto_tree_add_item_ret_uint(tree
, hf_pfcp_steering_mode
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
7006 proto_item_append_text(item
, "%s", val_to_str_const(value
, pfcp_steering_mode_vals
, "Unknown"));
7008 if (offset
< length
) {
7009 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
7017 dissect_pfcp_weight(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7020 /* Octet 5 Weight */
7021 proto_tree_add_item_ret_uint(tree
, hf_pfcp_weight
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &value
);
7023 proto_item_append_text(item
, "%u", value
);
7030 static const value_string pfcp_priority_vals
[] = {
7033 { 2, "No Standby" },
7042 dissect_pfcp_priority(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7046 /* Octet 5 Priority Value
7047 * The Priority shall be encoded as a 4 bits binary.
7049 proto_tree_add_item_ret_uint(tree
, hf_pfcp_priority
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
7052 proto_item_append_text(item
, "%s", val_to_str_const(value
, pfcp_priority_vals
, "Unknown"));
7054 if (offset
< length
) {
7055 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
7060 * 8.2.128 UE IP address Pool Identity
7063 dissect_pfcp_ue_ip_address_pool_identity(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7066 uint32_t pool_length
;
7068 /* Octet 7 to "k" UE IP address Pool Identity
7069 * The UE IP address Pool Identity field shall be encoded as an OctetString
7070 * (see the Framed-Ipv6-Pool and Framed-Pool in clause 12.6.3 of 3GPP TS 29.561).
7072 proto_tree_add_item_ret_uint(tree
, hf_pfcp_ue_ip_address_pool_length
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &pool_length
);
7075 proto_tree_add_item(tree
, hf_pfcp_ue_ip_address_pool_identity
, tvb
, offset
, pool_length
, ENC_NA
);
7076 offset
+= pool_length
;
7078 if (offset
< length
) {
7079 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
7084 * 8.2.129 Alternative SMF IP Address
7087 dissect_pfcp_alternative_smf_ip_address(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7090 uint64_t alternative_smf_ip_address_flags
;
7092 static int * const pfcp_alternative_smf_ip_address_flags
[] = {
7093 &hf_pfcp_spare_b7_b2
,
7094 &hf_pfcp_alternative_smf_ip_address_flags_ppe
,
7099 /* Octet 5 Spare PPE V4 V6 */
7100 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_alternative_smf_ip_address_flags
, ENC_BIG_ENDIAN
, &alternative_smf_ip_address_flags
);
7103 /* IPv4 address (if present) */
7104 if (alternative_smf_ip_address_flags
& 0x2) {
7105 proto_tree_add_item(tree
, hf_pfcp_alternative_smf_ip_address_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
7106 proto_item_append_text(item
, ", IPv4 %s", tvb_ip_to_str(pinfo
->pool
, tvb
, offset
));
7109 /* IPv6 address (if present) */
7110 if (alternative_smf_ip_address_flags
& 0x1) {
7111 proto_tree_add_item(tree
, hf_pfcp_alternative_smf_ip_address_ipv6
, tvb
, offset
, 16, ENC_NA
);
7112 proto_item_append_text(item
, ", IPv6 %s", tvb_ip6_to_str(pinfo
->pool
, tvb
, offset
));
7116 if (offset
< length
) {
7117 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
7122 * 8.2.130 Packet Replication and Detection Carry-On Information
7125 dissect_pfcp_packet_replication_and_detection_carry_on_information(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7129 static int * const pfcp_packet_replication_and_detection_carry_on_information_flags
[] = {
7130 &hf_pfcp_spare_b7_b4
,
7131 &hf_pfcp_packet_replication_and_detection_carry_on_information_flags_b3_dcaroni
,
7132 &hf_pfcp_packet_replication_and_detection_carry_on_information_flags_b2_prin6i
,
7133 &hf_pfcp_packet_replication_and_detection_carry_on_information_flags_b1_prin19i
,
7134 &hf_pfcp_packet_replication_and_detection_carry_on_information_flags_b0_priueai
,
7137 /* Octet 5 Spare Spare Spare Spare DCARONI PRIN6I PRIN19I PRIUEAI */
7138 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_packet_replication_and_detection_carry_on_information_flags
, ENC_BIG_ENDIAN
);
7141 if (offset
< length
) {
7142 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
7147 * 8.2.131 SMF Set ID
7150 dissect_pfcp_smf_set_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7155 proto_tree_add_item(tree
, hf_pfcp_spare
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7159 offset
= decode_pfcp_fqdn(tvb
, pinfo
, tree
, item
, offset
, length
);
7161 if (offset
< length
) {
7162 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
7167 * 8.2.132 Quota Validity Time
7170 dissect_pfcp_quota_validity_time(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7177 /* The Quota Validity Time value shall be encoded as an Unsigned32 binary integer value. */
7178 proto_tree_add_item_ret_uint(tree
, hf_pfcp_validity_time_value
, tvb
, offset
, 4, ENC_BIG_ENDIAN
, &value
);
7181 proto_item_append_text(item
, "%u", value
);
7183 nstime_copy(&quvti
, &(pinfo
->abs_ts
));
7184 quvti
.secs
+= value
;
7185 pi
= proto_tree_add_time(tree
, hf_pfcp_validity_time_str
, tvb
, 0, 0, &quvti
);
7186 proto_item_set_generated(pi
);
7188 if (offset
< length
) {
7189 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
7194 * 8.2.133 Number of Reports
7197 dissect_pfcp_number_of_reports(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7201 /* Number of Reports, an Unsigned16 binary integer value excluding the first value "0". */
7202 proto_tree_add_item_ret_uint(tree
, hf_pfcp_number_of_reports
, tvb
, 0, length
, ENC_BIG_ENDIAN
, &value
);
7203 proto_item_append_text(item
, "%u", value
);
7207 * 8.2.134 PFCPASRsp-Flags
7210 dissect_pfcp_pfcpasrsp_flags(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7214 static int * const pfcp_pfcpasrsp_flags_flags
[] = {
7215 &hf_pfcp_spare_b7_b2
,
7216 &hf_pfcp_pfcpasrsp_flags_flags_b1_uupsi
,
7217 &hf_pfcp_pfcpasrsp_flags_flags_b0_psrei
,
7220 /* Octet 5 Spare UUPSI PSREI */
7221 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_pfcpasrsp_flags_flags
, ENC_BIG_ENDIAN
);
7224 if (offset
< length
) {
7225 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
7230 * 8.2.135 CP PFCP Entity IP Address
7233 dissect_pfcp_cp_pfcp_entity_ip_address(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7236 uint64_t cp_pfcp_entity_ip_address_flags
;
7238 static int * const pfcp_cp_pfcp_entity_ip_address_flags
[] = {
7239 &hf_pfcp_spare_b7_b2
,
7244 /* Octet 5 Spare V4 V6 */
7245 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_cp_pfcp_entity_ip_address_flags
, ENC_BIG_ENDIAN
, &cp_pfcp_entity_ip_address_flags
);
7248 /* IPv4 address (if present) */
7249 if ((cp_pfcp_entity_ip_address_flags
& 0x2)) {
7250 proto_tree_add_item(tree
, hf_pfcp_cp_pfcp_entity_ip_address_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
7251 proto_item_append_text(item
, ", IPv4 %s", tvb_ip_to_str(pinfo
->pool
, tvb
, offset
));
7254 /* IPv6 address (if present) */
7255 if ((cp_pfcp_entity_ip_address_flags
& 0x1)) {
7256 proto_tree_add_item(tree
, hf_pfcp_cp_pfcp_entity_ip_address_ipv6
, tvb
, offset
, 16, ENC_NA
);
7257 proto_item_append_text(item
, ", IPv6 %s", tvb_ip6_to_str(pinfo
->pool
, tvb
, offset
));
7261 if (offset
< length
) {
7262 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
7267 * 8.2.136 PFCPSEReq-Flags
7270 dissect_pfcp_pfcpsereq_flags(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7274 static int * const pfcp_pfcpsereq_flags_flags
[] = {
7275 &hf_pfcp_spare_b7_b3
,
7276 &hf_pfcp_pfcpsereq_flags_flags_b2_hrsbom
,
7277 &hf_pfcp_pfcpsereq_flags_flags_b1_sumpc
,
7278 &hf_pfcp_pfcpsereq_flags_flags_b0_resti
,
7281 /* Octet 5 Spare HRSBOM SUMPC RESTI */
7282 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_pfcpsereq_flags_flags
, ENC_BIG_ENDIAN
);
7285 if (offset
< length
) {
7286 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
7291 * 8.2.137 IP Multicast Address
7294 dissect_pfcp_ip_multicast_address(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7297 uint64_t ip_multicast_address_flags
;
7299 static int * const pfcp_ip_multicast_address_flags
[] = {
7300 &hf_pfcp_spare_b7_b4
,
7301 &hf_pfcp_ip_multicast_address_flags_b3_any
,
7302 &hf_pfcp_ip_multicast_address_flags_b2_range
,
7307 /* Octet 5 Spare A(Any) R(Range) V4 V6 */
7308 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_ip_multicast_address_flags
, ENC_BIG_ENDIAN
, &ip_multicast_address_flags
);
7311 /* Any: If this bit is set to "1", this indicates any IP multicast address; in this case, no IP address field shall be included. */
7312 if (!(ip_multicast_address_flags
& 0x8)) {
7313 /* IPv4 address (if present) */
7314 if ((ip_multicast_address_flags
& 0x2)) {
7315 proto_tree_add_item(tree
, hf_pfcp_ip_multicast_address_start_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
7318 /* IPv6 address (if present) */
7319 if ((ip_multicast_address_flags
& 0x1)) {
7320 proto_tree_add_item(tree
, hf_pfcp_ip_multicast_address_start_ipv6
, tvb
, offset
, 16, ENC_NA
);
7324 if ((ip_multicast_address_flags
& 0x4)) {
7325 /* IPv4 address (if present) */
7326 if ((ip_multicast_address_flags
& 0x2)) {
7327 proto_tree_add_item(tree
, hf_pfcp_ip_multicast_address_end_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
7330 /* IPv6 address (if present) */
7331 if ((ip_multicast_address_flags
& 0x1)) {
7332 proto_tree_add_item(tree
, hf_pfcp_ip_multicast_address_end_ipv6
, tvb
, offset
, 16, ENC_NA
);
7338 if (offset
< length
) {
7339 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
7344 * 8.2.138 Source IP Address
7347 dissect_pfcp_source_ip_address(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7350 uint64_t source_ip_address_flags
;
7352 static int * const pfcp_source_ip_address_flags
[] = {
7353 &hf_pfcp_spare_b7_b3
,
7354 &hf_pfcp_source_ip_address_flags_b2_mpl
,
7359 /* Octet 5 Spare V4 V6 */
7360 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_source_ip_address_flags
, ENC_BIG_ENDIAN
, &source_ip_address_flags
);
7363 /* IPv4 address (if present) */
7364 if ((source_ip_address_flags
& 0x2)) {
7365 proto_tree_add_item(tree
, hf_pfcp_source_ip_address_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
7366 proto_item_append_text(item
, ", IPv4 %s", tvb_ip_to_str(pinfo
->pool
, tvb
, offset
));
7369 /* IPv6 address (if present) */
7370 if ((source_ip_address_flags
& 0x1)) {
7371 proto_tree_add_item(tree
, hf_pfcp_source_ip_address_ipv6
, tvb
, offset
, 16, ENC_NA
);
7372 proto_item_append_text(item
, ", IPv6 %s", tvb_ip6_to_str(pinfo
->pool
, tvb
, offset
));
7375 /* Mask/Prefix Length (if present) */
7376 if ((source_ip_address_flags
& 0x4)) {
7377 proto_tree_add_item(tree
, hf_pfcp_source_ip_address_mask_prefix_lengt
, tvb
, offset
, 1, ENC_NA
);
7378 proto_item_append_text(item
, ", Mask/Prefix length %s", tvb_ip6_to_str(pinfo
->pool
, tvb
, offset
));
7383 if (offset
< length
) {
7384 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
7389 * 8.2.139 Packet Rate Status
7392 dissect_pfcp_packet_rate_status(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7397 static int * const pfcp_packet_rate_status_flags
[] = {
7398 &hf_pfcp_spare_b7_b3
,
7399 &hf_pfcp_packet_rate_status_flags_b2_apr
,
7400 &hf_pfcp_packet_rate_status_flags_b1_dl
,
7401 &hf_pfcp_packet_rate_status_flags_b0_ul
,
7404 /* Octet 5 Spare APR DL UL*/
7405 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_packet_rate_status_flags
, ENC_BIG_ENDIAN
, &flags_val
);
7409 /* Number of Remaining Uplink Packets Allowed */
7410 if ((flags_val
& 0x1)) {
7411 proto_tree_add_item(tree
, hf_pfcp_packet_rate_status_ul
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
7414 if ((flags_val
& 0x4)) {
7415 proto_tree_add_item(tree
, hf_pfcp_packet_rate_status_apr_ul
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
7419 /* Number of Remaining Downlink Packets Allowed */
7420 if ((flags_val
& 0x2)) {
7421 proto_tree_add_item(tree
, hf_pfcp_packet_rate_status_dl
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
7424 /* Additional number of Remaining Downlink Packets Allowed */
7425 if ((flags_val
& 0x4)) {
7426 proto_tree_add_item(tree
, hf_pfcp_packet_rate_status_apr_dl
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
7430 /* Rate Control Status Validity Time */
7431 if (offset
< length
) {
7432 proto_tree_add_item(tree
, hf_pfcp_packet_rate_status_validity_time
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
7436 if (offset
< length
) {
7437 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
7442 * 8.2.140 Create Bridge/Router Info
7445 dissect_pfcp_create_bridge_router_info(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7449 static int * const pfcp_create_bridge_router_info_flags
[] = {
7450 &hf_pfcp_spare_b7_b2
,
7451 &hf_pfcp_create_bridge_router_info_flags_b1_rii
,
7452 &hf_pfcp_create_bridge_router_info_flags_b0_bii
,
7455 /* Octet 5 Spare RII BII */
7456 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_create_bridge_router_info_flags
, ENC_BIG_ENDIAN
);
7459 if (offset
< length
) {
7460 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
7465 * 8.2.141 Port Number
7468 dissect_pfcp_port_number(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7472 /* The Port Number shall contain one Port Number value */
7473 proto_tree_add_item_ret_uint(tree
, hf_pfcp_port_number
, tvb
, 0, length
, ENC_BIG_ENDIAN
, &value
);
7474 proto_item_append_text(item
, "%u", value
);
7478 * 8.2.142 NW-TT Port Number
7481 dissect_pfcp_nw_tt_port_number(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7485 /* The NW-TT Port Number shall contain one Port Number value */
7486 proto_tree_add_item_ret_uint(tree
, hf_pfcp_nw_tt_port_number
, tvb
, 0, length
, ENC_BIG_ENDIAN
, &value
);
7487 proto_item_append_text(item
, "%u", value
);
7491 * 8.2.143 5GS User Plane Node ID
7494 dissect_pfcp_5gs_user_plane_node_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7499 static int * const pfcp_5gs_user_plane_node_id_flags
[] = {
7500 &hf_pfcp_spare_b7_b4
,
7501 &hf_pfcp_5gs_user_plane_node_id_flags_b0_bid
,
7504 /* Octet 5 Spare BID */
7505 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_5gs_user_plane_node_id_flags
, ENC_BIG_ENDIAN
, &flags_val
);
7508 // Bit 1 – BID: If this bit is set to "1", then the Use Plane value field shall be present,
7509 // The Bridge ID value is defined in IEEE.802.1Q clause 14.2.5 and value shall be encoded as an Unisigned64 binary integer.
7510 if ((flags_val
& 0x1)) {
7511 proto_tree_add_item(tree
, hf_pfcp_5gs_user_plane_node_id_value
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
7515 if (offset
< length
) {
7516 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
7521 * 8.2.144 Port Management Information Container
7524 dissect_pfcp_port_management_information_container(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7526 /* Oct 5 The Port Management Information field shall be encoded as an Octet String. */
7527 proto_tree_add_item(tree
, hf_pfcp_port_management_information
, tvb
, 0, length
, ENC_NA
);
7531 * 8.2.145 Requested Clock Drift Information
7534 dissect_pfcp_requested_clock_drift_control_information(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7538 static int * const pfcp_requested_clock_drift_control_information_flags
[] = {
7539 &hf_pfcp_spare_b7_b2
,
7540 &hf_pfcp_requested_clock_drift_control_information_flags_b1_rrcr
,
7541 &hf_pfcp_requested_clock_drift_control_information_flags_b0_rrto
,
7544 /* Octet 5 Spare BII */
7545 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_requested_clock_drift_control_information_flags
, ENC_BIG_ENDIAN
);
7548 if (offset
< length
) {
7549 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
7554 * 8.2.146 Time Domain Number
7557 dissect_pfcp_time_domain_number(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7562 /* Oct 5 The TSN Time Domain Number value field shall be encoded as a binary integer value. */
7563 proto_tree_add_item_ret_uint(tree
, hf_pfcp_time_domain_number_value
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
7566 proto_item_append_text(item
, "%u", value
);
7568 if (offset
< length
) {
7569 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
7574 * 8.2.147 Time Offset Threshold
7577 dissect_pfcp_time_offset_threshold(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7581 /* Oct 5 to 12 The Time Offset Threshold field shall be encoded as a signed64 binary integer value. It shall contain the Time Offset Threshold in nanoseconds. */
7582 proto_tree_add_item(tree
, hf_pfcp_time_offset_threshold
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
7585 if (offset
< length
) {
7586 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
7591 * 8.2.148 Cumulative rateRatio Threshold
7594 dissect_pfcp_cumulative_rate_ratio_threshold(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7598 /* Oct 5 The Cumulative rateRatio Threshold field shall be encoded as the cumulativeRateRatio (Integer32) specified in clauses 14.4.2 and 15.6 of IEEE Std 802.1AS-Rev/D7.3 [58], i.e. the quantity "(rateRatio- 1.0)(2^41)". */
7599 proto_tree_add_item(tree
, hf_pfcp_cumulative_rate_ratio_threshold
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
7602 if (offset
< length
) {
7603 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
7608 * 8.2.149 Time Offset Measurement
7611 dissect_pfcp_time_offset_measurement(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7615 /* Oct 5 The Time Offset Measurement field shall be encoded as a signed64 binary integer value. It shall contain the Time Offset Measurement in nanoseconds. */
7616 proto_tree_add_item(tree
, hf_pfcp_time_offset_measurement
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
7619 if (offset
< length
) {
7620 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
7625 * 8.2.150 Cumulative rateRatio Measurement
7628 dissect_pfcp_cumulative_rate_ratio_measurement(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7632 /* Oct 5 The Cumulative rateRatio Measurement field shall be encoded as the cumulativeRateRatio (Integer32) specified in clauses 14.4.2 and 15.6 of IEEE Std 802.1AS-Rev/D7.3 [58], i.e. the quantity "(rateRatio- 1.0)(2^41)". */
7633 proto_tree_add_item(tree
, hf_pfcp_cumulative_rate_ratio_measurement
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
7636 if (offset
< length
) {
7637 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
7646 dissect_pfcp_srr_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args
)
7650 offset
= decode_pfcp_srr_id(tvb
, pinfo
, tree
, item
, offset
, args
);
7652 if (offset
< length
) {
7653 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
7658 * 8.2.152 Requested Access Availability Information
7661 dissect_pfcp_requested_access_availability_control_information(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7665 static int * const pfcp_requested_access_availability_control_information_flags
[] = {
7666 &hf_pfcp_spare_b7_b1
,
7667 &hf_pfcp_requested_access_availability_control_information_flags_b0_rrca
,
7670 /* Octet 5 Spare RRCA */
7671 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_requested_access_availability_control_information_flags
, ENC_BIG_ENDIAN
);
7674 if (offset
< length
) {
7675 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
7680 * 8.2.153 Access Availability Information
7682 static const value_string pfcp_availability_status_vals
[] = {
7683 { 0, "Access has become unavailable" },
7684 { 1, "Access has become available" },
7687 static const value_string pfcp_availability_type_vals
[] = {
7688 { 0, "3GPP access type" },
7689 { 1, "Non-3GPP access type" },
7694 dissect_pfcp_access_availability_information(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7699 /* Availability Status */
7700 proto_tree_add_item(tree
, hf_pfcp_availability_status
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7703 proto_tree_add_item(tree
, hf_pfcp_availability_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
7706 if (offset
< length
) {
7707 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
7712 * 8.2.154 MPTCP Control Information
7715 dissect_pfcp_mptcp_control_information(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7719 static int * const pfcp_mptcp_control_information_flags
[] = {
7720 &hf_pfcp_spare_b7_b1
,
7721 &hf_pfcp_mptcp_control_information_flags_b0_tci
,
7724 /* Octet 5 Spare RRCA */
7725 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_mptcp_control_information_flags
, ENC_BIG_ENDIAN
);
7728 if (offset
< length
) {
7729 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
7734 * 8.2.155 ATSSS-LL Control Information
7737 dissect_pfcp_atsss_ll_control_information(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7741 static int * const pfcp_atsss_ll_control_information_flags
[] = {
7742 &hf_pfcp_spare_b7_b1
,
7743 &hf_pfcp_atsss_ll_control_information_flags_b0_lli
,
7746 /* Octet 5 Spare RRCA */
7747 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_atsss_ll_control_information_flags
, ENC_BIG_ENDIAN
);
7751 if (offset
< length
) {
7752 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
7757 * 8.2.156 PMF Control Information
7760 dissect_pfcp_pmf_control_information(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7766 static int * const pfcp_pmf_control_information_flags
[] = {
7767 &hf_pfcp_spare_b7_b3
,
7768 &hf_pfcp_pmf_control_information_flags_b2_pqpm
,
7769 &hf_pfcp_pmf_control_information_flags_b1_drtti
,
7770 &hf_pfcp_pmf_control_information_flags_b0_pmfi
,
7773 /* Octet 5 Spare PQPM DRTTI RRCA */
7774 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_pmf_control_information_flags
, ENC_BIG_ENDIAN
, &flags
);
7778 if ((flags
& 0x4)) {
7779 /* 6 Number of QFI */
7780 proto_tree_add_item_ret_uint(tree
, hf_pfcp_pmf_control_information_number_of_qfi
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
7783 /* 7 to (7+p+1) QFI */
7784 for (i
= 0; i
< value
; i
++)
7786 offset
= decode_pfcp_qfi(tvb
, pinfo
, tree
, item
, offset
);
7790 if (offset
< length
) {
7791 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
7796 * 8.2.157 MPTCP Address Information
7799 dissect_pfcp_mptcp_address_information(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7802 uint64_t mptcp_address_flags
;
7804 static int * const pfcp_mptcp_ip_address_information_flags
[] = {
7805 &hf_pfcp_spare_b7_b2
,
7806 &hf_pfcp_mptcp_address_information_flags_b1_v6
,
7807 &hf_pfcp_mptcp_address_information_flags_b0_v4
,
7810 /* Octet 5 Spare V6 V4 */
7811 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_mptcp_ip_address_information_flags
, ENC_BIG_ENDIAN
, &mptcp_address_flags
);
7814 /* Octet 6 MPTCP Proxy Type */
7815 proto_tree_add_item(tree
, hf_pfcp_mptcp_proxy_type
, tvb
, offset
, 1, ENC_NA
);
7818 /* Octet 7 to 8 MPTCP Proxy Port */
7819 proto_tree_add_item(tree
, hf_pfcp_mptcp_proxy_port
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
7822 /* MPTCP Proxy IPv4 address (if present) */
7823 if ((mptcp_address_flags
& 0x1)) {
7824 proto_tree_add_item(tree
, hf_pfcp_mptcp_proxy_ip_address_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
7825 proto_item_append_text(item
, ", IPv4 %s", tvb_ip_to_str(pinfo
->pool
, tvb
, offset
));
7828 /* MPTCP Proxy IPv6 address (if present) */
7829 if ((mptcp_address_flags
& 0x2)) {
7830 proto_tree_add_item(tree
, hf_pfcp_mptcp_proxy_ip_address_ipv6
, tvb
, offset
, 16, ENC_NA
);
7831 proto_item_append_text(item
, ", IPv6 %s", tvb_ip6_to_str(pinfo
->pool
, tvb
, offset
));
7835 if (offset
< length
) {
7836 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
7841 * 8.2.158 Link-Specific Multipath IP Address
7844 dissect_pfcp_link_specific_multipath_ip_address(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7847 uint64_t link_specific_multipath_ip_address_flags
;
7849 static int * const pfcp_link_specific_multipath_ip_address_flags
[] = {
7850 &hf_pfcp_spare_b7_b4
,
7851 &hf_pfcp_link_specific_multipath_ip_address_flags_b3_nv6
,
7852 &hf_pfcp_link_specific_multipath_ip_address_flags_b2_nv4
,
7853 &hf_pfcp_link_specific_multipath_ip_address_flags_b1_v6
,
7854 &hf_pfcp_link_specific_multipath_ip_address_flags_b0_v4
,
7857 /* Octet 5 Spare NV6 NV4 V6 V4 */
7858 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_link_specific_multipath_ip_address_flags
, ENC_BIG_ENDIAN
, &link_specific_multipath_ip_address_flags
);
7861 /* Link-Specific Multipath IPv4 Address for 3GPP Access (if present) */
7862 if ((link_specific_multipath_ip_address_flags
& 0x1)) {
7863 proto_tree_add_item(tree
, hf_pfcp_link_specific_multipath_ip_address_3gpp_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
7866 /* Link-Specific Multipath IPv6 Address for 3GPP Access (if present) */
7867 if ((link_specific_multipath_ip_address_flags
& 0x2)) {
7868 proto_tree_add_item(tree
, hf_pfcp_link_specific_multipath_ip_address_3gpp_ipv6
, tvb
, offset
, 16, ENC_NA
);
7872 /* Link-Specific Multipath IPv4 Address for Non-3GPP Access (if present) */
7873 if ((link_specific_multipath_ip_address_flags
& 0x1)) {
7874 proto_tree_add_item(tree
, hf_pfcp_link_specific_multipath_ip_address_non3gpp_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
7877 /* Link-Specific Multipath IPv6 Address for Non-3GPP Access (if present) */
7878 if ((link_specific_multipath_ip_address_flags
& 0x2)) {
7879 proto_tree_add_item(tree
, hf_pfcp_link_specific_multipath_ip_address_non3gpp_ipv6
, tvb
, offset
, 16, ENC_NA
);
7882 if (offset
< length
) {
7883 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
7888 * 8.2.159 PMF Address Information
7891 dissect_pfcp_pmf_address_information(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7894 uint64_t pmf_address_information_flags
;
7896 static int * const pfcp_pmf_address_information_flags
[] = {
7897 &hf_pfcp_spare_b7_b3
,
7898 &hf_pfcp_pmf_address_information_flags_b2_mac
,
7899 &hf_pfcp_pmf_address_information_flags_b1_v6
,
7900 &hf_pfcp_pmf_address_information_flags_b0_v4
,
7903 /* Octet 5 Spare MAC V6 V4 */
7904 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_pmf_address_information_flags
, ENC_BIG_ENDIAN
, &pmf_address_information_flags
);
7907 /* p to (p+3) PMF IPv4 address (if present) */
7908 if ((pmf_address_information_flags
& 0x1)) {
7909 proto_tree_add_item(tree
, hf_pfcp_pmf_address_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
7912 /* q to (q+15) PMF IPv6 address (if present) */
7913 if ((pmf_address_information_flags
& 0x2)) {
7914 proto_tree_add_item(tree
, hf_pfcp_pmf_address_ipv6
, tvb
, offset
, 16, ENC_NA
);
7917 /* r to (r+1) PMF Port for 3GPP */
7918 proto_tree_add_item(tree
, hf_pfcp_pmf_port_3gpp
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
7921 /* s to (s+1) PMF Port for Non-3GPP */
7922 proto_tree_add_item(tree
, hf_pfcp_pmf_port_non3gpp
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
7925 /* t to (t+5) PMF MAC address for 3GPP access (if present)*/
7926 if ((pmf_address_information_flags
& 0x4)) {
7927 proto_tree_add_item(tree
, hf_pfcp_pmf_mac_address_3gpp
, tvb
, offset
, 6, ENC_NA
);
7931 /* u to (u+5) PMF MAC address for Non-3GPP access (if present)*/
7932 if ((pmf_address_information_flags
& 0x4)) {
7933 proto_tree_add_item(tree
, hf_pfcp_pmf_mac_address_non3gpp
, tvb
, offset
, 6, ENC_NA
);
7937 if (offset
< length
) {
7938 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
7943 * 8.2.160 ATSSS-LL Information
7946 dissect_pfcp_atsss_ll_information(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7950 static int * const pfcp_atsss_ll_information_flags
[] = {
7951 &hf_pfcp_spare_b7_b1
,
7952 &hf_pfcp_atsss_ll_information_flags_b0_lli
,
7955 /* Octet 5 Spare LLI */
7956 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_atsss_ll_information_flags
, ENC_BIG_ENDIAN
);
7959 if (offset
< length
) {
7960 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
7965 * 8.2.161 Data Network Access Identifier
7968 dissect_pfcp_data_network_access_identifier(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7972 /* Octet 5 to (n+4) Data Network Access Identifier
7973 * The Data Network Access Identifier field shall be encoded as an OctetString
7975 proto_tree_add_item(tree
, hf_pfcp_data_network_access_identifier
, tvb
, offset
, length
, ENC_NA
);
7979 * 8.2.162 Average Packet Delay
7982 dissect_pfcp_average_packet_delay(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
7986 /* Octet 5 to 8 Delay Value in milliseconds */
7987 proto_tree_add_item(tree
, hf_pfcp_packet_delay_milliseconds
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
7990 if (offset
< length
) {
7991 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
7996 * 8.2.163 Minimum Packet Delay
7999 dissect_pfcp_minimum_packet_delay(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8003 /* Octet 5 to 8 Delay Value in milliseconds */
8004 proto_tree_add_item(tree
, hf_pfcp_packet_delay_milliseconds
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8007 if (offset
< length
) {
8008 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
8013 * 8.2.164 Maximum Packet Delay
8016 dissect_pfcp_maximum_packet_delay(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8020 /* Octet 5 to 8 Delay Value in milliseconds */
8021 proto_tree_add_item(tree
, hf_pfcp_packet_delay_milliseconds
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8024 if (offset
< length
) {
8025 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
8030 * 8.2.165 QoS Report Trigger
8033 dissect_pfcp_qos_report_trigger(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8037 static int * const pfcp_qos_report_trigger_flags
[] = {
8038 &hf_pfcp_spare_b7_b3
,
8039 &hf_pfcp_qos_report_trigger_flags_b2_ire
,
8040 &hf_pfcp_qos_report_trigger_flags_b1_thr
,
8041 &hf_pfcp_qos_report_trigger_flags_b0_per
,
8044 /* Octet 5 Spare IRE THR PER */
8045 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_qos_report_trigger_flags
, ENC_BIG_ENDIAN
);
8048 if (offset
< length
) {
8049 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
8054 * 8.2.166 GTP-U Path Interface Type
8057 dissect_pfcp_gtp_u_path_interface_type(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8061 static int * const pfcp_gtp_u_path_interface_type_flags
[] = {
8062 &hf_pfcp_spare_b7_b2
,
8063 &hf_pfcp_gtp_u_path_interface_type_flags_b1_n3
,
8064 &hf_pfcp_gtp_u_path_interface_type_flags_b0_n9
,
8067 /* Octet 5 Spare N3 N9 */
8068 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_gtp_u_path_interface_type_flags
, ENC_BIG_ENDIAN
);
8071 if (offset
< length
) {
8072 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
8077 * 8.2.167 Requested QoS Monitoring
8080 dissect_pfcp_requested_qos_monitoring(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8084 static int * const pfcp_requested_qos_monitoring_flags
[] = {
8085 &hf_pfcp_requested_qos_monitoring_flags_b7_ulpr
,
8086 &hf_pfcp_requested_qos_monitoring_flags_b6_dlpr
,
8087 &hf_pfcp_requested_qos_monitoring_flags_b5_ulci
,
8088 &hf_pfcp_requested_qos_monitoring_flags_b4_dlci
,
8089 &hf_pfcp_requested_qos_monitoring_flags_b3_gtpupm
,
8090 &hf_pfcp_requested_qos_monitoring_flags_b2_rppd
,
8091 &hf_pfcp_requested_qos_monitoring_flags_b1_ulpd
,
8092 &hf_pfcp_requested_qos_monitoring_flags_b0_dlpd
,
8095 /* Octet 5 ULPR DLPR ULCI DLCI GTPUPM RPPD UlPD DLPD */
8096 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_requested_qos_monitoring_flags
, ENC_BIG_ENDIAN
);
8099 if (offset
< length
) {
8100 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
8105 * 8.2.168 Reporting Frequency
8108 dissect_pfcp_reporting_frequency(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8112 static int * const pfcp_reporting_frequency_flags
[] = {
8113 &hf_pfcp_spare_b7_b3
,
8114 &hf_pfcp_reporting_frequency_flags_b2_sesrl
,
8115 &hf_pfcp_reporting_frequency_flags_b1_perio
,
8116 &hf_pfcp_reporting_frequency_flags_b0_evett
,
8119 /* Octet 5 Spare RP Ul DL */
8120 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_reporting_frequency_flags
, ENC_BIG_ENDIAN
);
8123 if (offset
< length
) {
8124 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
8129 * 8.2.169 Packet Delay Thresholds
8132 dissect_pfcp_packet_delay_thresholds(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8135 uint64_t packet_delay_thresholds_flags
;
8137 static int * const pfcp_packet_delay_thresholds_flags
[] = {
8138 &hf_pfcp_spare_b7_b3
,
8139 &hf_pfcp_packet_delay_thresholds_flags_b2_rp
,
8140 &hf_pfcp_packet_delay_thresholds_flags_b1_ul
,
8141 &hf_pfcp_packet_delay_thresholds_flags_b0_dl
,
8144 /* Octet 5 Spare RP Ul DL */
8145 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_packet_delay_thresholds_flags
, ENC_BIG_ENDIAN
, &packet_delay_thresholds_flags
);
8148 /* m to (m+3) Downlink packet delay threshold */
8149 if ((packet_delay_thresholds_flags
& 0x1)) {
8150 proto_tree_add_item(tree
, hf_pfcp_packet_delay_thresholds_downlink
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8154 /* p to (p+3) Uplink packet delay threshold */
8155 if ((packet_delay_thresholds_flags
& 0x2)) {
8156 proto_tree_add_item(tree
, hf_pfcp_packet_delay_thresholds_uplink
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8160 /* q to (q+3) Round trip packet delay threshold */
8161 if ((packet_delay_thresholds_flags
& 0x4)) {
8162 proto_tree_add_item(tree
, hf_pfcp_packet_delay_thresholds_roundtrip
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8166 if (offset
< length
) {
8167 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
8172 * 8.2.170 Minimum Wait Time
8175 dissect_pfcp_minimum_wait_time(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8179 /* Octet 5 to 8 Minimum Wait Time */
8180 proto_tree_add_item(tree
, hf_pfcp_minimum_wait_time_seconds
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8183 if (offset
< length
) {
8184 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
8189 * 8.2.171 QoS Monitoring Measurement
8192 dissect_pfcp_qos_monitoring_measurement(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8195 uint64_t qos_monitoring_measurement_flags
;
8197 static int * const pfcp_qos_monitoring_measurement_flags
[] = {
8198 &hf_pfcp_spare_b7_b5
,
8199 &hf_pfcp_qos_monitoring_measurement_flags_b5_ulci
,
8200 &hf_pfcp_qos_monitoring_measurement_flags_b4_dlci
,
8201 &hf_pfcp_qos_monitoring_measurement_flags_b3_plmf
,
8202 &hf_pfcp_qos_monitoring_measurement_flags_b2_rppd
,
8203 &hf_pfcp_qos_monitoring_measurement_flags_b1_ulpd
,
8204 &hf_pfcp_qos_monitoring_measurement_flags_b0_dlpd
,
8207 /* Octet 5 Spare CI PLMF RP Ul DL */
8208 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_qos_monitoring_measurement_flags
, ENC_BIG_ENDIAN
, &qos_monitoring_measurement_flags
);
8211 /* m to (m+3) Downlink packet delay threshold */
8212 if ((qos_monitoring_measurement_flags
& 0x1)) {
8213 proto_tree_add_item(tree
, hf_pfcp_qos_monitoring_measurement_downlink_packet_delay
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8217 /* p to (p+3) Uplink packet delay threshold */
8218 if ((qos_monitoring_measurement_flags
& 0x2)) {
8219 proto_tree_add_item(tree
, hf_pfcp_qos_monitoring_measurement_uplink_packet_delay
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8223 /* q to (q+3) Round trip packet delay threshold */
8224 if ((qos_monitoring_measurement_flags
& 0x4)) {
8225 proto_tree_add_item(tree
, hf_pfcp_qos_monitoring_measurement_roundtrip
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8229 /* r Downlink Congestion information */
8230 if ((qos_monitoring_measurement_flags
& 0x10)) {
8231 proto_tree_add_item(tree
, hf_pfcp_qos_monitoring_measurement_downlink_congestion_information
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
8235 /* r Uplink Congestion information */
8236 if ((qos_monitoring_measurement_flags
& 0x20)) {
8237 proto_tree_add_item(tree
, hf_pfcp_qos_monitoring_measurement_uplink_congestion_information
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
8241 /* m to (m+3) Downlink packet rate */
8242 if ((qos_monitoring_measurement_flags
& 0x40)) {
8243 proto_tree_add_item(tree
, hf_pfcp_qos_monitoring_measurement_downlink_packet_rate
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8247 /* p to (p+3) Uplink packet rate */
8248 if ((qos_monitoring_measurement_flags
& 0x80)) {
8249 proto_tree_add_item(tree
, hf_pfcp_qos_monitoring_measurement_uplink_packet_rate
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8252 if (offset
< length
) {
8253 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
8258 * 8.2.172 MT-EDT Control Information
8261 dissect_pfcp_mt_edt_control_information(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8265 static int * const pfcp_mt_edt_control_information_flags
[] = {
8266 &hf_pfcp_spare_b7_b1
,
8267 &hf_pfcp_mt_edt_control_information_flags_b0_rdsi
,
8270 /* Octet 5 Spare RDSI */
8271 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_mt_edt_control_information_flags
, ENC_BIG_ENDIAN
);
8274 if (offset
< length
) {
8275 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
8280 * 8.2.173 DL Data Packets Size
8283 dissect_pfcp_dl_data_packets_size(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8287 /* Oct 5 to 6 DL Data Packets Size */
8288 proto_tree_add_item(tree
, hf_pfcp_dl_data_packets_size
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
8291 if (offset
< length
) {
8292 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
8297 * 8.2.174 QER Control Indications
8300 dissect_pfcp_qer_control_indications(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8304 static int * const pfcp_qer_control_indications_o5_flags
[] = {
8305 &hf_pfcp_spare_b7_b1
,
8306 &hf_pfcp_qer_control_indications_o5_b0_rcsr
,
8309 /* Octet 5 Spare RCSR */
8310 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_qer_control_indications_o5_flags
, ENC_BIG_ENDIAN
);
8313 if (offset
< length
) {
8314 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
8320 * 8.2.175 NF Instance ID
8323 dissect_pfcp_nf_instance_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8327 /* Octet 5 to 20 NF Instance ID */
8328 proto_tree_add_item(tree
, hf_pfcp_nf_instance_id
, tvb
, offset
, length
, ENC_NA
);
8335 dissect_pfcp_s_nssai(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8340 proto_tree_add_item(tree
, hf_pfcp_s_nssai_sst
, tvb
, offset
, 1, ENC_NA
);
8343 /* Octet 6 to 8 SD */
8344 proto_tree_add_item(tree
, hf_pfcp_s_nssai_sd
, tvb
, offset
, 3, ENC_NA
);
8347 if (offset
< length
) {
8348 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
8353 * 8.2.177 IP version
8356 dissect_pfcp_ip_version(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8360 static int * const pfcp_ip_version_flags
[] = {
8361 &hf_pfcp_spare_b7_b2
,
8362 &hf_pfcp_ip_version_flags_b1_v6
,
8363 &hf_pfcp_ip_version_flags_b0_v4
,
8366 /* Octet 5 Spare V6 V4 */
8367 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_ip_version_flags
, ENC_BIG_ENDIAN
);
8370 if (offset
< length
) {
8371 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
8376 * 8.2.178 PFCPASReq-Flags
8379 dissect_pfcp_pfcpasreq_flags(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8383 static int * const pfcp_pfcpasreq_flags_flags
[] = {
8384 &hf_pfcp_spare_b7_b1
,
8385 &hf_pfcp_pfcpasreq_flags_flags_b0_uupsi
,
8388 /* Octet 5 Spare UUPSI */
8389 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_pfcpasreq_flags_flags
, ENC_BIG_ENDIAN
);
8392 if (offset
< length
) {
8393 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
8398 * 8.2.179 Data Status
8401 dissect_pfcp_data_status(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8405 static int * const pfcp_data_status_flags
[] = {
8406 &hf_pfcp_spare_b7_b2
,
8407 &hf_pfcp_data_status_flags_b1_buff
,
8408 &hf_pfcp_data_status_flags_b0_drop
,
8411 /* Octet 5 Spare BUFF DROP */
8412 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_data_status_flags
, ENC_BIG_ENDIAN
);
8415 if (offset
< length
) {
8416 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
8421 * 8.2.180 RDS Configuration Information
8424 dissect_pfcp_rds_configuration_information(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8428 static int * const pfcp_rds_configuration_information_flags
[] = {
8429 &hf_pfcp_spare_b7_b1
,
8430 &hf_pfcp_rds_configuration_information_flags_b0_rds
,
8433 /* Octet 5 Spare RDS */
8434 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_rds_configuration_information_flags
, ENC_BIG_ENDIAN
);
8437 if (offset
< length
) {
8438 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
8443 * 8.2.181 Multipath Application Indication
8446 dissect_pfcp_multipath_application_indication(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8450 static int * const pfcp_multipath_application_indication_flags
[] = {
8451 &hf_pfcp_spare_b7_b2
,
8452 &hf_pfcp_multipath_application_indication_flags_b1_mqai
,
8453 &hf_pfcp_multipath_application_indication_flags_b0_mtai
,
8456 /* Octet 5 Spare MQAI MTAI */
8457 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_multipath_application_indication_flags
, ENC_BIG_ENDIAN
);
8460 if (offset
< length
) {
8461 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
8466 * 8.2.182 User Plane Node Management Information Container
8469 dissect_pfcp_user_plane_node_management_information_container(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8472 /* Octet 5 to (n+4) User Plane Node Management Information Container
8473 * The User Plane Node Management Information Container field shall be encoded as an OctetString.
8475 proto_tree_add_item(tree
, hf_pfcp_user_plane_node_management_information_container
, tvb
, offset
, length
, ENC_NA
);
8479 * 8.2.183 Number of UE IP Addresses
8482 dissect_pfcp_number_of_ue_ip_addresses(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8485 uint64_t number_of_ue_ip_addresses_flags
;
8487 static int * const pfcp_number_of_ue_ip_addresses_flags
[] = {
8488 &hf_pfcp_spare_b7_b2
,
8489 &hf_pfcp_number_of_ue_ip_addresses_b1_ipv6
,
8490 &hf_pfcp_number_of_ue_ip_addresses_b0_ipv4
,
8493 /* Octet 5 Spare Spare Spare Spare Spare Spare IPv6 IPv4*/
8494 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_number_of_ue_ip_addresses_flags
, ENC_BIG_ENDIAN
, &number_of_ue_ip_addresses_flags
);
8497 /* a to (a+3) Number of UE IPv4 Addresses */
8498 if ((number_of_ue_ip_addresses_flags
& 0x1) == 1) {
8499 proto_tree_add_item(tree
, hf_pfcp_number_of_ue_ip_addresses_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8502 /* b to (b+3) Number of UE IPv6 Addresses */
8503 if ((number_of_ue_ip_addresses_flags
& 0x2) == 2) {
8504 proto_tree_add_item(tree
, hf_pfcp_number_of_ue_ip_addresses_ipv6
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8508 if (offset
< length
) {
8509 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
8514 * 8.2.184 Validity Timer
8517 dissect_pfcp_validity_timer(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8521 /* Octet 5 to 6 Validity Timer
8522 * The Validity Timer value shall be encoded as an Unsigned16 binary integer value. It contains a duration in seconds
8524 proto_tree_add_item_ret_uint(tree
, hf_pfcp_validity_timer
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &value
);
8527 proto_item_append_text(item
, "%u s", value
);
8529 if (offset
< length
) {
8530 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
8536 * 8.2.185 Offending IE Information
8539 dissect_pfcp_offending_ie_information(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8544 /* Octet 5 to 6 Type of the offending IE */
8545 proto_tree_add_item_ret_uint(tree
, hf_pfcp_offending_ie
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &value
);
8546 proto_item_append_text(item
, "%s", val_to_str_const(value
, pfcp_ie_type
, "Unknown"));
8549 /* Octets 7 to (n+4) shall contain the value of the offending IE that caused the failure */
8550 proto_tree_add_item(tree
, hf_pfcp_offending_ie_value
, tvb
, offset
, length
- offset
, ENC_NA
);
8556 static const value_string pfcp_rattype_vals
[] = {
8562 { 5, "HSPA Evolution" },
8563 { 6, "EUTRAN (WB-E-UTRAN)" },
8565 { 8, "EUTRAN-NB-IoT" },
8568 { 11, "WB-E-UTRAN (LEO)" },
8569 { 12, "WB-E-UTRAN (MEO)" },
8570 { 13, "WB-E-UTRAN (GEO)" },
8571 { 14, "WB-E-UTRAN (OTHERSAT)" },
8572 { 15, "EUTRAN-NB-IoT (LEO)" },
8573 { 16, "EUTRAN-NB-IoT (MEO)" },
8574 { 17, "EUTRAN-NB-IoT (GEO)" },
8575 { 18, "EUTRAN-NB-IoT (OTHERSAT)" },
8576 { 19, "LTE-M (LEO)" },
8577 { 20, "LTE-M (MEO)" },
8578 { 21, "LTE-M (GEO)" },
8579 { 22, "LTE-M (OTHERSAT)" },
8583 { 26, "NR (OTHERSAT)" },
8584 { 27, "NR-REDCAP" },
8585 { 28, "NR-EREDCAP" },
8590 dissect_pfcp_rattype(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8594 /* Octet 5 RAT Type */
8595 proto_tree_add_item_ret_uint(tree
, hf_pfcp_rattype
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
8598 proto_item_append_text(item
, "%s", val_to_str_const(value
, pfcp_rattype_vals
, "Unknown"));
8600 if (offset
< length
) {
8601 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
8606 * 8.2.187 L2TP User Authentication
8609 dissect_pfcp_l2tp_user_authentication(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8612 uint64_t l2tp_user_authentication_flags
;
8613 uint32_t l2tp_length
;
8615 static int * const pfcp_l2tp_user_authentication_flags
[] = {
8616 &hf_pfcp_spare_b7_b4
,
8617 &hf_pfcp_l2tp_user_authentication_b3_pai
,
8618 &hf_pfcp_l2tp_user_authentication_b2_par
,
8619 &hf_pfcp_l2tp_user_authentication_b1_pac
,
8620 &hf_pfcp_l2tp_user_authentication_b0_pan
,
8624 /* Octet 5-6 Proxy Authen Type Value */
8625 proto_tree_add_item(tree
, hf_pfcp_l2tp_user_authentication_proxy_authen_type_value
, tvb
, offset
, 2, ENC_ASCII
| ENC_NA
);
8628 /* Octet 7 Spare PAI PAR PAC PAN */
8629 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_l2tp_user_authentication_flags
, ENC_BIG_ENDIAN
, &l2tp_user_authentication_flags
);
8632 /* Proxy Authen Name */
8633 if ((l2tp_user_authentication_flags
& 0x1)) {
8634 proto_tree_add_item_ret_uint(tree
, hf_pfcp_l2tp_user_authentication_proxy_authen_name_len
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &l2tp_length
);
8636 proto_tree_add_item(tree
, hf_pfcp_l2tp_user_authentication_proxy_authen_name
, tvb
, offset
, l2tp_length
, ENC_ASCII
| ENC_NA
);
8637 offset
+= l2tp_length
;
8640 /* Proxy Authen Challenge */
8641 if ((l2tp_user_authentication_flags
& 0x2)) {
8642 proto_tree_add_item_ret_uint(tree
, hf_pfcp_l2tp_user_authentication_proxy_authen_challenge_len
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &l2tp_length
);
8644 proto_tree_add_item(tree
, hf_pfcp_l2tp_user_authentication_proxy_authen_challenge
, tvb
, offset
, l2tp_length
, ENC_ASCII
| ENC_NA
);
8645 offset
+= l2tp_length
;
8648 /* Proxy Authen Response */
8649 if ((l2tp_user_authentication_flags
& 0x4)) {
8650 proto_tree_add_item_ret_uint(tree
, hf_pfcp_l2tp_user_authentication_proxy_authen_response_len
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &l2tp_length
);
8652 proto_tree_add_item(tree
, hf_pfcp_l2tp_user_authentication_proxy_authen_response
, tvb
, offset
, l2tp_length
, ENC_ASCII
| ENC_NA
);
8653 offset
+= l2tp_length
;
8656 /* Proxy Authen ID */
8657 if ((l2tp_user_authentication_flags
& 0x8)) {
8658 proto_tree_add_item(tree
, hf_pfcp_l2tp_user_authentication_proxy_authen_id
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
8662 if (offset
< length
) {
8663 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
8668 * 8.2.188 LNS Address
8671 dissect_pfcp_lns_address(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8677 proto_tree_add_item(tree
, hf_pfcp_lns_address_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8681 else if (length
== 16) {
8682 proto_tree_add_item(tree
, hf_pfcp_lns_address_ipv6
, tvb
, offset
, 16, ENC_NA
);
8686 if (offset
< length
) {
8687 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
8693 * 8.2.189 Tunnel Preference
8696 dissect_pfcp_tunnel_preference(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8698 proto_tree_add_item(tree
, hf_pfcp_tunnel_preference_value
, tvb
, 0, length
, ENC_BIG_ENDIAN
);
8702 * 8.2.190 Calling Number
8705 dissect_pfcp_calling_number(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8707 proto_tree_add_item(tree
, hf_pfcp_calling_number_value
, tvb
, 0, length
, ENC_ASCII
| ENC_NA
);
8711 * 8.2.191 Called Number
8714 dissect_pfcp_called_number(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8716 proto_tree_add_item(tree
, hf_pfcp_called_number_value
, tvb
, 0, length
, ENC_ASCII
| ENC_NA
);
8720 * 8.2.192 L2TP Session Indications
8723 dissect_pfcp_l2tp_session_indications(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8727 static int * const pfcp_l2tp_session_indications_o5_flags
[] = {
8728 &hf_pfcp_spare_b7_b3
,
8729 &hf_pfcp_l2tp_session_indications_o5_b2_rensa
,
8730 &hf_pfcp_l2tp_session_indications_o5_b1_redsa
,
8731 &hf_pfcp_l2tp_session_indications_o5_b0_reuia
,
8734 /* Octet 5 Spare spare Spare Spare Spare RENSA REDSA REUIA */
8735 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_l2tp_session_indications_o5_flags
, ENC_BIG_ENDIAN
);
8738 if (offset
< length
) {
8739 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
8745 * 8.2.193 DNS Server Address
8748 dissect_pfcp_dns_sever_address(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8753 proto_tree_add_item(tree
, hf_pfcp_node_id_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8754 proto_item_append_text(item
, "%s", tvb_ip_to_str(pinfo
->pool
, tvb
, offset
));
8757 if (offset
< length
) {
8758 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
8764 * 8.2.194 NBNS Server Address
8767 dissect_pfcp_nbns_sever_address(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8772 proto_tree_add_item(tree
, hf_pfcp_node_id_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8773 proto_item_append_text(item
, "%s", tvb_ip_to_str(pinfo
->pool
, tvb
, offset
));
8776 if (offset
< length
) {
8777 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
8783 * 8.2.195 Maximum Receive Unit
8786 dissect_pfcp_maximum_receive_unit(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8788 /* Oct 5 to 6 Maximum Receive Unit */
8789 proto_tree_add_item(tree
, hf_pfcp_maximum_receive_unit
, tvb
, 0, length
, ENC_BIG_ENDIAN
);
8793 * 8.2.196 Thresholds
8796 dissect_pfcp_thresholds(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8801 static int * const pfcp_thresholds_flags
[] = {
8802 &hf_pfcp_spare_b7_b2
,
8803 &hf_pfcp_thresholds_flags_b1_plr
,
8804 &hf_pfcp_thresholds_flags_b0_rtt
,
8807 /* Octet 5 Spare PLR RTT */
8808 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_thresholds_flags
, ENC_BIG_ENDIAN
, &flags
);
8812 if ((flags
& 0x1)) {
8813 /* m to (m+1) RTT */
8814 proto_tree_add_item(tree
, hf_pfcp_thresholds_rtt
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
8819 if ((flags
& 0x2)) {
8820 /* m to (m+1) RTT */
8821 proto_tree_add_item(tree
, hf_pfcp_thresholds_plr
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
8825 if (offset
< length
) {
8826 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
8831 * 8.2.197 Steering Mode Indicator
8834 dissect_pfcp_steering_mode_indications(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8838 static int * const pfcp_l2tp_steering_mode_indications_o5_flags
[] = {
8839 &hf_pfcp_spare_b7_b2
,
8840 &hf_pfcp_l2tp_steering_mode_indications_o5_b1_ueai
,
8841 &hf_pfcp_l2tp_steering_mode_indications_o5_b0_albi
,
8844 /* Octet 5 Spare spare Spare Spare Spare Spare UEAI ALBI */
8845 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_l2tp_steering_mode_indications_o5_flags
, ENC_BIG_ENDIAN
);
8848 if (offset
< length
) {
8849 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
8858 dissect_pfcp_group_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8860 /* Octet 5 to (n+4) Group ID */
8861 proto_tree_add_item(tree
, hf_pfcp_group_id
, tvb
, 0, length
, ENC_UTF_8
);
8865 * 8.2.199 CP IP Address
8868 dissect_pfcp_cp_ip_address(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8871 uint64_t cp_ip_address_flags
;
8873 static int * const pfcp_cp_ip_address_flags
[] = {
8874 &hf_pfcp_spare_b7_b2
,
8879 /* Octet 5 Spare V4 V6 */
8880 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_cp_ip_address_flags
, ENC_BIG_ENDIAN
, &cp_ip_address_flags
);
8883 /* IPv4 address (if present) */
8884 if (cp_ip_address_flags
& 0x2) {
8885 proto_tree_add_item(tree
, hf_pfcp_cp_ip_address_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8886 proto_item_append_text(item
, ", IPv4 %s", tvb_ip_to_str(pinfo
->pool
, tvb
, offset
));
8889 /* IPv6 address (if present) */
8890 if (cp_ip_address_flags
& 0x1) {
8891 proto_tree_add_item(tree
, hf_pfcp_cp_ip_address_ipv6
, tvb
, offset
, 16, ENC_NA
);
8892 proto_item_append_text(item
, ", IPv6 %s", tvb_ip6_to_str(pinfo
->pool
, tvb
, offset
));
8896 if (offset
< length
) {
8897 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
8902 * 8.2.200 IP Address and Port Number Replacement
8905 dissect_pfcp_ip_address_and_port_number_replacement(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8908 uint64_t ip_address_and_port_number_replacement_flags
;
8910 static int * const pfcp_ip_address_and_port_number_replacement_flags
[] = {
8912 &hf_pfcp_ip_address_and_port_number_replacement_flag_b6_umn6rs
,
8913 &hf_pfcp_ip_address_and_port_number_replacement_flag_b5_spn
,
8914 &hf_pfcp_ip_address_and_port_number_replacement_flag_b4_sipv6
,
8915 &hf_pfcp_ip_address_and_port_number_replacement_flag_b3_sipv4
,
8916 &hf_pfcp_ip_address_and_port_number_replacement_flag_b2_dpn
,
8917 &hf_pfcp_ip_address_and_port_number_replacement_flag_b1_v6
,
8918 &hf_pfcp_ip_address_and_port_number_replacement_flag_b0_v4
,
8921 /* Octet 5 Spare UMN6RS SPN SIPV6 SIPV4 DPN V6 V4*/
8922 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_ip_address_and_port_number_replacement_flags
, ENC_BIG_ENDIAN
, &ip_address_and_port_number_replacement_flags
);
8925 /* Destination IPv4 address (if present)*/
8926 if ((ip_address_and_port_number_replacement_flags
& 0x1)) {
8927 proto_tree_add_item(tree
, hf_pfcp_ip_address_and_port_number_replacement_destination_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8930 /* Destination IPv6 address (if present)*/
8931 if ((ip_address_and_port_number_replacement_flags
& 0x2)) {
8932 proto_tree_add_item(tree
, hf_pfcp_ip_address_and_port_number_replacement_destination_ipv6
, tvb
, offset
, 16, ENC_NA
);
8935 /* Destination Port Number (if present)*/
8936 if ((ip_address_and_port_number_replacement_flags
& 0x4)) {
8937 proto_tree_add_item(tree
, hf_pfcp_ip_address_and_port_number_replacement_destination_port
, tvb
, offset
, 2, ENC_NA
);
8940 /* Source IPv4 address (if present)*/
8941 if ((ip_address_and_port_number_replacement_flags
& 0x8)) {
8942 proto_tree_add_item(tree
, hf_pfcp_ip_address_and_port_number_replacement_source_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
8945 /* Source IPv6 address (if present)*/
8946 if ((ip_address_and_port_number_replacement_flags
& 0x10)) {
8947 proto_tree_add_item(tree
, hf_pfcp_ip_address_and_port_number_replacement_source_ipv6
, tvb
, offset
, 16, ENC_NA
);
8950 /* Source Port Number (if present)*/
8951 if ((ip_address_and_port_number_replacement_flags
& 0x20)) {
8952 proto_tree_add_item(tree
, hf_pfcp_ip_address_and_port_number_replacement_source_port
, tvb
, offset
, 2, ENC_NA
);
8956 if (offset
< length
) {
8957 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
8962 * 8.2.201 DNS Query/Response Filter
8965 dissect_pfcp_dns_query_response_filter(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8968 uint32_t dns_query_length
;
8970 proto_tree_add_item_ret_uint(tree
, hf_pfcp_dns_query_filter_pattern_len
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &dns_query_length
);
8972 proto_tree_add_item(tree
, hf_pfcp_dns_query_filter_pattern
, tvb
, offset
, dns_query_length
, ENC_ASCII
| ENC_NA
);
8973 offset
+= dns_query_length
;
8975 if (offset
< length
) {
8976 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
8981 * 8.2.202 Event Notification URI
8984 dissect_pfcp_event_notification_uri(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8986 proto_tree_add_item(tree
, hf_pfcp_event_notification_uri
, tvb
, 0, length
, ENC_ASCII
| ENC_NA
);
8991 * 8.2.203 Notification Correlation ID
8994 dissect_pfcp_notification_correlation_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
8997 /* 5 to n+4 Notification Correlation ID value */
8998 proto_tree_add_item_ret_uint(tree
, hf_pfcp_notification_correlation_id
, tvb
, 0, 4, ENC_BIG_ENDIAN
, &value
);
8999 proto_item_append_text(item
, "%u", value
);
9003 * 8.2.204 Reporting Flags
9006 dissect_pfcp_reporting_flags(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9010 static int * const pfcp_reporting_flags_o5_flags
[] = {
9011 &hf_pfcp_spare_b7_b1
,
9012 &hf_pfcp_reporting_flags_o5_b0_dupl
,
9015 /* Octet 5 Spare DUPL */
9016 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_reporting_flags_o5_flags
, ENC_BIG_ENDIAN
);
9019 if (offset
== length
) {
9023 if (offset
< length
) {
9024 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9029 * 8.2.205 Predefined Rules Name
9032 dissect_pfcp_predefined_rules_name(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9035 /* Octet 5 to (n+4) Predefined Rules Name
9036 * The Predefined Rules Name field shall be encoded as an OctetString
9038 proto_tree_add_item(tree
, hf_pfcp_predef_rules_name
, tvb
, offset
, length
, ENC_NA
);
9042 * 8.2.206 MBS Session Identifier
9045 dissect_pfcp_mbs_session_identifier(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9048 uint64_t mbs_session_identifier_flags
;
9050 static int * const pfcp_mbs_session_identifier_flags
[] = {
9051 &hf_pfcp_spare_b7_b3
,
9052 &hf_pfcp_mbs_session_identifier_flag_b2_nidi
,
9053 &hf_pfcp_mbs_session_identifier_flag_b1_ssmi
,
9054 &hf_pfcp_mbs_session_identifier_flag_b0_tmgi
,
9057 /* Octet 5 Spare NIDI SMI TMGI */
9058 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_mbs_session_identifier_flags
, ENC_BIG_ENDIAN
, &mbs_session_identifier_flags
);
9061 /* TMGI (if present)*/
9062 if ((mbs_session_identifier_flags
& 0x1)) {
9063 proto_tree_add_item(tree
, hf_pfcp_mbs_session_identifier_tmgi
, tvb
, offset
, 6, ENC_NA
);
9066 /* SSMI (if present)*/
9067 if ((mbs_session_identifier_flags
& 0x2)) {
9068 uint32_t source_address_type
;
9069 uint32_t source_address_length
;
9071 /* Source Address Type && Length */
9072 proto_tree_add_item_ret_uint(tree
, hf_pfcp_mbs_session_identifier_source_address_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &source_address_type
);
9073 proto_tree_add_item_ret_uint(tree
, hf_pfcp_mbs_session_identifier_source_address_length
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &source_address_length
);
9076 /* Source IPv4 address (if present) */
9077 if (source_address_type
== 0) {
9078 proto_tree_add_item(tree
, hf_pfcp_mbs_session_identifier_source_address_ipv4
, tvb
, offset
, source_address_length
, ENC_BIG_ENDIAN
);
9079 offset
+= source_address_length
;
9081 /* Source IPv6 address (if present) */
9082 if (source_address_type
== 1) {
9083 proto_tree_add_item(tree
, hf_pfcp_mbs_session_identifier_source_address_ipv6
, tvb
, offset
, source_address_length
, ENC_NA
);
9084 offset
+= source_address_length
;
9087 /* NIDI (if present)*/
9088 if ((mbs_session_identifier_flags
& 0x4)) {
9089 proto_tree_add_item(tree
, hf_pfcp_mbs_session_identifier_nidi
, tvb
, offset
, 5, ENC_NA
);
9093 if (offset
< length
) {
9094 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9099 * 8.2.207 Multicast Transport Information
9102 dissect_pfcp_multicast_transport_information(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9105 uint32_t distribution_address_type
;
9106 uint32_t distribution_address_length
;
9107 uint32_t source_address_type
;
9108 uint32_t source_address_length
;
9111 proto_tree_add_item(tree
, hf_pfcp_spare_oct
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
9114 /* Oct 6 to 9 Common Tunnel Endpoint Identifier */
9115 proto_tree_add_item(tree
, hf_pfcp_multicast_transport_information_endpoint_identifier
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
9118 /* Oct 10 Distribution Address Type && Length */
9119 proto_tree_add_item_ret_uint(tree
, hf_pfcp_multicast_transport_information_distribution_address_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &distribution_address_type
);
9120 proto_tree_add_item_ret_uint(tree
, hf_pfcp_multicast_transport_information_distribution_address_length
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &distribution_address_length
);
9123 /* Distribution IPv4 address (if present) */
9124 if (distribution_address_type
== 0) {
9125 proto_tree_add_item(tree
, hf_pfcp_multicast_transport_information_distribution_address_ipv4
, tvb
, offset
, distribution_address_length
, ENC_BIG_ENDIAN
);
9126 offset
+= distribution_address_length
;
9128 /* Distribution IPv6 address (if present) */
9129 if (distribution_address_type
== 1) {
9130 proto_tree_add_item(tree
, hf_pfcp_multicast_transport_information_distribution_address_ipv6
, tvb
, offset
, distribution_address_length
, ENC_NA
);
9131 offset
+= distribution_address_length
;
9134 /* Source Address Type && Length */
9135 proto_tree_add_item_ret_uint(tree
, hf_pfcp_multicast_transport_information_source_address_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &source_address_type
);
9136 proto_tree_add_item_ret_uint(tree
, hf_pfcp_multicast_transport_information_source_address_length
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &source_address_length
);
9139 /* Source IPv4 address (if present) */
9140 if (source_address_type
== 0) {
9141 proto_tree_add_item(tree
, hf_pfcp_multicast_transport_information_source_address_ipv4
, tvb
, offset
, source_address_length
, ENC_BIG_ENDIAN
);
9142 offset
+= source_address_length
;
9144 /* Source IPv6 address (if present) */
9145 if (source_address_type
== 1) {
9146 proto_tree_add_item(tree
, hf_pfcp_multicast_transport_information_source_address_ipv6
, tvb
, offset
, source_address_length
, ENC_NA
);
9147 offset
+= source_address_length
;
9150 if (offset
< length
) {
9151 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9156 * 8.2.208 MBSN4mbReq-Flags
9159 dissect_pfcp_mbsn4mbreq_flags(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9163 static int * const pfcp_mbsn4mbreq_flags_o5_flags
[] = {
9164 &hf_pfcp_spare_b7_b2
,
9165 &hf_pfcp_mbsn4mbreq_flags_o5_b2_mbs_resti
,
9166 &hf_pfcp_mbsn4mbreq_flags_o5_b1_jmbssm
,
9167 &hf_pfcp_mbsn4mbreq_flags_o5_b0_pllssm
,
9170 /* Octet 5 Spare MBS RESTI JMBSSM PLLSSM */
9171 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_mbsn4mbreq_flags_o5_flags
, ENC_BIG_ENDIAN
);
9174 if (offset
== length
) {
9178 if (offset
< length
) {
9179 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9184 * 8.2.209 Local Ingress Tunnel
9187 dissect_pfcp_local_ingress_tunnel(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9190 uint64_t local_ingress_tunnel_flags_val
;
9192 static int * const pfcp_local_ingress_tunnel_flags
[] = {
9193 &hf_pfcp_spare_b7_b3
,
9194 &hf_pfcp_local_ingress_tunnel_flags_b2_ch
,
9195 &hf_pfcp_local_ingress_tunnel_flags_b1_v6
,
9196 &hf_pfcp_local_ingress_tunnel_flags_b0_v4
,
9199 /* Octet 5 Spare CH V6 V4*/
9200 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_local_ingress_tunnel_flags
, ENC_BIG_ENDIAN
, &local_ingress_tunnel_flags_val
);
9203 /* Bit 3 – CH (CHOOSE): If this bit is set to "1", then the UDP Port, IPv4 address and IPv6 address fields shall not be present */
9204 if ((local_ingress_tunnel_flags_val
& 0x4) != 4) {
9206 proto_tree_add_item(tree
, hf_pfcp_local_ingress_tunnel_udp_port
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
9209 if ((local_ingress_tunnel_flags_val
& 0x1) == 1) {
9211 proto_tree_add_item(tree
, hf_pfcp_local_ingress_tunnel_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
9214 if ((local_ingress_tunnel_flags_val
& 0x2) == 2) {
9216 proto_tree_add_item(tree
, hf_pfcp_local_ingress_tunnel_ipv6
, tvb
, offset
, 16, ENC_NA
);
9220 if (offset
< length
) {
9221 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9227 * 8.2.210 MBS Unicast Parameters ID
9230 dissect_pfcp_mbs_unicast_parameters_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9233 /* Octet 5 to 6 MBS Unicast Parameters ID */
9234 proto_tree_add_item_ret_uint(tree
, hf_pfcp_mbs_unicast_parameters_id
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &value
);
9235 proto_item_append_text(item
, "%u", value
);
9239 * 8.2.211 MBSN4Resp-Flags
9242 dissect_pfcp_mbsn4resp_flags(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9246 static int * const pfcp_mbsn4resp_flags_o5_flags
[] = {
9247 &hf_pfcp_spare_b7_b3
,
9248 &hf_pfcp_mbsn4resp_flags_o5_b2_n19dtr
,
9249 &hf_pfcp_mbsn4resp_flags_o5_b1_jmti
,
9250 &hf_pfcp_mbsn4resp_flags_o5_b0_nn19dt
,
9253 /* Octet 5 Spare spare Spare Spare Spare N19DTR JMTI NN19DT */
9254 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_mbsn4resp_flags_o5_flags
, ENC_BIG_ENDIAN
);
9257 if (offset
< length
) {
9258 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9264 * 8.2.212 Tunnel Password
9267 dissect_pfcp_tunnel_password(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9269 /* Octet 5 to (n+4) Tunnel Password value */
9270 proto_tree_add_item(tree
, hf_pfcp_tunnel_password_value
, tvb
, 0, -1, ENC_UTF_8
| ENC_NA
);
9274 * 8.2.213 Area Session ID
9277 dissect_pfcp_area_session_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9280 /* Octet 5 to (n+4) Tunnel Password value */
9281 proto_tree_add_item_ret_uint(tree
, hf_pfcp_area_session_id_value
, tvb
, 0, 2, ENC_UTF_8
| ENC_NA
, &value
);
9282 proto_item_append_text(item
, "%u", value
);
9286 * 8.2.214 DSCP to PPI Mapping Information
9289 dissect_pfcp_dscp_to_ppi_mapping_information(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9292 int dscp_values
= 0;
9294 /* Octet 5 Paging Policy Indicator (PPI)
9295 * The PPI shall be encoded as a value between 0 and 7, as specified in clause 5.5.3.7 of 3GPP TS 38.415
9297 proto_tree_add_item(tree
, hf_pfcp_dscp_to_ppi_mapping_info_ppi_value
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
9300 while (offset
< length
) {
9301 proto_tree_add_item(tree
, hf_pfcp_dscp_to_ppi_mapping_info_dscp_value
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
9305 /* no more than 63 DSCP values */
9306 if(dscp_values
>= 63) {
9311 if (offset
< length
) {
9312 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9317 * 8.2.215 PFCPSDRsp-Flags
9320 dissect_pfcp_pfcpsdrsp_flags(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9324 static int * const pfcp_pfcpsdrsp_flags
[] = {
9325 &hf_pfcp_spare_b7_b1
,
9326 &hf_pfcp_pfcpsdrsp_flags_b0_puru
,
9329 /* Octet 5 Spare PURU */
9330 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_pfcpsdrsp_flags
, ENC_BIG_ENDIAN
);
9333 if (offset
< length
) {
9334 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9339 * 8.2.216 QER Indications
9342 dissect_pfcp_qer_indications(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9346 static int * const pfcp_qer_indications_flags
[] = {
9347 &hf_pfcp_spare_b7_b4
,
9348 &hf_pfcp_qer_indications_flags_b3_pdusm
,
9349 &hf_pfcp_qer_indications_flags_b2_eml4s
,
9350 &hf_pfcp_qer_indications_flags_b1_edbmi
,
9351 &hf_pfcp_qer_indications_flags_b0_iqfis
,
9354 /* Octet 5 Spare PDUSM EML4s EDBMI PURU */
9355 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_qer_indications_flags
, ENC_BIG_ENDIAN
);
9358 if (offset
< length
) {
9359 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9364 * 8.2.217 Vendor-Specific Node Report Type
9367 dissect_pfcp_vendor_specific_node_report_type(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9371 /* Octet 5 to 6 Enterprise ID */
9372 proto_tree_add_item(tree
, hf_pfcp_enterprise_id
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
9375 static int * const pfcp_vendor_specific_node_report_type_flags
[] = {
9387 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_vendor_specific_node_report_type_flags
, ENC_BIG_ENDIAN
);
9390 if (offset
< length
) {
9391 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9396 * 8.2.218 Configured Time Domain
9399 dissect_pfcp_configured_time_domain(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9403 static int * const pfcp_configured_time_domain_flags
[] = {
9404 &hf_pfcp_spare_b7_b1
,
9405 &hf_pfcp_configured_time_domain_flags_b0_ctdi
,
9408 /* Octet 5 Spare CTDI */
9409 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_configured_time_domain_flags
, ENC_BIG_ENDIAN
);
9412 if (offset
< length
) {
9413 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9421 dissect_pfcp_metadata(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9425 /* Octet 5 to (n+4) Metadata
9426 * The Metadata field shall contain an octet string set to base64-encoded characters as specified in clause 5.5.2 of 3GPP TS 29.571
9428 proto_tree_add_item(tree
, hf_pfcp_metadata
, tvb
, offset
, length
, ENC_NA
);
9430 tvbuff_t
* bin_tvb
= base64_tvb_to_new_tvb(tvb
, offset
, length
);
9431 int bin_tvb_length
= tvb_reported_length(bin_tvb
);
9432 add_new_data_source(pinfo
, bin_tvb
, "Base64 decoded");
9433 proto_tree_add_item(tree
, hf_pfcp_metadata_binary_metadata
, bin_tvb
, 0, bin_tvb_length
, ENC_NA
);
9437 * 8.2.220 Traffic Parameter Threshold
9440 dissect_pfcp_traffic_parameter_threshold(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9443 uint64_t traffic_parameter_threshold_flags
;
9445 static int * const pfcp_traffic_parameter_threshold_flags
[] = {
9446 &hf_pfcp_spare_b7_b1
,
9447 &hf_pfcp_traffic_parameter_threshold_flags_b0_dl
,
9450 /* Octet 5 Spare DL */
9451 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_traffic_parameter_threshold_flags
, ENC_BIG_ENDIAN
, &traffic_parameter_threshold_flags
);
9454 /* Octet 6 to 9 Downlink N6 Jitter threshold (if present)*/
9455 if ((traffic_parameter_threshold_flags
& 0x1)) {
9456 proto_tree_add_item(tree
, hf_pfcp_traffic_parameter_threshold_downlink_n6_jitter_threshold
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
9460 if (offset
< length
) {
9461 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9466 * 8.2.221 DL Periodicity
9469 dissect_pfcp_dl_periodicity(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9473 // Octet 5 Spare Octet
9474 proto_tree_add_item(tree
, hf_pfcp_spare_oct
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
9477 /* Octet 6 to 9 DL Periodicity */
9478 proto_tree_add_item(tree
, hf_pfcp_dl_periodicity_value
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
9481 if (offset
< length
) {
9482 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9487 * 8.2.222 N6 Jitter Measurement
9490 dissect_pfcp_n6_jitter_measurement(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9493 uint64_t n6_jitter_measurement_flags
;
9495 static int * const pfcp_n6_jitter_measurement_flags
[] = {
9496 &hf_pfcp_spare_b7_b1
,
9497 &hf_pfcp_n6_jitter_measurement_flags_b0_dl
,
9500 /* Octet 5 Spare DL */
9501 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_n6_jitter_measurement_flags
, ENC_BIG_ENDIAN
, &n6_jitter_measurement_flags
);
9504 if ((n6_jitter_measurement_flags
& 0x1)) {
9505 /* Octet 6 to 9 DL Periodicity */
9506 proto_tree_add_item(tree
, hf_pfcp_n6_jitter_measurement_dl_periodicity
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
9509 /* Octet 10 to 13 Lower DL Jitter Measurement */
9510 proto_tree_add_item(tree
, hf_pfcp_n6_jitter_measurement_lower_dl_jitter_measurement
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
9513 /* Octet 14 to 17 Higher DL Jitter Measurement */
9514 proto_tree_add_item(tree
, hf_pfcp_n6_jitter_measurement_higher_dl_jitter_measurement
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
9518 if (offset
< length
) {
9519 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9524 * 8.2.223 Traffic Parameter Measurement Indication
9527 dissect_pfcp_traffic_parameter_measurement_indication(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9531 static int * const pfcp_traffic_parameter_measurement_indication_flags
[] = {
9532 &hf_pfcp_spare_b7_b3
,
9533 &hf_pfcp_traffic_parameter_measurement_indication_flags_b2_n6jmi
,
9534 &hf_pfcp_traffic_parameter_measurement_indication_flags_b1_dlpmi
,
9535 &hf_pfcp_traffic_parameter_measurement_indication_flags_b0_ulpmi
,
9538 /* Octet 5 Spare N6JMI DLPMI ULPMI */
9539 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_traffic_parameter_measurement_indication_flags
, ENC_BIG_ENDIAN
);
9542 if (offset
< length
) {
9543 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9548 * 8.2.224 UL Periodicity
9551 dissect_pfcp_ul_periodicity(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9555 // Octet 5 Spare Octet
9556 proto_tree_add_item(tree
, hf_pfcp_spare_oct
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
9559 /* Octet 6 to 9 DL Periodicity */
9560 proto_tree_add_item(tree
, hf_pfcp_ul_periodicity_value
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
9563 if (offset
< length
) {
9564 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9569 * 8.2.225 MPQUIC Control Information
9572 dissect_pfcp_mpquic_control_information(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9576 static int * const pfcp_mpquic_control_information_flags
[] = {
9577 &hf_pfcp_spare_b7_b1
,
9578 &hf_pfcp_mpquic_control_information_flags_b0_cupd
,
9581 /* Octet 5 Spare CUDP */
9582 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_mpquic_control_information_flags
, ENC_BIG_ENDIAN
);
9585 if (offset
< length
) {
9586 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9591 * 8.2.226 MPQUIC Address Information
9593 static const value_string pfcp_mpquic_address_information_type_vals
[] = {
9594 { 1, "Transport converter, used only if the proxy type is MPTCP" },
9595 { 2, "Connect-UDP, used only if the proxy type is MPQUIC" },
9600 dissect_pfcp_mpquic_address_information(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9603 uint64_t mpquic_address_information_flags
;
9605 static int * const pfcp_mpquic_address_information_flags
[] = {
9606 &hf_pfcp_spare_b7_b1
,
9607 &hf_pfcp_mpquic_address_information_flags_b1_v6
,
9608 &hf_pfcp_mpquic_address_information_flags_b0_v4
,
9611 /* Octet 5 Spare V6 V4 */
9612 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_mpquic_address_information_flags
, ENC_BIG_ENDIAN
, &mpquic_address_information_flags
);
9615 /* 6 MPQUIC Proxy Type */
9616 proto_tree_add_item(tree
, hf_pfcp_mpquic_address_information_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
9619 /* 7 MPQUIC Proxy Port */
9620 proto_tree_add_item(tree
, hf_pfcp_mpquic_address_information_port
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
9623 /* p to (p+3) MPQUIC Proxy IPv4 address (if present) */
9624 if ((mpquic_address_information_flags
& 0x1)) {
9625 proto_tree_add_item(tree
, hf_pfcp_mpquic_address_information_address_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
9628 /* q to (q+15) MPQUIC Proxy IPv6 address (if present) */
9629 if ((mpquic_address_information_flags
& 0x2)) {
9630 proto_tree_add_item(tree
, hf_pfcp_mpquic_address_information_address_ipv6
, tvb
, offset
, 16, ENC_NA
);
9634 if (offset
< length
) {
9635 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9640 * 8.2.227 Transport Mode
9642 static const value_string pfcp_transport_mode_type_vals
[] = {
9643 { 0, "Datagram mode 1" },
9644 { 1, "Datagram mode 2" },
9645 { 2, "Stream mode" },
9650 dissect_pfcp_transport_mode(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9654 /* 5 Transport Mode Value */
9655 proto_tree_add_item(tree
, hf_pfcp_transport_mode_value
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
9658 if (offset
< length
) {
9659 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9664 * 8.2.228 Protocol Description
9667 dissect_pfcp_protocol_description(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9671 static int * const pfcp_protocol_description_flags
[] = {
9672 &hf_pfcp_spare_b7_b3
,
9673 &hf_pfcp_protocol_description_flags_b2_srtp
,
9674 &hf_pfcp_protocol_description_flags_b1_rtp
,
9675 &hf_pfcp_protocol_description_flags_b0_h264
,
9678 /* Octet 5 Spare SRTP RTP H264 */
9679 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_protocol_description_flags
, ENC_BIG_ENDIAN
);
9682 if (offset
< length
) {
9683 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9688 * 8.2.229 Reporting Suggestion Info
9690 static const value_string pfcp_reporting_urgency_type_vals
[] = {
9691 { 0, "Delay tolerant" },
9692 { 1, "Non delay tolerant" },
9697 dissect_pfcp_reporting_suggestion_info(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9702 /* 5 Reporting Urgency value */
9703 proto_tree_add_item_ret_uint(tree
, hf_pfcp_reporting_suggestion_info_reporting_urgency_value
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
9706 /* 6-9 Reporting Time Info */
9708 proto_tree_add_item(tree
, hf_pfcp_reporting_suggestion_info_reporting_time_info
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
9712 if (offset
< length
) {
9713 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9718 * 8.2.230 TL-Container
9721 dissect_pfcp_tl_container(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9724 /* Octet 5 to (n+4) TL-Container
9725 * The TL-Container Information field shall be encoded as an Octet String.
9726 * It shall encode a Get or Set Request or Response message defined in 3GPP TS 29.585.
9728 proto_tree_add_item(tree
, hf_pfcp_tl_container
, tvb
, offset
, length
, ENC_NA
);
9732 * 8.2.231 Measurement Indication
9735 dissect_pfcp_measurement_indication(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9739 static int * const pfcp_measurement_indication_flags
[] = {
9740 &hf_pfcp_spare_b7_b1
,
9741 &hf_pfcp_measurement_indication_flags_b0_dqfi
,
9744 /* Octet 5 Spare DQFI */
9745 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_measurement_indication_flags
, ENC_BIG_ENDIAN
);
9748 if (offset
< length
) {
9749 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9754 * 8.2.232 HPLMN S-NSSAI
9757 dissect_pfcp_hplmn_s_nssai(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length _U_
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9761 /* The SST (Slice/Service Type) and SD (Slice Differentiator) fields shall be encoded as defined in clause 28.4.2 of 3GPP TS 23.003. */
9763 proto_tree_add_item(tree
, hf_pfcp_hplmn_s_nssai_sst
, tvb
, offset
, 1, ENC_NA
);
9767 proto_tree_add_item(tree
, hf_pfcp_hplmn_s_nssai_sd
, tvb
, offset
, 3, ENC_NA
);
9771 * 8.2.233 Media Transport Protocol
9773 static const value_string pfcp_media_transport_protocol_vals
[] = {
9774 { 0, "Unspecified" },
9775 { 1, "RTP (Real-time Transport Protocol)" },
9776 { 2, "SRTP (Secure Real-Time Protocol)" },
9781 dissect_pfcp_media_transport_protocol(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9785 /* 5 Media Transport Protocol */
9786 proto_tree_add_item(tree
, hf_pfcp_media_transport_protocol
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
9789 if (offset
< length
) {
9790 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9795 * 8.2.234 RTP Header Extension Type
9797 static const value_string pfcp_rtp_header_extension_type_vals
[] = {
9798 { 1, "RTP Header Extension for PDU Set Marking" },
9803 dissect_pfcp_rtp_header_extension_type(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9805 /* Octet 5 RTP Header Extension Type */
9806 proto_tree_add_item(tree
, hf_pfcp_rtp_header_extension_type
, tvb
, 0, length
, ENC_NA
);
9810 * 8.2.235 RTP Header Extension ID
9813 dissect_pfcp_rtp_header_extension_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9815 /* Octet 5 RTP Header Extension ID */
9816 proto_tree_add_item(tree
, hf_pfcp_rtp_header_extension_id
, tvb
, 0, length
, ENC_NA
);
9820 * 8.2.236 RTP Payload Type
9823 dissect_pfcp_rtp_payload_type(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9825 /* Octet 5 RTP Payload Type */
9826 proto_tree_add_item(tree
, hf_pfcp_rtp_payload_type
, tvb
, 0, length
, ENC_NA
);
9830 * 8.2.237 RTP Payload Format
9832 static const value_string pfcp_rtp_payload_format_vals
[] = {
9833 { 1, "RTP Header Extension for PDU Set Marking" },
9838 dissect_pfcp_rtp_payload_format(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9840 /* Octet 5 RTP Payload Format */
9841 proto_tree_add_item(tree
, hf_pfcp_rtp_payload_format
, tvb
, 0, length
, ENC_NA
);
9845 * 8.2.238 Extended DL Buffering Notification Policy
9848 dissect_pfcp_extended_dl_buffering_notification_policy(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9852 static int * const pfcp_extended_dl_buffering_notification_policy_flags
[] = {
9853 &hf_pfcp_spare_b7_b1
,
9854 &hf_pfcp_extended_dl_buffering_notification_policy_flags_b0_edbn
,
9857 /* Octet 5 Spare EDBN */
9858 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_extended_dl_buffering_notification_policy_flags
, ENC_BIG_ENDIAN
);
9861 if (offset
< length
) {
9862 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9867 * 8.2.239 MT-SDT Control Information
9870 dissect_pfcp_mt_sdt_control_information(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9874 static int * const pfcp_mt_sdt_control_information_flags
[] = {
9875 &hf_pfcp_spare_b7_b1
,
9876 &hf_pfcp_mt_sdt_control_information_flags_b0_rdsi
,
9879 /* Octet 5 Spare RDSI */
9880 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_mt_sdt_control_information_flags
, ENC_BIG_ENDIAN
);
9883 if (offset
< length
) {
9884 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9889 * 8.2.240 Reporting Thresholds
9892 dissect_pfcp_reporting_thresholds(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9895 uint64_t reporting_thresholds_flags
;
9897 static int * const pfcp_reporting_thresholds_flags
[] = {
9898 &hf_pfcp_spare_b7_b4
,
9899 &hf_pfcp_reporting_thresholds_flags_b3_uldr
,
9900 &hf_pfcp_reporting_thresholds_flags_b2_dldr
,
9901 &hf_pfcp_reporting_thresholds_flags_b1_ulci
,
9902 &hf_pfcp_reporting_thresholds_flags_b0_dlci
,
9905 /* Octet 5 Spare RP Ul DL */
9906 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_reporting_thresholds_flags
, ENC_BIG_ENDIAN
, &reporting_thresholds_flags
);
9909 /* m to (m+1) DL Congestion information threshold */
9910 if ((reporting_thresholds_flags
& 0x1)) {
9911 proto_tree_add_item(tree
, hf_pfcp_reporting_thresholds_dl_congestion_information_threshold
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
9915 /* p to (p+1) UL Congestion information threshold */
9916 if ((reporting_thresholds_flags
& 0x2)) {
9917 proto_tree_add_item(tree
, hf_pfcp_reporting_thresholds_ul_congestion_information_threshold
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
9921 /* q to (q+4) DL Data Rate threshold */
9922 if ((reporting_thresholds_flags
& 0x4)) {
9923 proto_tree_add_item(tree
, hf_pfcp_reporting_thresholds_dl_data_rate_threshold
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
9927 /* r to (r+4) UL Data Rate threshold */
9928 if ((reporting_thresholds_flags
& 0x4)) {
9929 proto_tree_add_item(tree
, hf_pfcp_reporting_thresholds_ul_data_rate_threshold
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
9933 if (offset
< length
) {
9934 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, length
);
9939 * 8.2.241 RTP Header Extension Additional Information
9941 static const value_string pfcp_rtp_header_extension_additional_information_type_vals
[] = {
9942 { 1, "1-byte (short) format in used" },
9943 { 2, "2-byte (long) format in used" },
9948 dissect_pfcp_rtp_header_extension_additional_information(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9951 uint64_t rtp_header_extension_additional_information_flags
;
9953 static int * const pfcp_rtp_header_extension_additional_information_flags
[] = {
9954 &hf_pfcp_spare_b7_b2
,
9955 &hf_pfcp_rtp_header_extension_additional_information_flags_b1_pssai
,
9956 &hf_pfcp_rtp_header_extension_additional_information_flags_b0_fi
,
9959 /* Octet 5 Spare PSSAI FI */
9960 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_rtp_header_extension_additional_information_flags
, ENC_BIG_ENDIAN
, &rtp_header_extension_additional_information_flags
);
9965 if ((rtp_header_extension_additional_information_flags
& 0x2)) {
9966 proto_tree_add_item(tree
, hf_pfcp_rtp_header_extension_additional_information_pssa
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
9969 if ((rtp_header_extension_additional_information_flags
& 0x1)) {
9970 proto_tree_add_item(tree
, hf_pfcp_rtp_header_extension_additional_information_format
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
9974 if (offset
< length
) {
9975 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
9980 * 8.2.242 Mapped N6 IP Address
9983 dissect_pfcp_mapped_n6_ip_address(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
9986 uint64_t mapped_n6_ip_address_flags
;
9988 static int * const pfcp_mapped_n6_ip_address_flags
[] = {
9989 &hf_pfcp_spare_b7_b2
,
9990 &hf_pfcp_mapped_n6_ip_address_b0_chv4
,
9991 &hf_pfcp_mapped_n6_ip_address_b1_v4
,
9994 /* Octet 5 Spare V4 */
9995 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_mapped_n6_ip_address_flags
, ENC_BIG_ENDIAN
, &mapped_n6_ip_address_flags
);
9998 /* IPv4 address (if present) */
9999 if ((mapped_n6_ip_address_flags
& 0x2)) {
10000 proto_tree_add_item(tree
, hf_pfcp_mapped_n6_ip_address_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
10001 proto_item_append_text(item
, ", IPv4 %s", tvb_ip_to_str(pinfo
->pool
, tvb
, offset
));
10005 if (offset
< length
) {
10006 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
10011 * 8.2.243 N6 Routing Information
10014 dissect_pfcp_n6_routing_information(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item _U_
, uint16_t length
, uint8_t message_type _U_
, pfcp_session_args_t
*args _U_
)
10017 uint64_t n6_routing_information_flags
;
10019 static int * const pfcp_n6_routing_information_flags
[] = {
10020 &hf_pfcp_spare_b7_b6
,
10021 &hf_pfcp_n6_routing_information_flag_b5_dpo
,
10022 &hf_pfcp_n6_routing_information_flag_b4_dipv6
,
10023 &hf_pfcp_n6_routing_information_flag_b3_dipv4
,
10024 &hf_pfcp_n6_routing_information_flag_b2_spo
,
10025 &hf_pfcp_n6_routing_information_flag_b1_sipv6
,
10026 &hf_pfcp_n6_routing_information_flag_b0_sipv4
,
10029 /* Octet 5 Spare DPO DIPV6 DIPV4 SPO SIPV6 SIPV4*/
10030 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 1, pfcp_n6_routing_information_flags
, ENC_BIG_ENDIAN
, &n6_routing_information_flags
);
10033 /* Source IPv4 address (if present)*/
10034 if ((n6_routing_information_flags
& 0x1)) {
10035 proto_tree_add_item(tree
, hf_pfcp_n6_routing_information_source_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
10038 /* Source IPv6 address (if present)*/
10039 if ((n6_routing_information_flags
& 0x2)) {
10040 proto_tree_add_item(tree
, hf_pfcp_n6_routing_information_source_ipv6
, tvb
, offset
, 16, ENC_NA
);
10043 /* Source Port Number (if present)*/
10044 if ((n6_routing_information_flags
& 0x4)) {
10045 proto_tree_add_item(tree
, hf_pfcp_n6_routing_information_source_port
, tvb
, offset
, 2, ENC_NA
);
10048 /* Destination IPv4 address (if present)*/
10049 if ((n6_routing_information_flags
& 0x8)) {
10050 proto_tree_add_item(tree
, hf_pfcp_n6_routing_information_destination_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
10053 /* Destination IPv6 address (if present)*/
10054 if ((n6_routing_information_flags
& 0x10)) {
10055 proto_tree_add_item(tree
, hf_pfcp_n6_routing_information_destination_ipv6
, tvb
, offset
, 16, ENC_NA
);
10058 /* Destination Port Number (if present)*/
10059 if ((n6_routing_information_flags
& 0x20)) {
10060 proto_tree_add_item(tree
, hf_pfcp_n6_routing_information_destination_port
, tvb
, offset
, 2, ENC_NA
);
10064 if (offset
< length
) {
10065 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, tvb
, offset
, -1);
10069 static pfcp_msg_hash_t
*
10070 pfcp_match_response(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int seq_nr
, unsigned msgtype
, pfcp_conv_info_t
*pfcp_info
, uint8_t last_cause
)
10072 pfcp_msg_hash_t pcr
, *pcrp
= NULL
;
10075 pcr
.seq_nr
= seq_nr
;
10076 pcr
.req_time
= pinfo
->abs_ts
;
10079 case PFCP_MSG_HEARTBEAT_REQUEST
:
10080 case PFCP_MSG_PFD_MANAGEMENT_REQUEST
:
10081 case PFCP_MSG_ASSOCIATION_SETUP_REQUEST
:
10082 case PFCP_MSG_ASSOCIATION_UPDATE_REQUEST
:
10083 case PFCP_MSG_ASSOCIATION_RELEASE_REQUEST
:
10084 case PFCP_MSG_NODE_REPORT_REQEUST
:
10085 case PFCP_MSG_SESSION_SET_DELETION_REQUEST
:
10086 case PFCP_MSG_SESSION_SET_MODIFICATION_REQUEST
:
10087 case PFCP_MSG_SESSION_ESTABLISHMENT_REQUEST
:
10088 case PFCP_MSG_SESSION_MODIFICATION_REQUEST
:
10089 case PFCP_MSG_SESSION_DELETION_REQUEST
:
10090 case PFCP_MSG_SESSION_REPORT_REQUEST
:
10091 pcr
.is_request
= true;
10092 pcr
.req_frame
= pinfo
->num
;
10095 case PFCP_MSG_HEARTBEAT_RESPONSE
:
10096 case PFCP_MSG_PFD_MANAGEMENT_RESPONSE
:
10097 case PFCP_MSG_ASSOCIATION_SETUP_RESPONSE
:
10098 case PFCP_MSG_ASSOCIATION_UPDATE_RESPONSE
:
10099 case PFCP_MSG_ASSOCIATION_RELEASE_RESPONSE
:
10100 case PFCP_MSG_VERSION_NOT_SUPPORTED_RESPONSE
:
10101 case PFCP_MSG_NODE_REPORT_RERESPONSE
:
10102 case PFCP_MSG_SESSION_SET_DELETION_RESPONSE
:
10103 case PFCP_MSG_SESSION_SET_MODIFICATION_RESPONSE
:
10104 case PFCP_MSG_SESSION_ESTABLISHMENT_RESPONSE
:
10105 case PFCP_MSG_SESSION_MODIFICATION_RESPONSE
:
10106 case PFCP_MSG_SESSION_DELETION_RESPONSE
:
10107 case PFCP_MSG_SESSION_REPORT_RESPONSE
:
10109 pcr
.is_request
= false;
10111 pcr
.rep_frame
= pinfo
->num
;
10114 pcr
.is_request
= false;
10120 pcrp
= (pfcp_msg_hash_t
*)wmem_map_lookup(pfcp_info
->matched
, &pcr
);
10123 pcrp
->is_request
= pcr
.is_request
;
10125 /* no match, let's try to make one */
10127 case PFCP_MSG_HEARTBEAT_REQUEST
:
10128 case PFCP_MSG_PFD_MANAGEMENT_REQUEST
:
10129 case PFCP_MSG_ASSOCIATION_SETUP_REQUEST
:
10130 case PFCP_MSG_ASSOCIATION_UPDATE_REQUEST
:
10131 case PFCP_MSG_ASSOCIATION_RELEASE_REQUEST
:
10132 case PFCP_MSG_NODE_REPORT_REQEUST
:
10133 case PFCP_MSG_SESSION_SET_DELETION_REQUEST
:
10134 case PFCP_MSG_SESSION_SET_MODIFICATION_REQUEST
:
10135 case PFCP_MSG_SESSION_ESTABLISHMENT_REQUEST
:
10136 case PFCP_MSG_SESSION_MODIFICATION_REQUEST
:
10137 case PFCP_MSG_SESSION_DELETION_REQUEST
:
10138 case PFCP_MSG_SESSION_REPORT_REQUEST
:
10140 pcr
.seq_nr
= seq_nr
;
10142 pcrp
= (pfcp_msg_hash_t
*)wmem_map_remove(pfcp_info
->unmatched
, &pcr
);
10144 /* if we can't reuse the old one, grab a new chunk */
10146 pcrp
= wmem_new(wmem_file_scope(), pfcp_msg_hash_t
);
10148 pcrp
->seq_nr
= seq_nr
;
10149 pcrp
->req_frame
= pinfo
->num
;
10150 pcrp
->req_time
= pinfo
->abs_ts
;
10151 pcrp
->rep_frame
= 0;
10152 pcrp
->msgtype
= msgtype
;
10153 pcrp
->is_request
= true;
10154 wmem_map_insert(pfcp_info
->unmatched
, pcrp
, pcrp
);
10156 case PFCP_MSG_HEARTBEAT_RESPONSE
:
10157 case PFCP_MSG_PFD_MANAGEMENT_RESPONSE
:
10158 case PFCP_MSG_ASSOCIATION_SETUP_RESPONSE
:
10159 case PFCP_MSG_ASSOCIATION_UPDATE_RESPONSE
:
10160 case PFCP_MSG_ASSOCIATION_RELEASE_RESPONSE
:
10161 case PFCP_MSG_VERSION_NOT_SUPPORTED_RESPONSE
:
10162 case PFCP_MSG_NODE_REPORT_RERESPONSE
:
10163 case PFCP_MSG_SESSION_SET_DELETION_RESPONSE
:
10164 case PFCP_MSG_SESSION_SET_MODIFICATION_RESPONSE
:
10165 case PFCP_MSG_SESSION_ESTABLISHMENT_RESPONSE
:
10166 case PFCP_MSG_SESSION_MODIFICATION_RESPONSE
:
10167 case PFCP_MSG_SESSION_DELETION_RESPONSE
:
10168 case PFCP_MSG_SESSION_REPORT_RESPONSE
:
10170 pcr
.seq_nr
= seq_nr
;
10171 pcrp
= (pfcp_msg_hash_t
*)wmem_map_lookup(pfcp_info
->unmatched
, &pcr
);
10174 if (!pcrp
->rep_frame
) {
10175 wmem_map_remove(pfcp_info
->unmatched
, pcrp
);
10176 pcrp
->rep_frame
= pinfo
->num
;
10177 pcrp
->is_request
= false;
10178 wmem_map_insert(pfcp_info
->matched
, pcrp
, pcrp
);
10187 /* we have found a match */
10191 if (pcrp
->is_request
) {
10192 it
= proto_tree_add_uint(tree
, hf_pfcp_response_in
, tvb
, 0, 0, pcrp
->rep_frame
);
10193 proto_item_set_generated(it
);
10197 it
= proto_tree_add_uint(tree
, hf_pfcp_response_to
, tvb
, 0, 0, pcrp
->req_frame
);
10198 proto_item_set_generated(it
);
10199 nstime_delta(&ns
, &pinfo
->abs_ts
, &pcrp
->req_time
);
10200 it
= proto_tree_add_time(tree
, hf_pfcp_response_time
, tvb
, 0, 0, &ns
);
10201 proto_item_set_generated(it
);
10202 if (g_pfcp_session
&& !PINFO_FD_VISITED(pinfo
)) {
10204 /* If it's not already in the list */
10205 session
= GPOINTER_TO_UINT(g_hash_table_lookup(pfcp_session_table
, GUINT_TO_POINTER(pinfo
->num
)));
10207 session
= GPOINTER_TO_UINT(g_hash_table_lookup(pfcp_session_table
, GUINT_TO_POINTER(pcrp
->req_frame
)));
10209 pfcp_add_session(pinfo
->num
, session
);
10213 if (!pfcp_is_cause_accepted(last_cause
)){
10214 /* If the cause is not accepted then we have to remove all the session information about its corresponding request */
10215 pfcp_remove_frame_info(pcrp
->req_frame
);
10223 /* 7.2.3.3 Grouped Information Elements */
10226 dissect_pfcp_grouped_ie(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10228 proto_item_append_text(item
, "[Grouped IE]");
10229 dissect_pfcp_ies_common(tvb
, pinfo
, tree
, 0, length
, message_type
, args
);
10232 // wrapper around dissect_pfcp_grouped_ie with the dissector_t prototype
10234 dissect_pfcp_grouped_ie_wrapper(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data
)
10236 pfcp_sub_dis_t
*pfcp_sub_dis_info
= (pfcp_sub_dis_t
*)data
;
10238 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, proto_tree_get_parent(tree
), tvb_reported_length(tvb
), pfcp_sub_dis_info
->message_type
, pfcp_sub_dis_info
->args
);
10240 return tvb_reported_length(tvb
);
10244 dissect_pfcp_create_pdr(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10246 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10247 proto_item_append_text(item
, ": PDR ID: %u", args
->last_rule_ids
.pdr
);
10251 dissect_pfcp_create_far(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10253 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10254 proto_item_append_text(item
, ": FAR ID: %s %u",
10255 tfs_get_string((args
->last_rule_ids
.far
& 0x80000000), &pfcp_id_predef_dynamic_tfs
),
10256 (args
->last_rule_ids
.far
& 0x7fffffff));
10260 dissect_pfcp_create_urr(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10262 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10263 proto_item_append_text(item
, ": URR ID: %s %u",
10264 tfs_get_string((args
->last_rule_ids
.urr
& 0x80000000), &pfcp_id_predef_dynamic_tfs
),
10265 (args
->last_rule_ids
.urr
& 0x7fffffff));
10269 dissect_pfcp_create_qer(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10271 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10272 proto_item_append_text(item
, ": QER ID: %s %u",
10273 tfs_get_string((args
->last_rule_ids
.qer
& 0x80000000), &pfcp_id_predef_dynamic_tfs
),
10274 (args
->last_rule_ids
.qer
& 0x7fffffff));
10278 dissect_pfcp_created_pdr(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10280 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10281 proto_item_append_text(item
, ": PDR ID: %u", args
->last_rule_ids
.pdr
);
10285 dissect_pfcp_update_pdr(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10287 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10288 proto_item_append_text(item
, ": PDR ID: %u", args
->last_rule_ids
.pdr
);
10292 dissect_pfcp_update_far(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10294 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10295 proto_item_append_text(item
, ": FAR ID: %s %u",
10296 tfs_get_string((args
->last_rule_ids
.far
& 0x80000000), &pfcp_id_predef_dynamic_tfs
),
10297 (args
->last_rule_ids
.far
& 0x7fffffff));
10301 dissect_pfcp_update_bar(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10303 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10304 proto_item_append_text(item
, ": BAR ID: %u", args
->last_rule_ids
.bar
);
10308 dissect_pfcp_update_urr(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10310 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10311 proto_item_append_text(item
, ": URR ID: %s %u",
10312 tfs_get_string((args
->last_rule_ids
.urr
& 0x80000000), &pfcp_id_predef_dynamic_tfs
),
10313 (args
->last_rule_ids
.urr
& 0x7fffffff));
10317 dissect_pfcp_update_qer(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10319 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10320 proto_item_append_text(item
, ": QER ID: %s %u",
10321 tfs_get_string((args
->last_rule_ids
.qer
& 0x80000000), &pfcp_id_predef_dynamic_tfs
),
10322 (args
->last_rule_ids
.qer
& 0x7fffffff));
10326 dissect_pfcp_remove_pdr(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10328 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10329 proto_item_append_text(item
, ": PDR ID: %u", args
->last_rule_ids
.pdr
);
10333 dissect_pfcp_remove_far(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10335 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10336 proto_item_append_text(item
, ": FAR ID: %s %u",
10337 tfs_get_string((args
->last_rule_ids
.far
& 0x80000000), &pfcp_id_predef_dynamic_tfs
),
10338 (args
->last_rule_ids
.far
& 0x7fffffff));
10342 dissect_pfcp_remove_urr(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10344 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10345 proto_item_append_text(item
, ": URR ID: %s %u",
10346 tfs_get_string((args
->last_rule_ids
.urr
& 0x80000000), &pfcp_id_predef_dynamic_tfs
),
10347 (args
->last_rule_ids
.urr
& 0x7fffffff));
10351 dissect_pfcp_remove_qer(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10353 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10354 proto_item_append_text(item
, ": QER ID: %s %u",
10355 tfs_get_string((args
->last_rule_ids
.qer
& 0x80000000), &pfcp_id_predef_dynamic_tfs
),
10356 (args
->last_rule_ids
.qer
& 0x7fffffff));
10360 dissect_pfcp_usage_report_smr(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10362 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10363 proto_item_append_text(item
, ": URR ID: %s %u",
10364 tfs_get_string((args
->last_rule_ids
.urr
& 0x80000000), &pfcp_id_predef_dynamic_tfs
),
10365 (args
->last_rule_ids
.urr
& 0x7fffffff));
10369 dissect_pfcp_usage_report_sdr(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10371 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10372 proto_item_append_text(item
, ": URR ID: %s %u",
10373 tfs_get_string((args
->last_rule_ids
.urr
& 0x80000000), &pfcp_id_predef_dynamic_tfs
),
10374 (args
->last_rule_ids
.urr
& 0x7fffffff));
10378 dissect_pfcp_usage_report_srr(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10380 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10381 proto_item_append_text(item
, ": URR ID: %s %u",
10382 tfs_get_string((args
->last_rule_ids
.urr
& 0x80000000), &pfcp_id_predef_dynamic_tfs
),
10383 (args
->last_rule_ids
.urr
& 0x7fffffff));
10387 dissect_pfcp_create_bar(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10389 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10390 proto_item_append_text(item
, ": BAR ID: %u", args
->last_rule_ids
.bar
);
10394 dissect_pfcp_update_bar_smr(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10396 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10397 proto_item_append_text(item
, ": BAR ID: %u", args
->last_rule_ids
.bar
);
10401 dissect_pfcp_remove_bar(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10403 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10404 proto_item_append_text(item
, ": BAR ID: %u", args
->last_rule_ids
.bar
);
10408 dissect_pfcp_create_mar(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10410 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10411 proto_item_append_text(item
, ": MAR ID: %u", args
->last_rule_ids
.mar
);
10415 dissect_pfcp_update_mar(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10417 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10418 proto_item_append_text(item
, ": MAR ID: %u", args
->last_rule_ids
.mar
);
10422 dissect_pfcp_remove_mar(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10424 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10425 proto_item_append_text(item
, ": MAR ID: %u", args
->last_rule_ids
.mar
);
10429 dissect_pfcp_remove_srr(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10431 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10432 proto_item_append_text(item
, ": SRR ID: %u", args
->last_rule_ids
.srr
);
10436 dissect_pfcp_create_srr(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10438 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10439 proto_item_append_text(item
, ": SRR ID: %u", args
->last_rule_ids
.srr
);
10443 dissect_pfcp_update_srr(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, proto_item
*item
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10445 dissect_pfcp_grouped_ie(tvb
, pinfo
, tree
, item
, length
, message_type
, args
);
10446 proto_item_append_text(item
, ": SRR ID: %u", args
->last_rule_ids
.srr
);
10449 /* Array of functions to dissect IEs
10450 * (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item, uint16_t length, uint8_t message_type, pfcp_session_args_t *args)
10452 typedef struct _pfcp_ie
{
10453 void(*decode
) (tvbuff_t
*, packet_info
*, proto_tree
*, proto_item
*, uint16_t, uint8_t, pfcp_session_args_t
*);
10456 static const pfcp_ie_t pfcp_ies
[] = {
10457 /* 0 */ { dissect_pfcp_reserved
},
10458 /* 1 */ { dissect_pfcp_create_pdr
}, /* Create PDR Extendable / Table 7.5.2.2-1 */
10459 /* 2 */ { dissect_pfcp_grouped_ie
}, /* PDI Extendable / Table 7.5.2.2-2 */
10460 /* 3 */ { dissect_pfcp_create_far
}, /* Create FAR Extendable / Table 7.5.2.3-1 */
10461 /* 4 */ { dissect_pfcp_grouped_ie
}, /* Forwarding Parameters Extendable / Table 7.5.2.3-2 */
10462 /* 5 */ { dissect_pfcp_grouped_ie
}, /* Duplicating Parameters Extendable / Table 7.5.2.3-3 */
10463 /* 6 */ { dissect_pfcp_create_urr
}, /* Create URR Extendable / Table 7.5.2.4-1 */
10464 /* 7 */ { dissect_pfcp_create_qer
}, /* Create QER Extendable / Table 7.5.2.5-1 */
10465 /* 8 */ { dissect_pfcp_created_pdr
}, /* Created PDR Extendable / Table 7.5.3.2-1 */
10466 /* 9 */ { dissect_pfcp_update_pdr
}, /* Update PDR Extendable / Table 7.5.4.2-1 */
10467 /* 10 */ { dissect_pfcp_update_far
}, /* Update FAR Extendable / Table 7.5.4.3-1 */
10468 /* 11 */ { dissect_pfcp_grouped_ie
}, /* Update Forwarding Parameters Extendable / Table 7.5.4.3-2 */
10469 /* 12 */ { dissect_pfcp_update_bar
}, /* Update BAR (PFCP Session Report Response) Extendable / Table 7.5.9.2-1 */
10470 /* 13 */ { dissect_pfcp_update_urr
}, /* Update URR Extendable / Table 7.5.4.4 */
10471 /* 14 */ { dissect_pfcp_update_qer
}, /* Update QER Extendable / Table 7.5.4.5 */
10472 /* 15 */ { dissect_pfcp_remove_pdr
}, /* Remove PDR Extendable / Table 7.5.4.6 */
10473 /* 16 */ { dissect_pfcp_remove_far
}, /* Remove FAR Extendable / Table 7.5.4.7 */
10474 /* 17 */ { dissect_pfcp_remove_urr
}, /* Remove URR Extendable / Table 7.5.4.8 */
10475 /* 18 */ { dissect_pfcp_remove_qer
}, /* Remove QER Extendable / Table 7.5.4.9 */
10476 /* 19 */ { dissect_pfcp_cause
}, /* Cause Fixed / Subclause 8.2.1 */
10477 /* 20 */ { dissect_pfcp_source_interface
}, /* Source Interface Extendable / Subclause 8.2.2 */
10478 /* 21 */ { dissect_pfcp_f_teid
}, /* F-TEID Extendable / Subclause 8.2.3 */
10479 /* 22 */ { dissect_pfcp_network_instance
}, /* Network Instance Variable Length / Subclause 8.2.4 */
10480 /* 23 */ { dissect_pfcp_sdf_filter
}, /* SDF Filter Extendable / Subclause 8.2.5 */
10481 /* 24 */ { dissect_pfcp_application_id
}, /* Application ID Variable Length / Subclause 8.2.6 */
10482 /* 25 */ { dissect_pfcp_gate_status
}, /* Gate Status Extendable / Subclause 8.2.7 */
10483 /* 26 */ { dissect_pfcp_mbr
}, /* MBR Extendable / Subclause 8.2.8 */
10484 /* 27 */ { dissect_pfcp_gbr
}, /* GBR Extendable / Subclause 8.2.9 */
10485 /* 28 */ { dissect_pfcp_qer_correlation_id
}, /* QER Correlation ID Extendable / Subclause 8.2.10 */
10486 /* 29 */ { dissect_pfcp_precedence
}, /* Precedence Extendable / Subclause 8.2.11 */
10487 /* 30 */ { dissect_pfcp_transport_level_marking
}, /* Transport Level Marking Extendable / Subclause 8.2.12 */
10488 /* 31 */ { dissect_pfcp_volume_threshold
}, /* Volume Threshold Extendable /Subclause 8.2.13 */
10489 /* 32 */ { dissect_pfcp_time_threshold
}, /* Time Threshold Extendable /Subclause 8.2.14 */
10490 /* 33 */ { dissect_pfcp_monitoring_time
}, /* Monitoring Time Extendable /Subclause 8.2.15 */
10491 /* 34 */ { dissect_pfcp_subseq_volume_threshold
}, /* Subsequent Volume Threshold Extendable /Subclause 8.2.16 */
10492 /* 35 */ { dissect_pfcp_subsequent_time_threshold
}, /* Subsequent Time Threshold Extendable /Subclause 8.2.17 */
10493 /* 36 */ { dissect_pfcp_inactivity_detection_time
}, /* Inactivity Detection Time Extendable /Subclause 8.2.18 */
10494 /* 37 */ { dissect_pfcp_reporting_triggers
}, /* Reporting Triggers Extendable /Subclause 8.2.19 */
10495 /* 38 */ { dissect_pfcp_redirect_information
}, /* Redirect Information Extendable /Subclause 8.2.20 */
10496 /* 39 */ { dissect_pfcp_report_type
}, /* Report Type Extendable / Subclause 8.2.21 */
10497 /* 40 */ { dissect_pfcp_offending_ie
}, /* Offending IE Fixed / Subclause 8.2.22 */
10498 /* 41 */ { dissect_pfcp_forwarding_policy
}, /* Forwarding Policy Extendable / Subclause 8.2.23 */
10499 /* 42 */ { dissect_pfcp_destination_interface
}, /* Destination Interface Extendable / Subclause 8.2.24 */
10500 /* 43 */ { dissect_pfcp_up_function_features
}, /* UP Function Features Extendable / Subclause 8.2.25 */
10501 /* 44 */ { dissect_pfcp_apply_action
}, /* Apply Action Extendable / Subclause 8.2.26 */
10502 /* 45 */ { dissect_pfcp_dl_data_service_inf
}, /* Downlink Data Service Information Extendable / Subclause 8.2.27 */
10503 /* 46 */ { dissect_pfcp_dl_data_notification_delay
}, /* Downlink Data Notification Delay Extendable / Subclause 8.2.28 */
10504 /* 47 */ { dissect_pfcp_dl_buffering_dur
}, /* DL Buffering Duration Extendable / Subclause 8.2.29 */
10505 /* 48 */ { dissect_pfcp_dl_buffering_suggested_packet_count
}, /* DL Buffering Suggested Packet Count Variable / Subclause 8.2.30 */
10506 /* 49 */ { dissect_pfcp_pfcpsmreq_flags
}, /* PFCPSMReq-Flags Extendable / Subclause 8.2.31 */
10507 /* 50 */ { dissect_pfcp_pfcpsrrsp_flags
}, /* PFCPSRRsp-Flags Extendable / Subclause 8.2.32 */
10508 /* 51 */ { dissect_pfcp_grouped_ie
}, /* Load Control Information Extendable / Table 7.5.3.3-1 */
10509 /* 52 */ { dissect_pfcp_sequence_number
}, /* Sequence Number Fixed Length / Subclause 8.2.33 */
10510 /* 53 */ { dissect_pfcp_metric
}, /* Metric Fixed Length / Subclause 8.2.34 */
10511 /* 54 */ { dissect_pfcp_grouped_ie
}, /* Overload Control Information Extendable / Table 7.5.3.4-1 */
10512 /* 55 */ { dissect_pfcp_timer
}, /* Timer Extendable / Subclause 8.2 35 */
10513 /* 56 */ { dissect_pfcp_pdr_id
}, /* PDR ID Extendable / Subclause 8.2 36 */
10514 /* 57 */ { dissect_pfcp_f_seid
}, /* F-SEID Extendable / Subclause 8.2 37 */
10515 /* 58 */ { dissect_pfcp_grouped_ie
}, /* Application ID's PFDs Extendable / Table 7.4.3.1-2 */
10516 /* 59 */ { dissect_pfcp_grouped_ie
}, /* PFD context Extendable / Table 7.4.3.1-3 */
10517 /* 60 */ { dissect_pfcp_node_id
}, /* Node ID Extendable / Subclause 8.2.38 */
10518 /* 61 */ { dissect_pfcp_pfd_contents
}, /* PFD contents Extendable / Subclause 8.2.39 */
10519 /* 62 */ { dissect_pfcp_measurement_method
}, /* Measurement Method Extendable / Subclause 8.2.40 */
10520 /* 63 */ { dissect_pfcp_usage_report_trigger
}, /* Usage Report Trigger Extendable / Subclause 8.2.41 */
10521 /* 64 */ { dissect_pfcp_measurement_period
}, /* Measurement Period Extendable / Subclause 8.2.42 */
10522 /* 65 */ { dissect_pfcp_fq_csid
}, /* FQ-CSID Extendable / Subclause 8.2.43 */
10523 /* 66 */ { dissect_pfcp_volume_measurement
}, /* Volume Measurement Extendable / Subclause 8.2.44 */
10524 /* 67 */ { dissect_pfcp_duration_measurement
}, /* Duration Measurement Extendable / Subclause 8.2.45 */
10525 /* 68 */ { dissect_pfcp_grouped_ie
}, /* Application Detection Information Extendable / Table 7.5.8.3-2 */
10526 /* 69 */ { dissect_pfcp_time_of_first_packet
}, /* Time of First Packet Extendable / Subclause 8.2.46 */
10527 /* 70 */ { dissect_pfcp_time_of_last_packet
}, /* Time of Last Packet Extendable / Subclause 8.2.47 */
10528 /* 71 */ { dissect_pfcp_quota_holding_time
}, /* Quota Holding Time Extendable / Subclause 8.2.48 */
10529 /* 72 */ { dissect_pfcp_dropped_dl_traffic_threshold
}, /* Dropped DL Traffic Threshold Extendable / Subclause 8.2.49 */
10530 /* 73 */ { dissect_pfcp_volume_quota
}, /* Volume Quota Extendable / Subclause 8.2.50 */
10531 /* 74 */ { dissect_pfcp_time_quota
}, /* Time Quota Extendable / Subclause 8.2.51 */
10532 /* 75 */ { dissect_pfcp_start_time
}, /* Start Time Extendable / Subclause 8.2.52 */
10533 /* 76 */ { dissect_pfcp_end_time
}, /* End Time Extendable / Subclause 8.2.53 */
10534 /* 77 */ { dissect_pfcp_grouped_ie
}, /* Query URR Extendable / Table 7.5.4.10-1 */
10535 /* 78 */ { dissect_pfcp_usage_report_smr
}, /* Usage Report (Session Modification Response) Extendable / Table 7.5.5.2-1 */
10536 /* 79 */ { dissect_pfcp_usage_report_sdr
}, /* Usage Report (Session Deletion Response) Extendable / Table 7.5.7.2-1 */
10537 /* 80 */ { dissect_pfcp_usage_report_srr
}, /* Usage Report (Session Report Request) Extendable / Table 7.5.8.3-1 */
10538 /* 81 */ { dissect_pfcp_urr_id
}, /* URR ID Extendable / Subclause 8.2.54 */
10539 /* 82 */ { dissect_pfcp_linked_urr_id
}, /* Linked URR ID Extendable / Subclause 8.2.55 */
10540 /* 83 */ { dissect_pfcp_grouped_ie
}, /* Downlink Data Report Extendable / Table 7.5.8.2-1 */
10541 /* 84 */ { dissect_pfcp_outer_header_creation
}, /* Outer Header Creation Extendable / Subclause 8.2.56 */
10542 /* 85 */ { dissect_pfcp_create_bar
}, /* Create BAR Extendable / Table 7.5.2.6-1 */
10543 /* 86 */ { dissect_pfcp_update_bar_smr
}, /* Update BAR (Session Modification Request) Extendable / Table 7.5.4.11-1 */
10544 /* 87 */ { dissect_pfcp_remove_bar
}, /* Remove BAR Extendable / Table 7.5.4.12-1 */
10545 /* 88 */ { dissect_pfcp_bar_id
}, /* BAR ID Extendable / Subclause 8.2.57 */
10546 /* 89 */ { dissect_pfcp_cp_function_features
}, /* CP Function Features Extendable / Subclause 8.2.58 */
10547 /* 90 */ { dissect_pfcp_usage_information
}, /* Usage Information Extendable / Subclause 8.2.59 */
10548 /* 91 */ { dissect_pfcp_application_instance_id
}, /* Application Instance ID Variable Length / Subclause 8.2.60 */
10549 /* 92 */ { dissect_pfcp_flow_inf
}, /* Flow Information Extendable / Subclause 8.2.61 */
10550 /* 93 */ { dissect_pfcp_ue_ip_address
}, /* UE IP Address Extendable / Subclause 8.2.62 */
10551 /* 94 */ { dissect_pfcp_packet_rate
}, /* Packet Rate Extendable / Subclause 8.2.63 */
10552 /* 95 */ { dissect_pfcp_outer_hdr_rem
}, /* Outer Header Removal Extendable / Subclause 8.2.64 */
10553 /* 96 */ { dissect_pfcp_recovery_time_stamp
}, /* Recovery Time Stamp Extendable / Subclause 8.2.65 */
10554 /* 97 */ { dissect_pfcp_dl_flow_level_marking
}, /* DL Flow Level Marking Extendable / Subclause 8.2.66 */
10555 /* 98 */ { dissect_pfcp_header_enrichment
}, /* Header Enrichment Extendable / Subclause 8.2.67 */
10556 /* 99 */ { dissect_pfcp_grouped_ie
}, /* Error Indication Report Extendable / Table 7.5.8.4-1 */
10557 /* 100 */ { dissect_pfcp_measurement_info
}, /* Measurement Information Extendable / Subclause 8.2.68 */
10558 /* 101 */ { dissect_pfcp_node_report_type
}, /* Node Report Type Extendable / Subclause 8.2.69 */
10559 /* 102 */ { dissect_pfcp_grouped_ie
}, /* User Plane Path Failure Report Extendable / Table 7.4.5.1.2-1 */
10560 /* 103 */ { dissect_pfcp_remote_gtp_u_peer
}, /* Remote GTP-U Peer Extendable / Subclause 8.2.70 */
10561 /* 104 */ { dissect_pfcp_ur_seqn
}, /* UR-SEQN Fixed Length / Subclause 8.2.71 */
10562 /* 105 */ { dissect_pfcp_grouped_ie
}, /* Update Duplicating Parameters Extendable / Table 7.5.4.3-3 */
10563 /* 106 */ { dissect_pfcp_act_predef_rules
}, /* Activate Predefined Rules Variable Length / Subclause 8.2.72 */
10564 /* 107 */ { dissect_pfcp_deact_predef_rules
}, /* Deactivate Predefined Rules Variable Length / Subclause 8.2.73 */
10565 /* 108 */ { dissect_pfcp_far_id
}, /* FAR ID Extendable / Subclause 8.2.74 */
10566 /* 109 */ { dissect_pfcp_qer_id
}, /* QER ID Extendable / Subclause 8.2.75 */
10567 /* 110 */ { dissect_pfcp_oci_flags
}, /* OCI Flags Extendable / Subclause 8.2.76 */
10568 /* 111 */ { dissect_pfcp_pfcp_assoc_rel_req
}, /* PFCP Association Release Request Extendable / Subclause 8.2.77 */
10569 /* 112 */ { dissect_pfcp_graceful_release_period
}, /* Graceful Release Period Extendable / Subclause 8.2.78 */
10570 /* 113 */ { dissect_pfcp_pdn_type
}, /* PDN Type Fixed Length / Subclause 8.2.79 */
10571 /* 114 */ { dissect_pfcp_failed_rule_id
}, /* Failed Rule ID Extendable / Subclause 8.2.80 */
10572 /* 115 */ { dissect_pfcp_time_quota_mechanism
}, /* Time Quota Mechanism Extendable / Subclause 8.2.81 */
10573 /* 116 */ { dissect_pfcp_user_plane_ip_resource_infomation
}, /* User Plane IP Resource Information Extendable / Subclause 8.2.82 */
10574 /* 117 */ { dissect_pfcp_user_plane_inactivity_timer
}, /* User Plane Inactivity Timer Extendable / Subclause 8.2.83 */
10575 /* 118 */ { dissect_pfcp_grouped_ie
}, /* Aggregated URRs Extendable / Table 7.5.2.4-2 */
10576 /* 119 */ { dissect_pfcp_multiplier
}, /* Multiplier Fixed Length / Subclause 8.2.84 */
10577 /* 120 */ { dissect_pfcp_aggregated_urr_id_ie
}, /* Aggregated URR ID IE Fixed Length / Subclause 8.2.85 */
10578 /* 121 */ { dissect_pfcp_subsequent_volume_quota
}, /* Subsequent Volume Quota Extendable / Subclause 8.2.86 */
10579 /* 122 */ { dissect_pfcp_subsequent_time_quota
}, /* Subsequent Time Quota Extendable / Subclause 8.2.87 */
10580 /* 123 */ { dissect_pfcp_rqi
}, /* RQI Extendable / Subclause 8.2.88 */
10581 /* 124 */ { dissect_pfcp_qfi
}, /* QFI Extendable / Subclause 8.2.89 */
10582 /* 125 */ { dissect_pfcp_query_urr_reference
}, /* Query URR Reference Extendable / Subclause 8.2.90 */
10583 /* 126 */ { dissect_pfcp_additional_usage_reports_information
}, /* Additional Usage Reports Information Extendable / Subclause 8.2.91 */
10584 /* 127 */ { dissect_pfcp_grouped_ie
}, /* Create Traffic Endpoint Extendable / Table 7.5.2.7 */
10585 /* 128 */ { dissect_pfcp_grouped_ie
}, /* Created Traffic Endpoint Extendable / Table 7.5.3.5 */
10586 /* 129 */ { dissect_pfcp_grouped_ie
}, /* Update Traffic Endpoint Extendable / Table 7.5.4.13 */
10587 /* 130 */ { dissect_pfcp_grouped_ie
}, /* Remove Traffic Endpoint Extendable / Table 7.5.4.14 */
10588 /* 131 */ { dissect_pfcp_traffic_endpoint_id
}, /* Traffic Endpoint ID Extendable / Subclause 8.2.92 */
10589 /* 132 */ { dissect_pfcp_grouped_ie
}, /* Ethernet Packet Filter IE Extendable / Table 7.5.2.2-3 */
10590 /* 133 */ { dissect_pfcp_mac_address
}, /* MAC address Extendable / Subclause 8.2.93 */
10591 /* 134 */ { dissect_pfcp_c_tag
}, /* C-TAG Extendable / Subclause 8.2.94 */
10592 /* 135 */ { dissect_pfcp_s_tag
}, /* S-TAG Extendable / Subclause 8.2.95 */
10593 /* 136 */ { dissect_pfcp_ethertype
}, /* Ethertype Extendable / Subclause 8.2.96 */
10594 /* 137 */ { dissect_pfcp_proxying
}, /* Proxying Extendable / Subclause 8.2.97 */
10595 /* 138 */ { dissect_pfcp_ethertype_filter_id
}, /* Ethernet Filter ID Extendable / Subclause 8.2.98 */
10596 /* 139 */ { dissect_pfcp_ethernet_filter_properties
}, /* Ethernet Filter Properties Extendable / Subclause 8.2.99 */
10597 /* 140 */ { dissect_pfcp_suggested_buffering_packets_count
}, /* Suggested Buffering Packets Count Extendable / Subclause 8.2.100 */
10598 /* 141 */ { dissect_pfcp_user_id
}, /* User ID Extendable / Subclause 8.2.101 */
10599 /* 142 */ { dissect_pfcp_ethernet_pdu_session_information
}, /* Ethernet PDU Session Information Extendable / Subclause 8.2.102 */
10600 /* 143 */ { dissect_pfcp_grouped_ie
}, /* Ethernet Traffic Information Extendable / Table 7.5.8.3-3 */
10601 /* 144 */ { dissect_pfcp_mac_addresses_detected
}, /* MAC Addresses Detected Extendable / Subclause 8.2.103 */
10602 /* 145 */ { dissect_pfcp_mac_addresses_removed
}, /* MAC Addresses Removed Extendable / Subclause 8.2.104 */
10603 /* 146 */ { dissect_pfcp_ethernet_inactivity_timer
}, /* Ethernet Inactivity Timer Extendable / Subclause 8.2.105 */
10604 /* 147 */ { dissect_pfcp_grouped_ie
}, /* Additional Monitoring Time Extendable / Table 7.5.2.4-3 */
10605 /* 148 */ { dissect_pfcp_event_quota
}, /* Event Quota Extendable / Subclause 8.2.112 */
10606 /* 149 */ { dissect_pfcp_event_threshold
}, /* Event Threshold Extendable / Subclause 8.2.113 */
10607 /* 150 */ { dissect_pfcp_subsequent_event_quota
}, /* Subsequent Event Quota Extendable / Subclause 8.2.106 */
10608 /* 151 */ { dissect_pfcp_subsequent_event_threshold
}, /* Subsequent Event Threshold Extendable / Subclause 8.2.107 */
10609 /* 152 */ { dissect_pfcp_trace_information
}, /* Trace Information Extendable / Subclause 8.2.108 */
10610 /* 153 */ { dissect_pfcp_framed_route
}, /* Framed-Route Variable Length / Subclause 8.2.109 */
10611 /* 154 */ { dissect_pfcp_framed_routing
}, /* Framed-Routing Fixed Length / Subclause 8.2.110 */
10612 /* 155 */ { dissect_pfcp_framed_ipv6_route
}, /* Framed-IPv6-Route Variable Length / Subclause 8.2.111 */
10613 /* 156 */ { dissect_pfcp_time_stamp
}, /* Time Stamp Extendable / Subclause 8.2.114 */
10614 /* 157 */ { dissect_pfcp_averaging_window
}, /* Averaging Window Extendable / Subclause 8.2.115 */
10615 /* 158 */ { dissect_pfcp_paging_policy_indicator
}, /* Paging Policy Indicator Extendable / Subclause 8.2.116 */
10616 /* 159 */ { dissect_pfcp_apn_dnn
}, /* APN/DNN Variable Length / Subclause 8.2.117 */
10617 /* 160 */ { dissect_pfcp_tgpp_interface_type
}, /* 3GPP Interface Type Extendable / Subclause 8.2.118 */
10618 /* 161 */ { dissect_pfcp_pfcpsrreq_flags
}, /* PFCPSRReq-Flags Extendable / Subclause 8.2.119 */
10619 /* 162 */ { dissect_pfcp_pfcpaureq_flags
}, /* PFCPAUReq-Flags Extendable / Subclause 8.2.120 */
10620 /* 163 */ { dissect_pfcp_activation_time
}, /* Activation Time Extendable / Subclause 8.2.121 */
10621 /* 164 */ { dissect_pfcp_deactivation_time
}, /* Deactivation Time Extendable / Subclause 8.2.122 */
10622 /* 165 */ { dissect_pfcp_create_mar
}, /* Create MAR Extendable / Table 7.5.2.8-1 */
10623 /* 166 */ { dissect_pfcp_grouped_ie
}, /* Access Forwarding Action Information 1 Extendable / Table 7.5.2.8-2 */
10624 /* 167 */ { dissect_pfcp_grouped_ie
}, /* Access Forwarding Action Information 2 Extendable / Table 7.5.2.8-3 */
10625 /* 168 */ { dissect_pfcp_remove_mar
}, /* Remove MAR Extendable / Table 7.5.4.15-1*/
10626 /* 169 */ { dissect_pfcp_update_mar
}, /* Update MAR Extendable / Table 7.5.4.16-1 */
10627 /* 170 */ { dissect_pfcp_mar_id
}, /* MAR ID Extendable / Subclause 8.2.123 */
10628 /* 171 */ { dissect_pfcp_steering_functionality
}, /* Steering Functionality Extendable / Subclause 8.2.124 */
10629 /* 172 */ { dissect_pfcp_steering_mode
}, /* Steering Mode Extendable / Subclause 8.2.125 */
10630 /* 173 */ { dissect_pfcp_weight
}, /* Weight Fixed / Clause 8.2.126 */
10631 /* 174 */ { dissect_pfcp_priority
}, /* Priority Extendable / Subclause 8.2.127 */
10632 /* 175 */ { dissect_pfcp_grouped_ie
}, /* Update Access Forwarding Action Information 1 Extendable / Table 7.5.4.16-2 */
10633 /* 176 */ { dissect_pfcp_grouped_ie
}, /* Update Access Forwarding Action Information 2 Extendable / Table 7.5.4.16-3 */
10634 /* 177 */ { dissect_pfcp_ue_ip_address_pool_identity
}, /* UE IP address Pool Identity Variable Length / Clause 8.2.128 */
10635 /* 178 */ { dissect_pfcp_alternative_smf_ip_address
}, /* Alternative SMF IP Address Extendable / Clause 8.2.129 */
10636 /* 179 */ { dissect_pfcp_packet_replication_and_detection_carry_on_information
}, /* Packet Replication and Detection Carry-On Information Extendable / Clause 8.2.130 */
10637 /* 180 */ { dissect_pfcp_smf_set_id
}, /* SMF Set ID Extendable / Clause 8.2.131 */
10638 /* 181 */ { dissect_pfcp_quota_validity_time
}, /* Quota Validity Time Extendable / Clause 8.2.132 */
10639 /* 182 */ { dissect_pfcp_number_of_reports
}, /* Number of Reports Fixed / Clause 8.2.133 */
10640 /* 183 */ { dissect_pfcp_grouped_ie
}, /* PFCP Session Retention Information (within PFCP Association Setup Request) Extendable / Table 7.4.4.1-2 */
10641 /* 184 */ { dissect_pfcp_pfcpasrsp_flags
}, /* PFCPASRsp-Flags Extendable / Clause 8.2.134 */
10642 /* 185 */ { dissect_pfcp_cp_pfcp_entity_ip_address
}, /* CP PFCP Entity IP Address Extendable / Clause 8.2.135 */
10643 /* 186 */ { dissect_pfcp_pfcpsereq_flags
}, /* PFCPSEReq-Flags Extendable / Clause 8.2.136 */
10644 /* 187 */ { dissect_pfcp_grouped_ie
}, /* User Plane Path Recovery Report Extendable / Table 7.4.5.1.3-1 */
10645 /* 188 */ { dissect_pfcp_grouped_ie
}, /* IP Multicast Addressing Info within PFCP Session Establishment Request Extendable / Clause 7.5.2.2-4 */
10646 /* 189 */ { dissect_pfcp_grouped_ie
}, /* Join IP Multicast Information IE within Usage Report Extendable / Table 7.5.8.3-4 */
10647 /* 190 */ { dissect_pfcp_grouped_ie
}, /* Leave IP Multicast Information IE within Usage Report Extendable / Table 7.5.8.3-5 */
10648 /* 191 */ { dissect_pfcp_ip_multicast_address
}, /* IP Multicast Address Extendable / Clause 8.2.137 */
10649 /* 192 */ { dissect_pfcp_source_ip_address
}, /* Source IP Address Extendable / Clause 8.2.138 */
10650 /* 193 */ { dissect_pfcp_packet_rate_status
}, /* Packet Rate Status Extendable / Clause 8.2.139 */
10651 /* 194 */ { dissect_pfcp_create_bridge_router_info
}, /* Create Bridge/Router Info Extendable / Clause 8.2.140 */
10652 /* 195 */ { dissect_pfcp_grouped_ie
}, /* Created Bridge/Router Info Extendable / Table 7.5.3.6-1 */
10653 /* 196 */ { dissect_pfcp_port_number
}, /* Port Number Fixed Length / Clause 8.2.141 */
10654 /* 197 */ { dissect_pfcp_nw_tt_port_number
}, /* NW-TT Port Number Fixed Length / Clause 8.2.142 */
10655 /* 198 */ { dissect_pfcp_5gs_user_plane_node_id
}, /* 5GS User Plane Node ID Extendable / Clause 8.2.143 */
10656 /* 199 */ { dissect_pfcp_grouped_ie
}, /* TSC Management Information IE within PFCP Session Modification Request Extendable / Table 7.5.4.18-1 */
10657 /* 200 */ { dissect_pfcp_grouped_ie
}, /* TSC Management Information IE within PFCP Session Modification Response Extendable / Table 7.5.5.3-1 */
10658 /* 201 */ { dissect_pfcp_grouped_ie
}, /* TSC Management Information IE within PFCP Session Report Request Extendable / Table 7.5.8.5-1 */
10659 /* 202 */ { dissect_pfcp_port_management_information_container
}, /* Port Management Information Container Variable Length / Clause 8.2.144 */
10660 /* 203 */ { dissect_pfcp_grouped_ie
}, /* Clock Drift Control Information Extendable / Table 7.4.4.1.2-1 */
10661 /* 204 */ { dissect_pfcp_requested_clock_drift_control_information
}, /* Requested Clock Drift Information Extendable / Clause 8.2.145 */
10662 /* 205 */ { dissect_pfcp_grouped_ie
}, /* Clock Drift Report Extendable / Table 7.4.5.1.4-1 */
10663 /* 206 */ { dissect_pfcp_time_domain_number
}, /* Time Domain Number Extendable / Clause 8.2.146 */
10664 /* 207 */ { dissect_pfcp_time_offset_threshold
}, /* Time Offset Threshold Extendable / Clause 8.2.147 */
10665 /* 208 */ { dissect_pfcp_cumulative_rate_ratio_threshold
}, /* Cumulative rateRatio Threshold Extendable / Clause 8.2.148 */
10666 /* 209 */ { dissect_pfcp_time_offset_measurement
}, /* Time Offset Measurement Extendable / Clause 8.2.149 */
10667 /* 210 */ { dissect_pfcp_cumulative_rate_ratio_measurement
}, /* Cumulative rateRatio Measurement Extendable / Clause 8.2.150 */
10668 /* 211 */ { dissect_pfcp_remove_srr
}, /* Remove SRR Extendable/ Table 7.5.4.19-1 */
10669 /* 212 */ { dissect_pfcp_create_srr
}, /* Create SRR Extendable/ Table 7.5.2.9-1 */
10670 /* 213 */ { dissect_pfcp_update_srr
}, /* Update SRR Extendable/ Table 7.5.4.21-1 */
10671 /* 214 */ { dissect_pfcp_grouped_ie
}, /* Session Report Extendable / Table 7.5.8.7-1 */
10672 /* 215 */ { dissect_pfcp_srr_id
}, /* SRR ID Extendable / Clause 8.2.151 */
10673 /* 216 */ { dissect_pfcp_grouped_ie
}, /* Access Availability Control Information Extendable / Table 7.5.2.9-2 */
10674 /* 217 */ { dissect_pfcp_requested_access_availability_control_information
}, /* Requested Access Availability Information Extendable / Clause 8.2.152 */
10675 /* 218 */ { dissect_pfcp_grouped_ie
}, /* Access Availability Report Extendable / Table 7.5.8.6-2 */
10676 /* 219 */ { dissect_pfcp_access_availability_information
}, /* Access Availability Information Extendable / Clause 8.2.153 */
10677 /* 220 */ { dissect_pfcp_grouped_ie
}, /* Provide ATSSS Control Information Extendable / Table 7.5.2.10-1 */
10678 /* 221 */ { dissect_pfcp_grouped_ie
}, /* ATSSS Control Parameters Extendable / Table 7.5.3.7-1 */
10679 /* 222 */ { dissect_pfcp_mptcp_control_information
}, /* MPTCP Control Information Extendable / Clause 8.2.154 */
10680 /* 223 */ { dissect_pfcp_atsss_ll_control_information
}, /* ATSSS-LL Control Information Extendable / Clause 8.2.155 */
10681 /* 224 */ { dissect_pfcp_pmf_control_information
}, /* PMF Control Information Extendable / Clause 8.2.156 */
10682 /* 225 */ { dissect_pfcp_grouped_ie
}, /* MPTCP Parameters Extendable / Table 7.5.3.7-2 */
10683 /* 226 */ { dissect_pfcp_grouped_ie
}, /* ATSSS-LL Parameters Extendable / Table 7.5.3.7-3 */
10684 /* 227 */ { dissect_pfcp_grouped_ie
}, /* PMF Parameters Extendable / Table 7.5.3.7-4 */
10685 /* 228 */ { dissect_pfcp_mptcp_address_information
}, /* MPTCP Address Information Extendable / Clause 8.2.157 */
10686 /* 229 */ { dissect_pfcp_link_specific_multipath_ip_address
}, /* Link-Specific Multipath IP Address Extendable / Clause 8.2.158 */
10687 /* 230 */ { dissect_pfcp_pmf_address_information
}, /* PMF Address Information Extendable / Clause 8.2.159 */
10688 /* 231 */ { dissect_pfcp_atsss_ll_information
}, /* ATSSS-LL Information Extendable / Clause 8.2.160 */
10689 /* 232 */ { dissect_pfcp_data_network_access_identifier
}, /* Data Network Access Identifier Variable Length / Clause 8.2.161 */
10690 /* 233 */ { dissect_pfcp_grouped_ie
}, /* UE IP address Pool Information Extendable / Table 7.4.4.1-3 */
10691 /* 234 */ { dissect_pfcp_average_packet_delay
}, /* Average Packet Delay Extendable / Clause 8.2.162 */
10692 /* 235 */ { dissect_pfcp_minimum_packet_delay
}, /* Minimum Packet Delay Extendable / Clause 8.2.163 */
10693 /* 236 */ { dissect_pfcp_maximum_packet_delay
}, /* Maximum Packet Delay Extendable / Clause 8.2.164 */
10694 /* 237 */ { dissect_pfcp_qos_report_trigger
}, /* QoS Report Trigger Extendable / Clause 8.2.165 */
10695 /* 238 */ { dissect_pfcp_grouped_ie
}, /* GTP-U Path QoS Control Information Extendable / Table 7.4.4.1.3-1 */
10696 /* 239 */ { dissect_pfcp_grouped_ie
}, /* GTP-U Path QoS Report (PFCP Node Report Request) Extendable / Table 7.4.5.1.5-1 */
10697 /* 240 */ { dissect_pfcp_grouped_ie
}, /* QoS Information in GTP-U Path QoS Report Extendable / Table 7.4.5.1.6-1 */
10698 /* 241 */ { dissect_pfcp_gtp_u_path_interface_type
}, /* GTP-U Path Interface Type Extendable / Clause 8.2.166 */
10699 /* 242 */ { dissect_pfcp_grouped_ie
}, /* QoS Monitoring per QoS flow Control Information Extendable / Table 7.5.2.9-3 */
10700 /* 243 */ { dissect_pfcp_requested_qos_monitoring
}, /* Requested QoS Monitoring Extendable / Clause 8.2.167 */
10701 /* 244 */ { dissect_pfcp_reporting_frequency
}, /* Reporting Frequency Extendable / Clause 8.2.168 */
10702 /* 245 */ { dissect_pfcp_packet_delay_thresholds
}, /* Packet Delay Thresholds Extendable / Clause 8.2.169 */
10703 /* 246 */ { dissect_pfcp_minimum_wait_time
}, /* Minimum Wait Time Extendable / Clause 8.2.170 */
10704 /* 247 */ { dissect_pfcp_grouped_ie
}, /* QoS Monitoring Report Extendable / Table 7.5.8.6-3 */
10705 /* 248 */ { dissect_pfcp_qos_monitoring_measurement
}, /* QoS Monitoring Measurement Extendable / Clause 8.2.171 */
10706 /* 249 */ { dissect_pfcp_mt_edt_control_information
}, /* MT-EDT Control Information Extendable / Clause 8.2.172 */
10707 /* 250 */ { dissect_pfcp_dl_data_packets_size
}, /* DL Data Packets Size Extendable / Clause 8.2.173 */
10708 /* 251 */ { dissect_pfcp_qer_control_indications
}, /* QER Control Indications Extendable / Clause 8.2.174 */
10709 /* 252 */ { dissect_pfcp_grouped_ie
}, /* Packet Rate Status Report IE within PFCP Session Deletion Response Extendable / Table 7.5.7.1-2 */
10710 /* 253 */ { dissect_pfcp_nf_instance_id
}, /* NF Instance ID Extendable / Clause 8.2.175 */
10711 /* 254 */ { dissect_pfcp_grouped_ie
}, /* Ethernet Context Information within PFCP Session Modification Request Extendable / Table 7.5.4.21-1 */
10712 /* 255 */ { dissect_pfcp_grouped_ie
}, /* Redundant Transmission Detection Parameters Extendable / Table 7.5.2.2-5 */
10713 /* 256 */ { dissect_pfcp_grouped_ie
}, /* Updated PDR IE within PFCP Session Modification Response Extendable / Table 7.5.5.5-1 */
10714 /* 257 */ { dissect_pfcp_s_nssai
}, /* S-NSSAI Fixed Length / Clause 8.2.176 */
10715 /* 258 */ { dissect_pfcp_ip_version
}, /* IP version Extendable / Clause 8.2.177 */
10716 /* 259 */ { dissect_pfcp_pfcpasreq_flags
}, /* PFCPASReq-Flags Extendable / Clause 8.2.178 */
10717 /* 260 */ { dissect_pfcp_data_status
}, /* Data Status Extendable / Clause 8.2.179 */
10718 /* 261 */ { dissect_pfcp_grouped_ie
}, /* Provide RDS Configuration Information IE within PFCP Session Establishment Request Extendable / Table 7.5.2.11-1 */
10719 /* 262 */ { dissect_pfcp_rds_configuration_information
}, /* RDS Configuration Information Extendable / Clause 8.2.180 */
10720 /* 263 */ { dissect_pfcp_grouped_ie
}, /* Query Packet Rate Status IE within PFCP Session Modification Request Extendable / Table 7.5.4.22-1 */
10721 /* 264 */ { dissect_pfcp_grouped_ie
}, /* Query Packet Rate Status Report IE within PFCP Session Modification Response Extendable / Table 7.5.5.4-1 */
10722 /* 265 */ { dissect_pfcp_multipath_application_indication
}, /* Multipath Applicable Indication Extendable / Clause 8.2.181 */
10723 /* 266 */ { dissect_pfcp_user_plane_node_management_information_container
}, /* User Plane Node Management Information Container Variable Length / Clause 8.2.182 */
10724 /* 267 */ { dissect_pfcp_grouped_ie
}, /* UE IP Address Usage Information IE within PFCP Association Update Request Extendable / Table 7.4.4.3.1-1 */
10725 /* 268 */ { dissect_pfcp_number_of_ue_ip_addresses
}, /* Number of UE IP Addresses Variable Length / Clause 8.2.183 */
10726 /* 269 */ { dissect_pfcp_validity_timer
}, /* Validity Timer Variable Length / Clause 8.2.183 */
10727 /* 270 */ { dissect_pfcp_grouped_ie
}, /* Redundant Transmission Forward Parameters Variable Length / Clause 8.2.184 */
10728 /* 271 */ { dissect_pfcp_grouped_ie
}, /* Transport Delay Reporting IE in Create PDR IE Extendable / Table 7.5.2.2-6 */
10729 /* 272 */ { dissect_pfcp_grouped_ie
}, /* Partial Failure Information within PFCP Session Establishment Response Extendable / Table 7.5.3.1-2 */
10730 /* 273 */ { dissect_pfcp_grouped_ie
}, /* Partial Failure Information within PFCP Session Modification Response Extendable / Table 7.5.5.1-2 */
10731 /* 274 */ { dissect_pfcp_offending_ie_information
}, /* Offending IE Information Variable Length / Clause 8.2.185 */
10732 /* 275 */ { dissect_pfcp_rattype
}, /* RAT Type Variable Length / Clause 8.2.186 */
10733 /* 276 */ { dissect_pfcp_grouped_ie
}, /* L2TP Tunnel Information Extendable / Table 7.5.2.1-2 */
10734 /* 277 */ { dissect_pfcp_grouped_ie
}, /* L2TP Session Information within PFCP Session Establishment Request Extendable / Table 7.5.2.1-3 */
10735 /* 278 */ { dissect_pfcp_l2tp_user_authentication
}, /* L2TP User Authentication Variable Length / Clause 8.2.187 */
10736 /* 279 */ { dissect_pfcp_grouped_ie
}, /* L2TP Session Information within PFCP Session Establishment Response Extendable / Table 7.5.3.1-3 */
10737 /* 280 */ { dissect_pfcp_lns_address
}, /* LNS Address Variable Length / Clause 8.2.188 */
10738 /* 281 */ { dissect_pfcp_tunnel_preference
}, /* Tunnel Preference Fixed / Clause 8.2.189 */
10739 /* 282 */ { dissect_pfcp_calling_number
}, /* Calling Number Variable Length / Clause 8.2.190 */
10740 /* 283 */ { dissect_pfcp_called_number
}, /* Called Number Variable Length / Clause 8.2.191 */
10741 /* 284 */ { dissect_pfcp_l2tp_session_indications
}, /* L2TP Session Indications Extendable / Clause 8.2.192 */
10742 /* 285 */ { dissect_pfcp_dns_sever_address
}, /* DNS Server Address Variable Length / Clause 8.2.193 */
10743 /* 286 */ { dissect_pfcp_nbns_sever_address
}, /* NBNS Server Address Variable Length / Clause 8.2.194 */
10744 /* 287 */ { dissect_pfcp_maximum_receive_unit
}, /* Maximum Receive Unit Fixed / Clause 8.2.195 */
10745 /* 288 */ { dissect_pfcp_thresholds
}, /* Thresholds Variable Length / Clause 8.2.196 */
10746 /* 289 */ { dissect_pfcp_steering_mode_indications
}, /* Steering Mode Indicator Extendable / Clause 8.2.197 */
10747 /* 290 */ { dissect_pfcp_grouped_ie
}, /* PFCP Session Change Info Extendable / Table 7.4.7.1-2 */
10748 /* 291 */ { dissect_pfcp_group_id
}, /* Group ID Fixed / Clause 8.2.198 */
10749 /* 292 */ { dissect_pfcp_cp_ip_address
}, /* CP IP Address Variable Length / Clause 8.2.199 */
10750 /* 293 */ { dissect_pfcp_ip_address_and_port_number_replacement
}, /* IP Address and Port Number Replacement Variable Length / Clause 8.2.200 */
10751 /* 294 */ { dissect_pfcp_dns_query_response_filter
}, /* DNS Query/Response Filter Variable Length / Clause 8.2.201 */
10752 /* 295 */ { dissect_pfcp_grouped_ie
}, /* Direct Reporting Information Extendable / Table 7.5.2.9-4 */
10753 /* 296 */ { dissect_pfcp_event_notification_uri
}, /* Event Notification URI Variable Length / Clause 8.2.202 */
10754 /* 297 */ { dissect_pfcp_notification_correlation_id
}, /* Notification Correlation ID Fixed / Clause 8.2.203 */
10755 /* 298 */ { dissect_pfcp_reporting_flags
}, /* Reporting Flags Extendable / Clause 8.2.204 */
10756 /* 299 */ { dissect_pfcp_predefined_rules_name
}, /* Predefined Rules Name Variable Length / Clause 8.2.205 */
10757 /* 300 */ { dissect_pfcp_grouped_ie
}, /* MBS Session N4mb Control Information Extendable / Table 7.5.2.1-5 */
10758 /* 301 */ { dissect_pfcp_grouped_ie
}, /* MBS Multicast Parameters Extendable / Table 7.5.2.3-5 */
10759 /* 302 */ { dissect_pfcp_grouped_ie
}, /* Addd MBS Unicast Parameters IE in Create FAR Extendable / Table 7.5.2.3-6 */
10760 /* 303 */ { dissect_pfcp_grouped_ie
}, /* MBS Session N4mb Information Extendable / Table 7.5.3.1-4 */
10761 /* 304 */ { dissect_pfcp_grouped_ie
}, /* Remove MBS Unicast Parameters IE in Update FAR Extendable / Table 7.5.4.3-4 */
10762 /* 305 */ { dissect_pfcp_mbs_session_identifier
}, /* MBS Session Identifier Variable Length / Clause 8.2.206 */
10763 /* 306 */ { dissect_pfcp_multicast_transport_information
}, /* Multicast Transport Information Variable Length / Clause 8.2.207 */
10764 /* 307 */ { dissect_pfcp_mbsn4mbreq_flags
}, /* MBSN4mbReq Flags Extendable / Clause 8.2.208 */
10765 /* 308 */ { dissect_pfcp_local_ingress_tunnel
}, /* Local Ingress Tunnel Extendable / Clause 8.2.209 */
10766 /* 309 */ { dissect_pfcp_mbs_unicast_parameters_id
}, /* MBS Unicast Parameters ID Extendable / Clause 8.2.210 */
10767 /* 310 */ { dissect_pfcp_grouped_ie
}, /* MBS Session N4 Control Information IE within PFCP Session Establishment Request Extendable / Table 7.5.2.1-6 */
10768 /* 311 */ { dissect_pfcp_grouped_ie
}, /* MBS Session N4 Control Information IE within PFCP Session Establishment Response Extendable / Table 7.5.3.1-5 */
10769 /* 312 */ { dissect_pfcp_mbsn4resp_flags
}, /* MBSN4Resp-Flags Extendable / Clause 8.2.211 */
10770 /* 313 */ { dissect_pfcp_tunnel_password
}, /* Tunnel Password Variable Length / Clause 8.2.212 */
10771 /* 314 */ { dissect_pfcp_area_session_id
}, /* Area Session ID Fixed / Clause 8.2.213 */
10772 /* 315 */ { dissect_pfcp_grouped_ie
}, /* Peer UP Restart Report IE within PFCP Node Report Request Extendable / Table 7.4.5.1-7 */
10773 /* 316 */ { dissect_pfcp_grouped_ie
}, /* DSCP to PPI Control Information IE within PFCP Session Establishment Request Extendable / Table 7.5.2.1-6 */
10774 /* 317 */ { dissect_pfcp_dscp_to_ppi_mapping_information
}, /* DSCP to PPI Mapping Information Extendable / Clause 8.2.214 */
10775 /* 318 */ { dissect_pfcp_pfcpsdrsp_flags
}, /* PFCPSDRsp-Flags Extendable / Clause 8.2.215 */
10776 /* 319 */ { dissect_pfcp_qer_indications
}, /* QER Indications Extendable / Clause 8.2.216 */
10777 /* 320 */ { dissect_pfcp_vendor_specific_node_report_type
}, /* Vendor-Specific Node Report Type Extendable / Clause 8.2.217 */
10778 /* 321 */ { dissect_pfcp_configured_time_domain
}, /* Configured Time Domain Extendable / Clause 8.2.218 */
10779 /* 322 */ { dissect_pfcp_metadata
}, /* Metadata Variable Length / Clause 8.2.219 */
10780 /* 323 */ { dissect_pfcp_grouped_ie
}, /* Traffic Parameter Measurement Control Information Extendable / Table 7.5.2.9-5 */
10781 /* 324 */ { dissect_pfcp_grouped_ie
}, /* Traffic Parameter Measurement Report Extendable / Table 7.5.8.6-4 */
10782 /* 325 */ { dissect_pfcp_traffic_parameter_threshold
}, /* Traffic Parameter Threshold Extendable / Clause 8.2.220 */
10783 /* 326 */ { dissect_pfcp_dl_periodicity
}, /* DL Periodicity Extendable / Clause 8.2.221 */
10784 /* 327 */ { dissect_pfcp_n6_jitter_measurement
}, /* N6 Jitter Measurement Extendable / Clause 8.2.222 */
10785 /* 328 */ { dissect_pfcp_traffic_parameter_measurement_indication
}, /* Traffic Parameter Measurement Indication Extendable / Clause 8.2.223 */
10786 /* 329 */ { dissect_pfcp_ul_periodicity
}, /* UL Periodicity Extendable / Clause 8.2.224 */
10787 /* 330 */ { dissect_pfcp_mpquic_control_information
}, /* MPQUIC Control Information Extendable / Clause 8.2.225 */
10788 /* 331 */ { dissect_pfcp_grouped_ie
}, /* MPQUIC Parameters Extendable / Table 7.5.3.7-5 */
10789 /* 332 */ { dissect_pfcp_mpquic_address_information
}, /* MPQUIC Address Information Extendable / Clause 8.2.226 */
10790 /* 333 */ { dissect_pfcp_transport_mode
}, /* Transport Mode Extendable / Clause 8.2.227 */
10791 /* 334 */ { dissect_pfcp_protocol_description
}, /* Protocol Description Extendable / Table 7.5.2.2-7 */
10792 /* 335 */ { dissect_pfcp_reporting_suggestion_info
}, /* Reporting Suggestion Info Extendable / Clause 8.2.229 */
10793 /* 336 */ { dissect_pfcp_tl_container
}, /* TL-Container Variable Length / Clause 8.2.230 */
10794 /* 337 */ { dissect_pfcp_measurement_indication
}, /* Measurement Indication Extendable / Clause 8.2.231 */
10795 /* 338 */ { dissect_pfcp_hplmn_s_nssai
}, /* HPLMN S-NSSAI Fixed Length / Clause 8.2.232 */
10796 /* 339 */ { dissect_pfcp_media_transport_protocol
}, /* Media Transport Protocol Extendable / Clause 8.2.233 */
10797 /* 340 */ { dissect_pfcp_grouped_ie
}, /* RTP Header Extension Information Extendable / Table 7.5.2.2-8 */
10798 /* 341 */ { dissect_pfcp_grouped_ie
}, /* RTP Payload Information Extendable / Table 7.5.2.2-9 */
10799 /* 342 */ { dissect_pfcp_rtp_header_extension_type
}, /* RTP Header Extension Type Fixed Length / Clause 8.2.234 */
10800 /* 343 */ { dissect_pfcp_rtp_header_extension_id
}, /* RTP Header Extension ID Fixed Length / Clause 8.2.235 */
10801 /* 344 */ { dissect_pfcp_rtp_payload_type
}, /* RTP Payload Type Fixed Length / Clause 8.2.236 */
10802 /* 345 */ { dissect_pfcp_rtp_payload_format
}, /* RTP Payload Format Fixed Length / Clause 8.2.237 */
10803 /* 346 */ { dissect_pfcp_extended_dl_buffering_notification_policy
}, /* Extended DL Buffering Notification Policy Extendable / Clause 8.2.238 */
10804 /* 347 */ { dissect_pfcp_mt_sdt_control_information
}, /* MT-SDT Control Information Extendable / Clause 8.2.239 */
10805 /* 348 */ { dissect_pfcp_reporting_thresholds
}, /* Reporting Thresholds Extendable / Clause 8.2.240 */
10806 /* 349 */ { dissect_pfcp_rtp_header_extension_additional_information
}, /* RTP Header Extension Additional Information Extendable / Clause 8.2.241 */
10807 /* 350 */ { dissect_pfcp_mapped_n6_ip_address
}, /* Mapped N6 IP Address Extendable / Clause 8.2.242 */
10808 /* 351 */ { dissect_pfcp_n6_routing_information
}, /* N6 Routing Information Extendable / Clause 8.2.243 */
10809 //352 to 32767 Spare. For future use.
10810 //32768 to 65535 Vendor-specific IEs.
10811 { NULL
}, /* End of List */
10814 #define NUM_PFCP_IES array_length(pfcp_ies)
10815 /* Set up the array to hold "etts" for each IE*/
10816 int ett_pfcp_elem
[NUM_PFCP_IES
-1];
10818 typedef struct pfcp_generic_ie
{
10819 uint16_t enterprise_id
; // 0 for non-vendor-IE
10822 dissector_t dissector
;
10824 } pfcp_generic_ie_t
;
10827 dissect_pfcp_unknown_enterprise_ie(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
10829 proto_tree_add_item(tree
, hf_pfcp_enterprise_data
, tvb
, 0, -1, ENC_NA
);
10830 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_not_decoded_null
, tvb
, 0, -1);
10832 return tvb_reported_length(tvb
);
10835 // Generic-IE dissector which wraps the actual data-dissector and which overwrites the
10836 // default tree-type and tree-text.
10838 dissect_pfcp_generic_ie_cb(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data
, void *cb
)
10840 const pfcp_generic_ie_t
* ie_info
= cb
;
10841 proto_item
* item
= proto_tree_get_parent(tree
);
10843 // Overwrite the generic-IE subtree with our per-IE subtree
10844 if (ie_info
->ett
!= -1) {
10845 tree
= proto_item_add_subtree(item
, ie_info
->ett
);
10848 // Overwrite generic text with per-IE text
10849 if (ie_info
->name
!= NULL
) {
10850 if (ie_info
->enterprise_id
== 0) {
10851 proto_item_set_text(item
, "%s", ie_info
->name
);
10853 const char* enterprise_name
= try_enterprises_lookup(ie_info
->enterprise_id
);
10854 if (enterprise_name
!= NULL
) {
10855 proto_item_set_text(item
, "%s (%s)", ie_info
->name
, enterprise_name
);
10857 proto_item_set_text(item
, "%s (Unknown enterprise %u)", ie_info
->name
, ie_info
->enterprise_id
);
10863 return ie_info
->dissector(tvb
, pinfo
, tree
, data
);
10867 dissect_pfcp_generic_enterprise_ie(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data
, void *cb
)
10869 // Add a subtree, using the generic IE ett.
10870 // A per-IE subdissector can later overwrite this ett to have an ett per IE.
10872 tree
= proto_tree_add_subtree(tree
, tvb
, 0, -1, ett_pfcp_unknown_enterprise_ie
, &item
, NULL
);
10874 // Add the generic header.
10875 uint32_t ie_type
, ie_len
, enterprise_id
;
10876 proto_tree_add_item_ret_uint(tree
, hf_pfcp2_enterprise_ie
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &ie_type
);
10877 proto_tree_add_item_ret_uint(tree
, hf_pfcp2_ie_len
, tvb
, 2, 2, ENC_BIG_ENDIAN
, &ie_len
);
10878 proto_tree_add_item_ret_uint(tree
, hf_pfcp_enterprise_id
, tvb
, 4, 2, ENC_BIG_ENDIAN
, &enterprise_id
);
10881 const char* enterprise_name
= try_enterprises_lookup(enterprise_id
);
10882 if (enterprise_name
!= NULL
) {
10883 proto_item_set_text(item
, "Unknown IE %u (%s)", ie_type
, enterprise_name
);
10885 proto_item_set_text(item
, "Unknown IE %u (Unknown enterprise %u)", ie_type
, enterprise_id
);
10888 // Length field is already checked to be big enough by accessing tvb[4:6].
10889 // This tvb was created with length derived from the length-field.
10890 DISSECTOR_ASSERT(ie_len
>= 2);
10891 const unsigned data_len
= ie_len
- 2;
10895 * 5.6.3 Modifying the Rules of an Existing PFCP Session
10897 * Updating the Rule including the IEs to be removed with a null length,
10898 * e.g. by including the Update URR IE in the PFCP Session Modification Request
10899 * with the IE(s) to be removed with a null length.
10901 proto_item_append_text(item
, " [IE to be removed]");
10903 // Run the specific IE-dissector only on the "body" of the IE.
10904 tvbuff_t
* data_tvb
= tvb_new_subset_length(tvb
, 6, data_len
);
10906 dissector_table_t ie_table
= cb
;
10908 if (ie_table
== NULL
)
10910 // No IE-table is given so no specific decoding can be performed
10911 offset
= dissect_pfcp_unknown_enterprise_ie(data_tvb
, pinfo
, tree
, data
);
10913 // A dissector-table is provided from which an IE-specific dissector can be looked up
10914 offset
= dissector_try_uint_with_data(ie_table
, ie_type
, data_tvb
, pinfo
, tree
, false, data
);
10916 // Fallback to unknown-ie dissector
10918 offset
= dissect_pfcp_unknown_enterprise_ie(data_tvb
, pinfo
, tree
, data
);
10922 // If not all data from the IE is decoded (possible when IE has been extended since last update of dissector),
10923 // add an expert-info warning about the undecoded data.
10924 if (offset
< 0 || (unsigned) offset
< data_len
)
10926 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_data_not_decoded
, data_tvb
, offset
, -1);
10930 return tvb_reported_length(tvb
);
10933 static void pfcp_register_generic_ie_dissector(uint16_t enterprise_id
, const char* dissector_name
, const char* table_name
, const char* ui_name
, pfcp_generic_ie_t
* ies
, unsigned num_ies
)
10935 // Register a tree-type for each IE and store it in the ie-struct
10936 int** ie_refs
= (int** )wmem_alloc(wmem_epan_scope(), (sizeof(int*) * num_ies
));
10937 for (unsigned i
= 0; i
< num_ies
; i
++) {
10939 ie_refs
[i
] = &ies
[i
].ett
;
10941 proto_register_subtree_array(ie_refs
, num_ies
);
10943 // Create a table that will contain all IEs for this vendor
10944 dissector_table_t table
= register_dissector_table(table_name
, ui_name
, proto_pfcp
, FT_UINT16
, BASE_DEC
);
10946 // Register a dissector per IE-type
10947 for (unsigned i
= 0; i
< num_ies
; i
++) {
10948 dissector_add_uint(table_name
, ies
[i
].ie_type
, create_dissector_handle_with_data(dissect_pfcp_generic_ie_cb
, -1, &ies
[i
]));
10951 // Register a dissector using the generic enterprise-dissector
10952 dissector_handle_t handle
= register_dissector_with_data(dissector_name
, dissect_pfcp_generic_enterprise_ie
, proto_pfcp
, table
);
10953 dissector_add_uint("pfcp.enterprise_ies", enterprise_id
, handle
);
10957 dissect_pfcp_ies_common(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int offset
, uint16_t length
, uint8_t message_type
, pfcp_session_args_t
*args
)
10959 proto_tree
*ie_tree
;
10962 uint16_t type
, length_ie
;
10963 uint16_t enterprise_id
;
10964 pfcp_sub_dis_t
*pfcp_sub_dis_inf
= wmem_new0(pinfo
->pool
, pfcp_sub_dis_t
);
10966 pfcp_sub_dis_inf
->message_type
= message_type
;
10967 pfcp_sub_dis_inf
->args
= args
;
10969 /* 8.1.1 Information Element Format */
10971 Octets 8 7 6 5 4 3 2 1
10972 1 to 2 Type = xxx (decimal)
10974 p to (p+1) Enterprise ID
10975 k to (n+4) IE specific data or content of a grouped IE
10977 If the Bit 8 of Octet 1 is not set, this indicates that the IE is defined by 3GPP and the Enterprise ID is absent.
10978 If Bit 8 of Octet 1 is set, this indicates that the IE is defined by a vendor and the Enterprise ID is present
10979 identified by the Enterprise ID
10982 /*Enterprise ID : if the IE type value is within the range of 32768 to 65535,
10983 * this field shall contain the IANA - assigned "SMI Network Management Private Enterprise Codes"
10984 * value of the vendor defining the IE.
10986 /* Length: this field contains the length of the IE excluding the first four octets, which are common for all IEs */
10988 /* Process the IEs*/
10989 while (offset
< length
) {
10991 type
= tvb_get_ntohs(tvb
, offset
);
10992 length_ie
= tvb_get_ntohs(tvb
, offset
+ 2);
10994 if ((type
& 0x8000) == 0x8000 ) {
10995 enterprise_id
= tvb_get_ntohs(tvb
, offset
+ 4);
10996 ie_tvb
= tvb_new_subset_length(tvb
, offset
, length_ie
+ 4);
10998 // Find a per-vendor dissector or fallback to the generic-enterprise-dissector without IE-table.
10999 if (!dissector_try_uint_with_data(pfcp_enterprise_ies_dissector_table
, enterprise_id
, ie_tvb
, pinfo
, tree
, false, pfcp_sub_dis_inf
)) {
11000 dissect_pfcp_generic_enterprise_ie(ie_tvb
, pinfo
, tree
, pfcp_sub_dis_inf
, NULL
);
11002 offset
+= (4 + length_ie
);
11005 if (type
< (NUM_PFCP_IES
- 1)) {
11006 tmp_ett
= ett_pfcp_elem
[type
];
11008 tmp_ett
= ett_pfcp_ie
;
11010 ie_tree
= proto_tree_add_subtree_format(tree
, tvb
, offset
, 4 + length_ie
, tmp_ett
, &ti
, "%s : ",
11011 val_to_str_ext_const(type
, &pfcp_ie_type_ext
, "Unknown"));
11013 proto_tree_add_item(ie_tree
, hf_pfcp2_ie
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
11015 proto_tree_add_item(ie_tree
, hf_pfcp2_ie_len
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
11019 * 5.6.3 Modifying the Rules of an Existing PFCP Session
11021 * Updating the Rule including the IEs to be removed with a null length,
11022 * e.g. by including the Update URR IE in the PFCP Session Modification Request
11023 * with the IE(s) to be removed with a null length.
11025 if( length_ie
== 0 ) {
11026 proto_item_append_text(ti
, "[IE to be removed]");
11028 if (type
< (NUM_PFCP_IES
-1)) {
11029 ie_tvb
= tvb_new_subset_length(tvb
, offset
, length_ie
);
11030 if(pfcp_ies
[type
].decode
){
11031 (*pfcp_ies
[type
].decode
) (ie_tvb
, pinfo
, ie_tree
, ti
, length_ie
, message_type
, args
);
11033 /* NULL function pointer, we have no decoding function*/
11034 proto_tree_add_expert(ie_tree
, pinfo
, &ei_pfcp_ie_not_decoded_null
, tvb
, offset
, length_ie
);
11037 /* IE id outside of array, We have no decoding function for it */
11038 proto_tree_add_expert(ie_tree
, pinfo
, &ei_pfcp_ie_not_decoded_too_large
, tvb
, offset
, length_ie
);
11041 offset
+= length_ie
;
11047 dissect_pfcp_message(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
)
11050 proto_tree
*sub_tree
;
11052 uint64_t pfcp_flags
;
11053 uint8_t message_type
, cause_aux
;
11055 uint32_t length_total
;
11057 conversation_t
*conversation
;
11058 pfcp_conv_info_t
*pfcp_info
;
11059 pfcp_session_args_t
*args
= NULL
;
11060 pfcp_msg_hash_t
*pcrp
= NULL
;
11061 pfcp_hdr_t
*pfcp_hdr
= NULL
;
11063 static int * const pfcp_hdr_flags
[] = {
11073 pfcp_hdr
= wmem_new0(pinfo
->pool
, pfcp_hdr_t
);
11075 /* Setting the SEID to -1 to say that the SEID is not valid for this packet */
11076 pfcp_hdr
->seid
= -1;
11078 col_set_str(pinfo
->cinfo
, COL_PROTOCOL
, "PFCP");
11079 col_clear(pinfo
->cinfo
, COL_INFO
);
11081 message_type
= tvb_get_uint8(tvb
, 1);
11082 col_set_str(pinfo
->cinfo
, COL_INFO
, val_to_str_ext_const(message_type
, &pfcp_message_type_ext
, "Unknown"));
11084 args
= wmem_new0(pinfo
->pool
, pfcp_session_args_t
);
11085 args
->last_cause
= 1; /* It stores the last cause decoded. Cause accepted by default */
11086 if (g_pfcp_session
) {
11087 /* We create the auxiliary lists */
11088 args
->seid_list
= wmem_list_new(pinfo
->pool
);
11089 args
->ip_list
= wmem_list_new(pinfo
->pool
);
11092 /* Do we have a conversation for this connection? */
11093 conversation
= find_or_create_conversation(pinfo
);
11095 /* Do we already know this conversation? */
11096 pfcp_info
= (pfcp_conv_info_t
*)conversation_get_proto_data(conversation
, proto_pfcp
);
11097 if (pfcp_info
== NULL
) {
11098 /* No. Attach that information to the conversation,
11099 * and add it to the list of information structures.
11101 pfcp_info
= wmem_new(wmem_file_scope(), pfcp_conv_info_t
);
11102 /* Request/response matching tables */
11103 pfcp_info
->matched
= wmem_map_new(wmem_file_scope(), pfcp_sn_hash
, pfcp_sn_equal_matched
);
11104 pfcp_info
->unmatched
= wmem_map_new(wmem_file_scope(), pfcp_sn_hash
, pfcp_sn_equal_unmatched
);
11106 conversation_add_proto_data(conversation
, proto_pfcp
, pfcp_info
);
11109 item
= proto_tree_add_item(tree
, proto_pfcp
, tvb
, 0, -1, ENC_NA
);
11110 sub_tree
= proto_item_add_subtree(item
, ett_pfcp
);
11112 /* 7.2.2 Message Header */
11114 Octet 8 7 6 5 4 3 2 1
11115 1 | Version |Spare|Spare| FO | MP | S |
11117 3 | Message Length (1st Octet) |
11118 4 | Message Length (2nd Octet) |
11119 m to | If S flag is set to 1, then SEID shall be |
11120 k(m+7) | placed into octets 5-12. Otherwise, SEID field |
11121 | is not present at all. |
11122 n to | Sequence Number |
11128 proto_tree_add_bitmask_with_flags_ret_uint64(sub_tree
, tvb
, offset
, hf_pfcp_hdr_flags
,
11129 ett_pfcp_flags
, pfcp_hdr_flags
, ENC_BIG_ENDIAN
, BMT_NO_FALSE
| BMT_NO_INT
, &pfcp_flags
);
11132 /* Octet 2 Message Type */
11133 pfcp_hdr
->message
= tvb_get_uint8(tvb
, offset
);
11134 proto_tree_add_uint(sub_tree
, hf_pfcp_msg_type
, tvb
, offset
, 1, pfcp_hdr
->message
);
11137 /* Octet 3 - 4 Message Length */
11138 proto_tree_add_item_ret_uint(sub_tree
, hf_pfcp_msg_length
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &length
);
11141 /* length of the message in octets plus the excluded mandatory part of the PFCP header (the first 4 octets) */
11142 length_total
= (length
+ 4);
11144 if ((pfcp_flags
& 0x1) == 1) {
11145 /* If S flag is set to 1, then SEID shall be placed into octets 5-12*/
11146 /* Session Endpoint Identifier 8 Octets */
11147 pfcp_hdr
->seid
= tvb_get_ntohi64(tvb
, offset
);
11148 proto_tree_add_uint64(sub_tree
, hf_pfcp_seid
, tvb
, offset
, 8, pfcp_hdr
->seid
);
11151 /* 7.2.2.2 PFCP Header for Node Related Messages */
11153 Octet 8 7 6 5 4 3 2 1
11154 1 | Version |Spare|Spare| FO=0 | MP=0 | S=0 |
11156 3 | Message Length (1st Octet) |
11157 4 | Message Length (2nd Octet) |
11158 5 | Sequence Number (1st Octet) |
11159 6 | Sequence Number (2st Octet) |
11160 7 | Sequence Number (3st Octet) |
11163 proto_tree_add_item_ret_uint(sub_tree
, hf_pfcp_seqno
, tvb
, offset
, 3, ENC_BIG_ENDIAN
, &seq_no
);
11166 if ((pfcp_flags
& 0x2) == 0x2) {
11167 /* If the "MP" flag is set to "1", then bits 8 to 5 of octet 16 shall indicate the message priority.*/
11168 proto_tree_add_item(sub_tree
, hf_pfcp_mp
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
11169 proto_tree_add_item(sub_tree
, hf_pfcp_spare_h0
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
11171 proto_tree_add_item(sub_tree
, hf_pfcp_spare_oct
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
11175 /* Dissect the IEs in the message */
11176 dissect_pfcp_ies_common(tvb
, pinfo
, sub_tree
, offset
, length_total
, message_type
, args
);
11178 /* Use sequence number to track Req/Resp pairs */
11179 cause_aux
= 16; /* Cause accepted by default. Only used when no session tracking enabled */
11180 if (g_pfcp_session
&& !PINFO_FD_VISITED(pinfo
)) {
11181 /* We insert the lists inside the table*/
11182 pfcp_fill_map(args
->seid_list
, args
->ip_list
, pinfo
->num
);
11183 cause_aux
= args
->last_cause
;
11185 pcrp
= pfcp_match_response(tvb
, pinfo
, sub_tree
, seq_no
, message_type
, pfcp_info
, cause_aux
);
11187 tap_queue_packet(pfcp_tap
, pinfo
, pcrp
);
11189 if (g_pfcp_session
) {
11190 pfcp_track_session(tvb
, pinfo
, sub_tree
, pfcp_hdr
, args
->seid_list
, args
->ip_list
, args
->last_seid
, args
->last_ip
);
11193 return length_total
;
11197 dissect_pfcp(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void *data _U_
)
11200 unsigned length
= tvb_reported_length(tvb
);
11202 /* 7.2.1A PFCP messages bundled in one UDP/IP packet */
11203 /* Each bundled PFCP message shall contain its PFCP message header and may */
11204 /* contain subsequent information element(s) dependent on the type of message. */
11207 /* The first octet of header, Bit 3 represents the "FO" (Follow On) flag. */
11208 /* If the "FO" flag is set to "1", then another PFCP message follows in the UDP/IP packet */
11209 bool follow_on
= (tvb_get_uint8(tvb
, offset
) & 0x04);
11211 /* length of the message in octets plus the excluded mandatory part of the PFCP header (the first 4 octets) */
11212 uint16_t message_length
= (tvb_get_uint16(tvb
, (offset
+ 2), 0) + 4);
11214 tvbuff_t
*message_tvb
= tvb_new_subset_length(tvb
, offset
, message_length
);
11215 offset
+= dissect_pfcp_message(message_tvb
, pinfo
, tree
);
11217 /* Lets warn of faulty FO flag */
11219 if ((length
- offset
) == 0) {
11220 proto_tree_add_expert_format(tree
, pinfo
, &ei_pfcp_ie_encoding_error
, tvb
, offset
, -1, "Follow ON flag set but no data left for following message");
11223 if ((length
- offset
) > 0) {
11224 proto_tree_add_expert_format(tree
, pinfo
, &ei_pfcp_ie_encoding_error
, tvb
, offset
, -1, "Data left for following message but Follow ON flag is not set");
11227 } while (length
> (unsigned)offset
);
11232 /* Enterprise IE decoding Broadband Forum
11234 * TR-459: Control and User Plane Separation for a disaggregated BNG
11238 * TR-459: 6.6.1 BBF UP Function Features
11239 * TR-459.2: 6.5.1 BBF UP Function Features
11240 * TR-459.3: Table 1: BBF UP Function Features for Multicast
11243 dissect_pfcp_enterprise_bbf_up_function_features(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11247 static int * const pfcp_bbf_up_function_features_o7_flags
[] = {
11248 &hf_pfcp_bbf_up_function_features_o7_b7_nat_up
,
11249 &hf_pfcp_bbf_up_function_features_o7_b6_nat_cp
,
11250 &hf_pfcp_bbf_up_function_features_o7_b5_iptv
,
11251 &hf_pfcp_bbf_up_function_features_o7_b4_lcp_keepalive_offload
,
11252 &hf_pfcp_bbf_up_function_features_o7_b3_lns
,
11253 &hf_pfcp_bbf_up_function_features_o7_b2_lac
,
11254 &hf_pfcp_bbf_up_function_features_o7_b1_ipoe
,
11255 &hf_pfcp_bbf_up_function_features_o7_b0_pppoe
,
11259 // Octet 8 Spare Octet
11260 proto_tree_add_item(tree
, hf_pfcp_spare_oct
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
11263 // Octet 9 Spare Octet
11264 proto_tree_add_item(tree
, hf_pfcp_spare_oct
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
11267 // Octet 10 Spare Octet
11268 proto_tree_add_item(tree
, hf_pfcp_spare_oct
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
11271 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_bbf_up_function_features_o7_flags
, ENC_BIG_ENDIAN
);
11278 * TR-459: 6.6.2 Logical Port
11281 dissect_pfcp_enterprise_bbf_logical_port(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data _U_
)
11283 /* Octet 7 to (n+4) logical-port-id */
11284 if (tvb_ascii_isprint(tvb
, 0, -1))
11286 const uint8_t* string_value
;
11287 proto_tree_add_item_ret_string(tree
, hf_pfcp_bbf_logical_port_id_str
, tvb
, 0, -1, ENC_ASCII
| ENC_NA
, pinfo
->pool
, &string_value
);
11288 proto_item_append_text(proto_tree_get_parent(tree
), "%s", string_value
);
11292 proto_tree_add_item(tree
, hf_pfcp_bbf_logical_port_id
, tvb
, 0, -1, ENC_NA
);
11295 return tvb_reported_length(tvb
);
11299 * TR-459i2: 6.9.3 BBF Outer Header Creation
11302 dissect_pfcp_enterprise_bbf_outer_header_creation(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11307 static int * const outer_hdr_desc
[] = {
11308 &hf_pfcp_bbf_outer_hdr_creation_desc_o7_b4_ppp
,
11309 &hf_pfcp_bbf_outer_hdr_creation_desc_o7_b3_l2tp
,
11310 &hf_pfcp_bbf_outer_hdr_creation_desc_o7_b2_traffic_endpoint
,
11311 &hf_pfcp_bbf_outer_hdr_creation_desc_o7_b1_crp_nsh
,
11312 &hf_pfcp_bbf_outer_hdr_creation_desc_spare
,
11316 /* Octet 7-8 Outer Header Creation Description */
11317 proto_tree_add_bitmask_list_ret_uint64(tree
, tvb
, offset
, 2, outer_hdr_desc
, ENC_BIG_ENDIAN
, &value
);
11320 if ((value
& 0x0400) != 0) {
11321 /* Octet 9 to 10 Tunnel ID */
11322 proto_tree_add_item(tree
, hf_pfcp_bbf_outer_hdr_creation_tunnel_id
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
11325 /* Octet 10 to 11 Session ID */
11326 proto_tree_add_item(tree
, hf_pfcp_bbf_outer_hdr_creation_session_id
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
11334 * TR-459: 6.6.4 BBF Outer Header Removal
11337 static const value_string pfcp_bbf_out_hdr_desc_vals
[] = {
11338 { 1, "Ethernet " },
11339 { 2, "PPPoE/Ethernet " },
11340 { 3, "PPP/PPPoE/Ethernet " },
11342 { 5, "PPP/L2TP " },
11347 dissect_pfcp_enterprise_bbf_outer_header_removal(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11352 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_out_hdr_desc
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
11354 proto_item_append_text(proto_tree_get_parent(tree
), "%s", val_to_str_const(value
, pfcp_bbf_out_hdr_desc_vals
, "Unknown"));
11360 * TR-459: 6.6.5 PPPoE Session ID
11363 dissect_pfcp_enterprise_bbf_pppoe_session_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11368 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_pppoe_session_id
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &value
);
11370 proto_item_append_text(proto_tree_get_parent(tree
), "%u", value
);
11376 * TR-459: 6.6.6 PPP Protocol
11379 dissect_pfcp_enterprise_bbf_ppp_protocol(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11382 uint64_t bbf_ppp_flags_val
;
11384 static int * const pfcp_bbf_ppp_protocol_flags
[] = {
11385 &hf_pfcp_spare_b7_b3
,
11386 &hf_pfcp_bbf_ppp_protocol_b2_control
,
11387 &hf_pfcp_bbf_ppp_protocol_b1_data
,
11388 &hf_pfcp_bbf_ppp_protocol_b0_specific
,
11391 /* Octet 5 control data specific D */
11392 proto_tree_add_bitmask_with_flags_ret_uint64(tree
, tvb
, offset
, hf_pfcp_bbf_ppp_protocol_flags
,
11393 ett_pfcp_bbf_ppp_protocol_flags
, pfcp_bbf_ppp_protocol_flags
, ENC_BIG_ENDIAN
, BMT_NO_FALSE
| BMT_NO_INT
| BMT_NO_TFS
, &bbf_ppp_flags_val
);
11396 if ((bbf_ppp_flags_val
& 0x01) == 1)
11398 /* Octet 8 and 9 protocol */
11399 proto_tree_add_item(tree
, hf_pfcp_bbf_ppp_protocol
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
11407 * TR-459: 6.6.7 Verification Timers
11410 dissect_pfcp_enterprise_bbf_verification_timers(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11414 proto_tree_add_item(tree
, hf_pfcp_bbf_verification_timer_interval
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
11417 proto_tree_add_item(tree
, hf_pfcp_bbf_verification_timer_count
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
11424 * TR-459: 6.6.8 LCP Magic Number
11427 dissect_pfcp_enterprise_bbf_ppp_lcp_magic_number(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11431 proto_tree_add_item(tree
, hf_pfcp_bbf_ppp_lcp_magic_number_tx
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
11434 proto_tree_add_item(tree
, hf_pfcp_bbf_ppp_lcp_magic_number_rx
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
11441 * TR-459: 6.6.9 MTU
11444 dissect_pfcp_enterprise_bbf_mtu(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11449 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_mtu
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &value
);
11451 proto_item_append_text(proto_tree_get_parent(tree
), "%u", value
);
11457 * TR-459: 6.6.10 L2TP Tunnel Endpoint
11460 dissect_pfcp_enterprise_bbf_l2tp_tunnel_endpoint(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11463 uint64_t bbf_l2tp_endp_flags_val
;
11465 static int * const pfcp_bbf_l2tp_endp_flags
[] = {
11466 &hf_pfcp_spare_b7_b3
,
11467 &hf_pfcp_bbf_l2tp_endp_flags_b2_ch
,
11468 &hf_pfcp_bbf_l2tp_endp_flags_b1_v6
,
11469 &hf_pfcp_bbf_l2tp_endp_flags_b0_v4
,
11472 /* Octet 5 CH v4 v6 */
11473 proto_tree_add_bitmask_with_flags_ret_uint64(tree
, tvb
, offset
, hf_pfcp_bbf_l2tp_endp_flags
,
11474 ett_pfcp_bbf_l2tp_endp_flags
, pfcp_bbf_l2tp_endp_flags
, ENC_BIG_ENDIAN
, BMT_NO_FALSE
| BMT_NO_INT
| BMT_NO_TFS
, &bbf_l2tp_endp_flags_val
);
11477 proto_tree_add_item(tree
, hf_pfcp_bbf_l2tp_endp_id_tunnel_id
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
11480 proto_tree_add_item(tree
, hf_pfcp_bbf_l2tp_endp_id_ipv4
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
11483 proto_tree_add_item(tree
, hf_pfcp_bbf_l2tp_endp_id_ipv6
, tvb
, offset
, 16, ENC_NA
);
11490 * TR-459: 6.6.11 L2TP Session ID
11493 dissect_pfcp_enterprise_bbf_l2tp_session_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11498 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_l2tp_session_id
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &value
);
11500 proto_item_append_text(proto_tree_get_parent(tree
), "%u", value
);
11507 * TR-459: 6.6.12 L2TP Type
11510 static const true_false_string pfcp_bbf_l2tp_type_b0_t_tfs
= {
11516 dissect_pfcp_enterprise_bbf_l2tp_type(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11520 static int * const pfcp_bbf_l2tp_type_flags
[] = {
11521 &hf_pfcp_spare_b7_b1
,
11522 &hf_pfcp_bbf_l2tp_type_flags_b0_t
,
11526 proto_tree_add_bitmask_with_flags(tree
, tvb
, offset
, hf_pfcp_bbf_l2tp_type_flags
,
11527 ett_pfcp_bbf_l2tp_type_flags
, pfcp_bbf_l2tp_type_flags
, ENC_BIG_ENDIAN
, BMT_NO_FALSE
| BMT_NO_INT
| BMT_NO_TFS
);
11534 * TR-459.3: Figure 6: BBF Multicast Flags Information Element
11537 dissect_pfcp_enterprise_bbf_multicast_flags(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11541 static int * const pfcp_bbf_multicast_flags
[] = {
11542 &hf_pfcp_spare_b7_b2
,
11543 &hf_pfcp_bbf_multicast_flags_o7_b1_routeralertoff
,
11544 &hf_pfcp_bbf_multicast_flags_o7_b0_fastleave
,
11548 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_bbf_multicast_flags
, ENC_BIG_ENDIAN
);
11555 * TR-459.3: Figure 7: BBF Multicast Query Parameters Information Element
11558 dissect_pfcp_enterprise_bbf_multicast_query_parameters(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11562 proto_tree_add_item(tree
, hf_pfcp_bbf_multicast_query_param_robustness
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
11565 proto_tree_add_item(tree
, hf_pfcp_bbf_multicast_query_param_query_interval
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
11568 proto_tree_add_item(tree
, hf_pfcp_bbf_multicast_query_param_query_response_interval
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
11571 proto_tree_add_item(tree
, hf_pfcp_bbf_multicast_query_param_group_query_interval
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
11578 * TR-459.3: Figure 8: BBF Multicast Group Limit Information Element
11581 dissect_pfcp_enterprise_bbf_multicast_group_limit(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11586 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_multicast_group_limit_max_joins
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &value
);
11588 proto_item_append_text(proto_tree_get_parent(tree
), "%u", value
);
11594 * TR-459.2: 6.5.5 BBF Apply Action IE
11597 dissect_pfcp_enterprise_bbf_apply_action(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11601 static int * const pfcp_bbf_apply_action_flags
[] = {
11602 &hf_pfcp_spare_b7_b1
,
11603 &hf_pfcp_bbf_apply_action_flags_b0_nat
,
11607 proto_tree_add_bitmask_list(tree
, tvb
, offset
, 1, pfcp_bbf_apply_action_flags
, ENC_BIG_ENDIAN
);
11614 * TR-459.2: 6.5.6 BBF NAT External Port Range
11617 dissect_pfcp_enterprise_bbf_nat_external_port_range(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11620 uint32_t start
, end
;
11622 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_nat_external_port_range_start
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &start
);
11625 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_nat_external_port_range_end
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &end
);
11628 proto_item_append_text(proto_tree_get_parent(tree
), ": %u:%u", start
, end
);
11634 * TR-459.2: 6.5.7 BBF NAT port forward
11637 dissect_pfcp_enterprise_bbf_nat_port_forward(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data _U_
)
11640 unsigned length
= tvb_reported_length(tvb
);
11642 while ((unsigned)offset
< length
) {
11643 uint32_t in
, out
, protocol
;
11647 li
= proto_tree_add_item(tree
, hf_pfcp_bbf_nat_port_forward
, tvb
, offset
, 9, ENC_NA
);
11648 lt
= proto_item_add_subtree(li
, ett_pfcp_bbf_nat_port_forward_list
);
11650 proto_tree_add_item(lt
, hf_pfcp_bbf_nat_port_forward_inside_ip
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
11653 proto_tree_add_item_ret_uint(lt
, hf_pfcp_bbf_nat_port_forward_inside_port
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &in
);
11656 proto_tree_add_item_ret_uint(lt
, hf_pfcp_bbf_nat_port_forward_outside_port
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &out
);
11659 proto_tree_add_item_ret_uint(lt
, hf_pfcp_bbf_nat_port_forward_protocol
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &protocol
);
11662 proto_item_append_text(li
, ": proto=%s: %s:%u -> %u", val_to_str_ext_const(protocol
, &ipproto_val_ext
, "Unknown"),
11663 tvb_ip_to_str(pinfo
->pool
, tvb
, 0), in
, out
);
11670 * TR 459.2: 6.5.3 BBF Report Trigger
11672 static const value_string pfcp_bbf_reporting_trigger_vals
[] = {
11675 { 1, "DBNG-UP allocated NAT blocks" },
11680 dissect_pfcp_enterprise_bbf_reporting_trigger(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11685 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_reporting_trigger
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
11687 proto_item_append_text(proto_tree_get_parent(tree
), "%s", val_to_str_const(value
, pfcp_bbf_reporting_trigger_vals
, "Unknown"));
11693 * TR 459.2: 6.5.8 BBF Dynamic NAT Block Port Range
11696 dissect_pfcp_enterprise_bbf_dynamic_nat_block_port_range(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11699 uint32_t start
, end
;
11701 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_dynamic_nat_block_port_range_start_port
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &start
);
11704 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_dynamic_nat_block_port_range_end_port
, tvb
, offset
, 2, ENC_BIG_ENDIAN
, &end
);
11707 proto_item_append_text(proto_tree_get_parent(tree
), "%u:%u", start
, end
);
11713 * TR 459.2: 6.5.9 BBF Event Time Stamp
11716 dissect_pfcp_enterprise_bbf_event_time_stamp(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void* data _U_
)
11721 proto_tree_add_item_ret_time_string(tree
, hf_pfcp_bbf_event_time_stamp
, tvb
, 0, 8, ENC_TIME_NTP
| ENC_BIG_ENDIAN
, pinfo
->pool
, &time_str
);
11723 proto_item_append_text(proto_tree_get_parent(tree
), "%s", time_str
);
11728 static const value_string pfcp_bbf_direction_vals
[] = {
11729 {0, "Input/Ingress/Upstream" },
11730 {1, "Output/Egress/Downstream" },
11735 * TR 459i2: 6.9.13 BBF Direction IE
11738 dissect_pfcp_enterprise_bbf_direction(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11742 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_direction
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &value
);
11743 proto_item_append_text(proto_tree_get_parent(tree
), " : %s", val_to_str_const(value
, pfcp_bbf_direction_vals
, "Unknown"));
11748 static const value_string pfcp_bbf_family_vals
[] = {
11757 * TR 459i2: 6.9.14 BBF Family IE
11760 dissect_pfcp_enterprise_bbf_family(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11764 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_family
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &value
);
11765 proto_item_append_text(proto_tree_get_parent(tree
), " : %s", val_to_str_const(value
, pfcp_bbf_family_vals
, "Unknown"));
11771 * TR 459i2: 6.9.15 BBF SGRP Identifier
11774 dissect_pfcp_enterprise_bbf_sgrp_identifier(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11778 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_sgrp_identifier
, tvb
, 0, 4, ENC_BIG_ENDIAN
, &value
);
11779 proto_item_append_text(proto_tree_get_parent(tree
), " : %d", value
);
11784 static const value_string pfcp_bbf_sgrp_state_vals
[] = {
11785 {0, "(reserved)" },
11788 {3, "Track Logical Port" },
11793 * TR 459i2: 6.9.16 BBF SGRP State
11796 dissect_pfcp_enterprise_bbf_sgrp_state(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11800 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_sgrp_state
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &value
);
11801 proto_item_append_text(proto_tree_get_parent(tree
), " : %s", val_to_str_const(value
, pfcp_bbf_sgrp_state_vals
, "Unknown"));
11807 * TR 459i2: 6.9.17 BBF SGRP Flags
11810 dissect_pfcp_enterprise_bbf_sgrp_flags(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11812 static int * const flags
[] = {
11813 &hf_pfcp_spare_b7_b2
,
11814 &hf_pfcp_bbf_sgrp_flags_b1_psa
,
11815 &hf_pfcp_bbf_sgrp_flags_b0_ras
,
11819 proto_tree_add_bitmask_with_flags(tree
, tvb
, 0, hf_pfcp_bbf_sgrp_flags
, ett_pfcp_bbf_sgrp_flags
, flags
, ENC_BIG_ENDIAN
, BMT_NO_FALSE
| BMT_NO_INT
);
11824 static const value_string pfcp_bbf_operational_condition_vals
[] = {
11832 * TR 459i2: 6.9.18 BBF Operational Condition IE
11835 dissect_pfcp_enterprise_bbf_operational_condition(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11839 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_operational_condition
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &value
);
11840 proto_item_append_text(proto_tree_get_parent(tree
), " : %s", val_to_str_const(value
, pfcp_bbf_operational_condition_vals
, "Unknown"));
11846 * TR 459i2: 6.9.19 BBF IPv4 Prefix
11849 dissect_pfcp_enterprise_bbf_ipv4_prefix(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11851 uint32_t prefix_len
;
11853 proto_tree_add_item(tree
, hf_pfcp_bbf_ipv4_prefix
, tvb
, 0, 4, ENC_NA
);
11854 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_ipv4_prefix_length
, tvb
, 4, 1, ENC_BIG_ENDIAN
, &prefix_len
);
11855 proto_item_append_text(proto_tree_get_parent(tree
), " : %s/%d", tvb_ip_to_str(pinfo
->pool
, tvb
, 0), prefix_len
);
11861 * TR 459i2: 6.9.20 BBF IPv6 Prefix
11864 dissect_pfcp_enterprise_bbf_ipv6_prefix(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11866 uint32_t prefix_len
;
11868 proto_tree_add_item(tree
, hf_pfcp_bbf_ipv6_prefix
, tvb
, 0, 16, ENC_NA
);
11869 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_ipv6_prefix_length
, tvb
, 16, 1, ENC_BIG_ENDIAN
, &prefix_len
);
11870 proto_item_append_text(proto_tree_get_parent(tree
), " : %s/%d", tvb_ip6_to_str(pinfo
->pool
, tvb
, 0), prefix_len
);
11875 static const value_string pfcp_bbf_prefix_tag_usage_vals
[] = {
11876 {0, "(reserved)" },
11877 {1, "Active SGRP" },
11878 {2, "Standby SGRP" },
11883 * TR 459i2: 6.9.21 BBF Prefix Tag
11886 dissect_pfcp_enterprise_bbf_prefix_tag(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11891 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_prefix_tag_usage
, tvb
, offset
, 1, ENC_BIG_ENDIAN
, &value
);
11892 proto_item_append_text(proto_tree_get_parent(tree
), " : %s", val_to_str_const(value
, pfcp_bbf_prefix_tag_usage_vals
, "Unknown"));
11895 if (tvb_reported_length(tvb
) > 1)
11899 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_prefix_tag
, tvb
, offset
, 4, ENC_BIG_ENDIAN
, &tag
);
11900 proto_item_append_text(proto_tree_get_parent(tree
), " : %d", tag
);
11907 static const value_string pfcp_bbf_error_code_vals
[] = {
11908 {0x0000, "Reserved"},
11909 {0x0001, "SGRP programming error because of resource exhaustion"},
11910 {0x0002, "SGRP programming error because of configuration mismatch or incomplete"},
11911 {0x0003, "SGRP programming error related to vMAC"},
11912 {0x0004, "SGRP Partial state is not supported on DBNG-UP"},
11913 {0x0005, "SGRP Track logical port is not supported by DBNG-UP"},
11914 {0x0006, "ACL name not found"},
11915 {0x0007, "Prefix programming error because of resource exhaustion"},
11916 {0x0008, "Prefix programming error because of configuration mismatch or incomplete"},
11917 {0x0009, "Prefix's Network Instance not found"},
11918 {0x000a, "Prefix Active Tag matching not found"},
11919 {0x000b, "Prefix Backup Tag matching not found"},
11920 {0x000c, "Prefix's SGRP ID not found"},
11921 {0x000d, "Prefix not found (on prefix modify or prefix delete)"},
11922 {0x000e, "Prefix in use (when SGRP delete is performed before prefix delete)"},
11923 {0xffff, "Other error"},
11928 * TR 459i2: 6.9.22 BBF Error Code
11931 dissect_pfcp_enterprise_bbf_error_code(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11935 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_error_code
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &value
);
11936 proto_item_append_text(proto_tree_get_parent(tree
), " : %s", val_to_str_const(value
, pfcp_bbf_error_code_vals
, "Unknown"));
11942 * TR 459i2: 6.9.23 BBF Error Message
11945 dissect_pfcp_enterprise_bbf_error_message(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11947 proto_tree_add_item(tree
, hf_pfcp_bbf_error_message
, tvb
, 0, tvb_reported_length(tvb
), ENC_ASCII
);
11949 return tvb_reported_length(tvb
);
11953 * TR 459i2: 6.9.24 BBF Maximum ACL Chain Length
11956 dissect_pfcp_enterprise_bbf_maximum_acl_chain_length(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11960 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_maximum_acl_chain_length
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &value
);
11961 proto_item_append_text(proto_tree_get_parent(tree
), " : %d", value
);
11967 * TR 459i2: 6.9.25 BBF Forwarding Capability
11970 dissect_pfcp_enterprise_bbf_forwarding_capability(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11974 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_forwarding_capability
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &value
);
11975 proto_item_append_text(proto_tree_get_parent(tree
), " : %d%%", value
);
11980 static const value_string pfcp_bbf_connectivity_status_vals
[] = {
11981 {0, "(reserved)" },
11988 * TR 459i2: 6.9.26 BBF Connectivity Status
11991 dissect_pfcp_enterprise_bbf_connectivity_status(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
11995 proto_tree_add_item_ret_uint(tree
, hf_pfcp_bbf_connectivity_status
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &value
);
11996 proto_item_append_text(proto_tree_get_parent(tree
), " : %s", val_to_str_const(value
, pfcp_bbf_connectivity_status_vals
, "Unknown"));
12002 * TR 459i2: 6.9.27 Vendor-Specific Node Report Type
12005 dissect_pfcp_enterprise_bbf_vendor_specific_node_report_type(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
12007 static int * const flags
[] = {
12008 &hf_pfcp_spare_b7_b3
,
12009 &hf_pfcp_bbf_vendor_specific_node_report_type_b2_nir
,
12010 &hf_pfcp_bbf_vendor_specific_node_report_type_b1_sgr
,
12011 &hf_pfcp_bbf_vendor_specific_node_report_type_b0_lpr
,
12015 proto_tree_add_bitmask_with_flags(tree
, tvb
, 0, hf_pfcp_bbf_vendor_specific_node_report_type
, ett_pfcp_bbf_vendor_specific_node_report_type
, flags
, ENC_BIG_ENDIAN
, BMT_NO_FALSE
| BMT_NO_INT
);
12021 * TR 459i2: 6.9.28 BBF C-Tag Range
12024 dissect_pfcp_enterprise_bbf_ctag_range(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
12026 static const crumb_spec_t start_crumbs
[] = {
12031 static const crumb_spec_t end_crumbs
[] = {
12037 uint64_t start
, end
;
12039 proto_tree_add_split_bits_item_ret_val(tree
, hf_pfcp_bbf_ctag_range_start
, tvb
, 0, start_crumbs
, &start
);
12040 proto_tree_add_split_bits_item_ret_val(tree
, hf_pfcp_bbf_ctag_range_end
, tvb
, 8, end_crumbs
, &end
);
12041 proto_item_append_text(proto_tree_get_parent(tree
), " : %" PRIu64
"-%" PRIu64
, start
, end
);
12047 * TR 459i2: 6.9.29 BBF S-Tag Range
12050 dissect_pfcp_enterprise_bbf_stag_range(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void* data _U_
)
12052 static const crumb_spec_t start_crumbs
[] = {
12057 static const crumb_spec_t end_crumbs
[] = {
12063 uint64_t start
, end
;
12065 proto_tree_add_split_bits_item_ret_val(tree
, hf_pfcp_bbf_stag_range_start
, tvb
, 0, start_crumbs
, &start
);
12066 proto_tree_add_split_bits_item_ret_val(tree
, hf_pfcp_bbf_stag_range_end
, tvb
, 8, end_crumbs
, &end
);
12067 proto_item_append_text(proto_tree_get_parent(tree
), " : %" PRIu64
"-%" PRIu64
, start
, end
);
12072 static pfcp_generic_ie_t pfcp_bbf_ies
[] = {
12074 { VENDOR_BROADBAND_FORUM
, 32768 , "UP Function Features" , dissect_pfcp_enterprise_bbf_up_function_features
, -1} ,
12075 { VENDOR_BROADBAND_FORUM
, 32769 , "Logical Port" , dissect_pfcp_enterprise_bbf_logical_port
, -1} ,
12076 { VENDOR_BROADBAND_FORUM
, 32770 , "Outer Header Creation" , dissect_pfcp_enterprise_bbf_outer_header_creation
, -1} ,
12077 { VENDOR_BROADBAND_FORUM
, 32771 , "Outer Header Removal" , dissect_pfcp_enterprise_bbf_outer_header_removal
, -1} ,
12078 { VENDOR_BROADBAND_FORUM
, 32772 , "PPPoE Session ID" , dissect_pfcp_enterprise_bbf_pppoe_session_id
, -1} ,
12079 { VENDOR_BROADBAND_FORUM
, 32773 , "PPP protocol" , dissect_pfcp_enterprise_bbf_ppp_protocol
, -1} ,
12080 { VENDOR_BROADBAND_FORUM
, 32774 , "Verification Timers" , dissect_pfcp_enterprise_bbf_verification_timers
, -1} ,
12081 { VENDOR_BROADBAND_FORUM
, 32775 , "PPP LCP Magic Number" , dissect_pfcp_enterprise_bbf_ppp_lcp_magic_number
, -1} ,
12082 { VENDOR_BROADBAND_FORUM
, 32776 , "MTU" , dissect_pfcp_enterprise_bbf_mtu
, -1} ,
12083 { VENDOR_BROADBAND_FORUM
, 32777 , "L2TP Tunnel Endpoint" , dissect_pfcp_enterprise_bbf_l2tp_tunnel_endpoint
, -1} ,
12084 { VENDOR_BROADBAND_FORUM
, 32778 , "L2TP Session ID" , dissect_pfcp_enterprise_bbf_l2tp_session_id
, -1} ,
12085 { VENDOR_BROADBAND_FORUM
, 32779 , "L2TP Type" , dissect_pfcp_enterprise_bbf_l2tp_type
, -1} ,
12086 { VENDOR_BROADBAND_FORUM
, 32780 , "PPP LCP Connectivity" , dissect_pfcp_grouped_ie_wrapper
, -1} ,
12087 { VENDOR_BROADBAND_FORUM
, 32781 , "L2TP Tunnel" , dissect_pfcp_grouped_ie_wrapper
, -1} ,
12089 { VENDOR_BROADBAND_FORUM
, 32782 , "BBF Multicast Flags" , dissect_pfcp_enterprise_bbf_multicast_flags
, -1} ,
12090 { VENDOR_BROADBAND_FORUM
, 32783 , "BBF Multicast Query Parameters" , dissect_pfcp_enterprise_bbf_multicast_query_parameters
, -1} ,
12091 { VENDOR_BROADBAND_FORUM
, 32784 , "BBF Multicast Group Limit" , dissect_pfcp_enterprise_bbf_multicast_group_limit
, -1} ,
12092 { VENDOR_BROADBAND_FORUM
, 32785 , "BBF Multicast Protocol Control" , dissect_pfcp_grouped_ie_wrapper
, -1} ,
12094 { VENDOR_BROADBAND_FORUM
, 32787 , "BBF Apply Action" , dissect_pfcp_enterprise_bbf_apply_action
, -1} ,
12095 { VENDOR_BROADBAND_FORUM
, 32788 , "BBF NAT External Port Range" , dissect_pfcp_enterprise_bbf_nat_external_port_range
, -1} ,
12096 { VENDOR_BROADBAND_FORUM
, 32789 , "BBF NAT Port Forward" , dissect_pfcp_enterprise_bbf_nat_port_forward
, -1} ,
12097 { VENDOR_BROADBAND_FORUM
, 32790 , "BBF Report Trigger" , dissect_pfcp_enterprise_bbf_reporting_trigger
, -1} ,
12098 { VENDOR_BROADBAND_FORUM
, 32791 , "BBF Dynamic NAT Block Port Range" , dissect_pfcp_enterprise_bbf_dynamic_nat_block_port_range
, -1} ,
12099 { VENDOR_BROADBAND_FORUM
, 32792 , "BBF Event Time Stamp" , dissect_pfcp_enterprise_bbf_event_time_stamp
, -1} ,
12101 { VENDOR_BROADBAND_FORUM
, 32793 , "Node Info Create" , dissect_pfcp_grouped_ie_wrapper
, -1} ,
12102 { VENDOR_BROADBAND_FORUM
, 32794 , "Node Info Modify" , dissect_pfcp_grouped_ie_wrapper
, -1} ,
12103 { VENDOR_BROADBAND_FORUM
, 32795 , "Node Info Delete" , dissect_pfcp_grouped_ie_wrapper
, -1} ,
12104 { VENDOR_BROADBAND_FORUM
, 32796 , "Logical Port Report" , dissect_pfcp_grouped_ie_wrapper
, -1} ,
12105 { VENDOR_BROADBAND_FORUM
, 32797 , "SGRP Notification Report" , dissect_pfcp_grouped_ie_wrapper
, -1} ,
12106 { VENDOR_BROADBAND_FORUM
, 32798 , "Network Instance Report" , dissect_pfcp_grouped_ie_wrapper
, -1} ,
12107 { VENDOR_BROADBAND_FORUM
, 32799 , "SGRP Error" , dissect_pfcp_grouped_ie_wrapper
, -1} ,
12108 { VENDOR_BROADBAND_FORUM
, 32800 , "SGRP" , dissect_pfcp_grouped_ie_wrapper
, -1} ,
12109 { VENDOR_BROADBAND_FORUM
, 32801 , "UP Subscriber Prefix" , dissect_pfcp_grouped_ie_wrapper
, -1} ,
12110 { VENDOR_BROADBAND_FORUM
, 32802 , "ACL" , dissect_pfcp_grouped_ie_wrapper
, -1} ,
12111 { VENDOR_BROADBAND_FORUM
, 32803 , "Direction" , dissect_pfcp_enterprise_bbf_direction
, -1} ,
12112 { VENDOR_BROADBAND_FORUM
, 32804 , "Family" , dissect_pfcp_enterprise_bbf_family
, -1} ,
12113 { VENDOR_BROADBAND_FORUM
, 32806 , "SGRP Identifier" , dissect_pfcp_enterprise_bbf_sgrp_identifier
, -1} ,
12114 { VENDOR_BROADBAND_FORUM
, 32807 , "SGRP State" , dissect_pfcp_enterprise_bbf_sgrp_state
, -1} ,
12115 { VENDOR_BROADBAND_FORUM
, 32808 , "SGRP Flags" , dissect_pfcp_enterprise_bbf_sgrp_flags
, -1} ,
12116 { VENDOR_BROADBAND_FORUM
, 32809 , "Operational Condition" , dissect_pfcp_enterprise_bbf_operational_condition
, -1} ,
12117 { VENDOR_BROADBAND_FORUM
, 32810 , "IPv4 Prefix" , dissect_pfcp_enterprise_bbf_ipv4_prefix
, -1} ,
12118 { VENDOR_BROADBAND_FORUM
, 32811 , "IPv6 Prefix" , dissect_pfcp_enterprise_bbf_ipv6_prefix
, -1} ,
12119 { VENDOR_BROADBAND_FORUM
, 32812 , "Prefix Tag" , dissect_pfcp_enterprise_bbf_prefix_tag
, -1} ,
12120 { VENDOR_BROADBAND_FORUM
, 32813 , "Error Code" , dissect_pfcp_enterprise_bbf_error_code
, -1} ,
12121 { VENDOR_BROADBAND_FORUM
, 32814 , "Error Message" , dissect_pfcp_enterprise_bbf_error_message
, -1} ,
12122 { VENDOR_BROADBAND_FORUM
, 32815 , "Maximum ACL Chain Length" , dissect_pfcp_enterprise_bbf_maximum_acl_chain_length
, -1} ,
12123 { VENDOR_BROADBAND_FORUM
, 32816 , "Forwarding Capability" , dissect_pfcp_enterprise_bbf_forwarding_capability
, -1} ,
12124 { VENDOR_BROADBAND_FORUM
, 32817 , "Connectivity Status" , dissect_pfcp_enterprise_bbf_connectivity_status
, -1} ,
12125 { VENDOR_BROADBAND_FORUM
, 32818 , "Vendor-Specific Node Report Type" , dissect_pfcp_enterprise_bbf_vendor_specific_node_report_type
, -1} ,
12126 { VENDOR_BROADBAND_FORUM
, 32819 , "Prefix Error" , dissect_pfcp_grouped_ie_wrapper
, -1} ,
12127 { VENDOR_BROADBAND_FORUM
, 32820 , "C-Tag Range" , dissect_pfcp_enterprise_bbf_ctag_range
, -1} ,
12128 { VENDOR_BROADBAND_FORUM
, 32821 , "S-Tag Range" , dissect_pfcp_enterprise_bbf_stag_range
, -1} ,
12131 /* Enterprise IE decoding Travelping */
12134 dissect_pfcp_enterprise_travelping_packet_measurement(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void *data _U_
)
12139 static int * const pfcp_enterprise_travelping_packet_measurement_flags
[] = {
12140 &hf_pfcp_spare_b7_b3
,
12141 &hf_pfcp_enterprise_travelping_packet_measurement_b2_dlnop
,
12142 &hf_pfcp_enterprise_travelping_packet_measurement_b1_ulnop
,
12143 &hf_pfcp_enterprise_travelping_packet_measurement_b0_tonop
,
12147 proto_tree_add_bitmask_with_flags_ret_uint64(tree
, tvb
, offset
, hf_pfcp_enterprise_travelping_packet_measurement
,
12148 ett_pfcp_enterprise_travelping_packet_measurement
, pfcp_enterprise_travelping_packet_measurement_flags
, ENC_BIG_ENDIAN
, BMT_NO_FALSE
| BMT_NO_INT
, &flags
);
12151 if ((flags
& 0x1)) {
12152 proto_tree_add_item(tree
, hf_pfcp_travelping_pkt_meas_tonop
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
12155 if ((flags
& 0x2)) {
12156 proto_tree_add_item(tree
, hf_pfcp_travelping_pkt_meas_ulnop
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
12159 if ((flags
& 0x4)) {
12160 proto_tree_add_item(tree
, hf_pfcp_travelping_pkt_meas_dlnop
, tvb
, offset
, 8, ENC_BIG_ENDIAN
);
12168 dissect_pfcp_enterprise_travelping_build_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12170 /* Octet 7 to (n+4) Travelping Build Id */
12171 if (tvb_ascii_isprint(tvb
, 0, -1))
12173 const uint8_t* string_value
;
12174 proto_tree_add_item_ret_string(tree
, hf_pfcp_travelping_build_id_str
, tvb
, 0, -1, ENC_ASCII
| ENC_NA
, pinfo
->pool
, &string_value
);
12175 proto_item_append_text(proto_tree_get_parent(tree
), "%s", string_value
);
12179 proto_tree_add_item(tree
, hf_pfcp_travelping_build_id
, tvb
, 0, -1, ENC_NA
);
12182 return tvb_reported_length(tvb
);
12186 dissect_pfcp_enterprise_travelping_now(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void *data _U_
)
12191 proto_tree_add_item_ret_time_string(tree
, hf_pfcp_travelping_now
, tvb
, 0, 8, ENC_TIME_NTP
| ENC_BIG_ENDIAN
, pinfo
->pool
, &time_str
);
12194 proto_item_append_text(proto_tree_get_parent(tree
), "%s", time_str
);
12200 dissect_pfcp_enterprise_travelping_start(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12205 proto_tree_add_item_ret_time_string(tree
, hf_pfcp_travelping_now
, tvb
, 0, 8, ENC_TIME_NTP
| ENC_BIG_ENDIAN
, pinfo
->pool
, &time_str
);
12208 proto_item_append_text(proto_tree_get_parent(tree
), "%s", time_str
);
12214 dissect_pfcp_enterprise_travelping_stop(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12219 proto_tree_add_item_ret_time_string(tree
, hf_pfcp_travelping_now
, tvb
, offset
, 8, ENC_TIME_NTP
| ENC_BIG_ENDIAN
, pinfo
->pool
, &time_str
);
12222 proto_item_append_text(proto_tree_get_parent(tree
), "%s", time_str
);
12228 dissect_pfcp_enterprise_travelping_error_message(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12230 /* Octet 7 to (n+4) Travelping Error Message */
12231 if (tvb_ascii_isprint(tvb
, 0, -1))
12233 const uint8_t* string_value
;
12234 proto_tree_add_item_ret_string(tree
, hf_pfcp_travelping_error_message_str
, tvb
, 0, -1, ENC_ASCII
| ENC_NA
, pinfo
->pool
, &string_value
);
12235 proto_item_append_text(proto_tree_get_parent(tree
), "%s", string_value
);
12239 proto_tree_add_item(tree
, hf_pfcp_travelping_error_message
, tvb
, 0, -1, ENC_NA
);
12242 return tvb_reported_length(tvb
);
12246 dissect_pfcp_enterprise_travelping_file_name(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12248 /* Octet 7 to (n+4) Travelping Error Message */
12249 if (tvb_ascii_isprint(tvb
, 0, -1))
12251 const uint8_t* string_value
;
12252 proto_tree_add_item_ret_string(tree
, hf_pfcp_travelping_file_name_str
, tvb
, 0, -1, ENC_ASCII
| ENC_NA
, pinfo
->pool
, &string_value
);
12253 proto_item_append_text(proto_tree_get_parent(tree
), "%s", string_value
);
12257 proto_tree_add_item(tree
, hf_pfcp_travelping_file_name
, tvb
, 0, -1, ENC_NA
);
12260 return tvb_reported_length(tvb
);
12264 dissect_pfcp_enterprise_travelping_line_number(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void *data _U_
)
12267 uint32_t line_number
;
12269 /* Octet 7 to 10 Travelping Line Number */
12270 proto_tree_add_item_ret_uint(tree
, hf_pfcp_travelping_line_number
, tvb
, offset
, 4, ENC_BIG_ENDIAN
, &line_number
);
12273 proto_item_append_text(proto_tree_get_parent(tree
), " : %u", line_number
);
12279 dissect_pfcp_enterprise_travelping_ipfix_policy(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12281 /* Octet 7 to (n+4) Travelping IPFIX Policy */
12282 if (tvb_ascii_isprint(tvb
, 0, -1))
12284 const uint8_t* string_value
;
12285 proto_tree_add_item_ret_string(tree
, hf_pfcp_travelping_ipfix_policy_str
, tvb
, 0, -1, ENC_ASCII
| ENC_NA
, pinfo
->pool
, &string_value
);
12286 proto_item_append_text(proto_tree_get_parent(tree
), "%s", string_value
);
12290 proto_tree_add_item(tree
, hf_pfcp_travelping_ipfix_policy
, tvb
, 0, -1, ENC_NA
);
12293 return tvb_reported_length(tvb
);
12297 dissect_pfcp_enterprise_travelping_trace_parent(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12299 /* Octet 7 to (n+4) Travelping Trace Parent */
12300 if (tvb_ascii_isprint(tvb
, 0, -1))
12302 const uint8_t* string_value
;
12303 proto_tree_add_item_ret_string(tree
, hf_pfcp_travelping_trace_parent_str
, tvb
, 0, -1, ENC_ASCII
| ENC_NA
, pinfo
->pool
, &string_value
);
12304 proto_item_append_text(proto_tree_get_parent(tree
), "%s", string_value
);
12308 proto_tree_add_item(tree
, hf_pfcp_travelping_trace_parent
, tvb
, 0, -1, ENC_NA
);
12311 return tvb_reported_length(tvb
);
12315 dissect_pfcp_enterprise_travelping_trace_state(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12317 /* Octet 7 to (n+4) Travelping Trace State */
12318 if (tvb_ascii_isprint(tvb
, 0, -1))
12320 const uint8_t* string_value
;
12321 proto_tree_add_item_ret_string(tree
, hf_pfcp_travelping_trace_state_str
, tvb
, 0, -1, ENC_ASCII
| ENC_NA
, pinfo
->pool
, &string_value
);
12322 proto_item_append_text(proto_tree_get_parent(tree
), "%s", string_value
);
12326 proto_tree_add_item(tree
, hf_pfcp_travelping_trace_state
, tvb
, 0, -1, ENC_NA
);
12329 return tvb_reported_length(tvb
);
12333 static pfcp_generic_ie_t pfcp_travelping_ies
[] = {
12334 { VENDOR_TRAVELPING
, 32769 , "Packet Measurement" , dissect_pfcp_enterprise_travelping_packet_measurement
, -1} ,
12335 { VENDOR_TRAVELPING
, 32770 , "Build Id" , dissect_pfcp_enterprise_travelping_build_id
, -1} ,
12336 { VENDOR_TRAVELPING
, 32771 , "Now" , dissect_pfcp_enterprise_travelping_now
, -1} ,
12337 { VENDOR_TRAVELPING
, 32772 , "Start" , dissect_pfcp_enterprise_travelping_start
, -1} ,
12338 { VENDOR_TRAVELPING
, 32773 , "Stop" , dissect_pfcp_enterprise_travelping_stop
, -1} ,
12339 { VENDOR_TRAVELPING
, 32774 , "Error Report" , dissect_pfcp_grouped_ie_wrapper
, -1} ,
12340 { VENDOR_TRAVELPING
, 32775 , "Error Message" , dissect_pfcp_enterprise_travelping_error_message
, -1} ,
12341 { VENDOR_TRAVELPING
, 32776 , "File Name" , dissect_pfcp_enterprise_travelping_file_name
, -1} ,
12342 { VENDOR_TRAVELPING
, 32777 , "Line Number" , dissect_pfcp_enterprise_travelping_line_number
, -1} ,
12343 { VENDOR_TRAVELPING
, 32778 , "Created NAT Binding" , dissect_pfcp_grouped_ie_wrapper
, -1} ,
12344 { VENDOR_TRAVELPING
, 32779 , "IPFIX Policy" , dissect_pfcp_enterprise_travelping_ipfix_policy
, -1} ,
12345 { VENDOR_TRAVELPING
, 32780 , "Trace Information" , dissect_pfcp_grouped_ie_wrapper
, -1} ,
12346 { VENDOR_TRAVELPING
, 32781 , "Trace Parent" , dissect_pfcp_enterprise_travelping_trace_parent
, -1} ,
12347 { VENDOR_TRAVELPING
, 32782 , "Trace State" , dissect_pfcp_enterprise_travelping_trace_state
, -1} ,
12350 /************************************ Nokia ***********************************/
12352 static int dissect_pfcp_nokia_sap_template(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12354 return dissect_pfcp_string_ie(tvb
, pinfo
, tree
, hf_pfcp_nokia_sap_template
);
12357 static int dissect_pfcp_nokia_group_if_template(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12359 return dissect_pfcp_string_ie(tvb
, pinfo
, tree
, hf_pfcp_nokia_group_iface_template
);
12362 static int dissect_pfcp_nokia_session_state_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void *data _U_
)
12366 proto_tree_add_item_ret_uint64(tree
, hf_pfcp_nokia_session_state_id
, tvb
, 0, 8, ENC_BIG_ENDIAN
, &value
);
12367 proto_item_append_text(proto_tree_get_parent(tree
), " : %" PRIu64
, value
);
12372 static const true_false_string tfs_nokia_detailed_stats_ie
= { "Egress", "Ingress" };
12373 static const true_false_string tfs_nokia_detailed_stats_qp
= { "Policer", "Queue" };
12374 static const val64_string nokia_detailed_stats_length_values
[] = {
12375 {0, "Not present"},
12382 static int dissect_pfcp_nokia_detailed_statistics(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12384 static const value_string ingress_queue_names
[] = {
12385 { 1, "HighPktsOffered"},
12386 { 2, "HighPktsDropped"},
12387 { 3, "LowPktsOffered"},
12388 { 4, "LowPktsDropped"},
12389 { 5, "HighOctetsOffered"},
12390 { 6, "HighOctetsDropped"},
12391 { 7, "LowOctetsOffered"},
12392 { 8, "LowOctetsDropped"},
12393 { 9, "UncolouredPktsOffered"},
12394 {10, "UncolouredOctetsOffered"},
12395 {11, "McastManagedPktsOffered"},
12396 {12, "McastManagedOctetsOffered"},
12397 {13, "InProfilePktsForwarded"},
12398 {14, "OutOfProfilePktsForwarded"},
12399 {15, "InProfileOctetsForwarded"},
12400 {16, "OutOfProfileOctetsForwarded"},
12403 static const value_string egress_queue_names
[] = {
12404 { 1, "InProfilePktsForwarded"},
12405 { 2, "InProfilePktsDropped"},
12406 { 3, "OutOfProfilePktsForwarded"},
12407 { 4, "OutOfProfilePktsDropped"},
12408 { 5, "InProfileOctetsForwarded"},
12409 { 6, "InProfileOctetsDropped"},
12410 { 7, "OutOfProfileOctetsForwarded"},
12411 { 8, "OutOfProfileOctetsDropped"},
12412 { 9, "ExceedProfilePktsForwarded"},
12413 {10, "ExceedProfilePktsDropped"},
12414 {11, "ExceedProfileOctetsForwarded"},
12415 {12, "ExceedProfileOctetsDropped"},
12418 static const value_string policer_names
[] = {
12419 { 1, "HighPktsOffered"},
12420 { 2, "HighPktsDropped"},
12421 { 3, "LowPktsOffered"},
12422 { 4, "LowPktsDropped"},
12423 { 5, "HighOctetsOffered"},
12424 { 6, "HighOctetsDropped"},
12425 { 7, "LowOctetsOffered"},
12426 { 8, "LowOctetsDropped"},
12427 { 9, "UncolouredPktsOffered"},
12428 {10, "UncolouredOctetsOffered"},
12429 {11, "InProfilePktsForwarded"},
12430 {12, "OutOfProfilePktsForwarded"},
12431 {13, "InProfileOctetsForwarded"},
12432 {14, "OutOfProfileOctetsForwarded"},
12433 {15, "ExceedProfilePktsOffered"},
12434 {16, "ExceedProfilePktsDropped"},
12435 {17, "ExceedProfilePktsForwarded"},
12436 {18, "ExceedProfileOctetsOffered"},
12437 {19, "ExceedProfileOctetsDropped"},
12438 {20, "ExceedProfileOctetsForwarded"},
12439 {21, "InPlusProfilePktsOffered"},
12440 {22, "InPlusProfilePktsDropped"},
12441 {23, "InPlusProfilePktsForwarded"},
12442 {24, "InPlusProfileOctetsOffered"},
12443 {25, "InPlusProfileOctetsDropped"},
12444 {26, "InPlusProfileOctetsForwarded"},
12449 static int * const key
[] = {
12450 &hf_pfcp_nokia_detailed_stats_key_direction
,
12451 &hf_pfcp_nokia_detailed_stats_key_type
,
12452 &hf_pfcp_nokia_detailed_stats_key_object_id
,
12453 &hf_pfcp_nokia_detailed_stats_key_stat_mode
,
12458 proto_tree_add_bitmask_with_flags_ret_uint64(
12459 tree
, tvb
, offset
, hf_pfcp_nokia_detailed_stats_key
,
12460 ett_pfcp_nokia_detailed_stats_key
, key
,
12461 ENC_BIG_ENDIAN
, 0, &flags
12463 const bool flags_egress
= !!(flags
& 0x80000000);
12464 const bool flags_policer
= !!(flags
& 0x40000000);
12467 proto_item
* bitmap_item
;
12468 proto_tree
* bitmap_tree
= proto_tree_add_subtree_format(tree
, tvb
, offset
, 8, ett_pfcp_nokia_detailed_stats_bitmap
, &bitmap_item
, "Counter info");
12469 uint64_t bitmap
= tvb_get_ntoh64(tvb
, offset
);
12470 const int bitmap_offset
= offset
;
12474 for (int i
= 0; bitmap
!= 0; bitmap
<<= 8, i
+= 4)
12476 uint8_t mappedbyte
= (bitmap
>> 56) & 0xff;
12477 if (mappedbyte
== 0) continue;
12479 for (int j
= 1; mappedbyte
!= 0; mappedbyte
>>= 2, j
++)
12481 const uint8_t bits
= mappedbyte
& 0x03;
12482 int counter_index
= i
+ j
;
12483 if (bits
== 0) continue;
12485 const value_string
* names
= flags_policer
? policer_names
: flags_egress
? egress_queue_names
: ingress_queue_names
;
12486 const char* counter_name
= val_to_str(counter_index
, names
, "Counter %u");
12488 const int bit_offset
= 8 * (bitmap_offset
+ i
/4 + 1) - 2 * j
;
12489 proto_item
* it
= proto_tree_add_bits_item(bitmap_tree
, hf_pfcp_nokia_detailed_stats_bitmap_item
, tvb
, bit_offset
, 2, ENC_BIG_ENDIAN
);
12490 proto_item_append_text(it
, " - %s (%u) ", counter_name
, counter_index
);
12493 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_encoding_error
, tvb
, bitmap_offset
, 8);
12497 const int len
= bits
== 1 ? 4 : 8;
12499 if (offset
> 0 && (unsigned) offset
+ len
> tvb_reported_length(tvb
))
12501 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_encoding_error
, tvb
, offset
, tvb_reported_length(tvb
) - offset
);
12506 it
= proto_tree_add_item_ret_uint64(tree
, hf_pfcp_nokia_detailed_stats_octets
, tvb
, offset
, len
, ENC_BIG_ENDIAN
, &octets
);
12507 proto_item_set_text(it
, "%s: %" PRIu64
, counter_name
, octets
);
12516 proto_item_append_text(bitmap_item
, " (empty)");
12519 proto_item_append_text(proto_tree_get_parent(tree
), " : %u %s %s counter%s (object %u mode %u)",
12520 num
, flags_egress
? "egress" : "ingress", flags_policer
? "policer" : "queue", num
== 1 ? "" : "s",
12521 (int) (flags
>> 16) & 0x3f, (int) flags
& 0x1f);
12526 static int dissect_pfcp_nokia_detailed_error(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12528 return dissect_pfcp_string_ie(tvb
, pinfo
, tree
, hf_pfcp_nokia_detailed_error
);
12531 static int dissect_pfcp_nokia_qos_override(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12533 return dissect_pfcp_string_ie(tvb
, pinfo
, tree
, hf_pfcp_nokia_qos_override
);
12536 static int dissect_pfcp_nokia_measurement_information(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void *data _U_
)
12538 static int * const flags
[] = {
12539 &hf_pfcp_spare_b7_b1
,
12540 &hf_pfcp_nokia_measurement_info_b0_det
,
12544 proto_tree_add_bitmask_with_flags(tree
, tvb
, 0, hf_pfcp_nokia_measurement_info
, ett_pfcp_nokia_measurement_info
, flags
, ENC_BIG_ENDIAN
, BMT_NO_FALSE
| BMT_NO_INT
);
12549 static int dissect_pfcp_nokia_pfpsmreq_flags(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void *data _U_
)
12551 static int * const flags
[] = {
12552 &hf_pfcp_spare_b7_b2
,
12553 &hf_pfcp_nokia_pfcpsmreq_flags_b1_audit
,
12554 &hf_pfcp_nokia_pfcpsmreq_flags_b0_abs
,
12558 proto_tree_add_bitmask_with_flags(tree
, tvb
, 0, hf_pfcp_nokia_pfcpsmreq_flags
, ett_pfcp_nokia_pfcpsmreq_flags
, flags
, ENC_BIG_ENDIAN
, BMT_NO_FALSE
| BMT_NO_INT
);
12563 static int dissect_pfcp_nokia_up_function_features(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void *data _U_
)
12565 static int * const pfcp_nokia_up_function_features_flags
[] = {
12566 &hf_pfcp_nokia_up_function_features_sssg
,
12567 &hf_pfcp_nokia_up_function_features_bulk_audit
,
12571 proto_tree_add_bitmask_list(tree
, tvb
, 0, 1, pfcp_nokia_up_function_features_flags
, ENC_BIG_ENDIAN
);
12576 static const value_string nokia_filter_override_type_vals
[] = {
12577 {0, "Ingress IPv4"},
12578 {1, "Egress IPv4"},
12579 {2, "Ingress IPv6"},
12580 {3, "Egress IPv6"},
12584 static int dissect_pfcp_nokia_filter_override(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12587 proto_tree_add_item_ret_uint(tree
, hf_pfcp_nokia_filter_override_type
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &type
);
12589 if (tvb_reported_length(tvb
) == 1)
12591 proto_item_append_text(proto_tree_get_parent(tree
), " : %s: <disable>", val_to_str_const(type
, nokia_filter_override_type_vals
, "Unknown"));
12595 proto_tree_add_item(tree
, hf_pfcp_nokia_filter_override_name
, tvb
, 1, tvb_reported_length(tvb
) - 1, ENC_ASCII
);
12597 proto_item_append_text(proto_tree_get_parent(tree
), " : %s: %s",
12598 val_to_str_const(type
, nokia_filter_override_type_vals
, "Unknown"),
12599 tvb_get_string_enc(pinfo
->pool
, tvb
, 1, tvb_reported_length(tvb
) - 1, ENC_ASCII
));
12602 return tvb_reported_length(tvb
);
12605 static int dissect_pfcp_nokia_intermediate_destination(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12607 return dissect_pfcp_string_ie(tvb
, pinfo
, tree
, hf_pfcp_nokia_intermediate_destination
);
12610 static int dissect_pfcp_nokia_nat_isa_members(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void *data _U_
)
12612 uint32_t num_members
;
12614 proto_tree_add_item_ret_uint(tree
, hf_pfcp_nokia_nat_isa_members
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &num_members
);
12615 proto_item_append_text(proto_tree_get_parent(tree
), " : %u", num_members
);
12620 static int dissect_pfcp_nokia_pfcphb_flags(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void *data _U_
)
12622 static int * const flags
[] = {
12623 &hf_pfcp_spare_b7_b3
,
12624 &hf_pfcp_nokia_pfcphb_flags_b2_aud_e
,
12625 &hf_pfcp_nokia_pfcphb_flags_b1_aud_s
,
12626 &hf_pfcp_nokia_pfcphb_flags_b0_aud_r
,
12630 proto_tree_add_bitmask_with_flags(tree
, tvb
, 0, hf_pfcp_nokia_pfcphb_flags
, ett_pfcp_nokia_pfcphb_flags
, flags
, ENC_BIG_ENDIAN
, BMT_NO_FALSE
| BMT_NO_INT
);
12635 static int dissect_pfcp_nokia_l2tp_lcp_options(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void *data _U_
)
12637 proto_tree_add_item(tree
, hf_pfcp_nokia_l2tp_lcp_request
, tvb
, 0, -1, ENC_NA
);
12639 return tvb_reported_length(tvb
);
12642 static const value_string nokia_l2tp_auth_type_vals
[] = {
12648 static int dissect_pfcp_nokia_l2tp_auth_type(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void *data _U_
)
12651 proto_tree_add_item_ret_uint(tree
, hf_pfcp_nokia_l2tp_auth_type
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &type
);
12652 proto_item_append_text(proto_tree_get_parent(tree
), " : %s", val_to_str_const(type
, nokia_l2tp_auth_type_vals
, "<Unknown>"));
12657 static int dissect_pfcp_nokia_l2tp_auth_name(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12659 return dissect_pfcp_string_ie(tvb
, pinfo
, tree
, hf_pfcp_nokia_l2tp_auth_name
);
12662 static int dissect_pfcp_nokia_l2tp_auth_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void *data _U_
)
12665 proto_tree_add_item_ret_uint(tree
, hf_pfcp_nokia_l2tp_auth_id
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &id
);
12666 proto_item_append_text(proto_tree_get_parent(tree
), " : %u", id
);
12671 static int dissect_pfcp_nokia_l2tp_auth_challenge(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void *data _U_
)
12673 proto_tree_add_item(tree
, hf_pfcp_nokia_l2tp_auth_challenge
, tvb
, 0, -1, ENC_NA
);
12675 return tvb_reported_length(tvb
);
12678 static int dissect_pfcp_nokia_l2tp_auth_response(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void *data _U_
)
12680 proto_tree_add_item(tree
, hf_pfcp_nokia_l2tp_auth_response
, tvb
, 0, -1, ENC_NA
);
12682 return tvb_reported_length(tvb
);
12685 static int dissect_pfcp_nokia_l2tp_endpoint(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12687 if (tvb_reported_length(tvb
) == 4)
12689 proto_tree_add_item(tree
, hf_pfcp_nokia_l2tp_tunnel_endpoint_ipv4_address
, tvb
, 0, 4, ENC_BIG_ENDIAN
);
12690 proto_item_append_text(proto_tree_get_parent(tree
), " : %s", tvb_ip_to_str(pinfo
->pool
, tvb
, 0));
12692 else if (tvb_reported_length(tvb
) == 16)
12694 proto_tree_add_item(tree
, hf_pfcp_nokia_l2tp_tunnel_endpoint_ipv6_address
, tvb
, 0, 16, ENC_NA
);
12695 proto_item_append_text(proto_tree_get_parent(tree
), " : %s", tvb_ip6_to_str(pinfo
->pool
, tvb
, 0));
12699 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_encoding_error
, tvb
, 0, -1);
12702 return tvb_reported_length(tvb
);
12705 static int dissect_pfcp_nokia_l2tp_client_auth_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12707 return dissect_pfcp_string_ie(tvb
, pinfo
, tree
, hf_pfcp_nokia_l2tp_client_auth_id
);
12710 static int dissect_pfcp_nokia_l2tp_server_auth_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12712 return dissect_pfcp_string_ie(tvb
, pinfo
, tree
, hf_pfcp_nokia_l2tp_server_auth_id
);
12715 static int dissect_pfcp_nokia_l2tp_password(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12717 return dissect_pfcp_string_ie(tvb
, pinfo
, tree
, hf_pfcp_nokia_l2tp_password
);
12720 static int dissect_pfcp_nokia_l2tp_assignment_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12722 return dissect_pfcp_string_ie(tvb
, pinfo
, tree
, hf_pfcp_nokia_l2tp_assignment_id
);
12725 static int dissect_pfcp_nokia_l2tp_private_group_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12727 return dissect_pfcp_string_ie(tvb
, pinfo
, tree
, hf_pfcp_nokia_l2tp_private_group_id
);
12730 static int dissect_pfcp_flags_and_fields(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, unsigned length
, int * const * flags
, int * const * fields
, int flags_hf
, int flags_ett
)
12732 unsigned offset
= 0;
12734 uint64_t flags_present
;
12735 proto_tree_add_bitmask_with_flags_ret_uint64(tree
, tvb
, offset
, flags_hf
, flags_ett
, flags
, ENC_BIG_ENDIAN
, BMT_NO_FALSE
| BMT_NO_INT
, &flags_present
);
12738 for (int i
= 0; flags
[i
] != NULL
; i
++)
12740 // is there a corresponding field?
12741 if (fields
[i
] == NULL
) continue;
12743 // is the flag enabled?
12744 header_field_info
* hf
= proto_registrar_get_nth(*flags
[i
]);
12745 if ((flags_present
& hf
->bitmask
) == 0) continue;
12747 // is the field actually there?
12748 if (offset
>= length
)
12750 proto_tree_add_expert(tree
, pinfo
, &ei_pfcp_ie_encoding_error
, tvb
, 0, length
);
12751 return tvb_reported_length(tvb
);
12754 // all is well, add the field
12755 hf
= proto_registrar_get_nth(*fields
[i
]);
12756 int len
= hf
->type
== FT_UINT8
? 1 :
12757 hf
->type
== FT_UINT24
? 3 :
12758 hf
->type
== FT_UINT32
? 4 : 0;
12759 proto_tree_add_item(tree
, *fields
[i
], tvb
, offset
, len
, ENC_NA
);
12766 static const value_string nokia_l2tp_params_algorithm_vals
[] = {
12767 {0, "Weighted Access"},
12768 {1, "Weighted Random"},
12769 {2, "Existing First"},
12773 static const value_string nokia_l2tp_params_avp_hiding_vals
[] = {
12775 {1, "Sensitive Only"},
12780 static const value_string nokia_l2tp_params_never_always
[] = {
12786 static const value_string nokia_l2tp_params_infinite
[] = {
12787 {0xffffff, "Infinite"},
12791 static int dissect_pfcp_nokia_l2tp_parameters(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12793 static int * const flags
[] = {
12794 &hf_pfcp_nokia_l2tp_params_flags_b24_algorithm
,
12795 &hf_pfcp_nokia_l2tp_params_flags_b25_avp_hiding
,
12796 &hf_pfcp_nokia_l2tp_params_flags_b26_challenge
,
12797 &hf_pfcp_nokia_l2tp_params_flags_b27_df_bit
,
12798 &hf_pfcp_nokia_l2tp_params_flags_b28_preference
,
12799 &hf_pfcp_nokia_l2tp_params_flags_b29_session_limit
,
12800 &hf_pfcp_nokia_l2tp_params_flags_b30_idle_timeout
,
12801 &hf_pfcp_nokia_l2tp_params_flags_b31_hello_interval
,
12802 &hf_pfcp_nokia_l2tp_params_flags_b16_destruct_timeout
,
12803 &hf_pfcp_nokia_l2tp_params_flags_b17_max_retries_estab
,
12804 &hf_pfcp_nokia_l2tp_params_flags_b18_max_retries_not_estab
,
12805 &hf_pfcp_nokia_l2tp_params_flags_b19_rx_window_size
,
12808 static int * const fields
[] = {
12809 &hf_pfcp_nokia_l2tp_params_algorithm
,
12810 &hf_pfcp_nokia_l2tp_params_avp_hiding
,
12811 &hf_pfcp_nokia_l2tp_params_challenge
,
12812 &hf_pfcp_nokia_l2tp_params_df_bit
,
12813 &hf_pfcp_nokia_l2tp_params_preference
,
12814 &hf_pfcp_nokia_l2tp_params_session_limit
,
12815 &hf_pfcp_nokia_l2tp_params_idle_timeout
,
12816 &hf_pfcp_nokia_l2tp_params_hello_interval
,
12817 &hf_pfcp_nokia_l2tp_params_destruct_timeout
,
12818 &hf_pfcp_nokia_l2tp_params_max_retries_estab
,
12819 &hf_pfcp_nokia_l2tp_params_max_retries_not_estab
,
12820 &hf_pfcp_nokia_l2tp_params_rx_window_size
,
12824 return dissect_pfcp_flags_and_fields(tvb
, pinfo
, tree
, tvb_reported_length(tvb
), flags
, fields
, hf_pfcp_nokia_l2tp_tunnel_params_flags
, ett_pfcp_nokia_l2tp_tunnel_params_flags
);
12827 static int dissect_pfcp_nokia_l2tp_ids(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void *data _U_
)
12829 uint32_t local_tunnel
, remote_tunnel
, local_session
, remote_session
, call_serial_number
;
12831 proto_tree_add_item_ret_uint(tree
, hf_pfcp_nokia_l2tp_local_tunnel_id
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &local_tunnel
);
12832 proto_tree_add_item_ret_uint(tree
, hf_pfcp_nokia_l2tp_remote_tunnel_id
, tvb
, 2, 2, ENC_BIG_ENDIAN
, &remote_tunnel
);
12833 proto_tree_add_item_ret_uint(tree
, hf_pfcp_nokia_l2tp_local_session_id
, tvb
, 4, 2, ENC_BIG_ENDIAN
, &local_session
);
12834 proto_tree_add_item_ret_uint(tree
, hf_pfcp_nokia_l2tp_remote_session_id
, tvb
, 6, 2, ENC_BIG_ENDIAN
, &remote_session
);
12835 proto_tree_add_item_ret_uint(tree
, hf_pfcp_nokia_l2tp_call_serial_num
, tvb
, 8, 4, ENC_BIG_ENDIAN
, &call_serial_number
);
12837 proto_item_append_text(proto_tree_get_parent(tree
), " : LTID %u LSID %u RTID %u RSID %u CSN %u", local_tunnel
, local_session
, remote_tunnel
, remote_session
, call_serial_number
);
12842 static int dissect_pfcp_nokia_snat_inside_ip(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12844 proto_tree_add_item(tree
, hf_pfcp_nokia_snat_inside_ipv4_address
, tvb
, 0, 4, ENC_BIG_ENDIAN
);
12845 proto_item_append_text(proto_tree_get_parent(tree
), " : %s", tvb_ip_to_str(pinfo
->pool
, tvb
, 0));
12850 static int dissect_pfcp_nokia_access_line_circuit_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void *data _U_
)
12852 proto_tree_add_item(tree
, hf_pfcp_nokia_access_line_circuit_id
, tvb
, 0, -1, ENC_NA
);
12854 return tvb_reported_length(tvb
);
12857 static int dissect_pfcp_nokia_access_line_remote_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void *data _U_
)
12859 proto_tree_add_item(tree
, hf_pfcp_nokia_access_line_remote_id
, tvb
, 0, -1, ENC_NA
);
12861 return tvb_reported_length(tvb
);
12864 static int dissect_pfcp_nokia_access_line_params(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12866 static int * const flags
[] = {
12867 &hf_pfcp_nokia_access_line_params_flags_b24_act_up
,
12868 &hf_pfcp_nokia_access_line_params_flags_b25_act_down
,
12869 &hf_pfcp_nokia_access_line_params_flags_b26_min_up
,
12870 &hf_pfcp_nokia_access_line_params_flags_b27_min_down
,
12871 &hf_pfcp_nokia_access_line_params_flags_b28_att_up
,
12872 &hf_pfcp_nokia_access_line_params_flags_b29_att_down
,
12873 &hf_pfcp_nokia_access_line_params_flags_b30_max_up
,
12874 &hf_pfcp_nokia_access_line_params_flags_b31_max_down
,
12875 &hf_pfcp_nokia_access_line_params_flags_b16_min_up_lp
,
12876 &hf_pfcp_nokia_access_line_params_flags_b17_min_down_lp
,
12877 &hf_pfcp_nokia_access_line_params_flags_b18_max_inter_delay_up
,
12878 &hf_pfcp_nokia_access_line_params_flags_b19_act_inter_delay_up
,
12879 &hf_pfcp_nokia_access_line_params_flags_b20_max_inter_delay_down
,
12880 &hf_pfcp_nokia_access_line_params_flags_b21_act_inter_delay_down
,
12881 &hf_pfcp_nokia_access_line_params_flags_b22_access_loop_encap
,
12882 &hf_pfcp_nokia_access_line_params_flags_b23_iw_session
,
12885 static int * const fields
[] = {
12886 &hf_pfcp_nokia_access_line_params_act_up
,
12887 &hf_pfcp_nokia_access_line_params_act_down
,
12888 &hf_pfcp_nokia_access_line_params_min_up
,
12889 &hf_pfcp_nokia_access_line_params_min_down
,
12890 &hf_pfcp_nokia_access_line_params_att_up
,
12891 &hf_pfcp_nokia_access_line_params_att_down
,
12892 &hf_pfcp_nokia_access_line_params_max_up
,
12893 &hf_pfcp_nokia_access_line_params_max_down
,
12894 &hf_pfcp_nokia_access_line_params_min_up_lp
,
12895 &hf_pfcp_nokia_access_line_params_min_down_lp
,
12896 &hf_pfcp_nokia_access_line_params_max_inter_delay_up
,
12897 &hf_pfcp_nokia_access_line_params_act_inter_delay_up
,
12898 &hf_pfcp_nokia_access_line_params_max_inter_delay_down
,
12899 &hf_pfcp_nokia_access_line_params_act_inter_delay_down
,
12900 &hf_pfcp_nokia_access_line_params_access_loop_encap
,
12904 return dissect_pfcp_flags_and_fields(tvb
, pinfo
, tree
, tvb_reported_length(tvb
), flags
, fields
, hf_pfcp_nokia_access_line_params_flags
, ett_pfcp_nokia_access_line_params_flags
);
12907 static int dissect_pfcp_nokia_acct_session_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12909 return dissect_pfcp_string_ie(tvb
, pinfo
, tree
, hf_pfcp_nokia_acct_session_id
);
12912 static int dissect_pfcp_nokia_fsg_template(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12914 return dissect_pfcp_string_ie(tvb
, pinfo
, tree
, hf_pfcp_nokia_fsg_template_name
);
12917 static int dissect_pfcp_nokia_up_profiles(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12919 return dissect_pfcp_string_ie(tvb
, pinfo
, tree
, hf_pfcp_nokia_up_profile
);
12922 static int dissect_pfcp_nokia_uli(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12924 return call_dissector(gtpv2_uli_handle
, tvb
, pinfo
, tree
);
12927 static int dissect_pfcp_nokia_default_qos_id(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_tree
*tree
, void *data _U_
)
12931 proto_tree_add_item_ret_uint(tree
, hf_pfcp_nokia_default_qos_id
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &id
);
12932 proto_item_append_text(proto_tree_get_parent(tree
), " : %u", id
);
12937 static int dissect_pfcp_nokia_serving_node_id(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12940 uint64_t serving_node_id_flags_val
;
12941 bool firstField
= true;
12943 static int * const pfcp_serving_node_id_flags
[] = {
12944 &hf_pfcp_spare_b7_b3
,
12945 &hf_pfcp_nokia_serving_node_id_flg_b2_uuid
,
12946 &hf_pfcp_nokia_serving_node_id_flg_b1_v6
,
12947 &hf_pfcp_nokia_serving_node_id_flg_b0_v4
,
12951 /* Octet 7 Spare Spare Spare Spare Spare UUID V6 V4 */
12952 proto_tree_add_bitmask_with_flags_ret_uint64(tree
, tvb
, offset
, hf_pfcp_nokia_serving_node_id_flags
,
12953 ett_pfcp_nokia_serving_node_id_flags
, pfcp_serving_node_id_flags
, ENC_BIG_ENDIAN
, BMT_NO_FALSE
| BMT_NO_INT
| BMT_NO_TFS
, &serving_node_id_flags_val
);
12956 /* The following flags are coded within Octet 5:
12957 * Bit 1 - V4: If this bit is set to "1", then the IPv4 address field shall be present,
12958 * otherwise the IPv4 address field shall not be present.
12959 * Bit 2 - V6: If this bit is set to "1", then the IPv6 address field shall be present,
12960 * otherwise the IPv6 address field shall not be present.
12961 * Bit 3 - UUID: If this bit is set to "1", then the UUID field shall be present,
12962 * otherwise the UUID field shall not be present.
12964 if (serving_node_id_flags_val
& 0x1) {
12965 /* 0 to 3 IPv4 address */
12966 proto_tree_add_item(tree
, hf_pfcp_nokia_serving_node_id_ipv4
, tvb
, offset
, 4, ENC_NA
);
12967 proto_item_append_text(proto_tree_get_parent(tree
), "%s IPv4 %s", firstField
? " :" : ",", tvb_ip_to_str(pinfo
->pool
, tvb
, offset
));
12968 firstField
= false;
12971 if (serving_node_id_flags_val
& 0x2) {
12972 /* m to (m+15) IPv6 address */
12973 proto_tree_add_item(tree
, hf_pfcp_nokia_serving_node_id_ipv6
, tvb
, offset
, 16, ENC_NA
);
12974 proto_item_append_text(proto_tree_get_parent(tree
), "%s IPv6 %s", firstField
? " :" : ",", tvb_ip6_to_str(pinfo
->pool
, tvb
, offset
));
12975 firstField
= false;
12978 if (serving_node_id_flags_val
& 0x4) {
12979 /* p to (p+15) UUID */
12982 proto_tree_add_item(tree
, hf_pfcp_nokia_serving_node_id_uuid
, tvb
, offset
, 16, ENC_NA
);
12983 tvb_get_guid(tvb
, offset
, &guid
, ENC_BIG_ENDIAN
);
12984 proto_item_append_text(proto_tree_get_parent(tree
), "%s UUID %s", firstField
? " :" : ",", guid_to_str(pinfo
->pool
, &guid
));
12991 static int dissect_pfcp_nokia_pcc_rule_name(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12993 return dissect_pfcp_string_ie(tvb
, pinfo
, tree
, hf_pfcp_nokia_pcc_rule_name
);
12996 static int dissect_pfcp_nokia_calltrace_profile(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
12998 return dissect_pfcp_string_ie(tvb
, pinfo
, tree
, hf_pfcp_nokia_calltrace_profile
);
13001 static int dissect_pfcp_nokia_custom_charging_group(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
13003 return dissect_pfcp_string_ie(tvb
, pinfo
, tree
, hf_pfcp_nokia_custom_charging_group
);
13006 static pfcp_generic_ie_t pfcp_nokia_ies
[] = {
13007 {VENDOR_NOKIA
, 32774, "UP Aggregate Route", dissect_pfcp_grouped_ie_wrapper
, -1},
13008 {VENDOR_NOKIA
, 32775, "SAP Template", dissect_pfcp_nokia_sap_template
, -1},
13009 {VENDOR_NOKIA
, 32776, "Group Interface Template", dissect_pfcp_nokia_group_if_template
, -1},
13010 {VENDOR_NOKIA
, 32777, "State Id", dissect_pfcp_nokia_session_state_id
, -1},
13011 {VENDOR_NOKIA
, 32778, "Detailed Statistics", dissect_pfcp_nokia_detailed_statistics
, -1},
13012 {VENDOR_NOKIA
, 32779, "Detailed Error", dissect_pfcp_nokia_detailed_error
, -1},
13013 {VENDOR_NOKIA
, 32780, "Qos Override", dissect_pfcp_nokia_qos_override
, -1},
13014 {VENDOR_NOKIA
, 32781, "Measurement Information", dissect_pfcp_nokia_measurement_information
, -1},
13015 {VENDOR_NOKIA
, 32783, "PFCPSMReq-Flags", dissect_pfcp_nokia_pfpsmreq_flags
, -1},
13016 {VENDOR_NOKIA
, 32787, "UP Function Features", dissect_pfcp_nokia_up_function_features
, -1},
13017 {VENDOR_NOKIA
, 32788, "Create Filter Override", dissect_pfcp_nokia_filter_override
, -1},
13018 {VENDOR_NOKIA
, 32789, "Delete Filter Override", dissect_pfcp_nokia_filter_override
, -1},
13019 {VENDOR_NOKIA
, 32790, "Intermediate Destination", dissect_pfcp_nokia_intermediate_destination
, -1},
13020 {VENDOR_NOKIA
, 32791, "NAT ISA Members", dissect_pfcp_nokia_nat_isa_members
, -1},
13021 {VENDOR_NOKIA
, 32797, "PFCPHB-Flags", dissect_pfcp_nokia_pfcphb_flags
, -1},
13022 {VENDOR_NOKIA
, 32800, "L2TP First Rx LCP Conf Request", dissect_pfcp_nokia_l2tp_lcp_options
, -1},
13023 {VENDOR_NOKIA
, 32801, "L2TP Last Tx LCP Conf Request", dissect_pfcp_nokia_l2tp_lcp_options
, -1},
13024 {VENDOR_NOKIA
, 32802, "L2TP Last Rx LCP Conf Request", dissect_pfcp_nokia_l2tp_lcp_options
, -1},
13025 {VENDOR_NOKIA
, 32803, "L2TP Auth Type", dissect_pfcp_nokia_l2tp_auth_type
, -1},
13026 {VENDOR_NOKIA
, 32804, "L2TP Auth Name", dissect_pfcp_nokia_l2tp_auth_name
, -1},
13027 {VENDOR_NOKIA
, 32805, "L2TP Auth Id", dissect_pfcp_nokia_l2tp_auth_id
, -1},
13028 {VENDOR_NOKIA
, 32806, "L2TP Auth Challenge", dissect_pfcp_nokia_l2tp_auth_challenge
, -1},
13029 {VENDOR_NOKIA
, 32807, "L2TP Auth Response", dissect_pfcp_nokia_l2tp_auth_response
, -1},
13030 {VENDOR_NOKIA
, 32808, "L2TP Tunnel", dissect_pfcp_grouped_ie_wrapper
, -1},
13031 {VENDOR_NOKIA
, 32809, "L2TP Client Endpoint", dissect_pfcp_nokia_l2tp_endpoint
, -1},
13032 {VENDOR_NOKIA
, 32810, "L2TP Server Endpoint", dissect_pfcp_nokia_l2tp_endpoint
, -1},
13033 {VENDOR_NOKIA
, 32811, "L2TP Client Auth Id", dissect_pfcp_nokia_l2tp_client_auth_id
, -1},
13034 {VENDOR_NOKIA
, 32812, "L2TP Server Auth Id", dissect_pfcp_nokia_l2tp_server_auth_id
, -1},
13035 {VENDOR_NOKIA
, 32813, "L2TP Password", dissect_pfcp_nokia_l2tp_password
, -1},
13036 {VENDOR_NOKIA
, 32814, "L2TP Assignment Id", dissect_pfcp_nokia_l2tp_assignment_id
, -1},
13037 {VENDOR_NOKIA
, 32815, "L2TP Private Group Id", dissect_pfcp_nokia_l2tp_private_group_id
, -1},
13038 {VENDOR_NOKIA
, 32816, "L2TP Parameters", dissect_pfcp_nokia_l2tp_parameters
, -1},
13039 {VENDOR_NOKIA
, 32817, "L2TP Ids", dissect_pfcp_nokia_l2tp_ids
, -1},
13040 {VENDOR_NOKIA
, 32819, "SNAT Inside IP", dissect_pfcp_nokia_snat_inside_ip
, -1},
13041 {VENDOR_NOKIA
, 32820, "Access Line Circuit Id", dissect_pfcp_nokia_access_line_circuit_id
, -1},
13042 {VENDOR_NOKIA
, 32821, "Access Line Remote Id", dissect_pfcp_nokia_access_line_remote_id
, -1},
13043 {VENDOR_NOKIA
, 32822, "Access Line Params", dissect_pfcp_nokia_access_line_params
, -1},
13044 {VENDOR_NOKIA
, 32823, "Accounting Session Id", dissect_pfcp_nokia_acct_session_id
, -1},
13045 {VENDOR_NOKIA
, 32830, "FSG Template", dissect_pfcp_nokia_fsg_template
, -1},
13046 {VENDOR_NOKIA
, 32832, "UP Profiles", dissect_pfcp_nokia_up_profiles
, -1},
13047 {VENDOR_NOKIA
, 32833, "User Location Information", dissect_pfcp_nokia_uli
, -1},
13048 {VENDOR_NOKIA
, 32834, "Default Qos Id", dissect_pfcp_nokia_default_qos_id
, -1},
13049 {VENDOR_NOKIA
, 32835, "Serving Node Id", dissect_pfcp_nokia_serving_node_id
, -1},
13050 {VENDOR_NOKIA
, 32836, "PCC Rule Name", dissect_pfcp_nokia_pcc_rule_name
, -1},
13051 {VENDOR_NOKIA
, 32837, "Calltrace Profile", dissect_pfcp_nokia_calltrace_profile
, -1},
13052 {VENDOR_NOKIA
, 32838, "Custom Charging Group", dissect_pfcp_nokia_custom_charging_group
, -1},
13058 pfcp_session_count
= 1;
13059 pfcp_session_table
= g_hash_table_new(g_direct_hash
, g_direct_equal
);
13060 pfcp_frame_map
= wmem_map_new(wmem_file_scope(), pfcp_info_hash
, pfcp_info_equal
);
13067 /* Free up state attached to the pfcp session structures */
13068 if (pfcp_session_table
!= NULL
) {
13069 g_hash_table_destroy(pfcp_session_table
);
13071 pfcp_session_table
= NULL
;
13075 proto_register_pfcp(void)
13078 static hf_register_info hf_pfcp
[] = {
13080 { &hf_pfcp_msg_type
,
13081 { "Message Type", "pfcp.msg_type",
13082 FT_UINT8
, BASE_DEC
| BASE_EXT_STRING
, &pfcp_message_type_ext
, 0x0,
13085 { &hf_pfcp_msg_length
,
13086 { "Length", "pfcp.length",
13087 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
13090 { &hf_pfcp_hdr_flags
,
13091 { "Flags", "pfcp.flags",
13092 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
13095 { &hf_pfcp_version
,
13096 { "Version", "pfcp.version",
13097 FT_UINT8
, BASE_DEC
, NULL
, 0xe0,
13100 { &hf_pfcp_fo_flag
,
13101 { "Follow On (FO)", "pfcp.fo_flag",
13102 FT_BOOLEAN
, 8, NULL
, 0x04,
13105 { &hf_pfcp_mp_flag
,
13106 { "Message Priority (MP)", "pfcp.mp_flag",
13107 FT_BOOLEAN
, 8, NULL
, 0x02,
13111 { "SEID (S)", "pfcp.s",
13112 FT_BOOLEAN
, 8, NULL
, 0x01,
13115 { &hf_pfcp_spare_b0
,
13116 { "Spare", "pfcp.spare_b0",
13117 FT_UINT8
, BASE_DEC
, NULL
, 0x01,
13120 { &hf_pfcp_spare_b1
,
13121 { "Spare", "pfcp.spare_b1",
13122 FT_UINT8
, BASE_DEC
, NULL
, 0x02,
13125 { &hf_pfcp_spare_b2
,
13126 { "Spare", "pfcp.spare_b2",
13127 FT_UINT8
, BASE_DEC
, NULL
, 0x04,
13130 { &hf_pfcp_spare_b3
,
13131 { "Spare", "pfcp.spare_b3",
13132 FT_UINT8
, BASE_DEC
, NULL
, 0x08,
13135 { &hf_pfcp_spare_b4
,
13136 { "Spare", "pfcp.spare_b4",
13137 FT_UINT8
, BASE_DEC
, NULL
, 0x10,
13140 { &hf_pfcp_spare_b5
,
13141 { "Spare", "pfcp.spare_b5",
13142 FT_UINT8
, BASE_DEC
, NULL
, 0x20,
13145 { &hf_pfcp_spare_b6
,
13146 { "Spare", "pfcp.spare_b6",
13147 FT_UINT8
, BASE_DEC
, NULL
, 0x40,
13150 { &hf_pfcp_spare_b7
,
13151 { "Spare", "pfcp.spare_b7",
13152 FT_UINT8
, BASE_DEC
, NULL
, 0x80,
13155 { &hf_pfcp_spare_b7_b6
,
13156 { "Spare", "pfcp.spare_b7_b6",
13157 FT_UINT8
, BASE_DEC
, NULL
, 0xc0,
13160 { &hf_pfcp_spare_b7_b5
,
13161 { "Spare", "pfcp.spare_b7_b5",
13162 FT_UINT8
, BASE_DEC
, NULL
, 0xe0,
13165 { &hf_pfcp_spare_b7_b4
,
13166 { "Spare", "pfcp.spare_b7_b4",
13167 FT_UINT8
, BASE_DEC
, NULL
, 0xf0,
13170 { &hf_pfcp_spare_b7_b3
,
13171 { "Spare", "pfcp.spare_b7_b3",
13172 FT_UINT8
, BASE_DEC
, NULL
, 0xf8,
13175 { &hf_pfcp_spare_b7_b2
,
13176 { "Spare", "pfcp.spare_b7_b2",
13177 FT_UINT8
, BASE_DEC
, NULL
, 0xfc,
13180 { &hf_pfcp_spare_b7_b1
,
13181 { "Spare", "pfcp.spare_b7_b1",
13182 FT_UINT8
, BASE_DEC
, NULL
, 0xfe,
13185 { &hf_pfcp_spare_oct
,
13186 { "Spare", "pfcp.spare_oct",
13187 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
13190 { &hf_pfcp_spare_h0
,
13191 { "Spare", "pfcp.spare_h0",
13192 FT_UINT8
, BASE_DEC
, NULL
, 0x0f,
13195 { &hf_pfcp_spare_h1
,
13196 { "Spare", "pfcp.spare_h1",
13197 FT_UINT8
, BASE_DEC
, NULL
, 0xf0,
13201 { "Spare", "pfcp.spare",
13202 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
13206 { "SEID", "pfcp.seid",
13207 FT_UINT64
, BASE_HEX
, NULL
, 0x0,
13211 { "Sequence Number", "pfcp.seqno",
13212 FT_UINT24
, BASE_DEC
, NULL
, 0x0,
13215 { &hf_pfcp_response_in
,
13216 { "Response In", "pfcp.response_in",
13217 FT_FRAMENUM
, BASE_NONE
, FRAMENUM_TYPE(FT_FRAMENUM_RESPONSE
), 0x0,
13218 "The response to this PFCP request is in this frame", HFILL
}
13220 { &hf_pfcp_response_to
,
13221 { "Response To", "pfcp.response_to",
13222 FT_FRAMENUM
, BASE_NONE
, FRAMENUM_TYPE(FT_FRAMENUM_RESPONSE
), 0x0,
13223 "This is a response to the PFCP request in this frame", HFILL
}
13225 { &hf_pfcp_response_time
,
13226 { "Response Time", "pfcp.response_time",
13227 FT_RELATIVE_TIME
, BASE_NONE
, NULL
, 0x0,
13228 "The time between the Request and the Response", HFILL
}
13230 { &hf_pfcp_session
,
13231 { "Session", "pfcp.session",
13232 FT_UINT32
, BASE_DEC
, NULL
, 0,
13236 { "Message Priority", "pfcp.mp",
13237 FT_UINT24
, BASE_DEC
, NULL
, 0xf0,
13240 { &hf_pfcp_enterprise_id
,
13241 { "Enterprise ID", "pfcp.enterprise_id",
13242 FT_UINT16
, BASE_ENTERPRISES
, STRINGS_ENTERPRISES
,
13243 0x0, NULL
, HFILL
} },
13244 { &hf_pfcp_enterprise_data
,
13245 { "Enterprise IE Data", "pfcp.enterprise_ie_data",
13246 FT_BYTES
, BASE_NONE
, NULL
, 0,
13250 { "IE Type", "pfcp.ie_type",
13251 FT_UINT16
, BASE_DEC
| BASE_EXT_STRING
, &pfcp_ie_type_ext
, 0x0,
13254 { &hf_pfcp2_enterprise_ie
,
13255 { "Enterprise specific IE Type", "pfcp.enterprise_ie",
13256 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
13259 { &hf_pfcp2_ie_len
,
13260 { "IE Length", "pfcp.ie_len",
13261 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
13264 { &hf_pfcp_recovery_time_stamp
,
13265 { "Recovery Time Stamp", "pfcp.recovery_time_stamp",
13266 FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_NTP_UTC
, NULL
, 0,
13270 { "Cause", "pfcp.cause",
13271 FT_UINT8
, BASE_DEC
, VALS(pfcp_cause_vals
), 0x0,
13274 { &hf_pfcp_node_id_type
,
13275 { "Address Type", "pfcp.node_id_type",
13276 FT_UINT8
, BASE_DEC
, VALS(pfcp_node_id_type_vals
), 0x0f,
13279 { &hf_pfcp_node_id_ipv4
,
13280 { "IPv4", "pfcp.node_id_ipv4",
13281 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
13284 { &hf_pfcp_node_id_ipv6
,
13285 { "IPv6", "pfcp.node_id_ipv6",
13286 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
13289 { &hf_pfcp_node_id_fqdn
,
13290 { "FQDN", "pfcp.node_id_fqdn",
13291 FT_STRING
, BASE_NONE
, NULL
, 0x0,
13295 { "V6 (IPv6)", "pfcp.f_seid_flags.v6",
13296 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
13300 { "V4 (IPv4)", "pfcp.f_seid_flags.v4",
13301 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
13304 { &hf_pfcp_f_seid_ipv4
,
13305 { "IPv4 address", "pfcp.f_seid.ipv4",
13306 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
13309 { &hf_pfcp_f_seid_ipv6
,
13310 { "IPv6 address", "pfcp.f_seid.ipv6",
13311 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
13315 { "Rule ID", "pfcp.pdr_id",
13316 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
13319 { &hf_pfcp_precedence
,
13320 { "Precedence", "pfcp.precedence",
13321 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
13324 { &hf_pfcp_source_interface
,
13325 { "Source Interface", "pfcp.source_interface",
13326 FT_UINT8
, BASE_DEC
, VALS(pfcp_source_interface_vals
), 0x0f,
13329 { &hf_pfcp_fteid_flg_spare
,
13330 { "Spare", "pfcp.fteid_flg.spare",
13331 FT_UINT8
, BASE_DEC
, NULL
, 0xf0,
13334 { &hf_pfcp_fteid_flg_b3_ch_id
,
13335 { "CHID (CHOOSE_ID)", "pfcp.f_teid_flags.ch_id",
13336 FT_BOOLEAN
, 8, NULL
, 0x08,
13339 { &hf_pfcp_fteid_flg_b2_ch
,
13340 { "CH (CHOOSE)", "pfcp.f_teid_flags.ch",
13341 FT_BOOLEAN
, 8, NULL
, 0x04,
13344 { &hf_pfcp_fteid_flg_b1_v6
,
13345 { "V6 (IPv6)", "pfcp.f_teid_flags.v6",
13346 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
13349 { &hf_pfcp_fteid_flg_b0_v4
,
13350 { "V4 (IPv4)", "pfcp.f_teid_flags.v4",
13351 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
13354 { &hf_pfcp_f_teid_ch_id
,
13355 { "Choose Id", "pfcp.f_teid.choose_id",
13356 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13359 { &hf_pfcp_f_teid_teid
,
13360 { "TEID", "pfcp.f_teid.teid",
13361 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
13364 { &hf_pfcp_f_teid_ipv4
,
13365 { "IPv4 address", "pfcp.f_teid.ipv4_addr",
13366 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
13369 { &hf_pfcp_f_teid_ipv6
,
13370 { "IPv6 address", "pfcp.f_teid.ipv6_addr",
13371 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
13374 { &hf_pfcp_network_instance
,
13375 { "Network Instance", "pfcp.network_instance",
13376 FT_STRING
, BASE_NONE
, NULL
, 0x0,
13379 { &hf_pfcp_pdn_type
,
13380 { "PDN Type", "pfcp.pdn_type",
13381 FT_UINT8
, BASE_DEC
, VALS(pfcp_pdn_type_vals
), 0x7,
13384 { &hf_pfcp_multiplier_value_digits
,
13385 { "Value Digits", "pfcp.multiplier.value_digits",
13386 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
13389 { &hf_pfcp_multiplier_exponent
,
13390 { "Exponent", "pfcp.multiplier.exponent",
13391 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
13394 { &hf_pfcp_failed_rule_id_type
,
13395 { "Failed Rule ID Type", "pfcp.failed_rule_id_type",
13396 FT_UINT8
, BASE_DEC
, VALS(pfcp_failed_rule_id_type_vals
), 0x7,
13399 { &hf_pfcp_time_quota_mechanism_bti_type
,
13400 { "Base Time Interval Type", "pfcp.time_quota_mechanism_bti_type",
13401 FT_UINT8
, BASE_DEC
, VALS(pfcp_time_quota_mechanism_bti_type_vals
), 0x3,
13404 { &hf_pfcp_time_quota_mechanism_bti
,
13405 { "Base Time Interval", "pfcp.time_quota_mechanism_bti",
13406 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
13409 { &hf_pfcp_ue_ip_address_flag_b0_v6
,
13410 { "V6 (IPv6)", "pfcp.ue_ip_address_flag.v6",
13411 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
13414 { &hf_pfcp_ue_ip_address_flag_b1_v4
,
13415 { "V4 (IPv4)", "pfcp.ue_ip_address_flag.v4",
13416 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
13419 { &hf_pfcp_ue_ip_address_flag_b2_sd
,
13420 { "S/D", "pfcp.ue_ip_address_flag.sd",
13421 FT_BOOLEAN
, 8, TFS(&pfcp_ue_ip_add_sd_flag_vals
), 0x04,
13424 { &hf_pfcp_ue_ip_address_flag_b3_v6d
,
13425 { "IPv6D", "pfcp.ue_ip_address_flag.v6d",
13426 FT_BOOLEAN
, 8, TFS(&pfcp_ue_ip_add_sd_flag_vals
), 0x08,
13429 { &hf_pfcp_ue_ip_address_flag_b4_chv4
,
13430 { "CHV4", "pfcp.ue_ip_address_flag.chv4",
13431 FT_BOOLEAN
, 8, TFS(&pfcp_ue_ip_add_sd_flag_vals
), 0x10,
13434 { &hf_pfcp_ue_ip_address_flag_b5_chv6
,
13435 { "CHV6", "pfcp.ue_ip_address_flag.chv6",
13436 FT_BOOLEAN
, 8, TFS(&pfcp_ue_ip_add_sd_flag_vals
), 0x20,
13439 { &hf_pfcp_ue_ip_address_flag_b6_v6pl
,
13440 { "IPV6PL", "pfcp.ue_ip_address_flag.v6pl",
13441 FT_BOOLEAN
, 8, TFS(&pfcp_ue_ip_add_sd_flag_vals
), 0x40,
13444 { &hf_pfcp_ue_ip_addr_ipv4
,
13445 { "IPv4 address", "pfcp.ue_ip_addr_ipv4",
13446 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
13449 { &hf_pfcp_ue_ip_add_ipv6
,
13450 { "IPv6 address", "pfcp.ue_ip_addr_ipv6",
13451 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
13454 { &hf_pfcp_ue_ip_add_ipv6_prefix_delegation_bits
,
13455 { "IPv6 Prefix Delegation Bits", "pfcp.ue_ip_addr_ipv6_prefix",
13456 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
13459 { &hf_pfcp_ue_ip_add_ipv6_prefix_length
,
13460 { "IPv6 Prefix Length", "pfcp.ue_ip_addr_ipv6_prefix_length",
13461 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
13464 { &hf_pfcp_application_id
,
13465 { "Application Identifier", "pfcp.application_id",
13466 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13469 { &hf_pfcp_application_id_str
,
13470 { "Application Identifier", "pfcp.application_id_str",
13471 FT_STRING
, BASE_NONE
, NULL
, 0x0,
13474 { &hf_pfcp_sdf_filter_flags_b0_fd
,
13475 { "FD (Flow Description)", "pfcp.sdf_filter.fd",
13476 FT_BOOLEAN
, 8, NULL
, 0x01,
13479 { &hf_pfcp_sdf_filter_flags_b1_ttc
,
13480 { "TTC (ToS Traffic Class)", "pfcp.sdf_filter.ttc",
13481 FT_BOOLEAN
, 8, NULL
, 0x02,
13484 { &hf_pfcp_sdf_filter_flags_b2_spi
,
13485 { "SPI (Security Parameter Index)", "pfcp.sdf_filter.spi",
13486 FT_BOOLEAN
, 8, NULL
, 0x04,
13489 { &hf_pfcp_sdf_filter_flags_b3_fl
,
13490 { "FL (Flow Label)", "pfcp.sdf_filter.fl",
13491 FT_BOOLEAN
, 8, NULL
, 0x08,
13494 { &hf_pfcp_sdf_filter_flags_b4_bid
,
13495 { "BID (Bidirectional SDF Filter)", "pfcp.sdf_filter.bid",
13496 FT_BOOLEAN
, 8, NULL
, 0x10,
13499 { &hf_pfcp_flow_desc_len
,
13500 { "Length of Flow Description", "pfcp.flow_desc_len",
13501 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
13504 { &hf_pfcp_flow_desc
,
13505 { "Flow Description", "pfcp.flow_desc",
13506 FT_STRING
, BASE_NONE
, NULL
, 0x0,
13509 { &hf_pfcp_traffic_class
,
13510 { "ToS Traffic Class", "pfcp.traffic_class",
13511 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
13514 { &hf_pfcp_traffic_mask
,
13515 { "Mask field", "pfcp.traffic_mask",
13516 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
13519 { &hf_pfcp_traffic_dscp
,
13520 {"DSCP", "pfcp.traffic_dscp",
13521 FT_STRING
, BASE_NONE
, NULL
, 0x0,
13525 { "Security Parameter Index", "pfcp.spi",
13526 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
13529 { &hf_pfcp_flow_label_spare_bit
,
13530 { "Spare bit", "pfcp.flow_label_spare_bit",
13531 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
13534 { &hf_pfcp_flow_label
,
13535 { "Flow Label", "pfcp.flow_label",
13536 FT_UINT24
, BASE_HEX
, NULL
, 0x0FFFFF,
13539 { &hf_pfcp_sdf_filter_id
,
13540 { "SDF Filter ID", "pfcp.sdf_filter_id",
13541 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
13545 { &hf_pfcp_out_hdr_desc
,
13546 { "Outer Header Removal Description", "pfcp.out_hdr_desc",
13547 FT_UINT8
, BASE_DEC
, VALS(pfcp_out_hdr_desc_vals
), 0x0,
13550 { &hf_pfcp_gtpu_ext_hdr_del_b0_pdu_sess_cont
,
13551 { "PDU Session Container to be deleted", "pfcp.gtpu_ext_hdr_del.pdu_sess_cont",
13552 FT_BOOLEAN
, 8, NULL
, 0x01,
13555 { &hf_pfcp_far_id_flg
,
13556 { "Allocation type", "pfcp.far_id_flg",
13557 FT_BOOLEAN
, 32, TFS(&pfcp_id_predef_dynamic_tfs
), 0x80000000,
13561 { "FAR ID", "pfcp.far_id",
13562 FT_UINT32
, BASE_DEC
, NULL
, 0x7fffffff,
13565 { &hf_pfcp_urr_id_flg
,
13566 { "Allocation type", "pfcp.urr_id_flg",
13567 FT_BOOLEAN
, 32, TFS(&pfcp_id_predef_dynamic_tfs
), 0x80000000,
13571 { "URR ID", "pfcp.urr_id",
13572 FT_UINT32
, BASE_DEC
, NULL
, 0x7fffffff,
13575 { &hf_pfcp_qer_id_flg
,
13576 { "Allocation type", "pfcp.qer_id_flg",
13577 FT_BOOLEAN
, 32, TFS(&pfcp_id_predef_dynamic_tfs
), 0x80000000,
13581 { "QER ID", "pfcp.qer_id",
13582 FT_UINT32
, BASE_DEC
, NULL
, 0x7fffffff,
13585 { &hf_pfcp_predef_rules_name
,
13586 { "Predefined Rules Name", "pfcp.predef_rules_name",
13587 FT_BYTES
, BASE_SHOW_ASCII_PRINTABLE
, NULL
, 0x0,
13590 { &hf_pfcp_apply_action_flags_o5_b0_drop
,
13591 { "DROP (Drop)", "pfcp.apply_action.drop",
13592 FT_BOOLEAN
, 8, NULL
, 0x01,
13595 { &hf_pfcp_apply_action_flags_o5_b1_forw
,
13596 { "FORW (Forward)", "pfcp.apply_action.forw",
13597 FT_BOOLEAN
, 8, NULL
, 0x02,
13600 { &hf_pfcp_apply_action_flags_o5_b2_buff
,
13601 { "BUFF (Buffer)", "pfcp.apply_action.buff",
13602 FT_BOOLEAN
, 8, NULL
, 0x04,
13605 { &hf_pfcp_apply_action_flags_o5_b3_nocp
,
13606 { "NOCP (Notify the CP function)", "pfcp.apply_action.nocp",
13607 FT_BOOLEAN
, 8, NULL
, 0x08,
13610 { &hf_pfcp_apply_action_flags_o5_b4_dupl
,
13611 { "DUPL (Duplicate)", "pfcp.apply_action.dupl",
13612 FT_BOOLEAN
, 8, NULL
, 0x10,
13615 { &hf_pfcp_apply_action_flags_o5_b5_ipma
,
13616 { "IPMA (IP Multicast Accept)", "pfcp.apply_action.ipma",
13617 FT_BOOLEAN
, 8, NULL
, 0x20,
13620 { &hf_pfcp_apply_action_flags_o5_b6_ipmd
,
13621 { "IPMD (IP Multicast Deny)", "pfcp.apply_action.ipmd",
13622 FT_BOOLEAN
, 8, NULL
, 0x40,
13625 { &hf_pfcp_apply_action_flags_o5_b7_dfrt
,
13626 { "DFRT (Duplicate for Redundant Transmission)", "pfcp.apply_action.dfrt",
13627 FT_BOOLEAN
, 8, NULL
, 0x80,
13630 { &hf_pfcp_apply_action_flags_o6_b0_edrt
,
13631 { "EDRT (Eliminate Duplicate Packets for Redundant Transmission)", "pfcp.apply_action.edrt",
13632 FT_BOOLEAN
, 8, NULL
, 0x01,
13635 { &hf_pfcp_apply_action_flags_o6_b1_bdpn
,
13636 { "BDPN (Buffered Downlink Packet Notification)", "pfcp.apply_action.bdpn",
13637 FT_BOOLEAN
, 8, NULL
, 0x02,
13640 { &hf_pfcp_apply_action_flags_o6_b2_ddpn
,
13641 { "DDPN (Discared Downlink Packet Notification)", "pfcp.apply_action.ddpn",
13642 FT_BOOLEAN
, 8, NULL
, 0x04,
13645 { &hf_pfcp_apply_action_flags_o6_b3_fssm
,
13646 { "FSSM (Forward packets to lower layer SSM)", "pfcp.apply_action.fssm",
13647 FT_BOOLEAN
, 8, NULL
, 0x08,
13650 { &hf_pfcp_apply_action_flags_o6_b4_mbsu
,
13651 { "MBSU (Forward and replicate MBS data using Unicast transport)", "pfcp.apply_action.mbsu",
13652 FT_BOOLEAN
, 8, NULL
, 0x10,
13657 { "BAR ID", "pfcp.bar_id",
13658 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
13661 { &hf_pfcp_fq_csid_node_id_type
,
13662 { "FQ-CSID Node-ID Type", "pfcp.fq_csid_node_id_type",
13663 FT_UINT8
, BASE_DEC
, VALS(pfcp_fq_csid_node_id_type_vals
), 0xf0,
13666 { &hf_pfcp_num_csid
,
13667 { "Number of CSID", "pfcp.num_csid",
13668 FT_UINT8
, BASE_DEC
, NULL
, 0x0f,
13671 { &hf_pfcp_fq_csid_node_id_ipv4
,
13672 { "Node-Address", "pfcp.q_csid_node_id.ipv4",
13673 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
13676 { &hf_pfcp_fq_csid_node_id_ipv6
,
13677 { "Node-Address", "pfcp.q_csid_node_id.ipv6",
13678 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
13681 { &hf_pfcp_fq_csid_node_id_mcc_mnc
,
13682 { "Node-Address MCC MNC", "pfcp.q_csid_node_id.mcc_mnc",
13683 FT_UINT32
, BASE_DEC
, NULL
, 0xfffff000,
13686 { &hf_pfcp_fq_csid_node_id_int
,
13687 { "Node-Address Number", "pfcp.q_csid_node_id.int",
13688 FT_UINT32
, BASE_DEC
, NULL
, 0x00000fff,
13691 { &hf_pfcp_fq_csid
,
13692 { "PDN Connection Set Identifier (CSID)", "pfcp.csid",
13693 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
13696 { &hf_pfcp_fq_csid_node_type
,
13697 { "Node Type", "pfcp.fq_csid_node_type",
13698 FT_UINT8
, BASE_DEC
, VALS(pfcp_fq_csid_node_type_vals
), 0x0f,
13701 { &hf_pfcp_measurement_period
,
13702 { "Measurement Period", "pfcp.measurement_period",
13703 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
13706 { &hf_pfcp_duration_measurement
,
13707 { "Duration", "pfcp.duration_measurement",
13708 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
13711 { &hf_pfcp_time_of_first_packet
,
13712 { "Time of First Packet", "pfcp.time_of_first_packet",
13713 FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_NTP_UTC
, NULL
, 0,
13716 { &hf_pfcp_time_of_last_packet
,
13717 { "Time of Last Packet", "pfcp.time_of_last_packet",
13718 FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_NTP_UTC
, NULL
, 0,
13721 { &hf_pfcp_dst_interface
,
13722 { "Interface", "pfcp.dst_interface",
13723 FT_UINT8
, BASE_DEC
, VALS(pfcp_dst_interface_vals
), 0x0f,
13726 { &hf_pfcp_redirect_address_type
,
13727 { "Redirect Address Type", "pfcp.redirect_address_type",
13728 FT_UINT8
, BASE_DEC
, VALS(pfcp_redirect_address_type_vals
), 0x0f,
13731 { &hf_pfcp_redirect_server_addr_len
,
13732 { "Redirect Server Address Length", "pfcp.redirect_server_addr_len",
13733 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
13736 { &hf_pfcp_redirect_server_address
,
13737 { "Redirect Server Address", "pfcp.redirect_server_address",
13738 FT_STRING
, BASE_NONE
, NULL
, 0x0,
13741 { &hf_pfcp_other_redirect_server_addr_len
,
13742 { "Other Redirect Server Address Length", "pfcp.other_redirect_server_addr_len",
13743 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
13746 { &hf_pfcp_other_redirect_server_address
,
13747 { "Other Redirect Server Address", "pfcp.other_redirect_server_address",
13748 FT_STRING
, BASE_NONE
, NULL
, 0x0,
13751 { &hf_pfcp_redirect_port
,
13752 { "Redirect Port", "pfcp.redirect_port",
13753 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
13756 { &hf_pfcp_outer_hdr_desc_o5_b0_gtp_udp_ipv4
,
13757 { "GTP-U/UDP/IPv4", "pfcp.pfcp_outer_hdr_desc.gtpu_udp_ipv4",
13758 FT_BOOLEAN
, 16, NULL
, 0x0100,
13761 { &hf_pfcp_outer_hdr_desc_o5_b1_gtp_udp_ipv6
,
13762 { "GTP-U/UDP/IPv6", "pfcp.pfcp_outer_hdr_desc.gtpu_udp_ipv6",
13763 FT_BOOLEAN
, 16, NULL
, 0x0200,
13766 { &hf_pfcp_outer_hdr_desc_o5_b2_udp_ipv4
,
13767 { "UDP/IPv4", "pfcp.pfcp_outer_hdr_desc.udp_ipv4",
13768 FT_BOOLEAN
, 16, NULL
, 0x0400,
13771 { &hf_pfcp_outer_hdr_desc_o5_b3_udp_ipv6
,
13772 { "UDP/IPv6", "pfcp.pfcp_outer_hdr_desc.udp_ipv6",
13773 FT_BOOLEAN
, 16, NULL
, 0x0800,
13776 { &hf_pfcp_outer_hdr_desc_o5_b4_ipv4
,
13777 { "IPv4", "pfcp.pfcp_outer_hdr_desc.ipv4",
13778 FT_BOOLEAN
, 16, NULL
, 0x1000,
13781 { &hf_pfcp_outer_hdr_desc_o5_b5_ipv6
,
13782 { "IPv6", "pfcp.pfcp_outer_hdr_desc.ipv6",
13783 FT_BOOLEAN
, 16, NULL
, 0x2000,
13786 { &hf_pfcp_outer_hdr_desc_o5_b6_ctag
,
13787 { "C-TAG", "pfcp.pfcp_outer_hdr_desc.ctag",
13788 FT_BOOLEAN
, 16, NULL
, 0x4000,
13791 { &hf_pfcp_outer_hdr_desc_o5_b7_stag
,
13792 { "S-TAG", "pfcp.pfcp_outer_hdr_desc.stag",
13793 FT_BOOLEAN
, 16, NULL
, 0x8000,
13796 { &hf_pfcp_outer_hdr_desc_o6_b0_n19
,
13797 { "N19 Indication", "pfcp.pfcp_outer_hdr_desc.n19",
13798 FT_BOOLEAN
, 16, NULL
, 0x0001,
13801 { &hf_pfcp_outer_hdr_desc_o6_b1_n6
,
13802 { "N6 Indication", "pfcp.pfcp_outer_hdr_desc.n6",
13803 FT_BOOLEAN
, 16, NULL
, 0x0002,
13806 { &hf_pfcp_outer_hdr_desc_o6_b2_ssm_cteid
,
13807 { "Low Layer SSM and C-TEID", "pfcp.pfcp_outer_hdr_desc.ssm_cteid",
13808 FT_BOOLEAN
, 16, NULL
, 0x0004,
13811 { &hf_pfcp_outer_hdr_desc_o6_spare
,
13812 { "Spare", "pfcp.pfcp_outer_hdr_desc.spare",
13813 FT_UINT16
, BASE_DEC
, NULL
, 0x00f8,
13816 { &hf_pfcp_outer_hdr_creation_teid
,
13817 { "TEID", "pfcp.outer_hdr_creation.teid",
13818 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
13821 { &hf_pfcp_outer_hdr_creation_ipv4
,
13822 { "IPv4 Address", "pfcp.outer_hdr_creation.ipv4",
13823 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
13826 { &hf_pfcp_outer_hdr_creation_ipv6
,
13827 { "IPv6 Address", "pfcp.outer_hdr_creation.ipv6",
13828 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
13831 { &hf_pfcp_outer_hdr_creation_port
,
13832 { "Port Number", "pfcp.outer_hdr_creation.port",
13833 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
13836 { &hf_pfcp_time_threshold
,
13837 { "Time Threshold", "pfcp.time_threshold",
13838 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
13841 { &hf_pfcp_forwarding_policy_id_len
,
13842 { "Forwarding Policy Identifier Length", "pfcp.forwarding_policy_id_len",
13843 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
13846 { &hf_pfcp_forwarding_policy_id
,
13847 { "Forwarding Policy Identifier", "pfcp.forwarding_policy_id",
13848 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
13851 { &hf_pfcp_measurement_method_flags_b0_durat
,
13852 { "DURAT (Duration)", "pfcp.measurement_method_flags.durat",
13853 FT_BOOLEAN
, 8, NULL
, 0x01,
13856 { &hf_pfcp_measurement_method_flags_b1_volume
,
13857 { "VOLUM (Volume)", "pfcp.measurement_method_flags.volume",
13858 FT_BOOLEAN
, 8, NULL
, 0x02,
13861 { &hf_pfcp_measurement_method_flags_b2_event
,
13862 { "EVENT (Event)", "pfcp.measurement_method_flags.event",
13863 FT_BOOLEAN
, 8, NULL
, 0x04,
13866 { &hf_pfcp_subsequent_time_threshold
,
13867 { "Subsequent Time Threshold", "pfcp.subsequent_time_threshold",
13868 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
13871 { &hf_pfcp_inactivity_detection_time
,
13872 { "Inactivity Detection Time", "pfcp.inactivity_detection_time",
13873 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
13876 { &hf_pfcp_monitoring_time
,
13877 { "Monitoring Time", "pfcp.monitoring_time",
13878 FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_NTP_UTC
, NULL
, 0,
13881 { &hf_pfcp_reporting_triggers_o5_b0_perio
,
13882 { "PERIO (Periodic Reporting)", "pfcp.reporting_triggers_flags.perio",
13883 FT_BOOLEAN
, 8, NULL
, 0x01,
13886 { &hf_pfcp_reporting_triggers_o5_b1_volth
,
13887 { "VOLTH (Volume Threshold)", "pfcp.reporting_triggers_flags.volth",
13888 FT_BOOLEAN
, 8, NULL
, 0x02,
13891 { &hf_pfcp_reporting_triggers_o5_b2_timth
,
13892 { "TIMTH (Time Threshold)", "pfcp.reporting_triggers_flags.timth",
13893 FT_BOOLEAN
, 8, NULL
, 0x04,
13896 { &hf_pfcp_reporting_triggers_o5_b3_quhti
,
13897 { "QUHTI (Quota Holding Time)", "pfcp.reporting_triggers_flags.quhti",
13898 FT_BOOLEAN
, 8, NULL
, 0x08,
13901 { &hf_pfcp_reporting_triggers_o5_b4_start
,
13902 { "START (Start of Traffic)", "pfcp.reporting_triggers_flags.start",
13903 FT_BOOLEAN
, 8, NULL
, 0x10,
13906 { &hf_pfcp_reporting_triggers_o5_b5_stopt
,
13907 { "STOPT (Stop of Traffic)", "pfcp.reporting_triggers_flags.stopt",
13908 FT_BOOLEAN
, 8, NULL
, 0x20,
13911 { &hf_pfcp_reporting_triggers_o5_b6_droth
,
13912 { "DROTH (Dropped DL Traffic Threshold)", "pfcp.reporting_triggers_flags.droth",
13913 FT_BOOLEAN
, 8, NULL
, 0x40,
13916 { &hf_pfcp_reporting_triggers_o5_b7_liusa
,
13917 { "LIUSA (Linked Usage Reporting)", "pfcp.reporting_triggers_flags.liusa",
13918 FT_BOOLEAN
, 8, NULL
, 0x80,
13921 { &hf_pfcp_reporting_triggers_o6_b0_volqu
,
13922 { "VOLQU (Volume Quota)", "pfcp.reporting_triggers_flags.volqu",
13923 FT_BOOLEAN
, 8, NULL
, 0x01,
13926 { &hf_pfcp_reporting_triggers_o6_b1_timqu
,
13927 { "TIMQU (Time Quota)", "pfcp.reporting_triggers_flags.timqu",
13928 FT_BOOLEAN
, 8, NULL
, 0x02,
13931 { &hf_pfcp_reporting_triggers_o6_b2_envcl
,
13932 { "ENVCL (Envelope Closure)", "pfcp.reporting_triggers_flags.envcl",
13933 FT_BOOLEAN
, 8, NULL
, 0x04,
13936 { &hf_pfcp_reporting_triggers_o6_b3_macar
,
13937 { "MACAR (MAC Addresses Reporting)", "pfcp.reporting_triggers_flags.macar",
13938 FT_BOOLEAN
, 8, NULL
, 0x08,
13941 { &hf_pfcp_reporting_triggers_o6_b4_eveth
,
13942 { "EVETH (Event Threshold)", "pfcp.reporting_triggers_flags.eveth",
13943 FT_BOOLEAN
, 8, NULL
, 0x10,
13946 { &hf_pfcp_reporting_triggers_o6_b5_evequ
,
13947 { "EVEQU (Event Quota)", "pfcp.reporting_triggers_flags.evequ",
13948 FT_BOOLEAN
, 8, NULL
, 0x20,
13951 { &hf_pfcp_reporting_triggers_o6_b6_ipmjl
,
13952 { "IPMJL (IP Multicast Join/Leave)", "pfcp.reporting_triggers_flags.ipmjl",
13953 FT_BOOLEAN
, 8, NULL
, 0x40,
13956 { &hf_pfcp_reporting_triggers_o6_b7_quvti
,
13957 { "QUVTI (Quota Validity Time)", "pfcp.reporting_triggers_flags.quvti",
13958 FT_BOOLEAN
, 8, NULL
, 0x80,
13961 { &hf_pfcp_reporting_triggers_o7_b0_reemr
,
13962 { "REEMR (REport the End Marker Reception)", "pfcp.reporting_triggers_flags.reemr",
13963 FT_BOOLEAN
, 8, NULL
, 0x01,
13966 { &hf_pfcp_reporting_triggers_o7_b1_upint
,
13967 { "UPINT (User Plane Inactivity Timer)", "pfcp.reporting_triggers_flags.upint",
13968 FT_BOOLEAN
, 8, NULL
, 0x02,
13971 { &hf_pfcp_usage_report_trigger_o7_b0_evequ
,
13972 { "EVEQU (Event Quota)", "pfcp.usage_report_trigger_flags.evequ",
13973 FT_BOOLEAN
, 8, NULL
, 0x01,
13976 { &hf_pfcp_usage_report_trigger_o7_b1_tebur
,
13977 { "TEBUR (Termination By UP function Report)", "pfcp.usage_report_trigger_flags.tebur",
13978 FT_BOOLEAN
, 8, NULL
, 0x02,
13981 { &hf_pfcp_usage_report_trigger_o7_b2_ipmjl
,
13982 { "IPMJL (IP Multicast Join/Leave)", "pfcp.usage_report_trigger_flags.ipmjl",
13983 FT_BOOLEAN
, 8, NULL
, 0x04,
13986 { &hf_pfcp_usage_report_trigger_o7_b3_quvti
,
13987 { "QUVTI (Quota Validity Time)", "pfcp.usage_report_trigger_flags.quvti",
13988 FT_BOOLEAN
, 8, NULL
, 0x08,
13991 { &hf_pfcp_usage_report_trigger_o7_b4_emrre
,
13992 { "EMRRE (End Marker Reception REport)", "pfcp.usage_report_trigger_flags.emrre",
13993 FT_BOOLEAN
, 8, NULL
, 0x10,
13996 { &hf_pfcp_usage_report_trigger_o7_b5_upint
,
13997 { "UPINT (User Plane Inactivity Timer)", "pfcp.usage_report_trigger_flags.upint",
13998 FT_BOOLEAN
, 8, NULL
, 0x20,
14001 { &hf_pfcp_usage_report_trigger_o6_b0_volqu
,
14002 { "VOLQU (Volume Quota)", "pfcp.usage_report_trigger_flags.volqu",
14003 FT_BOOLEAN
, 8, NULL
, 0x01,
14006 { &hf_pfcp_usage_report_trigger_o6_b1_timqu
,
14007 { "TIMQU (Time Quota)", "pfcp.usage_report_trigger_flags.timqu",
14008 FT_BOOLEAN
, 8, NULL
, 0x02,
14011 { &hf_pfcp_usage_report_trigger_o6_b2_liusa
,
14012 { "LIUSA (Linked Usage Reporting)", "pfcp.usage_report_trigger_flags.liusa",
14013 FT_BOOLEAN
, 8, NULL
, 0x04,
14016 { &hf_pfcp_usage_report_trigger_o6_b3_termr
,
14017 { "TERMR (Termination Report)", "pfcp.usage_report_trigger.term",
14018 FT_BOOLEAN
, 8, NULL
, 0x08,
14021 { &hf_pfcp_usage_report_trigger_o6_b4_monit
,
14022 { "MONIT (Monitoring Time)", "pfcp.usage_report_trigger.monit",
14023 FT_BOOLEAN
, 8, NULL
, 0x10,
14026 { &hf_pfcp_usage_report_trigger_o6_b5_envcl
,
14027 { "ENVCL (Envelope Closure)", "pfcp.usage_report_trigger_flags.envcl",
14028 FT_BOOLEAN
, 8, NULL
, 0x20,
14031 { &hf_pfcp_usage_report_trigger_o6_b7_eveth
,
14032 { "EVETH (Event Threshold)", "pfcp.usage_report_trigger_flags.eveth",
14033 FT_BOOLEAN
, 8, NULL
, 0x80,
14036 { &hf_pfcp_usage_report_trigger_o6_b6_macar
,
14037 { "MACAR (MAC Addresses Reporting)", "pfcp.usage_report_trigger_flags.macar",
14038 FT_BOOLEAN
, 8, NULL
, 0x40,
14041 { &hf_pfcp_usage_report_trigger_o5_b0_perio
,
14042 { "PERIO (Periodic Reporting)", "pfcp.usage_report_trigger_flags.perio",
14043 FT_BOOLEAN
, 8, NULL
, 0x01,
14046 { &hf_pfcp_usage_report_trigger_o5_b1_volth
,
14047 { "VOLTH (Volume Threshold)", "pfcp.usage_report_trigger_flags.volth",
14048 FT_BOOLEAN
, 8, NULL
, 0x02,
14051 { &hf_pfcp_usage_report_trigger_o5_b2_timth
,
14052 { "TIMTH (Time Threshold)", "pfcp.usage_report_trigger_flags.timth",
14053 FT_BOOLEAN
, 8, NULL
, 0x04,
14056 { &hf_pfcp_usage_report_trigger_o5_b3_quhti
,
14057 { "QUHTI (Quota Holding Time)", "pfcp.usage_report_trigger_flags.quhti",
14058 FT_BOOLEAN
, 8, NULL
, 0x08,
14061 { &hf_pfcp_usage_report_trigger_o5_b4_start
,
14062 { "START (Start of Traffic)", "pfcp.usage_report_trigger_flags.start",
14063 FT_BOOLEAN
, 8, NULL
, 0x10,
14066 { &hf_pfcp_usage_report_trigger_o5_b5_stopt
,
14067 { "STOPT (Stop of Traffic)", "pfcp.usage_report_trigger_flags.stopt",
14068 FT_BOOLEAN
, 8, NULL
, 0x20,
14071 { &hf_pfcp_usage_report_trigger_o5_b6_droth
,
14072 { "DROTH (Dropped DL Traffic Threshold)", "pfcp.usage_report_trigger_flags.droth",
14073 FT_BOOLEAN
, 8, NULL
, 0x40,
14076 { &hf_pfcp_usage_report_trigger_o5_b7_immer
,
14077 { "IMMER (Immediate Report)", "pfcp.usage_report_trigger.immer",
14078 FT_BOOLEAN
, 8, NULL
, 0x80,
14082 { &hf_pfcp_volume_threshold_b0_tovol
,
14083 { "TOVOL", "pfcp.volume_threshold_flags.tovol",
14084 FT_BOOLEAN
, 8, NULL
, 0x01,
14087 { &hf_pfcp_volume_threshold_b1_ulvol
,
14088 { "ULVOL", "pfcp.volume_threshold_flags.ulvol",
14089 FT_BOOLEAN
, 8, NULL
, 0x02,
14092 { &hf_pfcp_volume_threshold_b2_dlvol
,
14093 { "DLVOL", "pfcp.volume_threshold_flags.dlvol",
14094 FT_BOOLEAN
, 8, NULL
, 0x04,
14097 { &hf_pfcp_volume_threshold_tovol
,
14098 { "Total Volume", "pfcp.volume_threshold.tovol",
14099 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
14102 { &hf_pfcp_volume_threshold_ulvol
,
14103 { "Uplink Volume", "pfcp.volume_threshold.ulvol",
14104 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
14107 { &hf_pfcp_volume_threshold_dlvol
,
14108 { "Downlink Volume", "pfcp.volume_threshold.dlvol",
14109 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
14112 { &hf_pfcp_volume_quota_b0_tovol
,
14113 { "TOVOL", "pfcp.volume_quota_flags.tovol",
14114 FT_BOOLEAN
, 8, NULL
, 0x01,
14117 { &hf_pfcp_volume_quota_b1_ulvol
,
14118 { "ULVOL", "pfcp.volume_quota_flags.ulvol",
14119 FT_BOOLEAN
, 8, NULL
, 0x02,
14122 { &hf_pfcp_volume_quota_b2_dlvol
,
14123 { "DLVOL", "pfcp.volume_quota_flags.dlvol",
14124 FT_BOOLEAN
, 8, NULL
, 0x04,
14127 { &hf_pfcp_volume_quota_tovol
,
14128 { "Total Volume", "pfcp.volume_quota.tovol",
14129 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
14132 { &hf_pfcp_volume_quota_ulvol
,
14133 { "Uplink Volume", "pfcp.volume_quota.ulvol",
14134 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
14137 { &hf_pfcp_volume_quota_dlvol
,
14138 { "Downlink Volume", "pfcp.volume_quota.dlvol",
14139 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
14142 { &hf_pfcp_subseq_volume_threshold_b0_tovol
,
14143 { "TOVOL", "pfcp.subseq_volume_threshold.tovol_flg",
14144 FT_BOOLEAN
, 8, NULL
, 0x01,
14147 { &hf_pfcp_subseq_volume_threshold_b1_ulvol
,
14148 { "ULVOL", "pfcp.subseq_volume_threshold.ulvol_flg",
14149 FT_BOOLEAN
, 8, NULL
, 0x02,
14152 { &hf_pfcp_subseq_volume_threshold_b2_dlvol
,
14153 { "DLVOL", "pfcp.subseq_volume_threshold.dlvol_flg",
14154 FT_BOOLEAN
, 8, NULL
, 0x04,
14157 { &hf_pfcp_subseq_volume_threshold_tovol
,
14158 { "Total Volume", "pfcp.subseq_volume_threshold.tovol",
14159 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
14162 { &hf_pfcp_subseq_volume_threshold_ulvol
,
14163 { "Uplink Volume", "pfcp.subseq_volume_threshold.ulvol",
14164 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
14167 { &hf_pfcp_subseq_volume_threshold_dlvol
,
14168 { "Downlink Volume", "pfcp.subseq_volume_threshold.dlvol",
14169 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
14172 { &hf_pfcp_time_quota
,
14173 { "Time Quota", "pfcp.time_quota",
14174 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
14177 { &hf_pfcp_start_time
,
14178 { "Start Time", "pfcp.start_time",
14179 FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_NTP_UTC
, NULL
, 0,
14182 { &hf_pfcp_end_time
,
14183 { "End Time", "pfcp.end_time",
14184 FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_NTP_UTC
, NULL
, 0,
14187 { &hf_pfcp_quota_holding_time
,
14188 { "Quota Holding Time", "pfcp.quota_holding_time",
14189 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
14192 { &hf_pfcp_dropped_dl_traffic_threshold_b0_dlpa
,
14193 { "DLPA", "pfcp.dropped_dl_traffic_threshold.dlpa_flg",
14194 FT_BOOLEAN
, 8, NULL
, 0x01,
14197 { &hf_pfcp_dropped_dl_traffic_threshold_b1_dlby
,
14198 { "DLBY", "pfcp.dropped_dl_traffic_threshold.dlby_flg",
14199 FT_BOOLEAN
, 8, NULL
, 0x02,
14202 { &hf_pfcp_downlink_packets
,
14203 { "Downlink Packets", "pfcp.downlink_packets",
14204 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
14207 { &hf_pfcp_bytes_downlink_data
,
14208 { "Bytes of Downlink Data", "pfcp.bytes_downlink_data",
14209 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
14212 { &hf_pfcp_qer_correlation_id
,
14213 { "QER Correlation ID", "pfcp.qer_correlation_id",
14214 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
14217 { &hf_pfcp_gate_status_b0b1_dlgate
,
14218 { "DL Gate", "pfcp.gate_status.dlgate",
14219 FT_UINT8
, BASE_DEC
, VALS(pfcp_gate_status_vals
), 0x03,
14222 { &hf_pfcp_gate_status_b3b2_ulgate
,
14223 { "UL Gate", "pfcp.gate_status.ulgate",
14224 FT_UINT8
, BASE_DEC
, VALS(pfcp_gate_status_vals
), 0x0c,
14228 { "UL MBR", "pfcp.ul_mbr",
14229 FT_UINT40
, BASE_DEC
, NULL
, 0x0,
14233 { "DL MBR", "pfcp.dl_mbr",
14234 FT_UINT40
, BASE_DEC
, NULL
, 0x0,
14238 { "UL GBR", "pfcp.ul_gbr",
14239 FT_UINT40
, BASE_DEC
, NULL
, 0x0,
14243 { "DL GBR", "pfcp.dl_gbr",
14244 FT_UINT40
, BASE_DEC
, NULL
, 0x0,
14247 { &hf_pfcp_report_type_b6_uisr
,
14248 { "UISR (UP Initiated Session Request)", "pfcp.report_type.uisr",
14249 FT_BOOLEAN
, 8, NULL
, 0x40,
14252 { &hf_pfcp_report_type_b5_sesr
,
14253 { "SESR (Session Report)", "pfcp.report_type.sesr",
14254 FT_BOOLEAN
, 8, NULL
, 0x20,
14257 { &hf_pfcp_report_type_b4_tmir
,
14258 { "TMIR (TSC Management Information Report)", "pfcp.report_type.tmir",
14259 FT_BOOLEAN
, 8, NULL
, 0x10,
14262 { &hf_pfcp_report_type_b3_upir
,
14263 { "UPIR (User Plane Inactivity Report)", "pfcp.report_type.upir",
14264 FT_BOOLEAN
, 8, NULL
, 0x08,
14267 { &hf_pfcp_report_type_b2_erir
,
14268 { "ERIR (Error Indication Report)", "pfcp.report_type.erir",
14269 FT_BOOLEAN
, 8, NULL
, 0x04,
14272 { &hf_pfcp_report_type_b1_usar
,
14273 { "USAR (Usage Report)", "pfcp.report_type.usar",
14274 FT_BOOLEAN
, 8, NULL
, 0x02,
14277 { &hf_pfcp_report_type_b0_dldr
,
14278 { "DLDR (Downlink Data Report)", "pfcp.report_type.dldr",
14279 FT_BOOLEAN
, 8, NULL
, 0x01,
14282 { &hf_pfcp_offending_ie
,
14283 { "Type of the offending IE", "pfcp.offending_ie",
14284 FT_UINT16
, BASE_DEC
| BASE_EXT_STRING
, &pfcp_ie_type_ext
, 0x0,
14287 { &hf_pfcp_offending_ie_value
,
14288 { "Value of the offending IE", "pfcp.offending_ie_value",
14289 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
14293 { &hf_pfcp_up_function_features_o5_b0_bucp
,
14294 { "BUCP", "pfcp.up_function_features.bucp",
14295 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x01,
14296 "Downlink Data Buffering in CP function", HFILL
}
14298 { &hf_pfcp_up_function_features_o5_b1_ddnd
,
14299 { "DDND", "pfcp.up_function_features.ddnd",
14300 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x02,
14301 "Buffering parameter 'Downlink Data Notification Delay", HFILL
}
14303 { &hf_pfcp_up_function_features_o5_b2_dlbd
,
14304 { "DLBD", "pfcp.up_function_features.dlbd",
14305 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x04,
14308 { &hf_pfcp_up_function_features_o5_b3_trst
,
14309 { "TRST", "pfcp.up_function_features.trst",
14310 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x08,
14311 "Traffic Steering", HFILL
}
14313 { &hf_pfcp_up_function_features_o5_b4_ftup
,
14314 { "FTUP", "pfcp.up_function_features.ftup",
14315 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x10,
14316 "F-TEID allocation / release in the UP function", HFILL
}
14318 { &hf_pfcp_up_function_features_o5_b5_pfdm
,
14319 { "PFDM", "pfcp.up_function_features.pfdm",
14320 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x20,
14321 "PFD Management procedure", HFILL
}
14323 { &hf_pfcp_up_function_features_o5_b6_heeu
,
14324 { "HEEU", "pfcp.up_function_features.heeu",
14325 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x40,
14326 "Header Enrichment of Uplink traffic", HFILL
}
14328 { &hf_pfcp_up_function_features_o5_b7_treu
,
14329 { "TREU", "pfcp.up_function_features.treu",
14330 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x80,
14331 "Traffic Redirection Enforcement in the UP function", HFILL
}
14333 { &hf_pfcp_up_function_features_o6_b0_empu
,
14334 { "EMPU", "pfcp.up_function_features.empu",
14335 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x01,
14336 "Sending of End Marker packets", HFILL
}
14338 { &hf_pfcp_up_function_features_o6_b1_pdiu
,
14339 { "PDIU", "pfcp.up_function_features.pdiu",
14340 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x02,
14341 "Support of PDI optimised signalling", HFILL
}
14343 { &hf_pfcp_up_function_features_o6_b2_udbc
,
14344 { "UDBC", "pfcp.up_function_features.udbc",
14345 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x04,
14346 "Support of UL/DL Buffering Control", HFILL
}
14348 { &hf_pfcp_up_function_features_o6_b3_quoac
,
14349 { "QUOAC", "pfcp.up_function_features.quoac",
14350 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x08,
14351 "The UP function supports being provisioned with the Quota Action to apply when reaching quotas", HFILL
}
14353 { &hf_pfcp_up_function_features_o6_b4_trace
,
14354 { "TRACE", "pfcp.up_function_features.trace",
14355 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x10,
14356 "The UP function supports Trace", HFILL
}
14358 { &hf_pfcp_up_function_features_o6_b5_frrt
,
14359 { "FRRT", "pfcp.up_function_features.frrt",
14360 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x20,
14361 "The UP function supports Framed Routing", HFILL
}
14363 { &hf_pfcp_up_function_features_o6_b6_pfde
,
14364 { "PFDE", "pfcp.up_function_features.pfde",
14365 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x40,
14366 "The UP function supports a PFD Contents including a property with multiple values", HFILL
}
14368 { &hf_pfcp_up_function_features_o6_b7_epfar
,
14369 { "EPFAR", "pfcp.up_function_features.epfar",
14370 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x80,
14371 "The UP function supports the Enhanced PFCP Association Release feature", HFILL
}
14373 { &hf_pfcp_up_function_features_o7_b0_dpdra
,
14374 { "DPDRA", "pfcp.up_function_features.dpdra",
14375 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x01,
14376 "The UP function supports Deferred PDR Activation or Deactivation", HFILL
}
14378 { &hf_pfcp_up_function_features_o7_b1_adpdp
,
14379 { "ADPDP", "pfcp.up_function_features.adpdp",
14380 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x02,
14381 "The UP function supports the Activation and Deactivation of Pre-defined PDRs", HFILL
}
14383 { &hf_pfcp_up_function_features_o7_b2_ueip
,
14384 { "UEIP", "pfcp.up_function_features.ueip",
14385 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x04,
14386 "The UP function supports allocating UE IP addresses or prefixes", HFILL
}
14388 { &hf_pfcp_up_function_features_o7_b3_sset
,
14389 { "SSET", "pfcp.up_function_features.sset",
14390 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x08,
14391 "UP function support of PFCP sessions successively controlled by different SMFs of a same SMF", HFILL
}
14393 { &hf_pfcp_up_function_features_o7_b4_mnop
,
14394 { "MNOP", "pfcp.up_function_features.mnop",
14395 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x10,
14396 "UPF supports measurement of number of packets which is instructed with the flag 'Measurement of Number of Packets' in a URR", HFILL
}
14398 { &hf_pfcp_up_function_features_o7_b5_mte_n4
,
14399 { "MTE N4", "pfcp.up_function_features.mte_n4",
14400 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x20,
14401 "UPF supports multiple instances of Traffic Endpoint IDs in a PDI", HFILL
}
14403 { &hf_pfcp_up_function_features_o7_b6_bundl
,
14404 { "BUNDL", "pfcp.up_function_features.bundl",
14405 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x40,
14406 "PFCP messages bundling", HFILL
}
14408 { &hf_pfcp_up_function_features_o7_b7_gcom
,
14409 { "GCOM", "pfcp.up_function_features.gcom",
14410 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x80,
14411 "UPF support of 5G VN Group Communication", HFILL
}
14413 { &hf_pfcp_up_function_features_o8_b0_mpas
,
14414 { "MPAS", "pfcp.up_function_features.mpas",
14415 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x01,
14416 "UPF support for multiple PFCP associations to the SMFs in an SMF set", HFILL
}
14418 { &hf_pfcp_up_function_features_o8_b1_rttl
,
14419 { "RTTL", "pfcp.up_function_features.rttl",
14420 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x02,
14421 "The UP function supports redundant transmission at transport layer", HFILL
}
14423 { &hf_pfcp_up_function_features_o8_b2_vtime
,
14424 { "VTIME", "pfcp.up_function_features.vtime",
14425 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x04,
14426 "UPF support of quota validity time feature", HFILL
}
14428 { &hf_pfcp_up_function_features_o8_b3_norp
,
14429 { "NORP", "pfcp.up_function_features.norp",
14430 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x08,
14431 "UP function support of Number of Reports", HFILL
}
14433 { &hf_pfcp_up_function_features_o8_b4_iptv
,
14434 { "IPTV", "pfcp.up_function_features.iptv",
14435 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x10,
14436 "UPF support of IPTV service", HFILL
}
14438 { &hf_pfcp_up_function_features_o8_b5_ip6pl
,
14439 { "IP6PL", "pfcp.up_function_features.ip6pl",
14440 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x20,
14441 "UPF supports UE IPv6 address(es) allocation with IPv6 prefix length other than default /64", HFILL
}
14443 { &hf_pfcp_up_function_features_o8_b6_tsn
,
14444 { "TSN", "pfcp.up_function_features.tsn",
14445 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x40,
14446 "Integration of 5GS into a TSN data network is supported by the UPF", HFILL
}
14448 { &hf_pfcp_up_function_features_o8_b7_mptcp
,
14449 { "MPTCP", "pfcp.up_function_features.mptcp",
14450 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x80,
14451 "UPF support of MPTCP Proxy functionality", HFILL
}
14453 { &hf_pfcp_up_function_features_o9_b0_atsss_ll
,
14454 { "ATSSS-LL", "pfcp.up_function_features.atsss_ll",
14455 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x01,
14456 "UPF support of ATSSS-LLL steering functionality", HFILL
}
14458 { &hf_pfcp_up_function_features_o9_b1_qfqm
,
14459 { "QFQM", "pfcp.up_function_features.qfqm",
14460 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x02,
14461 "UPF support of per QoS flow per UE QoS monitoring for packet delay", HFILL
}
14463 { &hf_pfcp_up_function_features_o9_b2_gpqm
,
14464 { "GPQM", "pfcp.up_function_features.gpqm",
14465 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x04,
14466 "UPF support of per GTP-U Path QoS monitoring", HFILL
}
14468 { &hf_pfcp_up_function_features_o9_b3_mt_edt
,
14469 { "MT-EDT", "pfcp.up_function_features.mtedt",
14470 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x08,
14471 "SGW-U support of reporting the size of DL Data Packets", HFILL
}
14473 { &hf_pfcp_up_function_features_o9_b4_ciot
,
14474 { "CIOT", "pfcp.up_function_features.ciot",
14475 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x10,
14476 "UPF support of CIoT feature", HFILL
}
14478 { &hf_pfcp_up_function_features_o9_b5_ethar
,
14479 { "ETHAR", "pfcp.up_function_features.ethar",
14480 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x20,
14481 "UPF support of Ethernet PDU Session Anchor Relocation", HFILL
}
14483 { &hf_pfcp_up_function_features_o9_b6_ddds
,
14484 { "DDDS", "pfcp.up_function_features.ddds",
14485 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x40,
14486 "UPF support of reporting of the first buffered / discarded data for downlink", HFILL
}
14488 { &hf_pfcp_up_function_features_o9_b7_rds
,
14489 { "RDS", "pfcp.up_function_features.rds",
14490 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x80,
14491 "UP function support of Reliable Data Service", HFILL
}
14493 { &hf_pfcp_up_function_features_o10_b0_rttwp
,
14494 { "RTTWP", "pfcp.up_function_features.rttwp",
14495 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x01,
14496 "UPF support of RTT measurement towards the UE without PMF", HFILL
}
14498 { &hf_pfcp_up_function_features_o10_b1_quasf
,
14499 { "QUASF", "pfcp.up_function_features.quasf",
14500 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x02,
14501 "The UP function supports being provisioned in a URR with an Exempted Application ID for Quota Action or an Exempted SDF Filter for Quota Action which is to be used when the quota is exhausted", HFILL
}
14503 { &hf_pfcp_up_function_features_o10_b2_nspoc
,
14504 { "NSPOC", "pfcp.up_function_features.nspoc",
14505 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x04,
14506 "UP function supports notifying start of Pause of Charging via user plane", HFILL
}
14508 { &hf_pfcp_up_function_features_o10_b3_l2tp
,
14509 { "L2TP", "pfcp.up_function_features.l2tp",
14510 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x08,
14511 "UP function supports L2TP", HFILL
}
14513 { &hf_pfcp_up_function_features_o10_b4_upber
,
14514 { "UPBER", "pfcp.up_function_features.upber",
14515 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x10,
14516 "UP function supports the uplink packet buffering during EAS relocation", HFILL
}
14518 { &hf_pfcp_up_function_features_o10_b5_resps
,
14519 { "RESPS", "pfcp.up_function_features.resps",
14520 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x20,
14521 "UP function supports Restoration of PFCP Session association", HFILL
}
14523 { &hf_pfcp_up_function_features_o10_b6_iprep
,
14524 { "IPREP", "pfcp.up_function_features.iprep",
14525 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x40,
14526 "UP function supports IP Address and Port number replacement", HFILL
}
14528 { &hf_pfcp_up_function_features_o10_b7_dnsts
,
14529 { "DNSTS", "pfcp.up_function_features.dnsts",
14530 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x80,
14531 "UP function support DNS Traffic Steering based on FQDN in the DNS Query message", HFILL
}
14533 { &hf_pfcp_up_function_features_o11_b0_drqos
,
14534 { "DRQOS", "pfcp.up_function_features.drqos",
14535 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x01,
14536 "UP function supports Direct Reporting of QoS monitoring events to Local NEF or AF", HFILL
}
14538 { &hf_pfcp_up_function_features_o11_b1_mbsn4
,
14539 { "MBSN4", "pfcp.up_function_features.mbsn4",
14540 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x02,
14541 "UPF supports sending MBS multicast session data to associated PDU sessions using 5GC individual delivery", HFILL
}
14543 { &hf_pfcp_up_function_features_o11_b2_psuprm
,
14544 { "MBSN4", "pfcp.up_function_features.mbsn4",
14545 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x04,
14546 "UP function supports Per Slice UP Resource Management", HFILL
}
14548 { &hf_pfcp_up_function_features_o11_b3_eppi
,
14549 { "EPPI", "pfcp.up_function_features.eppi",
14550 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x08,
14551 "UP function supports Enhanced Provisioning of Paging Policy Indicator", HFILL
}
14553 { &hf_pfcp_up_function_features_o11_b4_ratp
,
14554 { "RATP", "pfcp.up_function_features.ratp",
14555 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x10,
14556 "UP function supports Redirection Address Types set to Port, IPv4 address and Port, IPv6 address and Port, or IPv4 and IPv6 addresses and Port", HFILL
}
14558 { &hf_pfcp_up_function_features_o11_b5_upidp
,
14559 { "UPIDP", "pfcp.up_function_features.upidp",
14560 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x20,
14561 "UP function supports User Plane Inactivity Detection and reporting per PDR", HFILL
}
14563 { &hf_pfcp_up_function_features_o11_b6_afsfc
,
14564 { "AFSFC", "pfcp.up_function_features.afsfc",
14565 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x40,
14566 "UP function supports inserting metadata when Application Function influence on Service Function Chaining", HFILL
}
14568 { &hf_pfcp_up_function_features_o11_b7_mpquic
,
14569 { "MPQUIC", "pfcp.up_function_features.mpquic",
14570 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x80,
14571 "UPF support of MPQUIC Proxy functionality", HFILL
}
14573 { &hf_pfcp_up_function_features_o12_b0_redsm
,
14574 { "REDSM", "pfcp.up_function_features.redsm",
14575 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x01,
14576 "UP function supports the Redundant Steering Mode", HFILL
}
14578 { &hf_pfcp_up_function_features_o12_b1_dbdm
,
14579 { "DBDM", "pfcp.up_function_features.dbdm",
14580 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x02,
14581 "The buffering parameters 'DL Buffering Duration' and 'DL Buffering Suggested Packet Count' in PFCP Session Modification Request are supported by the UP function", HFILL
}
14583 { &hf_pfcp_up_function_features_o12_b2_tscts
,
14584 { "TSCTS", "pfcp.up_function_features.tscts",
14585 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x04,
14586 "AF requested support of Time Synchronization and/or Time Sensitive Communication is supported by the UP function", HFILL
}
14588 { &hf_pfcp_up_function_features_o12_b3_drtsc
,
14589 { "DRTSC", "pfcp.up_function_features.drtsc",
14590 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x08,
14591 "UP function supports Direct Reporting of TSC management information events to TSN AF or TSCTSF", HFILL
}
14593 { &hf_pfcp_up_function_features_o12_b4_n6jedb
,
14594 { "N6JEDB", "pfcp.up_function_features.n6jedb",
14595 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x10,
14596 "UPF support of N6 Jitter, DL Periodicity and UL Periodicity Measurement and Reporting, and End of Data Burst marking", HFILL
}
14598 { &hf_pfcp_up_function_features_o12_b5_qmcon
,
14599 { "QMCON", "pfcp.up_function_features.qmcon",
14600 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x20,
14601 "UPF support of QoS monitoring of Congestion information", HFILL
}
14603 { &hf_pfcp_up_function_features_o12_b6_detnet
,
14604 { "DETNET", "pfcp.up_function_features.detnet",
14605 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x40,
14606 "Deterministic Networking is supported by the UP function", HFILL
}
14608 { &hf_pfcp_up_function_features_o12_b7_eml4s
,
14609 { "EML4S", "pfcp.up_function_features.eml4s",
14610 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x80,
14611 "UP function supports ECN Marking for L4S", HFILL
}
14613 { &hf_pfcp_up_function_features_o13_b0_pdusm
,
14614 { "PDUSM", "pfcp.up_function_features.pdusm",
14615 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x01,
14616 "UP function supports PDU Set Marking", HFILL
}
14618 { &hf_pfcp_up_function_features_o13_b1_cntl
,
14619 { "CN-TL", "pfcp.up_function_features.cntl",
14620 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x02,
14621 "UPF support of the TSN Talker and Listener (TL) functionality", HFILL
}
14623 { &hf_pfcp_up_function_features_o13_b2_qmdrm
,
14624 { "QMDRM", "pfcp.up_function_features.qmdrm",
14625 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x04,
14626 "UPF support of QoS monitoring of Data Rate Measurement", HFILL
}
14628 { &hf_pfcp_up_function_features_o13_b3_edbnc
,
14629 { "EDBNC", "pfcp.up_function_features.edbnc",
14630 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x08,
14631 "UP function supports Extended DL Buffering Notification Control", HFILL
}
14633 { &hf_pfcp_up_function_features_o13_b4_mtsdt
,
14634 { "MT-SDT", "pfcp.up_function_features.mtsdt",
14635 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x10,
14636 "UPF support of reporting the size of DL Data Packets per QoS flow", HFILL
}
14638 { &hf_pfcp_up_function_features_o13_b5_upsbies
,
14639 { "UPSBIES", "pfcp.up_function_features.upsbies",
14640 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x20,
14641 "UPF support of event subscription via Service Based Interface", HFILL
}
14643 { &hf_pfcp_up_function_features_o13_b7_un6tu
,
14644 { "UN6TU", "pfcp.up_function_features.un6tu",
14645 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x40,
14646 "UPF supports to allocate a mapped N6 IP address and perform IP replacement", HFILL
}
14648 { &hf_pfcp_up_function_features_o13_b6_umn6ip
,
14649 { "UMN6IP", "pfcp.up_function_features.umn6ip",
14650 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x80,
14651 "UPF supports N6 tunnelling using N6 routing information", HFILL
}
14653 { &hf_pfcp_up_function_features_o14_b0_mbsch
,
14654 { "MBSCH", "pfcp.up_function_features.mbsch",
14655 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x01,
14656 "MB-UPF support of MBS charging", HFILL
}
14659 { &hf_pfcp_sequence_number
,
14660 { "Sequence Number", "pfcp.sequence_number",
14661 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
14665 { "Metric", "pfcp.metric",
14666 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
14669 { &hf_pfcp_timer_unit
,
14670 { "Timer unit", "pfcp.timer_unit",
14671 FT_UINT8
, BASE_DEC
, VALS(pfcp_timer_unit_vals
), 0xe0,
14674 { &hf_pfcp_timer_value
,
14675 { "Timer value", "pfcp.timer_value",
14676 FT_UINT8
, BASE_DEC
, NULL
, 0x1f,
14679 { &hf_pfcp_volume_measurement_b0_tovol
,
14680 { "TOVOL", "pfcp.volume_measurement_flags.tovol",
14681 FT_BOOLEAN
, 8, NULL
, 0x01,
14684 { &hf_pfcp_volume_measurement_b1_ulvol
,
14685 { "ULVOL", "pfcp.volume_measurement_flags.ulvol",
14686 FT_BOOLEAN
, 8, NULL
, 0x02,
14689 { &hf_pfcp_volume_measurement_b2_dlvol
,
14690 { "DLVOL", "pfcp.volume_measurement_flags.dlvol",
14691 FT_BOOLEAN
, 8, NULL
, 0x04,
14694 { &hf_pfcp_volume_measurement_b3_tonop
,
14695 { "TONOP", "pfcp.volume_measurement_flags.tonop",
14696 FT_BOOLEAN
, 8, NULL
, 0x08,
14699 { &hf_pfcp_volume_measurement_b4_ulnop
,
14700 { "ULNOP", "pfcp.volume_measurement_flags.ulnop",
14701 FT_BOOLEAN
, 8, NULL
, 0x10,
14704 { &hf_pfcp_volume_measurement_b5_dlnop
,
14705 { "DLNOP", "pfcp.volume_measurement_flags.dlnops",
14706 FT_BOOLEAN
, 8, NULL
, 0x20,
14709 { &hf_pfcp_vol_meas_tovol
,
14710 { "Total Volume", "pfcp.volume_measurement.tovol",
14711 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
14714 { &hf_pfcp_vol_meas_ulvol
,
14715 { "Uplink Volume", "pfcp.volume_measurement.ulvol",
14716 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
14719 { &hf_pfcp_vol_meas_dlvol
,
14720 { "Downlink Volume", "pfcp.volume_measurement.dlvol",
14721 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
14724 { &hf_pfcp_vol_meas_tonop
,
14725 { "Total Number of Packets", "pfcp.volume_measurement.tonop",
14726 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
14729 { &hf_pfcp_vol_meas_ulnop
,
14730 { "Uplink Number of Packets", "pfcp.volume_measurement.ulnop",
14731 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
14734 { &hf_pfcp_vol_meas_dlnop
,
14735 { "Downlink Number of Packets", "pfcp.volume_measurement.dlnop",
14736 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
14739 { &hf_pfcp_cp_function_features_o5_b0_load
,
14740 { "LOAD", "pfcp.cp_function_features.load",
14741 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x01,
14742 "Load Control", HFILL
}
14744 { &hf_pfcp_cp_function_features_o5_b1_ovrl
,
14745 { "OVRL", "pfcp.cp_function_features.ovrl",
14746 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x02,
14747 "Overload Control", HFILL
}
14749 { &hf_pfcp_cp_function_features_o5_b2_epfar
,
14750 { "EPFAR", "pfcp.cp_function_features.epfar",
14751 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x04,
14752 "The CP function supports the Enhanced PFCP Association Release feature", HFILL
}
14754 { &hf_pfcp_cp_function_features_o5_b3_sset
,
14755 { "SSET", "pfcp.cp_function_features.sset",
14756 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x08,
14757 "SMF support of PFCP sessions successively controlled by different SMFs of a same SMF Set", HFILL
}
14759 { &hf_pfcp_cp_function_features_o5_b4_bundl
,
14760 { "BUNDL", "pfcp.cp_function_features.bundl",
14761 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x10,
14762 "PFCP messages bundling", HFILL
}
14764 { &hf_pfcp_cp_function_features_o5_b5_mpas
,
14765 { "MPAS", "pfcp.cp_function_features.mpas",
14766 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x20,
14767 "SMF support for multiple PFCP associations from an SMF set to a single UPF", HFILL
}
14769 { &hf_pfcp_cp_function_features_o5_b6_ardr
,
14770 { "ARDR", "pfcp.cp_function_features.ardr",
14771 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x40,
14772 "CP function supports Additional Usage Reports in the PFCP Session Deletion Response", HFILL
}
14774 { &hf_pfcp_cp_function_features_o5_b7_uiaur
,
14775 { "UIAUR", "pfcp.cp_function_features.uiaur",
14776 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x80,
14777 "CP function supports the UE IP Address Usage Reporting feature", HFILL
}
14779 { &hf_pfcp_cp_function_features_o6_b0_psucc
,
14780 { "PSUCC", "pfcp.cp_function_features.psucc",
14781 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x01,
14782 "CP function supports PFCP session establishment or modification with Partial Success", HFILL
}
14784 { &hf_pfcp_cp_function_features_o6_b1_rpgur
,
14785 { "RPGUR", "pfcp.cp_function_features.rpgur",
14786 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x02,
14787 "CP function supports the Peer GTP-U Entity Restart Reporting", HFILL
}
14790 { &hf_pfcp_usage_information_b0_bef
,
14791 { "BEF (Before)", "pfcp.usage_information.bef",
14792 FT_BOOLEAN
, 8, NULL
, 0x01,
14795 { &hf_pfcp_usage_information_b1_aft
,
14796 { "AFT (After)", "pfcp.usage_information.aft",
14797 FT_BOOLEAN
, 8, NULL
, 0x02,
14800 { &hf_pfcp_usage_information_b2_uae
,
14801 { "UAE (Usage After Enforcement)", "pfcp.usage_information.uae",
14802 FT_BOOLEAN
, 8, NULL
, 0x04,
14805 { &hf_pfcp_usage_information_b3_ube
,
14806 { "UBE (Usage Before Enforcement)", "pfcp.usage_information.ube",
14807 FT_BOOLEAN
, 8, NULL
, 0x08,
14810 { &hf_pfcp_application_instance_id
,
14811 { "Application Instance Identifier", "pfcp.application_instance_id",
14812 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
14815 { &hf_pfcp_application_instance_id_str
,
14816 { "Application Instance Identifier", "pfcp.application_instance_id_str",
14817 FT_STRING
, BASE_NONE
, NULL
, 0x0,
14820 { &hf_pfcp_flow_dir
,
14821 { "Flow Direction", "pfcp.flow_dir",
14822 FT_UINT8
, BASE_DEC
, VALS(pfcp_flow_dir_vals
), 0x07,
14825 { &hf_pfcp_packet_rate_b0_ulpr
,
14826 { "ULPR (Uplink Packet Rate)", "pfcp.packet_rate.ulpr",
14827 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
14830 { &hf_pfcp_packet_rate_b1_dlpr
,
14831 { "DLPR (Downlink Packet Rate)", "pfcp.packet_rate.dlpr",
14832 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
14835 { &hf_pfcp_packet_rate_b2_aprc
,
14836 { "APRC (Additional Packet Rate Control)", "pfcp.packet_rate.aprc",
14837 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
14840 { &hf_pfcp_ul_time_unit
,
14841 { "Uplink Time Unit", "pfcp.ul_time_unit",
14842 FT_UINT8
, BASE_DEC
, VALS(pfcp_pr_time_unit_vals
), 0x07,
14845 { &hf_pfcp_max_ul_pr
,
14846 { "Maximum Uplink Packet Rate", "pfcp.max_ul_pr",
14847 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
14850 { &hf_pfcp_dl_time_unit
,
14851 { "Downlink Time Unit", "pfcp.dl_time_unit",
14852 FT_UINT8
, BASE_DEC
, VALS(pfcp_pr_time_unit_vals
), 0x07,
14855 { &hf_pfcp_max_dl_pr
,
14856 { "Maximum Downlink Packet Rate", "pfcp.max_dl_pr",
14857 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
14860 { &hf_pfcp_a_ul_time_unit
,
14861 { "Additional Uplink Time Unit", "pfcp.a_ul_time_unit",
14862 FT_UINT8
, BASE_DEC
, VALS(pfcp_pr_time_unit_vals
), 0x07,
14865 { &hf_pfcp_a_max_ul_pr
,
14866 { "Additional Maximum Uplink Packet Rate", "pfcp.a_max_ul_pr",
14867 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
14870 { &hf_pfcp_a_dl_time_unit
,
14871 { "Additional Downlink Time Unit", "pfcp.a_dl_time_unit",
14872 FT_UINT8
, BASE_DEC
, VALS(pfcp_pr_time_unit_vals
), 0x07,
14875 { &hf_pfcp_a_max_dl_pr
,
14876 { "Additional Maximum Downlink Packet Rate", "pfcp.a_max_dl_pr",
14877 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
14880 { &hf_pfcp_dl_flow_level_marking_b0_ttc
,
14881 { "TTC (ToS/Traffic Class)", "pfcp.dl_flow_level_marking.ttc",
14882 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
14885 { &hf_pfcp_dl_flow_level_marking_b1_sci
,
14886 { "SCI(Service Class Indicator)", "pfcp.dl_flow_level_marking.sci",
14887 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
14891 { "Service Class Indicator", "pfcp.sci",
14892 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
14895 { &hf_pfcp_dl_data_notification_delay
,
14896 { "Delay Value", "pfcp.dl_data_notification_delay",
14897 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
14898 "Delay Value in integer multiples of 50 millisecs, or zero", HFILL
}
14900 { &hf_pfcp_packet_count
,
14901 { "Packet Count", "pfcp.packet_count",
14902 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
14905 { &hf_pfcp_dl_data_service_inf_b0_ppi
,
14906 { "PPI(Paging Policy Indication)", "pfcp.dl_data_service_inf.ppi",
14907 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
14910 { &hf_pfcp_dl_data_service_inf_b1_qfii
,
14911 { "QFII(QoS Flow Identifier)", "pfcp.dl_data_service_inf.qfii",
14912 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
14915 { &hf_pfcp_dl_data_service_inf_b2_dlpsi
,
14916 { "DLPSI(DL Packet Size Indication)", "pfcp.dl_data_service_inf.dlpsi",
14917 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
14920 { &hf_pfcp_paging_policy_indication
,
14921 { "Paging Policy Indication", "pfcp.dl_data_service_inf.paging_policy_indication",
14922 FT_UINT16
, BASE_DEC
, NULL
, 0x7f,
14925 { &hf_pfcp_dldatapacketsize
,
14926 { "DL Data Packet Size", "pfcp.dl_data_service_inf.dlpacketsize",
14927 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
14930 { &hf_pfcp_pfcpsmreq_flags_b0_drobu
,
14931 { "DROBU (Drop Buffered Packets)", "pfcp.smreq_flags.drobu",
14932 FT_BOOLEAN
, 8, NULL
, 0x01,
14935 { &hf_pfcp_pfcpsmreq_flags_b1_sndem
,
14936 { "SNDEM (Send End Marker Packets)", "pfcp.smreq_flags.sndem",
14937 FT_BOOLEAN
, 8, NULL
, 0x02,
14940 { &hf_pfcp_pfcpsmreq_flags_b2_qaurr
,
14941 { "QAURR (Query All URRs)", "pfcp.smreq_flags.qaurr",
14942 FT_BOOLEAN
, 8, NULL
, 0x04,
14945 { &hf_pfcp_pfcpsmreq_flags_b3_sumpc
,
14946 { "SUMPC (Stop of Usage Measurement to Pause Charging)", "pfcp.smreq_flags.sumpc",
14947 FT_BOOLEAN
, 8, NULL
, 0x08,
14950 { &hf_pfcp_pfcpsmreq_flags_b4_rumuc
,
14951 { "RUMUC (Resume of Usage Measurement to Un-pause of Charging)", "pfcp.smreq_flags.rumuc",
14952 FT_BOOLEAN
, 8, NULL
, 0x10,
14955 { &hf_pfcp_pfcpsmreq_flags_b5_deteid
,
14956 { "DETEID (Delete All DL N3mb and/or N19mb F-TEIDs)", "pfcp.smreq_flags.deteid",
14957 FT_BOOLEAN
, 8, NULL
, 0x20,
14960 { &hf_pfcp_pfcpsmreq_flags_b6_hrsbom
,
14961 { "HRSBOM (HR-SBO Mode)", "pfcp.smreq_flags.hrsbom",
14962 FT_BOOLEAN
, 8, NULL
, 0x40,
14965 { &hf_pfcp_pfcpsrrsp_flags_b0_drobu
,
14966 { "DROBU (Drop Buffered Packets)", "pfcp.srrsp_flags.drobu",
14967 FT_BOOLEAN
, 8, NULL
, 0x01,
14970 { &hf_pfcp_pfd_contents_flags_b0_fd
,
14971 { "FD (Flow Description)", "pfcp.pfd_contents_flags.fd",
14972 FT_BOOLEAN
, 8, NULL
, 0x01,
14975 { &hf_pfcp_pfd_contents_flags_b1_url
,
14976 { "URL (URL)", "pfcp.pfd_contents_flags.url",
14977 FT_BOOLEAN
, 8, NULL
, 0x02,
14980 { &hf_pfcp_pfd_contents_flags_b2_dn
,
14981 { "DN (Domain Name)", "pfcp.pfd_contents_flags.dn",
14982 FT_BOOLEAN
, 8, NULL
, 0x04,
14985 { &hf_pfcp_pfd_contents_flags_b3_cp
,
14986 { "CP (Custom PFD Content)", "pfcp.pfd_contents_flags.cp",
14987 FT_BOOLEAN
, 8, NULL
, 0x08,
14990 { &hf_pfcp_pfd_contents_flags_b4_dnp
,
14991 { "DNP (Domain Name Protocol)", "pfcp.pfd_contents_flags.dnp",
14992 FT_BOOLEAN
, 8, NULL
, 0x10,
14995 { &hf_pfcp_pfd_contents_flags_b5_afd
,
14996 { "AFD (Additional Flow Description)", "pfcp.pfd_contents_flags.afd",
14997 FT_BOOLEAN
, 8, NULL
, 0x20,
15000 { &hf_pfcp_pfd_contents_flags_b6_aurl
,
15001 { "AURL (Additional URL)", "pfcp.pfd_contents_flags.aurl",
15002 FT_BOOLEAN
, 8, NULL
, 0x40,
15005 { &hf_pfcp_pfd_contents_flags_b7_adnp
,
15006 { "ADNP (Additional Domain Name and Domain Name Protocol)", "pfcp.pfd_contents_flags.adnp",
15007 FT_BOOLEAN
, 8, NULL
, 0x80,
15010 { &hf_pfcp_url_len
,
15011 { "Length of URL", "pfcp.url_len",
15012 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
15016 { "URL", "pfcp.url",
15017 FT_STRING
, BASE_NONE
, NULL
, 0x0,
15021 { "Length of Domain Name", "pfcp.dn_len",
15022 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
15026 { "Domain Name", "pfcp.dn",
15027 FT_STRING
, BASE_NONE
, NULL
, 0x0,
15031 { "Length of Custom PFD Content", "pfcp.cp_len",
15032 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
15036 { "Custom PFD Content", "pfcp.cp",
15037 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
15040 { &hf_pfcp_dnp_len
,
15041 { "Length of Domain Name Protocol", "pfcp.dnp_len",
15042 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
15046 { "Domain Name Protocol", "pfcp.dnp",
15047 FT_STRING
, BASE_NONE
, NULL
, 0x0,
15050 { &hf_pfcp_afd_len
,
15051 { "Length of Additional Flow Description", "pfcp.adf_len",
15052 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
15055 { &hf_pfcp_aurl_len
,
15056 { "Length of Additional URL", "pfcp.aurl_len",
15057 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
15060 { &hf_pfcp_adnp_len
,
15061 { "Length of Additional Domain Name and Domain Name Protocol", "pfcp.adnp_len",
15062 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
15065 { &hf_pfcp_header_type
,
15066 { "Header Type", "pfcp.header_type",
15067 FT_UINT8
, BASE_DEC
, VALS(pfcp_header_type_vals
), 0x1f,
15071 { "Length of Header Field Name", "pfcp.hf_len",
15072 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
15075 { &hf_pfcp_hf_name
,
15076 { "Header Field Name", "pfcp.hf_name",
15077 FT_BYTES
, BASE_SHOW_ASCII_PRINTABLE
, NULL
, 0x0,
15080 { &hf_pfcp_hf_val_len
,
15081 { "Length of Header Field Value", "pfcp.hf_val_len",
15082 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
15086 { "Header Field Value", "pfcp.hf_val",
15087 FT_BYTES
, BASE_SHOW_ASCII_PRINTABLE
, NULL
, 0x0,
15091 { &hf_pfcp_measurement_info_b0_mbqe
,
15092 { "MBQE (Measurement Before QoS Enforcement)", "pfcp.measurement_info.fd",
15093 FT_BOOLEAN
, 8, NULL
, 0x01,
15096 { &hf_pfcp_measurement_info_b1_inam
,
15097 { "INAM (Inactive Measurement)", "pfcp.measurement_info.inam",
15098 FT_BOOLEAN
, 8, NULL
, 0x02,
15101 { &hf_pfcp_measurement_info_b2_radi
,
15102 { "RADI (Reduced Application Detection Information)", "pfcp.measurement_info.radi",
15103 FT_BOOLEAN
, 8, NULL
, 0x04,
15106 { &hf_pfcp_measurement_info_b3_istm
,
15107 { "ISTM (Immediate Start Time Metering)", "pfcp.measurement_info.istm",
15108 FT_BOOLEAN
, 8, NULL
, 0x08,
15111 { &hf_pfcp_measurement_info_b4_mnop
,
15112 { "MNOP (Measurement of Number of Packets)", "pfcp.measurement_info.mnop",
15113 FT_BOOLEAN
, 8, NULL
, 0x10,
15116 { &hf_pfcp_measurement_info_b5_sspoc
,
15117 { "SSPOC (Send Start Pause of Charging)", "pfcp.measurement_info.sspoc",
15118 FT_BOOLEAN
, 8, NULL
, 0x20,
15121 { &hf_pfcp_measurement_info_b6_aspoc
,
15122 { "ASPOC (Applicable for Start Pause of Charging)", "pfcp.measurement_info.aspoc",
15123 FT_BOOLEAN
, 8, NULL
, 0x40,
15126 { &hf_pfcp_measurement_info_b7_ciam
,
15127 { "CIAM (Control of Inactive Measurement)", "pfcp.measurement_info.ciam",
15128 FT_BOOLEAN
, 8, NULL
, 0x80,
15131 { &hf_pfcp_node_report_type_b0_upfr
,
15132 { "UPFR (User Plane Path Failure Report)", "pfcp.node_report_type.upfr",
15133 FT_BOOLEAN
, 8, NULL
, 0x01,
15136 { &hf_pfcp_node_report_type_b1_uprr
,
15137 { "UPRR (User Plane Path Recovery Report)", "pfcp.node_report_type.uprr",
15138 FT_BOOLEAN
, 8, NULL
, 0x02,
15141 { &hf_pfcp_node_report_type_b2_ckdr
,
15142 { "CKDR (Clock Drift Report)", "pfcp.node_report_type.ckdr",
15143 FT_BOOLEAN
, 8, NULL
, 0x04,
15146 { &hf_pfcp_node_report_type_b3_gpqr
,
15147 { "GPQR (GTP-U Path QoS Report)", "pfcp.node_report_type.gpqr",
15148 FT_BOOLEAN
, 8, NULL
, 0x08,
15151 { &hf_pfcp_node_report_type_b4_purr
,
15152 { "PURR (peer GTP-U entity Restart Report)", "pfcp.node_report_type.purr",
15153 FT_BOOLEAN
, 8, NULL
, 0x10,
15156 { &hf_pfcp_node_report_type_b5_vsr
,
15157 { "VSR (Vendor-Specific Report)", "pfcp.node_report_type.pvsrurr",
15158 FT_BOOLEAN
, 8, NULL
, 0x20,
15162 { &hf_pfcp_remote_gtp_u_peer_flags_b0_v6
,
15163 { "V6 (IPv6)", "pfcp.remote_gtp_u_peer.flags.v6",
15164 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
15167 { &hf_pfcp_remote_gtp_u_peer_flags_b1_v4
,
15168 { "V4 (IPv4)", "pfcp.remote_gtp_u_peer.flags.v4",
15169 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
15172 { &hf_pfcp_remote_gtp_u_peer_flags_b2_di
,
15173 { "DI (Destination Interface)", "pfcp.remote_gtp_u_peer.flags.di",
15174 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
15177 { &hf_pfcp_remote_gtp_u_peer_flags_b3_ni
,
15178 { "NI (Network Instance)", "pfcp.remote_gtp_u_peer.flags.ni",
15179 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x08,
15182 { &hf_pfcp_remote_gtp_u_peer_flags_b4_rts
,
15183 { "RTS (Recovery Timestamp)", "pfcp.remote_gtp_u_peer.flags.rts",
15184 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x10,
15187 { &hf_pfcp_remote_gtp_u_peer_ipv4
,
15188 { "IPv4 address", "pfcp.remote_gtp_u_peer.ipv4",
15189 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
15192 { &hf_pfcp_remote_gtp_u_peer_ipv6
,
15193 { "IPv6 address", "pfcp.remote_gtp_u_peer.ipv6",
15194 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
15197 { &hf_pfcp_remote_gtp_u_peer_length_di
,
15198 { "Length of Destination Interface field", "pfcp.remote_gtp_u_peer.length_di",
15199 FT_UINT16
, BASE_DEC
, NULL
, 0,
15202 { &hf_pfcp_remote_gtp_u_peer_length_ni
,
15203 { "Length of Network Instance field", "pfcp.remote_gtp_u_peer.length_ni",
15204 FT_UINT16
, BASE_DEC
, NULL
, 0,
15207 { &hf_pfcp_remote_gtp_u_peer_time_stamp
,
15208 { "Time Stamp", "pfcp.remote_gtp_u_peer.time_stamp",
15209 FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_NTP_UTC
, NULL
, 0,
15212 { &hf_pfcp_ur_seqn
,
15213 { "UR-SEQN", "pfcp.ur_seqn",
15214 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
15217 { &hf_pfcp_oci_flags_b0_aoci
,
15218 { "AOCI: Associate OCI with Node ID", "pfcp.oci_flags.aoci",
15219 FT_BOOLEAN
, 8, NULL
, 0x01,
15222 { &hf_pfcp_pfcp_assoc_rel_req_b0_sarr
,
15223 { "SARR (PFCP Association Release Request)", "pfcp.assoc_rel_req.sarr",
15224 FT_BOOLEAN
, 8, NULL
, 0x01,
15227 { &hf_pfcp_pfcp_assoc_rel_req_b1_urss
,
15228 { "URSS (non-zero Usage Reports for the affected PFCP Sessions Sent)", "pfcp.assoc_rel_req.urss",
15229 FT_BOOLEAN
, 8, NULL
, 0x02,
15232 { &hf_pfcp_upiri_flg_b6_assosi
,
15233 { "ASSOSI (Associated Source Instance)", "pfcp.upiri_flags.assosi",
15234 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x40,
15237 { &hf_pfcp_upiri_flg_b5_assoni
,
15238 { "ASSONI (Associated Network Instance)", "pfcp.upiri_flags.assoni",
15239 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x20,
15242 { &hf_pfcp_upiri_flg_b2b4_teidri
,
15243 { "TEIDRI (TEID Range Indication)", "pfcp.upiri_flags.teidri",
15244 FT_UINT8
, BASE_HEX
, NULL
, 0x1c,
15247 { &hf_pfcp_upiri_flags_b1_v6
,
15248 { "V6 (IPv6)", "pfcp.upiri_flags.v6",
15249 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
15252 { &hf_pfcp_upiri_flags_b0_v4
,
15253 { "V4 (IPv4)", "pfcp.upiri_flags.v4",
15254 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
15257 { &hf_pfcp_upiri_teidri
,
15258 { "TEID Range Indication", "pfcp.upiri.teidri",
15259 FT_UINT8
, BASE_DEC
, NULL
, 0x1C,
15262 { &hf_pfcp_upiri_teid_range
,
15263 { "TEID", "pfcp.upiri.teid_range",
15264 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
15267 { &hf_pfcp_upiri_ipv4
,
15268 { "IPv4 address", "pfcp.upiri.ipv4_addr",
15269 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
15272 { &hf_pfcp_upiri_ipv6
,
15273 { "IPv6 address", "pfcp.upiri.ipv6_addr",
15274 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
15277 { &hf_pfcp_user_plane_inactivity_timer
,
15278 { "User Plane Inactivity Timer", "pfcp.user_plane_inactivity_time",
15279 FT_UINT32
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_seconds
), 0,
15283 { &hf_pfcp_subsequent_volume_quota_b0_tovol
,
15284 { "TOVOL", "pfcp.subsequent_volume_quota_flags.tovol",
15285 FT_BOOLEAN
, 8, NULL
, 0x01,
15288 { &hf_pfcp_subsequent_volume_quota_b1_ulvol
,
15289 { "ULVOL", "pfcp.subsequent_volume_quota_flags.ulvol",
15290 FT_BOOLEAN
, 8, NULL
, 0x02,
15293 { &hf_pfcp_subsequent_volume_quota_b2_dlvol
,
15294 { "DLVOL", "pfcp.subsequent_volume_quota_flags.dlvol",
15295 FT_BOOLEAN
, 8, NULL
, 0x04,
15298 { &hf_pfcp_subsequent_volume_quota_tovol
,
15299 { "Total Volume", "pfcp.subsequent_volume_quota.tovol",
15300 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
15303 { &hf_pfcp_subsequent_volume_quota_ulvol
,
15304 { "Uplink Volume", "pfcp.subsequent_volume_quota.ulvol",
15305 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
15308 { &hf_pfcp_subsequent_volume_quota_dlvol
,
15309 { "Downlink Volume", "pfcp.subsequent_volume_quota.dlvol",
15310 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
15314 { &hf_pfcp_subsequent_time_quota
,
15315 { "Subsequent Time Quota", "pfcp.subsequent_time_quota",
15316 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
15319 { &hf_pfcp_rqi_flag
,
15320 { "RQI", "pfcp.rqi_flag",
15321 FT_BOOLEAN
, 8, NULL
, 0x01,
15325 { "QFI", "pfcp.qfi_value",
15326 FT_UINT8
, BASE_HEX
, NULL
, 0x3f,
15329 { &hf_pfcp_query_urr_reference
,
15330 { "Query URR Reference", "pfcp.query_urr_reference",
15331 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
15335 { &hf_pfcp_additional_usage_reports_information_b15_auri
,
15336 { "AURI (Additional Usage Reports Indication)", "pfcp.additional_usage_reports_information_auri",
15337 FT_BOOLEAN
, 16, NULL
, 0x8000,
15340 { &hf_pfcp_additional_usage_reports_information_b14_b0_number_value
,
15341 { "Number of Additional Usage Reports value", "pfcp.additional_usage_reports_information_value",
15342 FT_UINT16
, BASE_DEC
, NULL
, 0x7FFF,
15345 { &hf_pfcp_traffic_endpoint_id
,
15346 { "Traffic Endpoint ID", "pfcp.traffic_endpoint_id",
15347 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
15351 { &hf_pfcp_mac_address_flags_b0_sour
,
15352 { "SOUR", "pfcp.mac_address.flags.sour",
15353 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
15356 { &hf_pfcp_mac_address_flags_b1_dest
,
15357 { "DEST", "pfcp.mac_address.flags.dest",
15358 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
15361 { &hf_pfcp_mac_address_flags_b2_usou
,
15362 { "USUO", "pfcp.mac_address.flags.usuo",
15363 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
15366 { &hf_pfcp_mac_address_flags_b3_udes
,
15367 { "UDES", "pfcp.mac_address.flags.udes",
15368 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x08,
15371 { &hf_pfcp_mac_address_source_mac_address
,
15372 { "Source MAC Address", "pfcp.mac_address.sour",
15373 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
15376 { &hf_pfcp_mac_address_dest_mac_address
,
15377 { "Destination MAC Address", "pfcp.mac_address.dest",
15378 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
15381 { &hf_pfcp_mac_address_upper_source_mac_address
,
15382 { "Upper Source MAC Address", "pfcp.mac_address.usou",
15383 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
15386 { &hf_pfcp_mac_address_upper_dest_mac_address
,
15387 { "Upper Destination MAC Address", "pfcp.mac_address.udes",
15388 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
15392 { &hf_pfcp_c_tag_flags_b0_pcp
,
15393 { "PCP", "pfcp.c_tag.flags.pcp",
15394 FT_BOOLEAN
, 8, NULL
, 0x01,
15395 "Priority code point", HFILL
}
15397 { &hf_pfcp_c_tag_flags_b1_dei
,
15398 { "DEI", "pfcp.c_tag.flags.dei",
15399 FT_BOOLEAN
, 8, NULL
, 0x02,
15400 "Drop eligible indicator", HFILL
}
15402 { &hf_pfcp_c_tag_flags_b2_vid
,
15403 { "VID", "pfcp.c_tag.flags.vid",
15404 FT_BOOLEAN
, 8, NULL
, 0x04,
15405 "VLAN identifier", HFILL
}
15407 { &hf_pfcp_c_tag_cvid
,
15408 { "C-VID", "pfcp.c_tag.cvid",
15409 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
15412 { &hf_pfcp_c_tag_dei_flag
,
15413 { "Drop eligible indicator (DEI)", "pfcp.c_tag.dei_flag",
15414 FT_BOOLEAN
, 8, TFS(&tfs_eligible_ineligible
), 0x08,
15417 { &hf_pfcp_c_tag_pcp_value
,
15418 { "Priority code point (PCP)", "pfcp.c_tag.pcp",
15419 FT_UINT8
, BASE_DEC
, VALS(pfcp_vlan_tag_pcp_vals
), 0x07,
15423 { &hf_pfcp_s_tag_flags_b0_pcp
,
15424 { "PCP", "pfcp.s_tag.flags.pcp",
15425 FT_BOOLEAN
, 8, NULL
, 0x01,
15426 "Priority code point", HFILL
}
15428 { &hf_pfcp_s_tag_flags_b1_dei
,
15429 { "DEI", "pfcp.s_tag.flags.dei",
15430 FT_BOOLEAN
, 8, NULL
, 0x02,
15431 "Drop eligible indicator", HFILL
}
15433 { &hf_pfcp_s_tag_flags_b2_vid
,
15434 { "VID", "pfcp.s_tag.flags.vid",
15435 FT_BOOLEAN
, 8, NULL
, 0x04,
15436 "VLAN identifier", HFILL
}
15438 { &hf_pfcp_s_tag_svid
,
15439 { "S-VID", "pfcp.s_tag.svid",
15440 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
15443 { &hf_pfcp_s_tag_dei_flag
,
15444 { "Drop eligible indicator (DEI)", "pfcp.s_tag.dei_flag",
15445 FT_BOOLEAN
, 8, TFS(&tfs_eligible_ineligible
), 0x08,
15448 { &hf_pfcp_s_tag_pcp_value
,
15449 { "Priority code point (PCP)", "pfcp.s_tag.pcp",
15450 FT_UINT8
, BASE_DEC
, VALS(pfcp_vlan_tag_pcp_vals
), 0x07,
15454 { &hf_pfcp_ethertype
,
15455 { "Ethertype", "pfcp.ethertype",
15456 FT_UINT16
, BASE_HEX
, VALS(etype_vals
), 0x0,
15460 { &hf_pfcp_proxying_flags_b0_arp
,
15461 { "ARP", "pfcp.proxying.flags.arp",
15462 FT_BOOLEAN
, 8, NULL
, 0x01,
15465 { &hf_pfcp_proxying_flags_b1_ins
,
15466 { "INS", "pfcp.proxying.flags.ins",
15467 FT_BOOLEAN
, 8, NULL
, 0x02,
15471 { &hf_pfcp_ethertype_filter_id
,
15472 { "Ethertype Filter ID", "pfcp.ethertype_filter_id",
15473 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
15477 { &hf_pfcp_ethertype_filter_properties_flags_b0_bide
,
15478 { "BIDE", "pfcp.ethertype_filter_properties.flags.bide",
15479 FT_BOOLEAN
, 8, NULL
, 0x01,
15483 { &hf_pfcp_suggested_buffering_packets_count_packet_count
,
15484 { "Packet count", "pfcp.suggested_buffering_packets_count.packet_count",
15485 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
15489 { &hf_pfcp_user_id_flags_b0_imsif
,
15490 { "IMSIF", "pfcp.user_id.flags.imsif",
15491 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
15494 { &hf_pfcp_user_id_flags_b1_imeif
,
15495 { "IMEIF", "pfcp.user_id.flags.imeif",
15496 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
15499 { &hf_pfcp_user_id_flags_b2_msisdnf
,
15500 { "MSISDNF", "pfcp.user_id.flags.msisdnf",
15501 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
15504 { &hf_pfcp_user_id_flags_b3_naif
,
15505 { "NAIF", "pfcp.user_id.flags.naif",
15506 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x08,
15509 { &hf_pfcp_user_id_flags_b4_supif
,
15510 { "SUPIF", "pfcp.user_id.flags.supif",
15511 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x10,
15514 { &hf_pfcp_user_id_flags_b5_gpsif
,
15515 { "GPSIF", "pfcp.user_id.flags.gpsif",
15516 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x20,
15519 { &hf_pfcp_user_id_flags_b6_peif
,
15520 { "PEIF", "pfcp.user_id.flags.peif",
15521 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x40,
15525 { &hf_pfcp_user_id_length_of_imsi
,
15526 { "Length of IMSI", "pfcp.user_id.length_of_imsi",
15527 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
15530 { &hf_pfcp_user_id_length_of_imei
,
15531 { "Length of IMEI", "pfcp.user_id.length_of_imei",
15532 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
15535 { &hf_pfcp_user_id_imei
,
15536 { "IMEI", "pfcp.user_id.imei",
15537 FT_STRING
, BASE_NONE
, NULL
, 0,
15540 { &hf_pfcp_user_id_length_of_msisdn
,
15541 { "Length of MSISDN", "pfcp.user_id.length_of_msisdn",
15542 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
15545 { &hf_pfcp_user_id_length_of_nai
,
15546 { "Length of NAI", "pfcp.user_id.length_of_nai",
15547 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
15550 { &hf_pfcp_user_id_nai
,
15551 { "NAI", "pfcp.user_id.nai",
15552 FT_STRING
, BASE_NONE
, NULL
, 0x0,
15555 { &hf_pfcp_user_id_length_of_supi
,
15556 { "Length of SUPI", "pfcp.user_id.length_of_supi",
15557 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
15560 { &hf_pfcp_user_id_supi
,
15561 { "SUPI", "pfcp.user_id.supi",
15562 FT_STRING
, BASE_NONE
, NULL
, 0x0,
15565 { &hf_pfcp_user_id_length_of_gpsi
,
15566 { "Length of GPSI", "pfcp.user_id.length_of_gpsi",
15567 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
15570 { &hf_pfcp_user_id_gpsi
,
15571 { "GPSI", "pfcp.user_id.gpsi",
15572 FT_STRING
, BASE_NONE
, NULL
, 0x0,
15575 { &hf_pfcp_user_id_length_of_pei
,
15576 { "Length of PEI", "pfcp.user_id.length_of_pei",
15577 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
15580 { &hf_pfcp_user_id_pei
,
15581 { "PEI", "pfcp.user_id.pei",
15582 FT_STRING
, BASE_NONE
, NULL
, 0x0,
15586 { &hf_pfcp_ethernet_pdu_session_information_flags_b0_ethi
,
15587 { "IMSIF", "pfcp.ethernet_pdu_session_information.flags.ethi",
15588 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
15592 { &hf_pfcp_mac_addresses_detected_number_of_mac_addresses
,
15593 { "Number of MAC addresses", "pfcp.mac_addresses_detected.number_of_mac_addresses",
15594 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
15597 { &hf_pfcp_mac_addresses_detected_mac_address
,
15598 { "MAC Address", "pfcp.mac_addresses_detected.mac_address",
15599 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
15602 { &hf_pfcp_mac_addresses_detected_length_of_ctag
,
15603 { "Length of C-TAG", "pfcp.mac_addresses_detected.length_of_ctag",
15604 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
15607 { &hf_pfcp_mac_addresses_detected_length_of_stag
,
15608 { "Length of S-TAG", "pfcp.mac_addresses_detected.length_of_stag",
15609 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
15613 { &hf_pfcp_mac_addresses_removed_number_of_mac_addresses
,
15614 { "Number of MAC addresses", "pfcp.mac_addresses_removed.number_of_mac_address",
15615 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
15618 { &hf_pfcp_mac_addresses_removed_mac_address
,
15619 { "MAC Address", "pfcp.mac_addresses_removed.mac_addresses",
15620 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
15623 { &hf_pfcp_mac_addresses_removed_length_of_ctag
,
15624 { "Length of C-TAG", "pfcp.mac_addresses_removed.length_of_ctag",
15625 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
15628 { &hf_pfcp_mac_addresses_removed_length_of_stag
,
15629 { "Length of S-TAG", "pfcp.mac_addresses_removed.length_of_stag",
15630 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
15634 { &hf_pfcp_ethernet_inactivity_timer
,
15635 { "Ethernet Inactivity Timer", "pfcp.ethernet",
15636 FT_UINT32
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_seconds
), 0,
15640 { &hf_pfcp_subsequent_event_quota
,
15641 { "Subsequent Event Quota", "pfcp.subsequent_event_quota",
15642 FT_UINT32
, BASE_DEC
, NULL
, 0,
15646 { &hf_pfcp_subsequent_event_threshold
,
15647 { "Subsequent Event Threshold", "pfcp.subsequent_event_threshold",
15648 FT_UINT32
, BASE_DEC
, NULL
, 0,
15652 { &hf_pfcp_trace_information_trace_id
,
15653 { "Trace ID", "pfcp.trace_information.traceid",
15654 FT_UINT24
, BASE_DEC
, NULL
, 0,
15657 { &hf_pfcp_trace_information_length_trigger_events
,
15658 { "Length of Trigger Events", "pfcp.trace_information.length_trigger_events",
15659 FT_UINT8
, BASE_DEC
, NULL
, 0,
15662 { &hf_pfcp_trace_information_trigger_events
,
15663 { "Trigger Events", "pfcp.trace_information.trigger_events",
15664 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
15667 { &hf_pfcp_trace_information_session_trace_depth
,
15668 { "Session Trace Depth", "pfcp.trace_information.session_trace_depth",
15669 FT_UINT8
, BASE_DEC
, NULL
, 0,
15672 { &hf_pfcp_trace_information_length_list_interfaces
,
15673 { "Length of List of Interfaces", "pfcp.trace_information.length_list_interfaces",
15674 FT_UINT8
, BASE_DEC
, NULL
, 0,
15677 { &hf_pfcp_trace_information_list_interfaces
,
15678 { "List of Interfaces", "pfcp.trace_information.list_interfaces",
15679 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
15682 { &hf_pfcp_trace_information_length_ipaddress
,
15683 { "Length of IP Address", "pfcp.trace_information.length_ipaddress",
15684 FT_UINT8
, BASE_DEC
, NULL
, 0,
15687 { &hf_pfcp_trace_information_ipv4
,
15688 { "IP Address of Trace Collection Entity", "pfcp.trace_information.ipv4",
15689 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
15692 { &hf_pfcp_trace_information_ipv6
,
15693 { "IP Address of Trace Collection Entity", "pfcp.trace_information.ipv6",
15694 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
15698 { &hf_pfcp_framed_route
,
15699 { "Framed-Route", "pfcp.framed_route",
15700 FT_STRING
, BASE_NONE
, NULL
, 0x0,
15703 { &hf_pfcp_framed_routing
,
15704 { "Framed-Routing", "pfcp.framed_routing",
15705 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
15708 { &hf_pfcp_framed_ipv6_route
,
15709 { "Framed-IPv6-Route", "pfcp.framed_ipv6_route",
15710 FT_STRING
, BASE_NONE
, NULL
, 0x0,
15714 { &hf_pfcp_event_quota
,
15715 { "Event Quota", "pfcp.event_quota",
15716 FT_UINT32
, BASE_DEC
, NULL
, 0,
15720 { &hf_pfcp_event_threshold
,
15721 { "Event Threshold", "pfcp.event_threshold",
15722 FT_UINT32
, BASE_DEC
, NULL
, 0,
15726 { &hf_pfcp_time_stamp
,
15727 { "Time Stamp", "pfcp.time_stamp",
15728 FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_NTP_UTC
, NULL
, 0,
15732 { &hf_pfcp_averaging_window
,
15733 { "Averaging Window", "pfcp.averaging_window",
15734 FT_UINT32
, BASE_DEC
, NULL
, 0,
15738 { &hf_pfcp_paging_policy_indicator
,
15739 { "Paging Policy Indicator (PPI)", "pfcp.ppi",
15740 FT_UINT8
, BASE_DEC
, NULL
, 0x7,
15743 { &hf_pfcp_apn_dnn
,
15744 { "APN/DNN", "pfcp.apn_dnn",
15745 FT_STRING
, BASE_NONE
, NULL
, 0x0,
15748 { &hf_pfcp_tgpp_interface_type
,
15749 { "3GPP Interface Type", "pfcp.tgpp_interface_type",
15750 FT_UINT8
, BASE_DEC
, VALS(pfcp_tgpp_interface_type_vals
), 0x3f,
15754 { &hf_pfcp_pfcpsrreq_flags_b0_psdbu
,
15755 { "PSDBU (PFCP Session Deleted By the UP function)", "pfcp.srreq_flags.psdbu",
15756 FT_BOOLEAN
, 8, NULL
, 0x01,
15760 { &hf_pfcp_pfcpaureq_flags_b0_parps
,
15761 { "PARPBS (PFCP Association Release Preparation Start)", "pfcp.aureq_flags.parps",
15762 FT_BOOLEAN
, 8, NULL
, 0x01,
15766 { &hf_pfcp_activation_time
,
15767 { "Activation Time", "pfcp.activation_time",
15768 FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_NTP_UTC
, NULL
, 0,
15771 { &hf_pfcp_deactivation_time
,
15772 { "Deactivation Time", "pfcp.deactivation_time",
15773 FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_NTP_UTC
, NULL
, 0,
15778 { "MAR ID", "pfcp.mar_id",
15779 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
15783 { &hf_pfcp_steering_functionality
,
15784 { "Steering Functionality", "pfcp.steering_functionality",
15785 FT_UINT8
, BASE_DEC
, VALS(pfcp_steering_functionality_vals
), 0xF,
15788 { &hf_pfcp_steering_mode
,
15789 { "Steering Mode", "pfcp.steering_mode",
15790 FT_UINT8
, BASE_DEC
, VALS(pfcp_steering_mode_vals
), 0xF,
15795 { "Weight", "pfcp.weight",
15796 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
15799 { &hf_pfcp_priority
,
15800 { "Priority", "pfcp.priority",
15801 FT_UINT8
, BASE_DEC
, VALS(pfcp_priority_vals
), 0xF,
15805 { &hf_pfcp_ue_ip_address_pool_length
,
15806 { "UE IP address Pool Identity Length", "pfcp.ue_ip_address_pool_length",
15807 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
15810 { &hf_pfcp_ue_ip_address_pool_identity
,
15811 { "UE IP address Pool Identity", "pfcp.ue_ip_address_pool_identity",
15812 FT_BYTES
, BASE_SHOW_ASCII_PRINTABLE
, NULL
, 0x0,
15816 { &hf_pfcp_alternative_smf_ip_address_flags_ppe
,
15817 { "PPE (Preferred PFCP Entity)", "pfcp.alternative_smf_ip_address_flags.ppe",
15818 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
15821 { &hf_pfcp_alternative_smf_ip_address_ipv4
,
15822 { "IPv4 address", "pfcp.alternative_smf_ip_address.ipv4",
15823 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
15826 { &hf_pfcp_alternative_smf_ip_address_ipv6
,
15827 { "IPv6 address", "pfcp.alternative_smf_ip_address.ipv6",
15828 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
15832 { &hf_pfcp_packet_replication_and_detection_carry_on_information_flags_b0_priueai
,
15833 { "PRIUEAI (Packet Replication Information – UE/PDU Session Address Indication)", "pfcp.packet_replication_and_detection_carry_on_information.flags.priueai",
15834 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
15837 { &hf_pfcp_packet_replication_and_detection_carry_on_information_flags_b1_prin19i
,
15838 { "PRIN19I (Packet Replication Information - N19 Indication)", "pfcp.packet_replication_and_detection_carry_on_information.flags.prin19i",
15839 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
15842 { &hf_pfcp_packet_replication_and_detection_carry_on_information_flags_b2_prin6i
,
15843 { "PRIN6I (Packet Replication Information - N6 Indication)", "pfcp.packet_replication_and_detection_carry_on_information.flags.prin6i",
15844 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
15847 { &hf_pfcp_packet_replication_and_detection_carry_on_information_flags_b3_dcaroni
,
15848 { "DCARONI (Detection Carry-On Indication)", "pfcp.packet_replication_and_detection_carry_on_information.flags.dcaroni",
15849 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x08,
15853 { &hf_pfcp_validity_time_value
,
15854 { "Validity Time value", "pfcp.validity_time_value",
15855 FT_UINT32
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_seconds
), 0x0,
15858 { &hf_pfcp_validity_time_str
,
15859 { "Validity Time", "pfcp.validity_time",
15860 FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_UTC
, NULL
, 0x0,
15864 { &hf_pfcp_number_of_reports
,
15865 { "Number of Reports", "pfcp.number_of_reports",
15866 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
15870 { &hf_pfcp_pfcpasrsp_flags_flags_b0_psrei
,
15871 { "PSREI (PFCP Session Retained Indication)", "pfcp.asrsp_flags.flags.psrei",
15872 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
15875 { &hf_pfcp_pfcpasrsp_flags_flags_b1_uupsi
,
15876 { "UUPSI (UPF configured for IPUPS indication)", "pfcp.asrsp_flags.flags.uupsi",
15877 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
15881 { &hf_pfcp_cp_pfcp_entity_ip_address_ipv4
,
15882 { "IPv4 address", "pfcp.cp_pfcp_entity_ip_address.ipv4",
15883 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
15886 { &hf_pfcp_cp_pfcp_entity_ip_address_ipv6
,
15887 { "IPv6 address", "pfcp.cp_pfcp_entity_ip_address.ipv6",
15888 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
15892 { &hf_pfcp_pfcpsereq_flags_flags_b0_resti
,
15893 { "RESTI (Restoration Indication)", "pfcp.sereq_flags.flags.resti",
15894 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
15897 { &hf_pfcp_pfcpsereq_flags_flags_b1_sumpc
,
15898 { "SUMPC (Stop of Measurement of Pause of Charging)", "pfcp.sereq_flags.flags.sumpc",
15899 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
15902 { &hf_pfcp_pfcpsereq_flags_flags_b2_hrsbom
,
15903 { "HRSBOM (HR-SBO Mode)", "pfcp.sereq_flags.flags.hrsbom",
15904 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
15908 { &hf_pfcp_ip_multicast_address_flags_b2_range
,
15909 { "RANGE", "pfcp.ip_multicast_address.flags.range",
15910 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
15913 { &hf_pfcp_ip_multicast_address_flags_b3_any
,
15914 { "ANY", "pfcp.ip_multicast_address.flags.any",
15915 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x08,
15918 { &hf_pfcp_ip_multicast_address_start_ipv4
,
15919 { "(Start) IPv4 address", "pfcp.ip_multicast_address.start_ipv4",
15920 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
15923 { &hf_pfcp_ip_multicast_address_start_ipv6
,
15924 { "(Start) IPv6 address", "pfcp.ip_multicast_address.start_ipv6",
15925 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
15928 { &hf_pfcp_ip_multicast_address_end_ipv4
,
15929 { "(End) IPv4 address", "pfcp.ip_multicast_address.end_ipv4",
15930 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
15933 { &hf_pfcp_ip_multicast_address_end_ipv6
,
15934 { "(End) IPv6 address", "pfcp.ip_multicast_address.end_ipv6",
15935 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
15939 { &hf_pfcp_source_ip_address_flags_b2_mpl
,
15940 { "MPL (Mask/Prefix Length)", "pfcp.source_ip_address.flags.mpl",
15941 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
15944 { &hf_pfcp_source_ip_address_ipv4
,
15945 { "IPv4 address", "pfcp.source_ip_address.ipv4",
15946 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
15949 { &hf_pfcp_source_ip_address_ipv6
,
15950 { "IPv6 address", "pfcp.source_ip_address.ipv6",
15951 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
15954 { &hf_pfcp_source_ip_address_mask_prefix_lengt
,
15955 { "Mask/Prefix Length", "pfcp.source_ip_address.mpl",
15956 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
15960 { &hf_pfcp_packet_rate_status_flags_b0_ul
,
15961 { "UL", "pfcp.packet_rate_status.flags.ul",
15962 FT_BOOLEAN
, 8, NULL
, 0x01,
15965 { &hf_pfcp_packet_rate_status_flags_b1_dl
,
15966 { "DL", "pfcp.packet_rate_status.flags.dl",
15967 FT_BOOLEAN
, 8, NULL
, 0x02,
15970 { &hf_pfcp_packet_rate_status_flags_b2_apr
,
15971 { "APR", "pfcp.packet_rate_status.flags.apr",
15972 FT_BOOLEAN
, 8, NULL
, 0x04,
15975 { &hf_pfcp_packet_rate_status_ul
,
15976 { "UL (remaining uplink packet limit)", "pfcp.packet_rate_status.tovol",
15977 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
15980 { &hf_pfcp_packet_rate_status_dl
,
15981 { "DL (remaining downlink packet limit)", "pfcp.packet_rate_status.ulvol",
15982 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
15985 { &hf_pfcp_packet_rate_status_apr_ul
,
15986 { "Additional UL (remaining uplink packet limit)", "pfcp.packet_rate_status.apr_tovol",
15987 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
15990 { &hf_pfcp_packet_rate_status_apr_dl
,
15991 { "Additional DL (remaining downlink packet limit)", "pfcp.packet_rate_status.apr_ulvol",
15992 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
15995 { &hf_pfcp_packet_rate_status_validity_time
,
15996 { "Rate Status Validity Time value", "pfcp.packet_rate_status.validity_time",
15997 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
16001 { &hf_pfcp_create_bridge_router_info_flags_b0_bii
,
16002 { "BII (Bridge Information Indication)", "pfcp.create_bridge_router_info.flags.bii",
16003 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16006 { &hf_pfcp_create_bridge_router_info_flags_b1_rii
,
16007 { "RII (Router Information Indication)", "pfcp.create_bridge_router_info.flags.rii",
16008 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
16012 { &hf_pfcp_port_number
,
16013 { "Port Number value", "pfcp.port_number.value",
16014 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
16018 { &hf_pfcp_nw_tt_port_number
,
16019 { "NW-TT Port Number value", "pfcp.nw_tt_port_number.value",
16020 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
16024 { &hf_pfcp_5gs_user_plane_node_id_flags_b0_bid
,
16025 { "BID", "pfcp.5gs_user_plane_node_id.flags.sour",
16026 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16029 { &hf_pfcp_5gs_user_plane_node_id_value
,
16030 { "Use Plane Node value", "pfcp.5gs_user_plane_node_id.value",
16031 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
16035 { &hf_pfcp_port_management_information
,
16036 { "Port Management Information", "pfcp.port_management_information",
16037 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
16041 { &hf_pfcp_requested_clock_drift_control_information_flags_b0_rrto
,
16042 { "RRTO (Request to Report Time Offset)", "pfcp.requested_clock_drift_control_information.flags.rrto",
16043 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16046 { &hf_pfcp_requested_clock_drift_control_information_flags_b1_rrcr
,
16047 { "RRCR (Request to Report Cumulative RateRatio)", "pfcp.requested_clock_drift_control_information.flags.rrcr",
16048 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
16052 { &hf_pfcp_time_domain_number_value
,
16053 { "Time Domain Number value", "pfcp.time_domain_number_value",
16054 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
16058 { &hf_pfcp_time_offset_threshold
,
16059 { "Time Offset Threshold", "pfcp.time_offset_threshold",
16060 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
16064 { &hf_pfcp_cumulative_rate_ratio_threshold
,
16065 { "Cumulative rateRatio Threshold", "pfcp.cumulative_rate_ratio_threshold",
16066 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
16071 { &hf_pfcp_time_offset_measurement
,
16072 { "Time Offset Measurement", "pfcp.time_offset_measurement",
16073 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
16077 { &hf_pfcp_cumulative_rate_ratio_measurement
,
16078 { "Cumulative rateRatio Measurement", "pfcp.cumulative_rate_ratio_measurement",
16079 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
16084 { "SRR ID value", "pfcp.srr_id_value",
16085 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
16089 { &hf_pfcp_requested_access_availability_control_information_flags_b0_rrca
,
16090 { "RRCA (Request to Report Change in Access availability)", "pfcp.requested_access_availability_control_information.flags.rrca",
16091 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16095 { &hf_pfcp_availability_type
,
16096 { "Failed Rule ID Type", "pfcp.failed_rule_id_type",
16097 FT_UINT8
, BASE_DEC
, VALS(pfcp_availability_status_vals
), 0xC,
16100 { &hf_pfcp_availability_status
,
16101 { "Failed Rule ID Type", "pfcp.failed_rule_id_type",
16102 FT_UINT8
, BASE_DEC
, VALS(pfcp_availability_type_vals
), 0x3,
16106 { &hf_pfcp_mptcp_control_information_flags_b0_tci
,
16107 { "TCI (Transport Converter Indication)", "pfcp.mptcp_control_information.flags.tci",
16108 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16112 { &hf_pfcp_atsss_ll_control_information_flags_b0_lli
,
16113 { "LLI: ATSSS-LL steering functionality is required", "pfcp.atsss_ll_control_information.flags.lli",
16114 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16118 { &hf_pfcp_pmf_control_information_flags_b0_pmfi
,
16119 { "PMFI (PMF functionality is required)", "pfcp.pmf_control_information.flags.pmfi",
16120 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16123 { &hf_pfcp_pmf_control_information_flags_b1_drtti
,
16124 { "DRTTI (Disallow PMF RTT Indication)", "pfcp.pmf_control_information.flags.drtti",
16125 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
16128 { &hf_pfcp_pmf_control_information_flags_b2_pqpm
,
16129 { "PQPM (Per Qos flow Performance Measurement indication)", "pfcp.pmf_control_information.flags.pqpm",
16130 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
16133 { &hf_pfcp_pmf_control_information_number_of_qfi
,
16134 { "Number of QFI", "pfcp.pmf_control_information.number_of_qfi",
16135 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
16139 { &hf_pfcp_mptcp_address_information_flags_b0_v4
,
16140 { "V4", "pfcp.mptcp_ip_address_information.flags.v4",
16141 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16144 { &hf_pfcp_mptcp_address_information_flags_b1_v6
,
16145 { "V6", "pfcp.mptcp_ip_address_information.flags.v6",
16146 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
16149 { &hf_pfcp_mptcp_proxy_type
,
16150 { "MPTCP proxy type", "pfcp.mptcp_proxy.type",
16151 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
16154 { &hf_pfcp_mptcp_proxy_port
,
16155 { "MPTCP proxy port", "pfcp.mptcp_proxy.port",
16156 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
16159 { &hf_pfcp_mptcp_proxy_ip_address_ipv4
,
16160 { "MPTCP proxy IPv4 address", "pfcp.mptcp_proxy.ipv4",
16161 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
16164 { &hf_pfcp_mptcp_proxy_ip_address_ipv6
,
16165 { "MPTCP proxy IPv6 address", "pfcp.mptcp_proxy.ipv6",
16166 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
16170 { &hf_pfcp_link_specific_multipath_ip_address_flags_b0_v4
,
16171 { "V4", "pfcp.link_specific_multipath_ip_address.flags.v4",
16172 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16175 { &hf_pfcp_link_specific_multipath_ip_address_flags_b1_v6
,
16176 { "V6", "pfcp.link_specific_multipath_ip_address.flags.v6",
16177 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
16180 { &hf_pfcp_link_specific_multipath_ip_address_flags_b2_nv4
,
16181 { "NV4", "pfcp.link_specific_multipath_ip_address.flags.nv4",
16182 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
16185 { &hf_pfcp_link_specific_multipath_ip_address_flags_b3_nv6
,
16186 { "NV6", "pfcp.link_specific_multipath_ip_address.flags.nv6",
16187 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x08,
16190 { &hf_pfcp_link_specific_multipath_ip_address_3gpp_ipv4
,
16191 { "Link-Specific IPv4 Address for 3GPP Access", "pfcp.link_specific_multipath_ip_address.3gpp.ipv4",
16192 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
16195 { &hf_pfcp_link_specific_multipath_ip_address_3gpp_ipv6
,
16196 { "Link-Specific IPv6 Address for 3GPP Access", "pfcp.link_specific_multipath_ip_address.3gpp.ipv6",
16197 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
16200 { &hf_pfcp_link_specific_multipath_ip_address_non3gpp_ipv4
,
16201 { "Link-Specific IPv4 Address for Non-3GPP Access", "pfcp.link_specific_multipath_ip_address.non3gpp.ipv4",
16202 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
16205 { &hf_pfcp_link_specific_multipath_ip_address_non3gpp_ipv6
,
16206 { "Link-Specific IPv6 Address for Non-3GPP Access", "pfcp.link_specific_multipath_ip_address.non3gpp.ipv6",
16207 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
16211 { &hf_pfcp_pmf_address_information_flags_b0_v4
,
16212 { "V4", "pfcp.pmf_address_information.flags.v4",
16213 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16216 { &hf_pfcp_pmf_address_information_flags_b1_v6
,
16217 { "V6", "pfcp.pmf_address_information.flags.v6",
16218 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
16221 { &hf_pfcp_pmf_address_information_flags_b2_mac
,
16222 { "MAC", "pfcp.pmf_address_information.flags.mac",
16223 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
16226 { &hf_pfcp_pmf_address_ipv4
,
16227 { "PMF IPv4 Address", "pfcp.pmf_address_information.ipv4",
16228 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
16231 { &hf_pfcp_pmf_address_ipv6
,
16232 { "PMF IPv6 Address", "pfcp.pmf_address_information.ipv6",
16233 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
16236 { &hf_pfcp_pmf_port_3gpp
,
16237 { "PMF port for 3GPP", "pfcp.pmf_address_information.port_3gpp",
16238 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
16241 { &hf_pfcp_pmf_port_non3gpp
,
16242 { "PMF port for Non-3GPP", "pfcp.pmf_address_information.port_non3gpp",
16243 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
16246 { &hf_pfcp_pmf_mac_address_3gpp
,
16247 { "MAC Address for 3GPP", "pfcp.pmf_address_information.mac_address_3gpp",
16248 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
16251 { &hf_pfcp_pmf_mac_address_non3gpp
,
16252 { "MAC Address for Non-3GPP", "pfcp.pmf_address_information.mac_address_non3gpp",
16253 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
16257 { &hf_pfcp_atsss_ll_information_flags_b0_lli
,
16258 { "LLI: ATSSS-LL steering functionality have been allocated", "pfcp.atsss_ll_information.flags.lli",
16259 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16263 { &hf_pfcp_data_network_access_identifier
,
16264 { "Data Network Access Identifier", "pfcp.data_network_access_identifier",
16265 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
16269 { &hf_pfcp_packet_delay_milliseconds
,
16270 { "Delay Value in milliseconds", "pfcp.average_packet_delay.milliseconds",
16271 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
16275 { &hf_pfcp_qos_report_trigger_flags_b0_per
,
16276 { "PER (Periodic Reporting)", "pfcp.qos_report_trigger.flags.v4",
16277 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16280 { &hf_pfcp_qos_report_trigger_flags_b1_thr
,
16281 { "THR (Event triggered based on Threshold)", "pfcp.qos_report_trigger.flags.thr",
16282 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
16285 { &hf_pfcp_qos_report_trigger_flags_b2_ire
,
16286 { "IRE (Immediate Report)", "pfcp.qos_report_trigger.flags.ire",
16287 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
16291 { &hf_pfcp_gtp_u_path_interface_type_flags_b0_n9
,
16292 { "N9", "pfcp.qos_report_trigtp_u_path_interface_typegger.flags.n9",
16293 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16296 { &hf_pfcp_gtp_u_path_interface_type_flags_b1_n3
,
16297 { "N3", "pfcp.gtp_u_path_interface_type.flags.n3",
16298 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
16302 { &hf_pfcp_requested_qos_monitoring_flags_b0_dlpd
,
16303 { "DLPD (Downlink Packet Delay)", "pfcp.requested_qos_monitoring.flags.dlpd",
16304 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16307 { &hf_pfcp_requested_qos_monitoring_flags_b1_ulpd
,
16308 { "ULPD (Uplink Packet Delay)", "pfcp.requested_qos_monitoring.flags.ulpd",
16309 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
16312 { &hf_pfcp_requested_qos_monitoring_flags_b2_rppd
,
16313 { "RPPD (Round Trip Packet Delay)", "pfcp.requested_qos_monitoring.flags.rppd",
16314 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
16317 { &hf_pfcp_requested_qos_monitoring_flags_b3_gtpupm
,
16318 { "GTPUPM (GTP-U Path Monitoring)", "pfcp.requested_qos_monitoring.flags.gtpupm",
16319 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x08,
16322 { &hf_pfcp_requested_qos_monitoring_flags_b4_dlci
,
16323 { "DLCI (Downlink Congestion Information)", "pfcp.requested_qos_monitoring.flags.dlci",
16324 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x10,
16327 { &hf_pfcp_requested_qos_monitoring_flags_b5_ulci
,
16328 { "ULCI (Uplink Congestion Information)", "pfcp.requested_qos_monitoring.flags.ulci",
16329 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x20,
16332 { &hf_pfcp_requested_qos_monitoring_flags_b6_dlpr
,
16333 { "DLPR (Downlink Packet Rate)", "pfcp.requested_qos_monitoring.flags.dlpr",
16334 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x40,
16337 { &hf_pfcp_requested_qos_monitoring_flags_b7_ulpr
,
16338 { "ULPR (Uplink Packet Rate)", "pfcp.requested_qos_monitoring.flags.ulpr",
16339 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x80,
16343 { &hf_pfcp_reporting_frequency_flags_b0_evett
,
16344 { "EVETT (Event Triggered QoS monitoring reporting)", "pfcp.reporting_frequency.flags.evett",
16345 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16348 { &hf_pfcp_reporting_frequency_flags_b1_perio
,
16349 { "PERIO (Periodic QoS monitoring reporting)", "pfcp.reporting_frequency.flags.perio",
16350 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
16353 { &hf_pfcp_reporting_frequency_flags_b2_sesrl
,
16354 { "SESRL (Session Released QoS monitoring reporting) (Deprecated in R18.1)", "pfcp.reporting_frequency.flags.sesrl",
16355 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
16359 { &hf_pfcp_packet_delay_thresholds_flags_b0_dl
,
16360 { "DL (Downlink)", "pfcp.packet_delay_thresholds.flags.dl",
16361 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16364 { &hf_pfcp_packet_delay_thresholds_flags_b1_ul
,
16365 { "UL (Uplink)", "pfcp.packet_delay_thresholds.flags.ul",
16366 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
16369 { &hf_pfcp_packet_delay_thresholds_flags_b2_rp
,
16370 { "RP (Round Trip)", "pfcp.packet_delay_thresholds.flags.rp",
16371 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
16374 { &hf_pfcp_packet_delay_thresholds_downlink
,
16375 { "Downlink packet delay threshold (milliseconds)", "pfcp.packet_delay_thresholds.downlink",
16376 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
16379 { &hf_pfcp_packet_delay_thresholds_uplink
,
16380 { "Downlink packet delay threshold (milliseconds)", "pfcp.packet_delay_thresholds.uplink",
16381 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
16384 { &hf_pfcp_packet_delay_thresholds_roundtrip
,
16385 { "Round trip packet delay threshold (milliseconds)", "pfcp.packet_delay_thresholds.roundtrip",
16386 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
16390 { &hf_pfcp_minimum_wait_time_seconds
,
16391 { "The Minimum Wait Time (seconds)", "pfcp.minimum_wait_time.seconds",
16392 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
16396 { &hf_pfcp_qos_monitoring_measurement_flags_b0_dlpd
,
16397 { "DLPD (Downlink Packet Delay)", "pfcp.qos_monitoring_measurement.flags.dlpd",
16398 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16401 { &hf_pfcp_qos_monitoring_measurement_flags_b1_ulpd
,
16402 { "ULPD (Uplink Packet Delay)", "pfcp.qos_monitoring_measurement.flags.ulpd",
16403 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
16406 { &hf_pfcp_qos_monitoring_measurement_flags_b2_rppd
,
16407 { "RPPD (Round Trip Packet Delay)", "pfcp.qos_monitoring_measurement.flags.rppd",
16408 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
16411 { &hf_pfcp_qos_monitoring_measurement_flags_b3_plmf
,
16412 { "PLMF (Packet Delay Measurement Failure)", "pfcp.qos_monitoring_measurement.flags.plmf",
16413 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x08,
16416 { &hf_pfcp_qos_monitoring_measurement_flags_b4_dlci
,
16417 { "DLCI (Downlink Congestion Info)", "pfcp.qos_monitoring_measurement.flags.dlci",
16418 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x10,
16421 { &hf_pfcp_qos_monitoring_measurement_flags_b5_ulci
,
16422 { "ULCI (Uplink Congestion Info)", "pfcp.qos_monitoring_measurement.flags.ulci",
16423 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x20,
16427 { &hf_pfcp_qos_monitoring_measurement_downlink_packet_delay
,
16428 { "Downlink packet delay (milliseconds)", "pfcp.qos_monitoring_measurement.downlink_packet_delay",
16429 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
16432 { &hf_pfcp_qos_monitoring_measurement_uplink_packet_delay
,
16433 { "Downlink packet delay (milliseconds)", "pfcp.qos_monitoring_measurement.uplink_packet_delay",
16434 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
16437 { &hf_pfcp_qos_monitoring_measurement_roundtrip
,
16438 { "Round trip packet delay (milliseconds)", "pfcp.qos_monitoring_measurement.roundtrip",
16439 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
16442 { &hf_pfcp_qos_monitoring_measurement_downlink_congestion_information
,
16443 { "Downlink Congestion information", "pfcp.qos_monitoring_measurement.downlink_congestion_information",
16444 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
16447 { &hf_pfcp_qos_monitoring_measurement_uplink_congestion_information
,
16448 { "Uplink Congestion information", "pfcp.qos_monitoring_measurement.uplink_congestion_information",
16449 FT_UINT8
, BASE_DEC_HEX
, NULL
, 0x0,
16452 { &hf_pfcp_qos_monitoring_measurement_downlink_packet_rate
,
16453 { "Average Downlink packet rate (kilobits per second)", "pfcp.qos_monitoring_measurement.downlink_packet_rate",
16454 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
16457 { &hf_pfcp_qos_monitoring_measurement_uplink_packet_rate
,
16458 { "Average Uplink packet rate (kilobits per second)", "pfcp.qos_monitoring_measurement.uplink_packet_rate",
16459 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
16463 { &hf_pfcp_mt_edt_control_information_flags_b0_rdsi
,
16464 { "RDSI (Reporting DL data packets Size Indication)", "pfcp.mt_edt_control_information.flags.rdsi",
16465 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16469 { &hf_pfcp_dl_data_packets_size
,
16470 { "DL Data Packets Size", "pfcp.dl_data_packets_size",
16471 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
16475 { &hf_pfcp_qer_control_indications_o5_b0_rcsr
,
16476 { "RCSR (Rate Control Status Reporting)", "pfcp.qer_control_indications.rcsr",
16477 FT_BOOLEAN
, 8, NULL
, 0x01,
16481 { &hf_pfcp_nf_instance_id
,
16482 { "NF Instance ID", "pfcp.nf_instance_id",
16483 FT_GUID
, BASE_NONE
, NULL
, 0x0,
16487 { &hf_pfcp_s_nssai_sst
,
16488 { "SST", "pfcp.s_nssai_sst.sst",
16489 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
16492 { &hf_pfcp_s_nssai_sd
,
16493 { "SD", "pfcp.s_nssai_sst.sd",
16494 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
16498 { &hf_pfcp_ip_version_flags_b1_v6
,
16499 { "V6 (IPv6)", "pfcp.ip_version.v6",
16500 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
16503 { &hf_pfcp_ip_version_flags_b0_v4
,
16504 { "V4 (IPv4)", "pfcp.ip_version.v4",
16505 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16509 { &hf_pfcp_pfcpasreq_flags_flags_b0_uupsi
,
16510 { "UUPSI (UPF configured for IPUPS indication)", "pfcp.asreq_flags.flags.uupsi",
16511 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16515 { &hf_pfcp_data_status_flags_b0_drop
,
16516 { "DROP (First DL packet is discared by UP function)", "pfcp.data_status.flags.drop",
16517 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16520 { &hf_pfcp_data_status_flags_b1_buff
,
16521 { "BUFF (First DL packet is received and buffered by UP function)", "pfcp.data_status.flags.buff",
16522 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
16526 { &hf_pfcp_rds_configuration_information_flags_b0_rds
,
16527 { "RDS (Reliable Data Service)", "pfcp.rds_configuration_information.flags.rds",
16528 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16532 { &hf_pfcp_multipath_application_indication_flags_b0_mtai
,
16533 { "MTAI (MPTCP Applicable Indication)", "pfcp.multipath_application_indication.flags.mtai",
16534 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16537 { &hf_pfcp_multipath_application_indication_flags_b1_mqai
,
16538 { "MQAI (MPQUIC Applicable Indication)", "pfcp.multipath_application_indication.flags.mqai",
16539 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
16543 { &hf_pfcp_user_plane_node_management_information_container
,
16544 { "Predefined Rules Name", "pfcp.user_plane_node_management_information_container",
16545 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
16549 { &hf_pfcp_number_of_ue_ip_addresses_b0_ipv4
,
16550 { "IPv4", "pfcp.number_of_ue_ip_addresses.v4",
16551 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16554 { &hf_pfcp_number_of_ue_ip_addresses_b1_ipv6
,
16555 { "IPv6", "pfcp.number_of_ue_ip_addresses.v6",
16556 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
16559 { &hf_pfcp_number_of_ue_ip_addresses_ipv4
,
16560 { "Number of UE IPv4 Addresses", "pfcp.number_of_ue_ip_addresses.ipv4addresses",
16561 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
16564 { &hf_pfcp_number_of_ue_ip_addresses_ipv6
,
16565 { "Number of UE IPv6 Addresses", "pfcp.number_of_ue_ip_addresses.ipv6addresses",
16566 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
16570 { &hf_pfcp_validity_timer
,
16571 { "Validity Timer", "pfcp.validity_timer",
16572 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
16576 { &hf_pfcp_rattype
,
16577 { "RAT Type", "pfcp.rattype",
16578 FT_UINT8
, BASE_DEC
, VALS(pfcp_rattype_vals
), 0x0,
16582 { &hf_pfcp_l2tp_user_authentication_proxy_authen_type_value
,
16583 { "Proxy Authen Type Value", "pfcp.l2tp_user_authentication.proxy_authen_type_value",
16584 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
16587 { &hf_pfcp_l2tp_user_authentication_b0_pan
,
16588 { "PAN (Proxy Authen Name)", "pfcp.l2tp_user_authentication.flags.pan",
16589 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16592 { &hf_pfcp_l2tp_user_authentication_b1_pac
,
16593 { "PAC (Proxy Authen Challenge)", "pfcp.l2tp_user_authentication.flags.pac",
16594 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
16597 { &hf_pfcp_l2tp_user_authentication_b2_par
,
16598 { "PAR (Proxy Authen Response)", "pfcp.l2tp_user_authentication.flags.par",
16599 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
16602 { &hf_pfcp_l2tp_user_authentication_b3_pai
,
16603 { "PAI (Proxy Authen UD)", "pfcp.l2tp_user_authentication.flags.pai",
16604 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x08,
16607 { &hf_pfcp_l2tp_user_authentication_proxy_authen_name_len
,
16608 { "Proxy Authen Name Length", "pfcp.l2tp_user_authentication.pan_len",
16609 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
16612 { &hf_pfcp_l2tp_user_authentication_proxy_authen_name
,
16613 { "Proxy Authen Name", "pfcp.l2tp_user_authentication.pan",
16614 FT_STRING
, BASE_NONE
, NULL
, 0,
16617 { &hf_pfcp_l2tp_user_authentication_proxy_authen_challenge_len
,
16618 { "Proxy Authen Challenge Length", "pfcp.l2tp_user_authentication.pac_len",
16619 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
16622 { &hf_pfcp_l2tp_user_authentication_proxy_authen_challenge
,
16623 { "Proxy Authen Challenge", "pfcp.l2tp_user_authentication.pac",
16624 FT_STRING
, BASE_NONE
, NULL
, 0,
16627 { &hf_pfcp_l2tp_user_authentication_proxy_authen_response_len
,
16628 { "Proxy Authen Response Length", "pfcp.l2tp_user_authentication.par_len",
16629 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
16632 { &hf_pfcp_l2tp_user_authentication_proxy_authen_response
,
16633 { "Proxy Authen Response", "pfcp.l2tp_user_authentication.par",
16634 FT_STRING
, BASE_NONE
, NULL
, 0,
16637 { &hf_pfcp_l2tp_user_authentication_proxy_authen_id
,
16638 { "Proxy Authen ID", "pfcp.l2tp_user_authentication.pai",
16639 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
16643 { &hf_pfcp_lns_address_ipv4
,
16644 { "IPv4 address", "pfcp.lns_address.ipv4",
16645 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
16648 { &hf_pfcp_lns_address_ipv6
,
16649 { "IPv6 address", "pfcp.lns_address.ipv6",
16650 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
16654 { &hf_pfcp_tunnel_preference_value
,
16655 { "Tunnel Preference Value", "pfcp.tunnel_preference_value",
16656 FT_UINT24
, BASE_DEC
, NULL
, 0,
16660 { &hf_pfcp_calling_number_value
,
16661 { "Calling Number Value", "pfcp.calling_number_value",
16662 FT_STRING
, BASE_NONE
, NULL
, 0,
16665 { &hf_pfcp_called_number_value
,
16666 { "Called Number Value", "pfcp.called_number_value",
16667 FT_STRING
, BASE_NONE
, NULL
, 0,
16671 { &hf_pfcp_l2tp_session_indications_o5_b0_reuia
,
16672 { "REUIA", "pfcp.l2tp_session_indications.reuia",
16673 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x01,
16674 "Request UE IP Address", HFILL
}
16676 { &hf_pfcp_l2tp_session_indications_o5_b1_redsa
,
16677 { "REDSA", "pfcp.l2tp_session_indications.redsa",
16678 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x02,
16679 "Request DNS Server Address", HFILL
}
16681 { &hf_pfcp_l2tp_session_indications_o5_b2_rensa
,
16682 { "RENSA", "pfcp.l2tp_session_indications.rensa",
16683 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x04,
16684 "Request NBNS Server Address", HFILL
}
16687 { &hf_pfcp_maximum_receive_unit
,
16688 { "Maximum Receive Unit", "pfcp.maximum_receive_unit",
16689 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
16693 { &hf_pfcp_thresholds_flags_b0_rtt
,
16694 { "RTT", "pfcp.thresholds.flags.rtt",
16695 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16698 { &hf_pfcp_thresholds_flags_b1_plr
,
16699 { "PLR (Packet Loss Rate)", "pfcp.thresholds.flags.plr",
16700 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
16703 { &hf_pfcp_thresholds_rtt
,
16704 { "RTT (in milliseconds)", "pfcp.thresholds.rtt",
16705 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
16708 { &hf_pfcp_thresholds_plr
,
16709 { "Packet Loss Rate (in percent)", "pfcp.thresholds.plr",
16710 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
16714 { &hf_pfcp_l2tp_steering_mode_indications_o5_b0_albi
,
16715 { "ALBI", "pfcp.l2tp_session_indications.reuia",
16716 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x01,
16717 "Autonomous Load Balancing Indicator", HFILL
}
16719 { &hf_pfcp_l2tp_steering_mode_indications_o5_b1_ueai
,
16720 { "UEAI", "pfcp.l2tp_session_indications.redsa",
16721 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x02,
16722 "UE Assistance Indicator", HFILL
}
16725 { &hf_pfcp_group_id
,
16726 { "Group ID", "pfcp.group_id",
16727 FT_STRING
, BASE_NONE
, NULL
, 0x0,
16731 { &hf_pfcp_cp_ip_address_ipv4
,
16732 { "IPv4 address", "pfcp.cp_ip_address.ipv4",
16733 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
16736 { &hf_pfcp_cp_ip_address_ipv6
,
16737 { "IPv6 address", "pfcp.cp_ip_address.ipv6",
16738 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
16742 { &hf_pfcp_ip_address_and_port_number_replacement_flag_b0_v4
,
16743 { "DIPV4", "pfcp.ip_address_and_port_number_replacement.flag.dipv4",
16744 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16747 { &hf_pfcp_ip_address_and_port_number_replacement_flag_b1_v6
,
16748 { "DIPV6", "pfcp.ip_address_and_port_number_replacement.flag.dipv6",
16749 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
16752 { &hf_pfcp_ip_address_and_port_number_replacement_flag_b2_dpn
,
16753 { "DPN", "pfcp.ip_address_and_port_number_replacement.flag.dpn",
16754 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
16757 { &hf_pfcp_ip_address_and_port_number_replacement_flag_b3_sipv4
,
16758 { "SIPV4", "pfcp.ip_address_and_port_number_replacement.flag.sipv4",
16759 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x08,
16762 { &hf_pfcp_ip_address_and_port_number_replacement_flag_b4_sipv6
,
16763 { "SIPV6", "pfcp.ip_address_and_port_number_replacement.flag.sipv6",
16764 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x10,
16767 { &hf_pfcp_ip_address_and_port_number_replacement_flag_b5_spn
,
16768 { "SPN", "pfcp.ip_address_and_port_number_replacement.flag.spn",
16769 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x20,
16772 { &hf_pfcp_ip_address_and_port_number_replacement_flag_b6_umn6rs
,
16773 { "UMN6RS", "pfcp.ip_address_and_port_number_replacement.flag.umn6rs",
16774 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x20,
16778 { &hf_pfcp_ip_address_and_port_number_replacement_destination_ipv4
,
16779 { "Destination IPv4 address", "pfcp.ip_address_and_port_number_replacement.dipv4",
16780 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
16783 { &hf_pfcp_ip_address_and_port_number_replacement_destination_ipv6
,
16784 { "Destination IPv6 address", "pfcp.ip_address_and_port_number_replacement.dipv6",
16785 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
16788 { &hf_pfcp_ip_address_and_port_number_replacement_destination_port
,
16789 { "Destination Port Number", "pfcp.ip_address_and_port_number_replacement.dpn",
16790 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
16793 { &hf_pfcp_ip_address_and_port_number_replacement_source_ipv4
,
16794 { "Source IPv4 address", "pfcp.ip_address_and_port_number_replacement.sipv4",
16795 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
16798 { &hf_pfcp_ip_address_and_port_number_replacement_source_ipv6
,
16799 { "Source IPv6 address", "pfcp.ip_address_and_port_number_replacement.sipv6",
16800 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
16803 { &hf_pfcp_ip_address_and_port_number_replacement_source_port
,
16804 { "Source Port Number", "pfcp.ip_address_and_port_number_replacement.spn",
16805 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
16809 { &hf_pfcp_dns_query_filter_pattern_len
,
16810 { "DNS Query Filter Pattern Length", "pfcp.dns_query_filter.pattern_len",
16811 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
16814 { &hf_pfcp_dns_query_filter_pattern
,
16815 { "DNS Query Filter Pattern", "pfcp.dns_query_filter.pattern",
16816 FT_STRING
, BASE_NONE
, NULL
, 0,
16820 { &hf_pfcp_event_notification_uri
,
16821 { "Event Notification URI", "pfcp.event_notification_uri",
16822 FT_STRING
, BASE_NONE
, NULL
, 0,
16826 { &hf_pfcp_notification_correlation_id
,
16827 { "QER Correlation ID", "pfcp.qer_correlation_id",
16828 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
16832 { &hf_pfcp_reporting_flags_o5_b0_dupl
,
16833 { "DUPL (Duplication Notification)", "pfcp.reporting_flags.dupl",
16834 FT_BOOLEAN
, 8, NULL
, 0x01,
16838 { &hf_pfcp_mbs_session_identifier_flag_b0_tmgi
,
16839 { "TGMI", "pfcp.session_identifier.flag.tmgi",
16840 FT_BOOLEAN
, 8, NULL
, 0x01,
16843 { &hf_pfcp_mbs_session_identifier_flag_b1_ssmi
,
16844 { "SSMI", "pfcp.session_identifier.flag.ssmi",
16845 FT_BOOLEAN
, 8, NULL
, 0x02,
16848 { &hf_pfcp_mbs_session_identifier_flag_b2_nidi
,
16849 { "NIDI", "pfcp.session_identifier.flag.nidi",
16850 FT_BOOLEAN
, 8, NULL
, 0x04,
16853 { &hf_pfcp_mbs_session_identifier_tmgi
,
16854 {"TMGI", "pfcp.mbs_session_identifier.tmgi",
16855 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
16858 { &hf_pfcp_mbs_session_identifier_source_address_type
,
16859 { "Source Address Type", "pfcp.mbs_session_identifier.source_address.type",
16860 FT_UINT8
, BASE_DEC
, NULL
, 0xC0,
16863 { &hf_pfcp_mbs_session_identifier_source_address_length
,
16864 { "Source Address Length", "pfcp.mbs_session_identifier.source_address.length",
16865 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
16868 { &hf_pfcp_mbs_session_identifier_source_address_ipv4
,
16869 { "Source IPv4 address", "pfcp.mbs_session_identifier.source_address.ipv4",
16870 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
16873 { &hf_pfcp_mbs_session_identifier_source_address_ipv6
,
16874 { "Source IPv6 address", "pfcp.mbs_session_identifier.source_address.ipv6",
16875 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
16878 { &hf_pfcp_mbs_session_identifier_nidi
,
16879 {"NIDI", "pfcp.mbs_session_identifier.nidi",
16880 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
16884 { &hf_pfcp_multicast_transport_information_endpoint_identifier
,
16885 { "Common Tunnel Endpoint Identifier", "pfcp.multicast_transport_information.endpoint_identifier",
16886 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
16889 { &hf_pfcp_multicast_transport_information_distribution_address_type
,
16890 { "Distribution Address Type", "pfcp.multicast_transport_information.distribution_address.type",
16891 FT_UINT8
, BASE_DEC
, NULL
, 0xC0,
16894 { &hf_pfcp_multicast_transport_information_distribution_address_length
,
16895 { "Distribution Address Length", "pfcp.multicast_transport_information.distribution_address.length",
16896 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
16899 { &hf_pfcp_multicast_transport_information_distribution_address_ipv4
,
16900 { "Distribution IPv4 address", "pfcp.multicast_transport_information.distribution_address.ipv4",
16901 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
16904 { &hf_pfcp_multicast_transport_information_distribution_address_ipv6
,
16905 { "Distribution IPv6 address", "pfcp.multicast_transport_information.distribution_address.ipv6",
16906 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
16909 { &hf_pfcp_multicast_transport_information_source_address_type
,
16910 { "Source Address Type", "pfcp.multicast_transport_information.source_address.type",
16911 FT_UINT8
, BASE_DEC
, NULL
, 0xC0,
16914 { &hf_pfcp_multicast_transport_information_source_address_length
,
16915 { "Source Address Length", "pfcp.multicast_transport_information.source_address.length",
16916 FT_UINT8
, BASE_DEC
, NULL
, 0x3F,
16919 { &hf_pfcp_multicast_transport_information_source_address_ipv4
,
16920 { "Source IPv4 address", "pfcp.multicast_transport_information.source_address.ipv4",
16921 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
16924 { &hf_pfcp_multicast_transport_information_source_address_ipv6
,
16925 { "Source IPv6 address", "pfcp.multicast_transport_information.source_address.ipv6",
16926 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
16930 { &hf_pfcp_mbsn4mbreq_flags_o5_b0_pllssm
,
16931 { "PLLSSM (Provide Lower Layer SSM)", "pfcp.reporting_flags.pllssm",
16932 FT_BOOLEAN
, 8, NULL
, 0x01,
16935 { &hf_pfcp_mbsn4mbreq_flags_o5_b1_jmbssm
,
16936 { "JMBSSM (Join MBS Session SSM)", "pfcp.reporting_flags.jmbssm",
16937 FT_BOOLEAN
, 8, NULL
, 0x02,
16940 { &hf_pfcp_mbsn4mbreq_flags_o5_b2_mbs_resti
,
16941 { "MBS RESTI (MBS Restoration Indication)", "pfcp.reporting_flags.mbs_resti",
16942 FT_BOOLEAN
, 8, NULL
, 0x04,
16946 { &hf_pfcp_local_ingress_tunnel_flags_b2_ch
,
16947 { "CH (CHOOSE)", "pfcp.local_ingress_tunnel.flags.ch",
16948 FT_BOOLEAN
, 8, NULL
, 0x04,
16951 { &hf_pfcp_local_ingress_tunnel_flags_b1_v6
,
16952 { "V6 (IPv6)", "pfcp.local_ingress_tunnel.flags.v6",
16953 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
16956 { &hf_pfcp_local_ingress_tunnel_flags_b0_v4
,
16957 { "V4 (IPv4)", "pfcp.local_ingress_tunnel.flags.v4",
16958 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
16961 { &hf_pfcp_local_ingress_tunnel_udp_port
,
16962 { "UDP Port", "pfcp.local_ingress_tunnel.udp",
16963 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
16966 { &hf_pfcp_local_ingress_tunnel_ipv4
,
16967 { "IPv4 address", "pfcp.local_ingress_tunnel.ipv4",
16968 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
16971 { &hf_pfcp_local_ingress_tunnel_ipv6
,
16972 { "IPv6 address", "pfcp.local_ingress_tunnel.ipv6",
16973 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
16977 { &hf_pfcp_mbs_unicast_parameters_id
,
16978 { "MBS Unicast Parameters ID value", "pfcp.mbs_unicast_parameters_id",
16979 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
16983 { &hf_pfcp_mbsn4resp_flags_o5_b0_nn19dt
,
16984 { "NN19DT", "pfcp.mbsn4resp_flags.nn19dt",
16985 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x01,
16986 "New N19mb Downlink Tunnel", HFILL
}
16988 { &hf_pfcp_mbsn4resp_flags_o5_b1_jmti
,
16989 { "JMTI", "pfcp.mbsn4resp_flags.jmti",
16990 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x02,
16991 "Joined N19mb Multicast Tree Indication", HFILL
}
16993 { &hf_pfcp_mbsn4resp_flags_o5_b2_n19dtr
,
16994 { "N19DTR", "pfcp.mbsn4resp_flags.n19dtr",
16995 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x04,
16996 "N19mb Downlink Tunnel Removal", HFILL
}
16999 { &hf_pfcp_tunnel_password_value
,
17000 { "Tunnel Password value", "pfcp.tunnel_password_value",
17001 FT_STRING
, BASE_NONE
, NULL
, 0x0,
17005 { &hf_pfcp_area_session_id_value
,
17006 { "Area Session ID value", "pfcp.area_session_id_value",
17007 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
17011 { &hf_pfcp_dscp_to_ppi_mapping_info_ppi_value
,
17012 { "PPI value", "pfcp.dscp_to_ppi_mapping_info_ppi_value",
17013 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
17017 { &hf_pfcp_dscp_to_ppi_mapping_info_dscp_value
,
17018 { "DSCP value", "pfcp.dscp_to_ppi_mapping_info_dscp_value",
17019 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
17023 { &hf_pfcp_pfcpsdrsp_flags_b0_puru
,
17024 { "PURU (Pending Usage Reports Unacknowledged)", "pfcp.pfcpsdrsp_flags.puru",
17025 FT_BOOLEAN
, 8, NULL
, 0x01,
17029 { &hf_pfcp_qer_indications_flags_b0_iqfis
,
17030 { "IQFIS (Insert DL MBS QFI SN)", "pfcp.qer_indications_flags.iqfis",
17031 FT_BOOLEAN
, 8, NULL
, 0x01,
17034 { &hf_pfcp_qer_indications_flags_b1_edbmi
,
17035 { "EDBMI (End Of Data Burst Marking Indication)", "pfcp.qer_indications_flags.edbmi",
17036 FT_BOOLEAN
, 8, NULL
, 0x02,
17039 { &hf_pfcp_qer_indications_flags_b2_eml4s
,
17040 { "EML4S (ECN Marking for L4S)", "pfcp.qer_indications_flags.eml4s",
17041 FT_BOOLEAN
, 8, NULL
, 0x04,
17044 { &hf_pfcp_qer_indications_flags_b3_pdusm
,
17045 { "PDUSM (PDU Set Marking)", "pfcp.qer_indications_flags.pdusm",
17046 FT_BOOLEAN
, 8, NULL
, 0x04,
17050 { &hf_pfcp_configured_time_domain_flags_b0_ctdi
,
17051 { "CTDI (Configured Time Domain Indicator)", "pfcp.qer_indications_flags.ctdi",
17052 FT_BOOLEAN
, 8, NULL
, 0x01,
17056 { &hf_pfcp_metadata
,
17057 { "Metadata", "pfcp.metadata.metadata",
17058 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
17061 { &hf_pfcp_metadata_binary_metadata
,
17062 { "Metadata - Binary data", "pfcp.metadata.binary_metadata",
17063 FT_BYTES
, BASE_NONE
, NULL
, 0x00,
17067 { &hf_pfcp_traffic_parameter_threshold_flags_b0_dl
,
17068 { "DL", "pfcp.traffic_parameter_threshold_flags.dl",
17069 FT_BOOLEAN
, 8, NULL
, 0x01,
17072 { &hf_pfcp_traffic_parameter_threshold_downlink_n6_jitter_threshold
,
17073 { "Downlink N6 Jitter Threshold", "pfcp.traffic_parameter_threshold.downlink_n6_jitter_threshold",
17074 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
17078 { &hf_pfcp_dl_periodicity_value
,
17079 { "Dl Periodicity", "pfcp.dl_periodicity.value",
17080 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
17084 { &hf_pfcp_n6_jitter_measurement_flags_b0_dl
,
17085 { "DL", "pfcp.dl_periodicity.dl",
17086 FT_BOOLEAN
, 8, NULL
, 0x01,
17089 { &hf_pfcp_n6_jitter_measurement_dl_periodicity
,
17090 { "DL Periodicity", "pfcp.dl_periodicity.dl_periodicity",
17091 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
17094 { &hf_pfcp_n6_jitter_measurement_lower_dl_jitter_measurement
,
17095 { "Lower DL Jitter Measurement", "pfcp.dl_periodicity.lower_dl_jitter_measurement",
17096 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
17099 { &hf_pfcp_n6_jitter_measurement_higher_dl_jitter_measurement
,
17100 { "Higher DL Jitter Measurement", "pfcp.dl_periodicity.higher_dl_jitter_measurement",
17101 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
17105 { &hf_pfcp_traffic_parameter_measurement_indication_flags_b0_ulpmi
,
17106 { "ULPMI", "pfcp.traffic_parameter_measurement_indication.ulpmi",
17107 FT_BOOLEAN
, 8, NULL
, 0x01,
17110 { &hf_pfcp_traffic_parameter_measurement_indication_flags_b1_dlpmi
,
17111 { "DLPMI", "pfcp.traffic_parameter_measurement_indication.dlpmi",
17112 FT_BOOLEAN
, 8, NULL
, 0x02,
17115 { &hf_pfcp_traffic_parameter_measurement_indication_flags_b2_n6jmi
,
17116 { "N6JMI", "pfcp.traffic_parameter_measurement_indication.n6jmi",
17117 FT_BOOLEAN
, 8, NULL
, 0x02,
17121 { &hf_pfcp_ul_periodicity_value
,
17122 { "Ul Periodicity", "pfcp.ul_periodicity.value",
17123 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
17127 { &hf_pfcp_mpquic_control_information_flags_b0_cupd
,
17128 { "CUPD", "pfcp.quic_control_information.cupd",
17129 FT_BOOLEAN
, 8, NULL
, 0x01,
17133 { &hf_pfcp_mpquic_address_information_flags_b0_v4
,
17134 { "V4", "pfcp.mpquic_address_information.flags.v4",
17135 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
17138 { &hf_pfcp_mpquic_address_information_flags_b1_v6
,
17139 { "V6", "pfcp.mpquic_address_information.flags.v6",
17140 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
17143 { &hf_pfcp_mpquic_address_information_type
,
17144 { "MPQUIC Proxy Type", "pfcp.mpquic_address_information.type",
17145 FT_UINT8
, BASE_DEC
, VALS(pfcp_mpquic_address_information_type_vals
), 0x0,
17148 { &hf_pfcp_mpquic_address_information_port
,
17149 { "MPQUIC Proxy Port", "pfcp.mpquic_address_information.port",
17150 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
17153 { &hf_pfcp_mpquic_address_information_address_ipv4
,
17154 { "MPQUIC Proxy IPv4 Address", "pfcp.mpquic_address_information.ipv4",
17155 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
17158 { &hf_pfcp_mpquic_address_information_address_ipv6
,
17159 { "MPQUIC Proxy IPv6 Address", "pfcp.mpquic_address_information.ipv6",
17160 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
17164 { &hf_pfcp_transport_mode_value
,
17165 { "Transport Mode Value", "pfcp.transport_mode.value",
17166 FT_UINT8
, BASE_DEC
, VALS(pfcp_transport_mode_type_vals
), 0x0f,
17170 { &hf_pfcp_protocol_description_flags_b0_h264
,
17171 { "H264", "pfcp.protocol_description.h264",
17172 FT_BOOLEAN
, 8, NULL
, 0x01,
17175 { &hf_pfcp_protocol_description_flags_b1_rtp
,
17176 { "RTP", "pfcp.protocol_description.rtp",
17177 FT_BOOLEAN
, 8, NULL
, 0x02,
17180 { &hf_pfcp_protocol_description_flags_b2_srtp
,
17181 { "SRTP", "pfcp.protocol_description.srtp",
17182 FT_BOOLEAN
, 8, NULL
, 0x02,
17186 { &hf_pfcp_reporting_suggestion_info_reporting_urgency_value
,
17187 { "Reporting Urgency value", "pfcp.reporting_suggestion_info.reporting_urgency_value",
17188 FT_UINT8
, BASE_DEC
, VALS(pfcp_reporting_urgency_type_vals
), 0x0f,
17191 { &hf_pfcp_reporting_suggestion_info_reporting_time_info
,
17192 { "Reporting Time Info", "pfcp.reporting_suggestion_info.reporting_time_info",
17193 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
17197 { &hf_pfcp_tl_container
,
17198 { "TL-Container", "pfcp.tl_container",
17199 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
17203 { &hf_pfcp_measurement_indication_flags_b0_dqfi
,
17204 { "DQFI", "pfcp.measurement_indication.dqfi",
17205 FT_BOOLEAN
, 8, NULL
, 0x01,
17209 { &hf_pfcp_hplmn_s_nssai_sst
,
17210 { "SST (Slice/Service Type)", "pfcp.hplmn_s_nssai.sst",
17211 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
17214 { &hf_pfcp_hplmn_s_nssai_sd
,
17215 { "SD (Slice Differentiator)", "pfcp.hplmn_s_nssai.sd",
17216 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
17220 { &hf_pfcp_media_transport_protocol
,
17221 { "Media Transport Protocol", "pfcp.media_transport_protocol.media_transport_protocol_value",
17222 FT_UINT8
, BASE_DEC
, VALS(pfcp_media_transport_protocol_vals
), 0x0f,
17226 { &hf_pfcp_rtp_header_extension_type
,
17227 { "RTP Header Extension Type", "pfcp.rtp_header_extension.rtp_header_extension_type",
17228 FT_UINT8
, BASE_DEC
, VALS(pfcp_rtp_header_extension_type_vals
), 0x0,
17232 { &hf_pfcp_rtp_header_extension_id
,
17233 { "RTP Header Extension ID", "pfcp.rtp_header_extension_id.rtp_header_extension_id",
17234 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
17238 { &hf_pfcp_rtp_payload_type
,
17239 { "RTP Payload Type", "pfcp.rtp_payload_type.rtp_payload_type",
17240 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
17244 { &hf_pfcp_rtp_payload_format
,
17245 { "RTP Payload Format", "pfcp.rtp_payload_format.rtp_payload_format",
17246 FT_UINT8
, BASE_DEC
, VALS(pfcp_rtp_payload_format_vals
), 0x0,
17250 { &hf_pfcp_extended_dl_buffering_notification_policy_flags_b0_edbn
,
17251 { "EDBN", "pfcp.extended_dl_buffering_notification_policy.edbn",
17252 FT_BOOLEAN
, 8, NULL
, 0x01,
17256 { &hf_pfcp_mt_sdt_control_information_flags_b0_rdsi
,
17257 { "RDSI", "pfcp.mt_sdt_control_information.rdsi",
17258 FT_BOOLEAN
, 8, NULL
, 0x01,
17262 { &hf_pfcp_reporting_thresholds_flags_b0_dlci
,
17263 { "DLCI", "pfcp.reporting_thresholds.flags.dlci",
17264 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
17267 { &hf_pfcp_reporting_thresholds_flags_b1_ulci
,
17268 { "ULCI", "pfcp.reporting_thresholds.flags.ulci",
17269 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
17272 { &hf_pfcp_reporting_thresholds_flags_b2_dldr
,
17273 { "DLRP", "pfcp.reporting_thresholds.flags.dlrp",
17274 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
17277 { &hf_pfcp_reporting_thresholds_flags_b3_uldr
,
17278 { "ULRP", "pfcp.reporting_thresholds.flags.ulrp",
17279 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x08,
17282 { &hf_pfcp_reporting_thresholds_dl_congestion_information_threshold
,
17283 { "DL Congestion Information Threshold", "pfcp.reporting_thresholds.dl_congestion",
17284 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
17287 { &hf_pfcp_reporting_thresholds_ul_congestion_information_threshold
,
17288 { "UL Congestion Information Threshold", "pfcp.reporting_thresholds.ul_congestion",
17289 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
17292 { &hf_pfcp_reporting_thresholds_dl_data_rate_threshold
,
17293 { "DL Data Rate threshold (kilobits)", "pfcp.reporting_thresholds.dl_data_rate",
17294 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
17297 { &hf_pfcp_reporting_thresholds_ul_data_rate_threshold
,
17298 { "UL Data Rate threshold (kilobits)", "pfcp.reporting_thresholds.ul_data_rate",
17299 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
17303 { &hf_pfcp_rtp_header_extension_additional_information_flags_b0_fi
,
17304 { "FI (Format Indication)", "pfcp.rtp_header_extension_additional_information.flags.fi",
17305 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
17308 { &hf_pfcp_rtp_header_extension_additional_information_flags_b1_pssai
,
17309 { "PSSAI (PDU Set Size Activation Indication)", "pfcp.rtp_header_extension_additional_information.flags.pssai",
17310 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
17313 { &hf_pfcp_rtp_header_extension_additional_information_pssa
,
17314 { "PSSA", "pfcp.rtp_header_extension_additional_information.pssa",
17315 FT_UINT8
, BASE_DEC
, NULL
, 0x4,
17318 { &hf_pfcp_rtp_header_extension_additional_information_format
,
17319 { "Format", "pfcp.rtp_header_extension_additional_information.format",
17320 FT_UINT8
, BASE_DEC
, VALS(pfcp_rtp_header_extension_additional_information_type_vals
), 0x3,
17323 { &hf_pfcp_mapped_n6_ip_address_b0_chv4
,
17324 { "CHV4", "pfcp.mapped_n6_ip_address.flags.chv4",
17325 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
17328 { &hf_pfcp_mapped_n6_ip_address_b1_v4
,
17329 { "V4", "pfcp.mapped_n6_ip_address.flags.v4",
17330 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
17333 { &hf_pfcp_mapped_n6_ip_address_ipv4
,
17334 { "IPv4 address", "pfcp.mapped_n6_ip_address.ipv4",
17335 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
17339 { &hf_pfcp_n6_routing_information_flag_b0_sipv4
,
17340 { "SIPV4", "pfcp.n6_routing_information.flag.sipv4",
17341 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
17344 { &hf_pfcp_n6_routing_information_flag_b1_sipv6
,
17345 { "SIPV6", "pfcp.n6_routing_information.flag.sipv6",
17346 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
17349 { &hf_pfcp_n6_routing_information_flag_b2_spo
,
17350 { "SPO", "pfcp.n6_routing_information.flag.spo",
17351 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
17354 { &hf_pfcp_n6_routing_information_flag_b3_dipv4
,
17355 { "DIPV4", "pfcp.n6_routing_information.flag.dipv4",
17356 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x08,
17359 { &hf_pfcp_n6_routing_information_flag_b4_dipv6
,
17360 { "DIPV6", "pfcp.n6_routing_information.flag.dipv6",
17361 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x10,
17364 { &hf_pfcp_n6_routing_information_flag_b5_dpo
,
17365 { "DPO", "pfcp.n6_routing_information.flag.spn",
17366 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x20,
17370 { &hf_pfcp_n6_routing_information_source_ipv4
,
17371 { "Source IPv4 address", "pfcp.n6_routing_information.sipv4",
17372 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
17375 { &hf_pfcp_n6_routing_information_source_ipv6
,
17376 { "Source IPv6 address", "pfcp.n6_routing_information.sipv6",
17377 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
17380 { &hf_pfcp_n6_routing_information_source_port
,
17381 { "Source Port Number", "pfcp.n6_routing_information.spn",
17382 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
17385 { &hf_pfcp_n6_routing_information_destination_ipv4
,
17386 { "Destination IPv4 address", "pfcp.n6_routing_information.dipv4",
17387 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
17390 { &hf_pfcp_n6_routing_information_destination_ipv6
,
17391 { "Destination IPv6 address", "pfcp.n6_routing_information.dipv6",
17392 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
17395 { &hf_pfcp_n6_routing_information_destination_port
,
17396 { "Destination Port Number", "pfcp.n6_routing_information.dpn",
17397 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
17401 /* Enterprise IEs */
17403 { &hf_pfcp_bbf_up_function_features_o7_b0_pppoe
,
17404 { "PPPoE", "pfcp.bbf.up_function_features.pppoe",
17405 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x01,
17406 "PPPoE supported in DBNG-UP function", HFILL
}
17408 { &hf_pfcp_bbf_up_function_features_o7_b1_ipoe
,
17409 { "IPoE", "pfcp.bbf.up_function_features.ipoe",
17410 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x02,
17411 "IPoE supported in DBNG-UP function", HFILL
}
17413 { &hf_pfcp_bbf_up_function_features_o7_b2_lac
,
17414 { "LAC", "pfcp.bbf.up_function_features.lac",
17415 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x04,
17416 "LAC function supported in DBNG-UP function", HFILL
}
17418 { &hf_pfcp_bbf_up_function_features_o7_b3_lns
,
17419 { "LNS", "pfcp.bbf.up_function_features.lns",
17420 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x08,
17421 "LNS function supported in DBNG-UP function", HFILL
}
17423 { &hf_pfcp_bbf_up_function_features_o7_b4_lcp_keepalive_offload
,
17424 { "LCP keepalive offload", "pfcp.bbf.up_function_features.lcp_keepalive_offload",
17425 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x10,
17426 "PPP LCP echo supported in DBNG-UP function", HFILL
}
17428 { &hf_pfcp_bbf_up_function_features_o7_b5_iptv
,
17429 { "IPTV", "pfcp.bbf.up_function_features.iptv",
17430 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x20,
17431 "DBNG-UP support of IP Multicast", HFILL
}
17433 { &hf_pfcp_bbf_up_function_features_o7_b6_nat_cp
,
17434 { "NAT-CP", "pfcp.bbf.up_function_features.nat_cp",
17435 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x40,
17436 "NAT function supported in DBNG-CP function", HFILL
}
17438 { &hf_pfcp_bbf_up_function_features_o7_b7_nat_up
,
17439 { "NAT-UP", "pfcp.bbf.up_function_features.nat_up",
17440 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x80,
17441 "NAT function supported in DBNG-UP function", HFILL
}
17444 { &hf_pfcp_bbf_logical_port_id
,
17445 { "Logical Port", "pfcp.bbf.logical_port_id",
17446 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
17449 { &hf_pfcp_bbf_logical_port_id_str
,
17450 { "Logical Port", "pfcp.bbf.logical_port_id_str",
17451 FT_STRING
, BASE_NONE
, NULL
, 0x0,
17455 { &hf_pfcp_bbf_outer_hdr_creation_desc_spare
,
17456 { "Spare", "pfcp.bbf.outer_hdr_creation.desc.spare",
17457 FT_BOOLEAN
, 16, NULL
, 0xf0ff,
17460 { &hf_pfcp_bbf_outer_hdr_creation_desc_o7_b4_ppp
,
17461 { "PPP", "pfcp.bbf.outer_hdr_creation.desc.ppp",
17462 FT_BOOLEAN
, 16, NULL
, 0x0800,
17465 { &hf_pfcp_bbf_outer_hdr_creation_desc_o7_b3_l2tp
,
17466 { "L2TP", "pfcp.bbf.outer_hdr_creation.desc.l2tp",
17467 FT_BOOLEAN
, 16, NULL
, 0x0400,
17470 { &hf_pfcp_bbf_outer_hdr_creation_desc_o7_b2_traffic_endpoint
,
17471 { "Traffic-Endpoint", "pfcp.bbf.outer_hdr_creation.desc.trfep",
17472 FT_BOOLEAN
, 16, NULL
, 0x0200,
17475 { &hf_pfcp_bbf_outer_hdr_creation_desc_o7_b1_crp_nsh
,
17476 { "CPR-NSH", "pfcp.bbf.outer_hdr_creation.desc.cpr_nsh",
17477 FT_BOOLEAN
, 16, NULL
, 0x0100,
17480 { &hf_pfcp_bbf_outer_hdr_creation_tunnel_id
,
17481 { "L2TP Tunnel ID", "pfcp.bbf.outer_hdr_creation.tunnel_id",
17482 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
17485 { &hf_pfcp_bbf_outer_hdr_creation_session_id
,
17486 { "L2TP Session ID", "pfcp.bbf.outer_hdr_creation.session_id",
17487 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
17491 { &hf_pfcp_bbf_out_hdr_desc
,
17492 { "BBF Outer Header Removal Description", "pfcp.bbf.out_hdr_desc",
17493 FT_UINT8
, BASE_DEC
, VALS(pfcp_bbf_out_hdr_desc_vals
), 0x0,
17497 { &hf_pfcp_bbf_pppoe_session_id
,
17498 { "PPPoE Session ID", "pfcp.bbf.pppoe_session_id",
17499 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
17503 { &hf_pfcp_bbf_ppp_protocol_flags
,
17504 { "Flags", "pfcp.bbf.protocol_flags",
17505 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
17508 { &hf_pfcp_bbf_ppp_protocol_b2_control
,
17509 { "control", "pfcp.bbf.protocol_flags.control",
17510 FT_BOOLEAN
, 8, NULL
, 0x04,
17513 { &hf_pfcp_bbf_ppp_protocol_b1_data
,
17514 { "data", "pfcp.bbf.protocol_flags.data",
17515 FT_BOOLEAN
, 8, NULL
, 0x02,
17518 { &hf_pfcp_bbf_ppp_protocol_b0_specific
,
17519 { "specific", "pfcp.bbf.protocol_flags.specific",
17520 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
17523 { &hf_pfcp_bbf_ppp_protocol
,
17524 { "protocol", "pfcp.bbf.protocol_flags.protocol",
17525 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
17529 { &hf_pfcp_bbf_verification_timer_interval
,
17530 { "Interval", "pfcp.bbf.verification_timer.interval",
17531 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
17534 { &hf_pfcp_bbf_verification_timer_count
,
17535 { "Count", "pfcp.bbf.verification_timer.count",
17536 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
17540 { &hf_pfcp_bbf_ppp_lcp_magic_number_tx
,
17541 { "PPP LCP Magic Number Tx", "pfcp.bbf.lcp_magic_number.tx",
17542 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
17545 { &hf_pfcp_bbf_ppp_lcp_magic_number_rx
,
17546 { "PPP LCP Magic Number Rx", "pfcp.bbf.lcp_magic_number.rx",
17547 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
17551 { &hf_pfcp_bbf_mtu
,
17552 { "MTU", "pfcp.bbf.mtu",
17553 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
17557 { &hf_pfcp_bbf_l2tp_endp_flags
,
17558 { "Flags", "pfcp.bbf.l2tp_endp_flags",
17559 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
17562 { &hf_pfcp_bbf_l2tp_endp_flags_b2_ch
,
17563 { "CH (CHOOSE)", "pfcp.bbf.l2tp_endp_flags.ch",
17564 FT_BOOLEAN
, 8, NULL
, 0x04,
17567 { &hf_pfcp_bbf_l2tp_endp_flags_b1_v6
,
17568 { "V6 (IPv6)", "pfcp.bbf.l2tp_endp_flags.v6",
17569 FT_BOOLEAN
, 8, NULL
, 0x02,
17572 { &hf_pfcp_bbf_l2tp_endp_flags_b0_v4
,
17573 { "V4 (IPv4)", "pfcp.bbf.l2tp_endp_flags.v4",
17574 FT_BOOLEAN
, 8, NULL
, 0x01,
17577 { &hf_pfcp_bbf_l2tp_endp_id_tunnel_id
,
17578 { "Tunnel ID", "pfcp.bbf.l2tp_endp.tunnel_id",
17579 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
17582 { &hf_pfcp_bbf_l2tp_endp_id_ipv4
,
17583 { "IPv4 address", "pfcp.bbf.l2tp_endp.ipv4_addr",
17584 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
17587 { &hf_pfcp_bbf_l2tp_endp_id_ipv6
,
17588 { "IPv6 address", "pfcp.bbf.l2tp_endp.ipv6_addr",
17589 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
17593 { &hf_pfcp_bbf_l2tp_session_id
,
17594 { "L2TP Session ID", "pfcp.bbf.bbf_l2tp_session_id",
17595 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
17599 { &hf_pfcp_bbf_l2tp_type_flags
,
17600 { "Flags", "pfcp.bbf.l2tp_type_flags",
17601 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
17604 { &hf_pfcp_bbf_l2tp_type_flags_b0_t
,
17605 { "T (TYPE)", "pfcp.bbf.l2tp_type_flags.t",
17606 FT_BOOLEAN
, 8, TFS(&pfcp_bbf_l2tp_type_b0_t_tfs
), 0x01,
17610 { &hf_pfcp_bbf_multicast_flags_o7_b1_routeralertoff
,
17611 { "ROUTERALERTOFF", "pfcp.bbf.multicast_flags.routeralertoff",
17612 FT_BOOLEAN
, 8, NULL
, 0x01,
17615 { &hf_pfcp_bbf_multicast_flags_o7_b0_fastleave
,
17616 { "FASTLEAVE", "pfcp.bbf.multicast_flags.fastleave",
17617 FT_BOOLEAN
, 8, NULL
, 0x02,
17621 { &hf_pfcp_bbf_multicast_query_param_robustness
,
17622 { "Robustness count", "pfcp.bbf.multicast_query_parameters.robustness_count",
17623 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
17626 { &hf_pfcp_bbf_multicast_query_param_query_interval
,
17627 { "Query interval", "pfcp.bbf.multicast_query_parameters.query_interval",
17628 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
17631 { &hf_pfcp_bbf_multicast_query_param_query_response_interval
,
17632 { "Query response interval", "pfcp.bbf.multicast_query_parameters.query_response_interval",
17633 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
17636 { &hf_pfcp_bbf_multicast_query_param_group_query_interval
,
17637 { "Group-specific query interval", "pfcp.bbf.multicast_query_parameters.group_specific_query_interval",
17638 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
17642 { &hf_pfcp_bbf_multicast_group_limit_max_joins
,
17643 { "Maximum number of concurrent (S,G) joins allowed", "pfcp.bbf.multicast_group_limit.max_joins",
17644 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
17648 { &hf_pfcp_bbf_apply_action_flags_b0_nat
,
17649 { "NAT", "pfcp.bbf.apply_action_flags.nat",
17650 FT_BOOLEAN
, 8, NULL
, 0x01,
17654 { &hf_pfcp_bbf_nat_external_port_range_start
,
17655 { "Start", "pfcp.bbf.nat_external_port_range.start",
17656 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
17659 { &hf_pfcp_bbf_nat_external_port_range_end
,
17660 { "End", "pfcp.bbf.nat_external_port_range.end",
17661 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
17665 { &hf_pfcp_bbf_nat_port_forward
,
17666 { "NAT Port Forward", "pfcp.bbf.nat_port_forward",
17667 FT_NONE
, BASE_NONE
, NULL
, 0x0,
17670 { &hf_pfcp_bbf_nat_port_forward_inside_ip
,
17671 { "Inside Address", "pfcp.bbf.nat_port_forward.inside_address",
17672 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
17675 { &hf_pfcp_bbf_nat_port_forward_inside_port
,
17676 { "Inside Port", "pfcp.bbf.nat_port_forward.inside_port",
17677 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
17680 { &hf_pfcp_bbf_nat_port_forward_outside_port
,
17681 { "Outside Port", "pfcp.bbf.nat_port_forward.outside_port",
17682 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
17685 { &hf_pfcp_bbf_nat_port_forward_protocol
,
17686 { "Protocol", "pfcp.bbf.nat_port_forward.protocol",
17687 FT_UINT8
, BASE_DEC
|BASE_EXT_STRING
, &ipproto_val_ext
, 0x0,
17692 { &hf_pfcp_bbf_reporting_trigger
,
17693 { "Reporting Trigger", "pfcp.bbf.reporting_trigger",
17694 FT_UINT8
, BASE_DEC
, VALS(pfcp_bbf_reporting_trigger_vals
), 0x0,
17698 { &hf_pfcp_bbf_dynamic_nat_block_port_range_start_port
,
17699 { "Start", "pfcp.dynamic_nat_block_port_range.start",
17700 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
17703 { &hf_pfcp_bbf_dynamic_nat_block_port_range_end_port
,
17704 { "End", "pfcp.dynamic_nat_block_port_range.end",
17705 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
17709 { &hf_pfcp_bbf_event_time_stamp
,
17710 { "Event Time Stamp", "pfcp.bbf.event_time_stamp",
17711 FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_NTP_UTC
, NULL
, 0x0,
17715 { &hf_pfcp_bbf_direction
,
17716 { "Direction", "pfcp.bbf.direction",
17717 FT_UINT8
, BASE_HEX
, VALS(pfcp_bbf_direction_vals
), 0x0,
17720 { &hf_pfcp_bbf_family
,
17721 { "Family", "pfcp.bbf.family",
17722 FT_UINT8
, BASE_HEX
, VALS(pfcp_bbf_family_vals
), 0x0,
17725 { &hf_pfcp_bbf_sgrp_identifier
,
17726 { "SGRP Identifier", "pfcp.bbf.sgrp_identifier",
17727 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
17730 { &hf_pfcp_bbf_sgrp_state
,
17731 { "SGRP State", "pfcp.bbf.sgrp_state",
17732 FT_UINT8
, BASE_HEX
, VALS(pfcp_bbf_sgrp_state_vals
), 0x0,
17735 { &hf_pfcp_bbf_sgrp_flags
,
17736 { "Flags", "pfcp.bbf.sgrp_flags",
17737 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
17740 { &hf_pfcp_bbf_sgrp_flags_b0_ras
,
17741 { "RAS", "pfcp.bbf.sgrp_flags.ras",
17742 FT_BOOLEAN
, 8, NULL
, 0x01,
17743 "Route Advertisement State", HFILL
}
17745 { &hf_pfcp_bbf_sgrp_flags_b1_psa
,
17746 { "PSA", "pfcp.bbf.sgrp_flags.psa",
17747 FT_BOOLEAN
, 8, NULL
, 0x02,
17748 "Partial State Allowed", HFILL
}
17750 { &hf_pfcp_bbf_operational_condition
,
17751 { "Operational Condition", "pfcp.bbf.operational_condition",
17752 FT_UINT8
, BASE_HEX
, VALS(pfcp_bbf_operational_condition_vals
), 0x0,
17755 { &hf_pfcp_bbf_ipv4_prefix
,
17756 { "IPv4 Prefix", "pfcp.bbf.ipv4_prefix",
17757 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
17760 { &hf_pfcp_bbf_ipv4_prefix_length
,
17761 { "IPv4 Prefix Length", "pfcp.bbf.ipv4_prefix_length",
17762 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
17765 { &hf_pfcp_bbf_ipv6_prefix
,
17766 { "IPv6 Prefix", "pfcp.bbf.ipv6_prefix",
17767 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
17770 { &hf_pfcp_bbf_ipv6_prefix_length
,
17771 { "IPv6 Prefix Length", "pfcp.bbf.ipv6_prefix_length",
17772 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
17775 { &hf_pfcp_bbf_prefix_tag_usage
,
17776 { "Prefix Tag Usage", "pfcp.bbf.prefix_tag_usage",
17777 FT_UINT8
, BASE_HEX
, VALS(pfcp_bbf_prefix_tag_usage_vals
), 0x0,
17780 { &hf_pfcp_bbf_prefix_tag
,
17781 { "Prefix Tag", "pfcp.bbf.prefix_tag",
17782 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
17785 { &hf_pfcp_bbf_error_code
,
17786 { "Error Code", "pfcp.bbf.error_code",
17787 FT_UINT16
, BASE_HEX
, VALS(pfcp_bbf_error_code_vals
), 0x0,
17790 { &hf_pfcp_bbf_error_message
,
17791 { "Error Message", "pfcp.bbf.error_message",
17792 FT_STRING
, BASE_NONE
, NULL
, 0x0,
17795 { &hf_pfcp_bbf_maximum_acl_chain_length
,
17796 { "Maximum ACL Chain Length", "pfcp.bbf.maximum_acl_chain_length",
17797 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
17800 { &hf_pfcp_bbf_forwarding_capability
,
17801 { "Forwarding Capability", "pfcp.bbf.forwarding_capability",
17802 FT_UINT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_percent
), 0x0,
17805 { &hf_pfcp_bbf_connectivity_status
,
17806 { "Connectivity Status", "pfcp.bbf.connectivity_status",
17807 FT_UINT8
, BASE_DEC
, VALS(pfcp_bbf_connectivity_status_vals
), 0x0,
17810 { &hf_pfcp_bbf_vendor_specific_node_report_type
,
17811 { "Flags", "pfcp.bbf.vendor_specific_node_report_type",
17812 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
17815 { &hf_pfcp_bbf_vendor_specific_node_report_type_b0_lpr
,
17816 { "LPR", "pfcp.bbf.vendor_specific_node_report_type.lpr",
17817 FT_BOOLEAN
, 8, NULL
, 0x01,
17818 "Logical Port Report", HFILL
}
17820 { &hf_pfcp_bbf_vendor_specific_node_report_type_b1_sgr
,
17821 { "SGR", "pfcp.bbf.vendor_specific_node_report_type.sgr",
17822 FT_BOOLEAN
, 8, NULL
, 0x02,
17823 "Subscriber Group Report", HFILL
}
17825 { &hf_pfcp_bbf_vendor_specific_node_report_type_b2_nir
,
17826 { "NIR", "pfcp.bbf.vendor_specific_node_report_type.nir",
17827 FT_BOOLEAN
, 8, NULL
, 0x04,
17828 "Network Instance Report", HFILL
}
17830 { &hf_pfcp_bbf_ctag_range_start
,
17831 { "C-Tag Range Start", "pfcp.bbf.ctag_range_start",
17832 FT_UINT24
, BASE_DEC
, NULL
, 0x0,
17835 { &hf_pfcp_bbf_ctag_range_end
,
17836 { "C-Tag Range End", "pfcp.bbf.ctag_range_end",
17837 FT_UINT24
, BASE_DEC
, NULL
, 0x0,
17840 { &hf_pfcp_bbf_stag_range_start
,
17841 { "S-Tag Range Start", "pfcp.bbf.stag_range_start",
17842 FT_UINT24
, BASE_DEC
, NULL
, 0x0,
17845 { &hf_pfcp_bbf_stag_range_end
,
17846 { "S-Tag Range End", "pfcp.bbf.stag_range_end",
17847 FT_UINT24
, BASE_DEC
, NULL
, 0x0,
17852 { &hf_pfcp_enterprise_travelping_packet_measurement
,
17853 { "Flags", "pfcp.travelping.volume_measurement",
17854 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
17857 { &hf_pfcp_enterprise_travelping_packet_measurement_b0_tonop
,
17858 { "TONOP", "pfcp.travelping.volume_measurement_flags.tonop",
17859 FT_BOOLEAN
, 8, NULL
, 0x01,
17862 { &hf_pfcp_enterprise_travelping_packet_measurement_b1_ulnop
,
17863 { "ULNOP", "pfcp.travelping.volume_measurement_flags.ulnop",
17864 FT_BOOLEAN
, 8, NULL
, 0x02,
17867 { &hf_pfcp_enterprise_travelping_packet_measurement_b2_dlnop
,
17868 { "DLNOP", "pfcp.travelping.volume_measurement_flags.dlnops",
17869 FT_BOOLEAN
, 8, NULL
, 0x04,
17872 { &hf_pfcp_travelping_pkt_meas_tonop
,
17873 { "Total Number of Packets", "pfcp.travelping.volume_measurement.tonop",
17874 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
17877 { &hf_pfcp_travelping_pkt_meas_ulnop
,
17878 { "Uplink Number of Packets", "pfcp.travelping.volume_measurement.ulnop",
17879 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
17882 { &hf_pfcp_travelping_pkt_meas_dlnop
,
17883 { "Downlink Number of Packets", "pfcp.travelping.volume_measurement.dlnop",
17884 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
17887 { &hf_pfcp_travelping_build_id
,
17888 { "Build Identifier", "pfcp.travelping.build_id",
17889 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
17892 { &hf_pfcp_travelping_build_id_str
,
17893 { "Build Identifier", "pfcp.travelping.build_id_str",
17894 FT_STRING
, BASE_NONE
, NULL
, 0x0,
17897 { &hf_pfcp_travelping_now
,
17898 { "Now", "pfcp.travelping.now",
17899 FT_ABSOLUTE_TIME
, ABSOLUTE_TIME_NTP_UTC
, NULL
, 0x0,
17902 { &hf_pfcp_travelping_error_message
,
17903 { "Error Message", "pfcp.travelping.error_message",
17904 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
17907 { &hf_pfcp_travelping_error_message_str
,
17908 { "Error Message", "pfcp.travelping.error_message_str",
17909 FT_STRING
, BASE_NONE
, NULL
, 0x0,
17912 { &hf_pfcp_travelping_file_name
,
17913 { "File Name", "pfcp.travelping.file_name",
17914 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
17917 { &hf_pfcp_travelping_file_name_str
,
17918 { "File Name", "pfcp.travelping.file_name_str",
17919 FT_STRING
, BASE_NONE
, NULL
, 0x0,
17922 { &hf_pfcp_travelping_line_number
,
17923 { "Line Number", "pfcp.travelping.line_number",
17924 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
17927 { &hf_pfcp_travelping_ipfix_policy
,
17928 { "IPFIX Policy", "pfcp.travelping.ipfix_policy",
17929 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
17932 { &hf_pfcp_travelping_ipfix_policy_str
,
17933 { "IPFIX Policy", "pfcp.travelping.ipfix_policy_str",
17934 FT_STRING
, BASE_NONE
, NULL
, 0x0,
17937 { &hf_pfcp_travelping_trace_parent
,
17938 { "Trace Parent", "pfcp.travelping.trace_parent",
17939 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
17942 { &hf_pfcp_travelping_trace_parent_str
,
17943 { "Trace Parent", "pfcp.travelping.trace_parent_str",
17944 FT_STRING
, BASE_NONE
, NULL
, 0x0,
17947 { &hf_pfcp_travelping_trace_state
,
17948 { "Trace State", "pfcp.travelping.trace_state",
17949 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
17952 { &hf_pfcp_travelping_trace_state_str
,
17953 { "Trace State", "pfcp.travelping.trace_state_str",
17954 FT_STRING
, BASE_NONE
, NULL
, 0x0,
17960 { &hf_pfcp_nokia_sap_template
,
17961 { "SAP template", "pfcp.nokia.sap_template",
17962 FT_STRING
, BASE_NONE
, NULL
, 0,
17965 { &hf_pfcp_nokia_group_iface_template
,
17966 { "Group Interface Template", "pfcp.nokia.group_if_template",
17967 FT_STRING
, BASE_NONE
, NULL
, 0,
17970 { &hf_pfcp_nokia_session_state_id
,
17971 { "Session State Id", "pfcp.nokia.session_state_id",
17972 FT_UINT64
, BASE_DEC
, NULL
, 0,
17975 { &hf_pfcp_nokia_detailed_stats_key
,
17976 { "Key", "pfcp.nokia.detailed_stats.key",
17977 FT_UINT32
, BASE_HEX
, NULL
, 0,
17980 { &hf_pfcp_nokia_detailed_stats_key_direction
,
17981 { "Direction", "pfcp.nokia.detailed_stats.direction",
17982 FT_BOOLEAN
, 32, TFS(&tfs_nokia_detailed_stats_ie
), 0x80000000,
17985 { &hf_pfcp_nokia_detailed_stats_key_type
,
17986 { "Type", "pfcp.nokia.detailed_stats.type",
17987 FT_BOOLEAN
, 32, TFS(&tfs_nokia_detailed_stats_qp
), 0x40000000,
17990 { &hf_pfcp_nokia_detailed_stats_key_object_id
,
17991 { "Object id", "pfcp.nokia.detailed_stats.object_id",
17992 FT_UINT32
, BASE_DEC
, NULL
, 0x003f0000,
17995 { &hf_pfcp_nokia_detailed_stats_key_stat_mode
,
17996 { "Stat mode", "pfcp.nokia.detailed_stats.stat_mode",
17997 FT_UINT32
, BASE_DEC
, NULL
, 0x0000001f,
18000 { &hf_pfcp_nokia_detailed_stats_bitmap_item
,
18001 { "length", "pfcp.nokia.detailed_stats.bitmap.len",
18002 FT_UINT64
, BASE_DEC
|BASE_VAL64_STRING
, VALS64(nokia_detailed_stats_length_values
), 0x0,
18005 { &hf_pfcp_nokia_detailed_stats_octets
,
18006 { "Packets offered", "pfcp.nokia.detailed_stats.octets",
18007 FT_UINT64
, BASE_DEC
, NULL
, 0,
18010 { &hf_pfcp_nokia_detailed_error
,
18011 { "Detailed Error", "pfcp.nokia.detailed_error",
18012 FT_STRING
, BASE_NONE
, NULL
, 0,
18015 { &hf_pfcp_nokia_qos_override
,
18016 { "Qos Override", "pfcp.nokia.qos_override",
18017 FT_STRING
, BASE_NONE
, NULL
, 0,
18020 { &hf_pfcp_nokia_measurement_info
,
18021 { "Flags", "pfcp.nokia.measurement_info",
18022 FT_UINT8
, BASE_HEX
, NULL
, 0,
18025 { &hf_pfcp_nokia_measurement_info_b0_det
,
18026 { "DET (Detailed Statistics)", "pfcp.nokia.measurement_info.det",
18027 FT_BOOLEAN
, 8, NULL
, 0x01,
18030 { &hf_pfcp_nokia_pfcpsmreq_flags
,
18031 { "Flags", "pfcp.nokia.smreq_flags",
18032 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
18035 { &hf_pfcp_nokia_pfcpsmreq_flags_b0_abs
,
18036 { "ABS (Absolute modification request)", "pfcp.nokia.smreq_flags.abs",
18037 FT_BOOLEAN
, 8, NULL
, 0x01,
18040 { &hf_pfcp_nokia_pfcpsmreq_flags_b1_audit
,
18041 { "AUD (Auditing modification message)", "pfcp.nokia.smreq_flags.audit",
18042 FT_BOOLEAN
, 8, NULL
, 0x02,
18045 { &hf_pfcp_nokia_up_function_features_bulk_audit
,
18046 { "BLK_AUD (Bulk Audit)", "pfcp.nokia.up_function_features.blk_aud",
18047 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x01,
18050 { &hf_pfcp_nokia_up_function_features_sssg
,
18051 { "SSSG (Shared Subnet Signaling)", "pfcp.nokia.up_function_features.sssg",
18052 FT_BOOLEAN
, 8, TFS(&tfs_supported_not_supported
), 0x08,
18055 { &hf_pfcp_nokia_filter_override_type
,
18056 { "Filter Type", "pfcp.nokia.filter_override.type",
18057 FT_UINT8
, BASE_HEX
, VALS(nokia_filter_override_type_vals
), 0x0,
18060 { &hf_pfcp_nokia_filter_override_name
,
18061 { "Filter Override", "pfcp.nokia.filter_override.name",
18062 FT_STRING
, BASE_NONE
, NULL
, 0,
18065 { &hf_pfcp_nokia_intermediate_destination
,
18066 { "Intermediate Destination", "pfcp.nokia.intermediate_destination",
18067 FT_STRING
, BASE_NONE
, NULL
, 0,
18070 { &hf_pfcp_nokia_nat_isa_members
,
18071 { "Number of ISA members", "pfcp.nokia.nat_isa_members",
18072 FT_UINT8
, BASE_DEC
, NULL
, 0,
18075 { &hf_pfcp_nokia_pfcphb_flags
,
18076 { "Flags", "pfcp.nokia.hb_flags",
18077 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
18080 { &hf_pfcp_nokia_pfcphb_flags_b0_aud_r
,
18081 { "AUDR (Mass Audit Request)", "pfcp.nokia.hb_flags.audr",
18082 FT_BOOLEAN
, 8, NULL
, 0x01,
18085 { &hf_pfcp_nokia_pfcphb_flags_b1_aud_s
,
18086 { "AUDS (Mass Audit Start)", "pfcp.nokia.hb_flags.auds",
18087 FT_BOOLEAN
, 8, NULL
, 0x02,
18090 { &hf_pfcp_nokia_pfcphb_flags_b2_aud_e
,
18091 { "AUDE (Mass Audit End)", "pfcp.nokia.hb_flags.aude",
18092 FT_BOOLEAN
, 8, NULL
, 0x04,
18095 { &hf_pfcp_nokia_l2tp_lcp_request
,
18096 { "LCP Request", "pfcp.nokia.l2tp.lcp_request",
18097 FT_BYTES
, BASE_NONE
, NULL
, 0,
18100 { &hf_pfcp_nokia_l2tp_auth_type
,
18101 { "L2TP Auth Type", "pfcp.nokia.l2tp.auth_type",
18102 FT_UINT8
, BASE_HEX
, VALS(nokia_l2tp_auth_type_vals
), 0x0,
18105 { &hf_pfcp_nokia_l2tp_auth_name
,
18106 { "L2TP Auth Name", "pfcp.nokia.l2tp.auth_name",
18107 FT_STRING
, BASE_NONE
, NULL
, 0,
18110 { &hf_pfcp_nokia_l2tp_auth_id
,
18111 { "L2TP Auth Id", "pfcp.nokia.l2tp.auth_id",
18112 FT_UINT8
, BASE_HEX
, NULL
, 0,
18115 { &hf_pfcp_nokia_l2tp_auth_challenge
,
18116 { "L2TP Auth Challenge", "pfcp.nokia.l2tp.auth_challenge",
18117 FT_BYTES
, BASE_NONE
, NULL
, 0,
18120 { &hf_pfcp_nokia_l2tp_auth_response
,
18121 { "L2TP Auth Response", "pfcp.nokia.l2tp.auth_response",
18122 FT_BYTES
, BASE_NONE
, NULL
, 0,
18125 { &hf_pfcp_nokia_l2tp_tunnel_endpoint_ipv4_address
,
18126 { "L2TP IPv4 Endpoint", "pfcp.nokia.l2tp.tunnel_endpoint.ipv4_addr",
18127 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
18130 { &hf_pfcp_nokia_l2tp_tunnel_endpoint_ipv6_address
,
18131 { "L2TP IPv6 Endpoint", "pfcp.nokia.l2tp.tunnel_endpoint.ipv6_addr",
18132 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
18135 { &hf_pfcp_nokia_l2tp_client_auth_id
,
18136 { "L2TP Client Auth Id", "pfcp.nokia.l2tp.client_auth_id",
18137 FT_STRING
, BASE_NONE
, NULL
, 0,
18140 { &hf_pfcp_nokia_l2tp_server_auth_id
,
18141 { "L2TP Server Auth Id", "pfcp.nokia.l2tp.server_auth_id",
18142 FT_STRING
, BASE_NONE
, NULL
, 0,
18145 { &hf_pfcp_nokia_l2tp_password
,
18146 { "L2TP Password", "pfcp.nokia.l2tp.password",
18147 FT_STRING
, BASE_NONE
, NULL
, 0,
18150 { &hf_pfcp_nokia_l2tp_assignment_id
,
18151 { "L2TP Assignment Id", "pfcp.nokia.l2tp.assignment_id",
18152 FT_STRING
, BASE_NONE
, NULL
, 0,
18155 { &hf_pfcp_nokia_l2tp_private_group_id
,
18156 { "L2TP Private Group Id", "pfcp.nokia.l2tp.private_group_id",
18157 FT_STRING
, BASE_NONE
, NULL
, 0,
18160 { &hf_pfcp_nokia_l2tp_tunnel_params_flags
,
18161 { "Flags", "pfcp.nokia.l2tp.tunnel_params.flags",
18162 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
18165 { &hf_pfcp_nokia_l2tp_params_flags_b30_idle_timeout
,
18166 {"Idle Timeout", "pfcp.nokia.l2tp.tunnel_params.flags.idle_timeout",
18167 FT_BOOLEAN
, 32, NULL
, 0x40000000,
18170 { &hf_pfcp_nokia_l2tp_params_flags_b31_hello_interval
,
18171 {"Hello Interval", "pfcp.nokia.l2tp.tunnel_params.flags.hello_interval",
18172 FT_BOOLEAN
, 32, NULL
, 0x80000000,
18175 { &hf_pfcp_nokia_l2tp_params_flags_b29_session_limit
,
18176 {"Session Limit", "pfcp.nokia.l2tp.tunnel_params.flags.session_limit",
18177 FT_BOOLEAN
, 32, NULL
, 0x20000000,
18180 { &hf_pfcp_nokia_l2tp_params_flags_b28_preference
,
18181 {"Preference", "pfcp.nokia.l2tp.tunnel_params.flags.preference",
18182 FT_BOOLEAN
, 32, NULL
, 0x10000000,
18185 { &hf_pfcp_nokia_l2tp_params_flags_b27_df_bit
,
18186 {"DF Bit", "pfcp.nokia.l2tp.tunnel_params.flags.df_bit",
18187 FT_BOOLEAN
, 32, NULL
, 0x08000000,
18190 { &hf_pfcp_nokia_l2tp_params_flags_b26_challenge
,
18191 {"Challenge", "pfcp.nokia.l2tp.tunnel_params.flags.challenge",
18192 FT_BOOLEAN
, 32, NULL
, 0x04000000,
18195 { &hf_pfcp_nokia_l2tp_params_flags_b25_avp_hiding
,
18196 {"AVP Hiding", "pfcp.nokia.l2tp.tunnel_params.flags.avp_hiding",
18197 FT_BOOLEAN
, 32, NULL
, 0x02000000,
18200 { &hf_pfcp_nokia_l2tp_params_flags_b24_algorithm
,
18201 {"Algorithm", "pfcp.nokia.l2tp.tunnel_params.flags.algorithm",
18202 FT_BOOLEAN
, 32, NULL
, 0x01000000,
18205 { &hf_pfcp_nokia_l2tp_params_flags_b19_rx_window_size
,
18206 {"RX Window Size", "pfcp.nokia.l2tp.tunnel_params.flags.rx_window_size",
18207 FT_BOOLEAN
, 32, NULL
, 0x00080000,
18210 { &hf_pfcp_nokia_l2tp_params_flags_b18_max_retries_not_estab
,
18211 {"Max Retries Not Established", "pfcp.nokia.l2tp.tunnel_params.flags.max_retries_not_estab",
18212 FT_BOOLEAN
, 32, NULL
, 0x00040000,
18215 { &hf_pfcp_nokia_l2tp_params_flags_b17_max_retries_estab
,
18216 {"Max Retries Established", "pfcp.nokia.l2tp.tunnel_params.flags.max_retries_estab",
18217 FT_BOOLEAN
, 32, NULL
, 0x00020000,
18220 { &hf_pfcp_nokia_l2tp_params_flags_b16_destruct_timeout
,
18221 {"Destruct Timeout", "pfcp.nokia.l2tp.tunnel_params.flags.destruct_timeout",
18222 FT_BOOLEAN
, 32, NULL
, 0x00010000,
18225 { &hf_pfcp_nokia_l2tp_params_hello_interval
,
18226 {"Hello Interval", "pfcp.nokia.l2tp.tunnel_params.hello_interval",
18227 FT_UINT24
, BASE_DEC
|BASE_SPECIAL_VALS
, VALS(nokia_l2tp_params_infinite
), 0,
18230 { &hf_pfcp_nokia_l2tp_params_idle_timeout
,
18231 {"Idle Timeout", "pfcp.nokia.l2tp.tunnel_params.idle_timeout",
18232 FT_UINT24
, BASE_DEC
|BASE_SPECIAL_VALS
, VALS(nokia_l2tp_params_infinite
), 0,
18235 { &hf_pfcp_nokia_l2tp_params_session_limit
,
18236 {"Session Limit", "pfcp.nokia.l2tp.tunnel_params.session_limit",
18237 FT_UINT24
, BASE_DEC
|BASE_SPECIAL_VALS
, VALS(nokia_l2tp_params_infinite
), 0,
18240 { &hf_pfcp_nokia_l2tp_params_preference
,
18241 {"Preference", "pfcp.nokia.l2tp.tunnel_params.preference",
18242 FT_UINT24
, BASE_DEC
, NULL
, 0,
18245 { &hf_pfcp_nokia_l2tp_params_df_bit
,
18246 {"DF Bit", "pfcp.nokia.l2tp.tunnel_params.df_bit",
18247 FT_UINT8
, BASE_DEC
, VALS(nokia_l2tp_params_never_always
), 0,
18250 { &hf_pfcp_nokia_l2tp_params_challenge
,
18251 {"Challenge", "pfcp.nokia.l2tp.tunnel_params.challenge",
18252 FT_UINT8
, BASE_DEC
, VALS(nokia_l2tp_params_never_always
), 0,
18255 { &hf_pfcp_nokia_l2tp_params_avp_hiding
,
18256 {"AVP Hiding", "pfcp.nokia.l2tp.tunnel_params.avp_hiding",
18257 FT_UINT8
, BASE_DEC
, VALS(nokia_l2tp_params_avp_hiding_vals
), 0,
18260 { &hf_pfcp_nokia_l2tp_params_algorithm
,
18261 {"Algorithm", "pfcp.nokia.l2tp.tunnel_params.algorithm",
18262 FT_UINT8
, BASE_DEC
, VALS(nokia_l2tp_params_algorithm_vals
), 0,
18265 { &hf_pfcp_nokia_l2tp_params_rx_window_size
,
18266 {"RX Window Size", "pfcp.nokia.l2tp.tunnel_params.rx_window_size",
18267 FT_UINT24
, BASE_DEC
, NULL
, 0,
18270 { &hf_pfcp_nokia_l2tp_params_max_retries_not_estab
,
18271 {"Max Retries Not Estab", "pfcp.nokia.l2tp.tunnel_params.max_retries_not_estab",
18272 FT_UINT24
, BASE_DEC
, NULL
, 0,
18275 { &hf_pfcp_nokia_l2tp_params_max_retries_estab
,
18276 {"Max Retries Estab", "pfcp.nokia.l2tp.tunnel_params.max_retries_estab",
18277 FT_UINT24
, BASE_DEC
, NULL
, 0,
18280 { &hf_pfcp_nokia_l2tp_params_destruct_timeout
,
18281 {"Destruct Timeout", "pfcp.nokia.l2tp.tunnel_params.destruct_timeout",
18282 FT_UINT24
, BASE_DEC
, NULL
, 0,
18285 { &hf_pfcp_nokia_l2tp_local_tunnel_id
,
18286 { "Local Tunnel Id", "pfcp.nokia.l2tp.local_tunnel_id",
18287 FT_UINT16
, BASE_DEC
, NULL
, 0,
18290 { &hf_pfcp_nokia_l2tp_remote_tunnel_id
,
18291 { "Remote Tunnel Id", "pfcp.nokia.l2tp.remote_tunnel_id",
18292 FT_UINT16
, BASE_DEC
, NULL
, 0,
18295 { &hf_pfcp_nokia_l2tp_local_session_id
,
18296 { "Local Session Id", "pfcp.nokia.l2tp.local_session_id",
18297 FT_UINT16
, BASE_DEC
, NULL
, 0,
18300 { &hf_pfcp_nokia_l2tp_remote_session_id
,
18301 { "Remote Session Id", "pfcp.nokia.l2tp.remote_session_id",
18302 FT_UINT16
, BASE_DEC
, NULL
, 0,
18305 { &hf_pfcp_nokia_l2tp_call_serial_num
,
18306 { "Call Serial Number", "pfcp.nokia.l2tp.call_serial_num",
18307 FT_UINT32
, BASE_DEC
, NULL
, 0,
18310 { &hf_pfcp_nokia_snat_inside_ipv4_address
,
18311 { "SNAT Inside IP", "pfcp.nokia.snat_inside_ip",
18312 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
18315 { &hf_pfcp_nokia_access_line_circuit_id
,
18316 { "Access Line Circuit Id", "pfcp.nokia.access_line.circuit_id",
18317 FT_BYTES
, BASE_NONE
, NULL
, 0,
18320 { &hf_pfcp_nokia_access_line_remote_id
,
18321 { "Access Line Remote Id", "pfcp.nokia.access_line.remote_id",
18322 FT_BYTES
, BASE_NONE
, NULL
, 0,
18325 { &hf_pfcp_nokia_access_line_params_flags
,
18326 { "Flags", "pfcp.nokia.access_line.params.flags",
18327 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
18330 { &hf_pfcp_nokia_access_line_params_flags_b24_act_up
,
18331 {"Act Up", "pfcp.nokia.access_line.params.flags.act_up",
18332 FT_BOOLEAN
, 32, NULL
, 0x01000000,
18335 { &hf_pfcp_nokia_access_line_params_flags_b25_act_down
,
18336 {"Act Down", "pfcp.nokia.access_line.params.flags.act_down",
18337 FT_BOOLEAN
, 32, NULL
, 0x02000000,
18340 { &hf_pfcp_nokia_access_line_params_flags_b26_min_up
,
18341 {"Min Up", "pfcp.nokia.access_line.params.flags.min_up",
18342 FT_BOOLEAN
, 32, NULL
, 0x04000000,
18345 { &hf_pfcp_nokia_access_line_params_flags_b27_min_down
,
18346 {"Min Down", "pfcp.nokia.access_line.params.flags.min_down",
18347 FT_BOOLEAN
, 32, NULL
, 0x08000000,
18350 { &hf_pfcp_nokia_access_line_params_flags_b28_att_up
,
18351 {"Att Up", "pfcp.nokia.access_line.params.flags.att_up",
18352 FT_BOOLEAN
, 32, NULL
, 0x10000000,
18355 { &hf_pfcp_nokia_access_line_params_flags_b29_att_down
,
18356 {"Att Down", "pfcp.nokia.access_line.params.flags.att_down",
18357 FT_BOOLEAN
, 32, NULL
, 0x20000000,
18360 { &hf_pfcp_nokia_access_line_params_flags_b30_max_up
,
18361 {"Max Up", "pfcp.nokia.access_line.params.flags.max_up",
18362 FT_BOOLEAN
, 32, NULL
, 0x40000000,
18365 { &hf_pfcp_nokia_access_line_params_flags_b31_max_down
,
18366 {"Max Down", "pfcp.nokia.access_line.params.flags.max_down",
18367 FT_BOOLEAN
, 32, NULL
, 0x80000000,
18370 { &hf_pfcp_nokia_access_line_params_flags_b16_min_up_lp
,
18371 {"Min Up Lp", "pfcp.nokia.access_line.params.flags.min_up_lp",
18372 FT_BOOLEAN
, 32, NULL
, 0x00010000,
18375 { &hf_pfcp_nokia_access_line_params_flags_b17_min_down_lp
,
18376 {"Min Down Lp", "pfcp.nokia.access_line.params.flags.min_down_lp",
18377 FT_BOOLEAN
, 32, NULL
, 0x00020000,
18380 { &hf_pfcp_nokia_access_line_params_flags_b18_max_inter_delay_up
,
18381 {"Max Inter Delay Up", "pfcp.nokia.access_line.params.flags.max_inter_delay_up",
18382 FT_BOOLEAN
, 32, NULL
, 0x00040000,
18385 { &hf_pfcp_nokia_access_line_params_flags_b19_act_inter_delay_up
,
18386 {"Act Inter Delay Up", "pfcp.nokia.access_line.params.flags.act_inter_delay_up",
18387 FT_BOOLEAN
, 32, NULL
, 0x00080000,
18390 { &hf_pfcp_nokia_access_line_params_flags_b20_max_inter_delay_down
,
18391 {"Max Inter Delay Down", "pfcp.nokia.access_line.params.flags.max_inter_delay_down",
18392 FT_BOOLEAN
, 32, NULL
, 0x00100000,
18395 { &hf_pfcp_nokia_access_line_params_flags_b21_act_inter_delay_down
,
18396 {"Act Inter Delay Down", "pfcp.nokia.access_line.params.flags.act_inter_delay_down",
18397 FT_BOOLEAN
, 32, NULL
, 0x00200000,
18400 { &hf_pfcp_nokia_access_line_params_flags_b22_access_loop_encap
,
18401 {"Access Loop Encap", "pfcp.nokia.access_line.params.flags.access_loop_encap",
18402 FT_BOOLEAN
, 32, NULL
, 0x00400000,
18405 { &hf_pfcp_nokia_access_line_params_flags_b23_iw_session
,
18406 {"IW Session", "pfcp.nokia.access_line.params.flags.iw_session",
18407 FT_BOOLEAN
, 32, NULL
, 0x00800000,
18410 { &hf_pfcp_nokia_access_line_params_act_up
,
18411 { "Act Up", "pfcp.nokia.access_line.params.act_up",
18412 FT_UINT32
, BASE_DEC
, NULL
, 0,
18415 { &hf_pfcp_nokia_access_line_params_act_down
,
18416 { "Act Down", "pfcp.nokia.access_line.params.act_down",
18417 FT_UINT32
, BASE_DEC
, NULL
, 0,
18420 { &hf_pfcp_nokia_access_line_params_min_up
,
18421 { "Min Up", "pfcp.nokia.access_line.params.min_up",
18422 FT_UINT32
, BASE_DEC
, NULL
, 0,
18425 { &hf_pfcp_nokia_access_line_params_min_down
,
18426 { "Min Down", "pfcp.nokia.access_line.params.min_down",
18427 FT_UINT32
, BASE_DEC
, NULL
, 0,
18430 { &hf_pfcp_nokia_access_line_params_att_up
,
18431 { "Att Up", "pfcp.nokia.access_line.params.att_up",
18432 FT_UINT32
, BASE_DEC
, NULL
, 0,
18435 { &hf_pfcp_nokia_access_line_params_att_down
,
18436 { "Act Att Down", "pfcp.nokia.access_line.params.att_down",
18437 FT_UINT32
, BASE_DEC
, NULL
, 0,
18440 { &hf_pfcp_nokia_access_line_params_max_up
,
18441 { "Max Up", "pfcp.nokia.access_line.params.max_up",
18442 FT_UINT32
, BASE_DEC
, NULL
, 0,
18445 { &hf_pfcp_nokia_access_line_params_max_down
,
18446 { "Max Down", "pfcp.nokia.access_line.params.max_down",
18447 FT_UINT32
, BASE_DEC
, NULL
, 0,
18450 { &hf_pfcp_nokia_access_line_params_min_up_lp
,
18451 { "Min Up Lp", "pfcp.nokia.access_line.params.min_up_lp",
18452 FT_UINT32
, BASE_DEC
, NULL
, 0,
18455 { &hf_pfcp_nokia_access_line_params_min_down_lp
,
18456 { "Min Down Lp", "pfcp.nokia.access_line.params.min_down_lp",
18457 FT_UINT32
, BASE_DEC
, NULL
, 0,
18460 { &hf_pfcp_nokia_access_line_params_max_inter_delay_up
,
18461 { "Max Inter Delay Up", "pfcp.nokia.access_line.params.max_inter_delay_up",
18462 FT_UINT32
, BASE_DEC
, NULL
, 0,
18465 { &hf_pfcp_nokia_access_line_params_act_inter_delay_up
,
18466 { "Act Inter Delay Up", "pfcp.nokia.access_line.params.act_inter_delay_up",
18467 FT_UINT32
, BASE_DEC
, NULL
, 0,
18470 { &hf_pfcp_nokia_access_line_params_max_inter_delay_down
,
18471 { "Max Inter Delay Down", "pfcp.nokia.access_line.params.max_inter_delay_down",
18472 FT_UINT32
, BASE_DEC
, NULL
, 0,
18475 { &hf_pfcp_nokia_access_line_params_act_inter_delay_down
,
18476 { "Act Inter Delay Down", "pfcp.nokia.access_line.params.act_inter_delay_down",
18477 FT_UINT32
, BASE_DEC
, NULL
, 0,
18480 { &hf_pfcp_nokia_access_line_params_access_loop_encap
,
18481 { "Access Loop Encap", "pfcp.nokia.access_line.params.access_loop_encap",
18482 FT_UINT24
, BASE_DEC
, NULL
, 0,
18485 { &hf_pfcp_nokia_acct_session_id
,
18486 { "Accounting Session Id", "pfcp.nokia.acct_session_id",
18487 FT_STRING
, BASE_NONE
, NULL
, 0,
18490 { &hf_pfcp_nokia_fsg_template_name
,
18491 { "FSG Template Name", "pfcp.nokia.fsg_template_name",
18492 FT_STRING
, BASE_NONE
, NULL
, 0,
18495 { &hf_pfcp_nokia_up_profile
,
18496 { "UP Profiles", "pfcp.nokia.up_profiles",
18497 FT_STRING
, BASE_NONE
, NULL
, 0,
18500 { &hf_pfcp_nokia_default_qos_id
,
18501 { "Default Qos Id", "pfcp.nokia.default_qos_id",
18502 FT_UINT8
, BASE_DEC
, NULL
, 0,
18505 { &hf_pfcp_nokia_serving_node_id_flags
,
18506 { "Flags", "pfcp.nokia.serving_node_id.flags",
18507 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
18510 { &hf_pfcp_nokia_serving_node_id_flg_b2_uuid
,
18511 { "UUID", "pfcp.nokia.serving_node_id.flags.uuid",
18512 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x04,
18515 { &hf_pfcp_nokia_serving_node_id_flg_b1_v6
,
18516 { "V6 (IPv6)", "pfcp.nokia.serving_node_id.flags.v6",
18517 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x02,
18520 { &hf_pfcp_nokia_serving_node_id_flg_b0_v4
,
18521 { "V4 (IPv4)", "pfcp.nokia.serving_node_id.flags.v4",
18522 FT_BOOLEAN
, 8, TFS(&tfs_present_not_present
), 0x01,
18525 { &hf_pfcp_nokia_serving_node_id_ipv4
,
18526 { "IPv4 address", "pfcp.nokia.serving_node_id.ipv4_addr",
18527 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
18530 { &hf_pfcp_nokia_serving_node_id_ipv6
,
18531 { "IPv6 address", "pfcp.nokia.serving_node_id.ipv6_addr",
18532 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
18535 { &hf_pfcp_nokia_serving_node_id_uuid
,
18536 { "UUID", "pfcp.nokia.serving_node_id.uuid",
18537 FT_GUID
, BASE_NONE
, NULL
, 0x0,
18540 { &hf_pfcp_nokia_pcc_rule_name
,
18541 { "PCC Rule Name", "pfcp.nokia.pcc_rule_name",
18542 FT_STRING
, BASE_NONE
, NULL
, 0,
18545 { &hf_pfcp_nokia_calltrace_profile
,
18546 { "Calltrace Profile", "pfcp.nokia.calltrace_profile",
18547 FT_STRING
, BASE_NONE
, NULL
, 0,
18550 { &hf_pfcp_nokia_custom_charging_group
,
18551 { "Custom Charging Group", "pfcp.nokia.custom_charging_group",
18552 FT_STRING
, BASE_NONE
, NULL
, 0,
18557 /* Setup protocol subtree array */
18562 &ett_pfcp_unknown_enterprise_ie
,
18563 &ett_pfcp_grouped_ie
,
18564 &ett_pfcp_reporting_triggers
,
18565 &ett_pfcp_up_function_features
,
18566 &ett_pfcp_report_trigger
,
18567 &ett_pfcp_flow_desc
,
18570 &ett_pfcp_flow_label
,
18571 &ett_pfcp_sdf_filter_id
,
18576 &ett_pfcp_enterprise_travelping_packet_measurement
,
18577 &ett_pfcp_enterprise_travelping_error_report
,
18578 &ett_pfcp_enterprise_travelping_created_nat_binding
,
18579 &ett_pfcp_enterprise_travelping_trace_info
,
18581 &ett_pfcp_bbf_ppp_protocol_flags
,
18582 &ett_pfcp_bbf_l2tp_endp_flags
,
18583 &ett_pfcp_bbf_l2tp_type_flags
,
18584 &ett_pfcp_bbf_ppp_lcp_connectivity
,
18585 &ett_pfcp_bbf_l2tp_tunnel
,
18586 &ett_pfcp_bbf_nat_port_forward_list
,
18587 &ett_pfcp_bbf_sgrp_flags
,
18588 &ett_pfcp_bbf_vendor_specific_node_report_type
,
18590 &ett_pfcp_nokia_detailed_stats_key
,
18591 &ett_pfcp_nokia_detailed_stats_bitmap
,
18592 &ett_pfcp_nokia_measurement_info
,
18593 &ett_pfcp_nokia_pfcpsmreq_flags
,
18594 &ett_pfcp_nokia_pfcphb_flags
,
18595 &ett_pfcp_nokia_l2tp_tunnel_params_flags
,
18596 &ett_pfcp_nokia_access_line_params_flags
,
18597 &ett_pfcp_nokia_serving_node_id_flags
,
18600 // Each IE gets its own subtree
18601 int* ie_ett
[NUM_PFCP_IES
- 1];
18602 for (unsigned i
= 0; i
< NUM_PFCP_IES
- 1; i
++) {
18603 ie_ett
[i
] = &ett_pfcp_elem
[i
];
18606 static ei_register_info ei
[] = {
18607 { &ei_pfcp_ie_reserved
,{ "pfcp.ie_id_reserved", PI_PROTOCOL
, PI_ERROR
, "Reserved IE value used", EXPFILL
} },
18608 { &ei_pfcp_ie_data_not_decoded
,{ "pfcp.ie_data_not_decoded", PI_UNDECODED
, PI_NOTE
, "IE data not decoded by WS yet", EXPFILL
} },
18609 { &ei_pfcp_ie_not_decoded_null
,{ "pfcp.ie_not_decoded_null", PI_UNDECODED
, PI_NOTE
, "IE not decoded yet", EXPFILL
} },
18610 { &ei_pfcp_ie_not_decoded_too_large
,{ "pfcp.ie_not_decoded", PI_UNDECODED
, PI_NOTE
, "IE not decoded yet(WS:IE id too large)", EXPFILL
} },
18611 { &ei_pfcp_ie_encoding_error
,{ "pfcp.ie_encoding_error", PI_PROTOCOL
, PI_ERROR
, "IE wrongly encoded", EXPFILL
} },
18614 module_t
*module_pfcp
;
18615 expert_module_t
* expert_pfcp
;
18617 proto_pfcp
= proto_register_protocol("Packet Forwarding Control Protocol", "PFCP", "pfcp");
18618 pfcp_handle
= register_dissector("pfcp", dissect_pfcp
, proto_pfcp
);
18619 module_pfcp
= prefs_register_protocol(proto_pfcp
, NULL
);
18621 proto_register_field_array(proto_pfcp
, hf_pfcp
, array_length(hf_pfcp
));
18622 proto_register_subtree_array(ett
, array_length(ett
));
18623 proto_register_subtree_array(ie_ett
, array_length(ie_ett
));
18624 expert_pfcp
= expert_register_protocol(proto_pfcp
);
18625 expert_register_field_array(expert_pfcp
, ei
, array_length(ei
));
18627 /* Register dissector table for enterprise IE dissectors */
18628 pfcp_enterprise_ies_dissector_table
= register_dissector_table("pfcp.enterprise_ies", "PFCP Enterprice IEs",
18629 proto_pfcp
, FT_UINT32
, BASE_DEC
);
18631 pfcp_register_generic_ie_dissector(VENDOR_TRAVELPING
, "pfcp_travelping_ies", "pfcp.ie.travelping", "Travelping IE Type", pfcp_travelping_ies
, G_N_ELEMENTS(pfcp_travelping_ies
));
18632 pfcp_register_generic_ie_dissector(VENDOR_BROADBAND_FORUM
, "pfcp_bbf_ies", "pfcp.ie.bbf", "Broadband Forum IE Type", pfcp_bbf_ies
, G_N_ELEMENTS(pfcp_bbf_ies
));
18633 pfcp_register_generic_ie_dissector(VENDOR_NOKIA
, "pfcp_nokia_ies", "pfcp.ie.nokia", "Nokia IE Type", pfcp_nokia_ies
, G_N_ELEMENTS(pfcp_nokia_ies
));
18635 prefs_register_bool_preference(module_pfcp
, "track_pfcp_session", "Track PFCP session", "Track PFCP session", &g_pfcp_session
);
18637 prefs_register_uint_preference(module_pfcp
, "pair_max_interval", "Max interval allowed in pair matching", "Request/reply pair matches only if their timestamps are closer than that value, in ms (default 0, i.e. don't use timestamps)", 10, &pref_pair_matching_max_interval_ms
);
18639 register_init_routine(pfcp_init
);
18640 register_cleanup_routine(pfcp_cleanup
);
18642 pfcp_tap
= register_tap("pfcp");
18644 register_srt_table(proto_pfcp
, NULL
, 1, pfcp_stat_packet
, pfcp_stat_init
, NULL
);
18648 proto_reg_handoff_pfcp(void)
18650 dissector_add_uint_with_preference("udp.port", UDP_PORT_PFCP
, pfcp_handle
);
18651 dissector_add_string("media_type", "application/vnd.3gpp.pfcp", pfcp_handle
);
18653 gtpv2_uli_handle
= find_dissector("gtpv2.uli");
18657 * Editor modelines - https://www.wireshark.org/tools/modelines.html
18660 * c-basic-offset: 4
18662 * indent-tabs-mode: nil
18665 * vi: set shiftwidth=4 tabstop=8 expandtab:
18666 * :indentSize=4:tabSize=8:noTabs=true: