2 * Routines for JSON dissection - 3GPP Extension
13 * Wireshark - Network traffic analyzer
14 * By Gerald Combs <gerald@wireshark.org>
15 * Copyright 1998 Gerald Combs
17 * SPDX-License-Identifier: GPL-2.0-or-later
20 /* This dissector registers a dissector table for 3GPP Vendor specific
21 * keys which will be called from the JSON dissector to dissect
22 * the content of keys of the OctetString type(or similar).
27 #include <epan/etypes.h>
28 #include <epan/expert.h>
29 #include <epan/packet.h>
30 #include <epan/tvbparse.h>
31 #include <epan/proto_data.h>
33 #include "packet-gtpv2.h"
34 #include "packet-gsm_a_common.h"
35 #include "packet-json.h"
36 #include "packet-http.h"
37 #include "packet-http2.h"
39 void proto_register_json_3gpp(void);
40 void proto_reg_handoff_json_3gpp(void);
42 static int proto_json_3gpp
;
43 static int proto_http
;
45 static int ett_json_base64decoded_eps_ie
;
46 static int ett_json_base64decoded_nas5g_ie
;
47 static int ett_json_3gpp_data
;
49 static expert_field ei_json_3gpp_data_not_decoded
;
50 static expert_field ei_json_3gpp_encoding_error
;
52 static int hf_json_3gpp_binary_data
;
54 static int hf_json_3gpp_ueepspdnconnection
;
55 static int hf_json_3gpp_bearerlevelqos
;
56 static int hf_json_3gpp_epsbearersetup
;
57 static int hf_json_3gpp_forwardingbearercontexts
;
58 static int hf_json_3gpp_forwardingfteid
;
59 static int hf_json_3gpp_pgwnodename
;
60 static int hf_json_3gpp_pgws8cfteid
;
61 static int hf_json_3gpp_pgws8ufteid
;
62 static int hf_json_3gpp_qosrules
;
63 static int hf_json_3gpp_qosflowdescription
;
64 static int hf_json_3gpp_suppFeat
;
65 static int hf_json_3gpp_supportedFeatures
;
68 static int hf_json_3gpp_suppfeat
;
70 static int hf_json_3gpp_suppfeat_npcf_am_1_slicesupport
;
71 static int hf_json_3gpp_suppfeat_npcf_am_2_pendingtransaction
;
72 static int hf_json_3gpp_suppfeat_npcf_am_3_ueambrauthorization
;
73 static int hf_json_3gpp_suppfeat_npcf_am_4_dnnreplacementcontrol
;
75 static int hf_json_3gpp_suppfeat_npcf_am_5_multipleaccesstypes
;
76 static int hf_json_3gpp_suppfeat_npcf_am_6_wirelinewirelessconvergence
;
77 static int hf_json_3gpp_suppfeat_npcf_am_7_immediatereport
;
78 static int hf_json_3gpp_suppfeat_npcf_am_8_es3xx
;
80 static int hf_json_3gpp_suppfeat_npcf_am_9_ueslicembrauthorization
;
81 static int hf_json_3gpp_suppfeat_npcf_am_10_aminfluence
;
82 static int hf_json_3gpp_suppfeat_npcf_am_11_enena
;
83 static int hf_json_3gpp_suppfeat_npcf_am_12_targetnssai
;
85 static int hf_json_3gpp_suppfeat_npcf_am_13_5gaccessstratumtime
;
87 static int hf_json_3gpp_suppfeat_npcf_sm_1_tsc
;
88 static int hf_json_3gpp_suppfeat_npcf_sm_2_resshare
;
89 static int hf_json_3gpp_suppfeat_npcf_sm_3_3gpppsdataoff
;
90 static int hf_json_3gpp_suppfeat_npcf_sm_4_adc
;
92 static int hf_json_3gpp_suppfeat_npcf_sm_5_umc
;
93 static int hf_json_3gpp_suppfeat_npcf_sm_6_netloc
;
94 static int hf_json_3gpp_suppfeat_npcf_sm_7_rannascause
;
95 static int hf_json_3gpp_suppfeat_npcf_sm_8_provafsignalflow
;
97 static int hf_json_3gpp_suppfeat_npcf_sm_9_pcscfrestorationenhancement
;
98 static int hf_json_3gpp_suppfeat_npcf_sm_10_pra
;
99 static int hf_json_3gpp_suppfeat_npcf_sm_11_ruleversioning
;
100 static int hf_json_3gpp_suppfeat_npcf_sm_12_sponsoredconnectivity
;
102 static int hf_json_3gpp_suppfeat_npcf_sm_13_ransupportinfo
;
103 static int hf_json_3gpp_suppfeat_npcf_sm_14_policyupdatewhenuesuspends
;
104 static int hf_json_3gpp_suppfeat_npcf_sm_15_accesstypecondition
;
105 static int hf_json_3gpp_suppfeat_npcf_sm_16_multiipv6addrprefix
;
107 static int hf_json_3gpp_suppfeat_npcf_sm_17_sessionruleerrorhandling
;
108 static int hf_json_3gpp_suppfeat_npcf_sm_18_af_charging_identifier
;
109 static int hf_json_3gpp_suppfeat_npcf_sm_19_atsss
;
110 static int hf_json_3gpp_suppfeat_npcf_sm_20_pendingtransaction
;
112 static int hf_json_3gpp_suppfeat_npcf_sm_21_urllc
;
113 static int hf_json_3gpp_suppfeat_npcf_sm_22_macaddressrange
;
114 static int hf_json_3gpp_suppfeat_npcf_sm_23_wwc
;
115 static int hf_json_3gpp_suppfeat_npcf_sm_24_qosmonitoring
;
117 static int hf_json_3gpp_suppfeat_npcf_sm_25_authorizationwithrequiredqos
;
118 static int hf_json_3gpp_suppfeat_npcf_sm_26_enhancedbackgrounddatatransfer
;
119 static int hf_json_3gpp_suppfeat_npcf_sm_27_dn_authorization
;
120 static int hf_json_3gpp_suppfeat_npcf_sm_28_pdusessionrelcause
;
122 static int hf_json_3gpp_suppfeat_npcf_sm_29_samepcf
;
123 static int hf_json_3gpp_suppfeat_npcf_sm_30_adcmultiredirection
;
124 static int hf_json_3gpp_suppfeat_npcf_sm_31_respbasedsessionrel
;
125 static int hf_json_3gpp_suppfeat_npcf_sm_32_timesensitivenetworking
;
127 static int hf_json_3gpp_suppfeat_npcf_sm_33_emdbv
;
128 static int hf_json_3gpp_suppfeat_npcf_sm_34_dnnselectionmode
;
129 static int hf_json_3gpp_suppfeat_npcf_sm_35_epsfallbackreport
;
130 static int hf_json_3gpp_suppfeat_npcf_sm_36_policydecisionerrorhandling
;
132 static int hf_json_3gpp_suppfeat_npcf_sm_37_ddneventpolicycontrol
;
133 static int hf_json_3gpp_suppfeat_npcf_sm_38_reallocationofcredit
;
134 static int hf_json_3gpp_suppfeat_npcf_sm_39_bdtpolicyrenegotiation
;
135 static int hf_json_3gpp_suppfeat_npcf_sm_40_extpolicydecisionerrorhandling
;
137 static int hf_json_3gpp_suppfeat_npcf_sm_41_immediatetermination
;
138 static int hf_json_3gpp_suppfeat_npcf_sm_42_aggregateduelocchanges
;
139 static int hf_json_3gpp_suppfeat_npcf_sm_43_es3xx
;
140 static int hf_json_3gpp_suppfeat_npcf_sm_44_groupidlistchange
;
142 static int hf_json_3gpp_suppfeat_npcf_sm_45_disableuenotification
;
143 static int hf_json_3gpp_suppfeat_npcf_sm_46_offlinechonly
;
144 static int hf_json_3gpp_suppfeat_npcf_sm_47_dual_connectivity_redundant_up_paths
;
145 static int hf_json_3gpp_suppfeat_npcf_sm_48_ddneventpolicycontrol2
;
147 static int hf_json_3gpp_suppfeat_npcf_sm_49_vplmn_qos_control
;
148 static int hf_json_3gpp_suppfeat_npcf_sm_50_2g3giwk
;
149 static int hf_json_3gpp_suppfeat_npcf_sm_51_timesensitivecommunication
;
150 static int hf_json_3gpp_suppfeat_npcf_sm_52_enedge
;
152 static int hf_json_3gpp_suppfeat_npcf_sm_53_satbackhaulcategorychg
;
153 static int hf_json_3gpp_suppfeat_npcf_sm_54_chfsetsupport
;
154 static int hf_json_3gpp_suppfeat_npcf_sm_55_enatsss
;
155 static int hf_json_3gpp_suppfeat_npcf_sm_56_mpsfordts
;
157 static int hf_json_3gpp_suppfeat_npcf_sm_57_routinginforemoval
;
158 static int hf_json_3gpp_suppfeat_npcf_sm_58_epra
;
159 static int hf_json_3gpp_suppfeat_npcf_sm_59_aminfluence
;
160 static int hf_json_3gpp_suppfeat_npcf_sm_60_pvssupport
;
162 static int hf_json_3gpp_suppfeat_npcf_sm_61_enena
;
163 static int hf_json_3gpp_suppfeat_npcf_sm_62_biumr
;
164 static int hf_json_3gpp_suppfeat_npcf_sm_63_easipreplacement
;
165 static int hf_json_3gpp_suppfeat_npcf_sm_64_exposuretoeas
;
167 static int hf_json_3gpp_suppfeat_npcf_sm_65_simultconnectivity
;
168 static int hf_json_3gpp_suppfeat_npcf_sm_66_sgwrest
;
169 static int hf_json_3gpp_suppfeat_npcf_sm_67_releasetoreactivate
;
170 static int hf_json_3gpp_suppfeat_npcf_sm_68_easdiscovery
;
172 static int hf_json_3gpp_suppfeat_npcf_sm_69_accnetchargid_string
;
174 static int hf_json_3gpp_suppfeat_npcf_ue_1_pendingtransaction
;
175 static int hf_json_3gpp_suppfeat_npcf_ue_2_plmnchange
;
176 static int hf_json_3gpp_suppfeat_npcf_ue_3_connectivitystatechange
;
177 static int hf_json_3gpp_suppfeat_npcf_ue_4_v2x
;
179 static int hf_json_3gpp_suppfeat_npcf_ue_5_groupidlistchange
;
180 static int hf_json_3gpp_suppfeat_npcf_ue_6_immediatereport
;
181 static int hf_json_3gpp_suppfeat_npcf_ue_7_errorresponse
;
182 static int hf_json_3gpp_suppfeat_npcf_ue_8_es3xx
;
184 static int hf_json_3gpp_suppfeat_npcf_ue_9_prose
;
187 static int hf_json_3gpp_suppfeat_nsmf_pdusession_1_ciot
;
188 static int hf_json_3gpp_suppfeat_nsmf_pdusession_2_mapdu
;
189 static int hf_json_3gpp_suppfeat_nsmf_pdusession_3_dtssa
;
190 static int hf_json_3gpp_suppfeat_nsmf_pdusession_4_carpt
;
192 static int hf_json_3gpp_suppfeat_nsmf_pdusession_5_ctxtr
;
193 static int hf_json_3gpp_suppfeat_nsmf_pdusession_6_vqos
;
194 static int hf_json_3gpp_suppfeat_nsmf_pdusession_7_hofail
;
195 static int hf_json_3gpp_suppfeat_nsmf_pdusession_8_es3xx
;
197 static int hf_json_3gpp_suppfeat_nsmf_pdusession_9_dce2er
;
198 static int hf_json_3gpp_suppfeat_nsmf_pdusession_10_aasn
;
199 static int hf_json_3gpp_suppfeat_nsmf_pdusession_11_enedge
;
200 static int hf_json_3gpp_suppfeat_nsmf_pdusession_12_scpbu
;
202 static int hf_json_3gpp_suppfeat_nsmf_pdusession_13_enpn
;
203 static int hf_json_3gpp_suppfeat_nsmf_pdusession_14_spae
;
204 static int hf_json_3gpp_suppfeat_nsmf_pdusession_15_5gsat
;
205 static int hf_json_3gpp_suppfeat_nsmf_pdusession_16_upipe
;
207 static int hf_json_3gpp_suppfeat_nsmf_pdusession_17_biumr
;
208 static int hf_json_3gpp_suppfeat_nsmf_pdusession_18_acscr
;
209 static int hf_json_3gpp_suppfeat_nsmf_pdusession_19_psetr
;
210 static int hf_json_3gpp_suppfeat_nsmf_pdusession_20_dlset
;
212 static int hf_json_3gpp_suppfeat_nsmf_pdusession_21_n9fsc
;
214 #define NPCF_AM_POLICY_CONTROL "/npcf-am-policy-control/v1/policies"
215 #define NPCF_SM_POLICY_CONTROL "/npcf-smpolicycontrol/v1/sm-policies" /* inconsistency naming from 3gpp */
216 #define NPCF_UE_POLICY_CONTROL "/npcf-ue-policy-control/v1/policies"
217 #define NSMF_PDU_SESSION "/nsmf-pdusession/v1/"
220 /* Functions to sub dissect json content */
222 dissect_base64decoded_eps_ie(tvbuff_t
* tvb
, proto_tree
* tree
, packet_info
* pinfo
, int offset
, int len
, const char* key_str _U_
)
224 /* base64-encoded characters, encoding the
225 * EPS IE specified in 3GPP TS 29.274.
229 proto_tree
* sub_tree
;
230 tvbuff_t
* bin_tvb
= base64_tvb_to_new_tvb(tvb
, offset
, len
);
231 int bin_tvb_length
= tvb_reported_length(bin_tvb
);
232 add_new_data_source(pinfo
, bin_tvb
, "Base64 decoded");
233 ti
= proto_tree_add_item(tree
, hf_json_3gpp_binary_data
, bin_tvb
, 0, bin_tvb_length
, ENC_NA
);
234 sub_tree
= proto_item_add_subtree(ti
, ett_json_base64decoded_eps_ie
);
235 dissect_gtpv2_ie_common(bin_tvb
, pinfo
, sub_tree
, 0, 0/* Message type 0, Reserved */, NULL
, 0);
241 dissect_base64decoded_nas5g_ie(tvbuff_t
* tvb
, proto_tree
* tree
, packet_info
* pinfo
, int offset
, int len
, const char* key_str
)
243 /* base64-encoded characters, encoding the
244 * NAS-5G IE specified in 3GPP TS 24.501.
247 proto_tree
* sub_tree
;
248 tvbuff_t
* bin_tvb
= base64_tvb_to_new_tvb(tvb
, offset
, len
);
249 int bin_tvb_length
= tvb_reported_length(bin_tvb
);
250 add_new_data_source(pinfo
, bin_tvb
, "Base64 decoded");
251 ti
= proto_tree_add_item(tree
, hf_json_3gpp_binary_data
, bin_tvb
, 0, bin_tvb_length
, ENC_NA
);
252 sub_tree
= proto_item_add_subtree(ti
, ett_json_base64decoded_nas5g_ie
);
254 if (strcmp(key_str
, "qosRules") == 0) {
256 * This IE shall contain the QoS Rule(s) associated to the QoS flow to be sent to the UE.
257 * It shall be encoded as the Qos rules IE specified in clause 9.11.4.13 of 3GPP TS 24.501 (starting from octet 4).
259 de_nas_5gs_sm_qos_rules(bin_tvb
, sub_tree
, pinfo
, 0, bin_tvb_length
, NULL
, 0);
261 else if (strcmp(key_str
, "qosFlowDescription") == 0) {
262 /* qosFlowDescription
263 * When present, this IE shall contain the description of the QoS Flow level Qos parameters to be sent to the UE.
264 * It shall be encoded as the Qos flow descriptions IE specified in clause 9.11.4.12 of 3GPP TS 24.501 (starting from octet 1),
265 * encoding one single Qos flow description for the QoS flow to be set up.
267 elem_telv(bin_tvb
, sub_tree
, pinfo
, (uint8_t) 0x79, 18 /* NAS_5GS_PDU_TYPE_SM */, 11 /* DE_NAS_5GS_SM_QOS_FLOW_DES */, 0, bin_tvb_length
, NULL
);
274 dissect_3gpp_supportfeatures(tvbuff_t
* tvb
, proto_tree
* tree
, packet_info
* pinfo
, int offset
, int len
, const char* key_str _U_
)
276 const char *path
= NULL
;
279 * A string used to indicate the features supported by an API that is used as defined in clause 6.6 in 3GPP TS 29.500 [25].
280 * The string shall contain a bitmask indicating supported features in hexadecimal representation:
281 * Each character in the string shall take a value of "0" to "9", "a" to "f" or "A" to "F" and
282 * shall represent the support of 4 features as described in table 5.2.2-3.
283 * The most significant character representing the highest-numbered features shall appear first in the string,
284 * and the character representing features 1 to 4 shall appear last in the string.
285 * The list of features and their numbering (starting with 1) are defined separately for each API.
286 * If the string contains a lower number of characters than there are defined features for an API,
287 * all features that would be represented by characters that are not present in the string are not supported.
290 /* Expect to have :path from HTTP2 here, if not return */
291 if (proto_is_frame_protocol(pinfo
->layers
, "http2")) {
292 path
= http2_get_header_value(pinfo
, HTTP2_HEADER_PATH
, false);
294 path
= http2_get_header_value(pinfo
, HTTP2_HEADER_PATH
, true);
296 } else if (proto_is_frame_protocol(pinfo
->layers
, "http")) {
297 /* 3GPP TS 29.500 says the service based interfaces use HTTP/2,
298 * but that doesn't stop implementations like OAI from using
299 * HTTP/1.1 with a 2.0 version string.
301 http_req_res_t
* curr_req_res
= (http_req_res_t
*)p_get_proto_data(wmem_file_scope(), pinfo
, proto_http
, HTTP_PROTO_DATA_REQRES
);
303 path
= curr_req_res
->request_uri
;
311 proto_tree
* sub_tree
;
312 tvbuff_t
*suppfeat_tvb
;
314 ti
= proto_tree_add_item(tree
, hf_json_3gpp_suppfeat
, tvb
, offset
, len
, ENC_ASCII
);
318 sub_tree
= proto_item_add_subtree(ti
, ett_json_3gpp_data
);
319 suppfeat_tvb
= tvb_new_subset_length(tvb
, offset
, len
);
321 int offset_reverse
= len
- 1;
323 /* Read in the HEX in ASCII form and validate it's 0-9,A-F */
324 uint8_t *hex_ascii
= tvb_memdup(pinfo
->pool
, tvb
, offset
, len
);
325 for (int i
= 0; i
< len
; i
++) {
326 char c
= hex_ascii
[i
];
327 if (!g_ascii_isxdigit(c
)) {
328 proto_tree_add_expert_format(sub_tree
, pinfo
, &ei_json_3gpp_encoding_error
, suppfeat_tvb
, 0, -1, "Invalid char pos=%d value=%02x", i
, c
);
333 if (strcmp(path
, NPCF_AM_POLICY_CONTROL
) == 0) {
334 /* TS 29.507 ch5.8 Feature negotiation */
336 static int * const json_3gpp_suppfeat_npcf_am_list_1
[] = {
337 &hf_json_3gpp_suppfeat_npcf_am_1_slicesupport
,
338 &hf_json_3gpp_suppfeat_npcf_am_2_pendingtransaction
,
339 &hf_json_3gpp_suppfeat_npcf_am_3_ueambrauthorization
,
340 &hf_json_3gpp_suppfeat_npcf_am_4_dnnreplacementcontrol
,
343 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_am_list_1
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
346 if (offset_reverse
== -1) {
350 static int * const json_3gpp_suppfeat_npcf_am_list_2
[] = {
351 &hf_json_3gpp_suppfeat_npcf_am_5_multipleaccesstypes
,
352 &hf_json_3gpp_suppfeat_npcf_am_6_wirelinewirelessconvergence
,
353 &hf_json_3gpp_suppfeat_npcf_am_7_immediatereport
,
354 &hf_json_3gpp_suppfeat_npcf_am_8_es3xx
,
357 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_am_list_2
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
360 if (offset_reverse
== -1) {
364 static int * const json_3gpp_suppfeat_npcf_am_list_3
[] = {
365 &hf_json_3gpp_suppfeat_npcf_am_9_ueslicembrauthorization
,
366 &hf_json_3gpp_suppfeat_npcf_am_10_aminfluence
,
367 &hf_json_3gpp_suppfeat_npcf_am_11_enena
,
368 &hf_json_3gpp_suppfeat_npcf_am_12_targetnssai
,
371 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_am_list_3
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
374 if (offset_reverse
== -1) {
378 static int * const json_3gpp_suppfeat_npcf_am_list_4
[] = {
379 &hf_json_3gpp_suppfeat_npcf_am_13_5gaccessstratumtime
,
382 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_am_list_4
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
385 if (offset_reverse
== -1) {
389 if (offset_reverse
> -1) {
390 proto_tree_add_format_text(sub_tree
, suppfeat_tvb
, 0, (offset_reverse
- len
));
393 } else if (strcmp(path
, NPCF_SM_POLICY_CONTROL
) == 0) {
394 /* TS 29.512 ch5.8 Feature negotiation */
396 static int * const json_3gpp_suppfeat_npcf_sm_list_1
[] = {
397 &hf_json_3gpp_suppfeat_npcf_sm_1_tsc
,
398 &hf_json_3gpp_suppfeat_npcf_sm_2_resshare
,
399 &hf_json_3gpp_suppfeat_npcf_sm_3_3gpppsdataoff
,
400 &hf_json_3gpp_suppfeat_npcf_sm_4_adc
,
403 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_sm_list_1
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
406 if (offset_reverse
== -1) {
410 static int * const json_3gpp_suppfeat_npcf_sm_list_2
[] = {
411 &hf_json_3gpp_suppfeat_npcf_sm_5_umc
,
412 &hf_json_3gpp_suppfeat_npcf_sm_6_netloc
,
413 &hf_json_3gpp_suppfeat_npcf_sm_7_rannascause
,
414 &hf_json_3gpp_suppfeat_npcf_sm_8_provafsignalflow
,
417 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_sm_list_2
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
420 if (offset_reverse
== -1) {
424 static int * const json_3gpp_suppfeat_npcf_sm_list_3
[] = {
425 &hf_json_3gpp_suppfeat_npcf_sm_9_pcscfrestorationenhancement
,
426 &hf_json_3gpp_suppfeat_npcf_sm_10_pra
,
427 &hf_json_3gpp_suppfeat_npcf_sm_11_ruleversioning
,
428 &hf_json_3gpp_suppfeat_npcf_sm_12_sponsoredconnectivity
,
431 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_sm_list_3
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
434 if (offset_reverse
== -1) {
438 static int * const json_3gpp_suppfeat_npcf_sm_list_4
[] = {
439 &hf_json_3gpp_suppfeat_npcf_sm_13_ransupportinfo
,
440 &hf_json_3gpp_suppfeat_npcf_sm_14_policyupdatewhenuesuspends
,
441 &hf_json_3gpp_suppfeat_npcf_sm_15_accesstypecondition
,
442 &hf_json_3gpp_suppfeat_npcf_sm_16_multiipv6addrprefix
,
445 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_sm_list_4
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
448 if (offset_reverse
== -1) {
452 static int * const json_3gpp_suppfeat_npcf_sm_list_5
[] = {
453 &hf_json_3gpp_suppfeat_npcf_sm_17_sessionruleerrorhandling
,
454 &hf_json_3gpp_suppfeat_npcf_sm_18_af_charging_identifier
,
455 &hf_json_3gpp_suppfeat_npcf_sm_19_atsss
,
456 &hf_json_3gpp_suppfeat_npcf_sm_20_pendingtransaction
,
459 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_sm_list_5
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
462 if (offset_reverse
== -1) {
466 static int * const json_3gpp_suppfeat_npcf_sm_list_6
[] = {
467 &hf_json_3gpp_suppfeat_npcf_sm_21_urllc
,
468 &hf_json_3gpp_suppfeat_npcf_sm_22_macaddressrange
,
469 &hf_json_3gpp_suppfeat_npcf_sm_23_wwc
,
470 &hf_json_3gpp_suppfeat_npcf_sm_24_qosmonitoring
,
473 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_sm_list_6
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
476 if (offset_reverse
== -1) {
480 static int * const json_3gpp_suppfeat_npcf_sm_list_7
[] = {
481 &hf_json_3gpp_suppfeat_npcf_sm_25_authorizationwithrequiredqos
,
482 &hf_json_3gpp_suppfeat_npcf_sm_26_enhancedbackgrounddatatransfer
,
483 &hf_json_3gpp_suppfeat_npcf_sm_27_dn_authorization
,
484 &hf_json_3gpp_suppfeat_npcf_sm_28_pdusessionrelcause
,
487 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_sm_list_7
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
490 if (offset_reverse
== -1) {
494 static int * const json_3gpp_suppfeat_npcf_sm_list_8
[] = {
495 &hf_json_3gpp_suppfeat_npcf_sm_29_samepcf
,
496 &hf_json_3gpp_suppfeat_npcf_sm_30_adcmultiredirection
,
497 &hf_json_3gpp_suppfeat_npcf_sm_31_respbasedsessionrel
,
498 &hf_json_3gpp_suppfeat_npcf_sm_32_timesensitivenetworking
,
501 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_sm_list_8
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
504 if (offset_reverse
== -1) {
508 static int * const json_3gpp_suppfeat_npcf_sm_list_9
[] = {
509 &hf_json_3gpp_suppfeat_npcf_sm_33_emdbv
,
510 &hf_json_3gpp_suppfeat_npcf_sm_34_dnnselectionmode
,
511 &hf_json_3gpp_suppfeat_npcf_sm_35_epsfallbackreport
,
512 &hf_json_3gpp_suppfeat_npcf_sm_36_policydecisionerrorhandling
,
515 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_sm_list_9
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
518 if (offset_reverse
== -1) {
522 static int * const json_3gpp_suppfeat_npcf_sm_list_10
[] = {
523 &hf_json_3gpp_suppfeat_npcf_sm_37_ddneventpolicycontrol
,
524 &hf_json_3gpp_suppfeat_npcf_sm_38_reallocationofcredit
,
525 &hf_json_3gpp_suppfeat_npcf_sm_39_bdtpolicyrenegotiation
,
526 &hf_json_3gpp_suppfeat_npcf_sm_40_extpolicydecisionerrorhandling
,
529 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_sm_list_10
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
532 if (offset_reverse
== -1) {
536 static int * const json_3gpp_suppfeat_npcf_sm_list_11
[] = {
537 &hf_json_3gpp_suppfeat_npcf_sm_41_immediatetermination
,
538 &hf_json_3gpp_suppfeat_npcf_sm_42_aggregateduelocchanges
,
539 &hf_json_3gpp_suppfeat_npcf_sm_43_es3xx
,
540 &hf_json_3gpp_suppfeat_npcf_sm_44_groupidlistchange
,
543 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_sm_list_11
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
546 if (offset_reverse
== -1) {
550 static int * const json_3gpp_suppfeat_npcf_sm_list_12
[] = {
551 &hf_json_3gpp_suppfeat_npcf_sm_45_disableuenotification
,
552 &hf_json_3gpp_suppfeat_npcf_sm_46_offlinechonly
,
553 &hf_json_3gpp_suppfeat_npcf_sm_47_dual_connectivity_redundant_up_paths
,
554 &hf_json_3gpp_suppfeat_npcf_sm_48_ddneventpolicycontrol2
,
557 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_sm_list_12
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
560 if (offset_reverse
== -1) {
564 static int * const json_3gpp_suppfeat_npcf_sm_list_13
[] = {
565 &hf_json_3gpp_suppfeat_npcf_sm_49_vplmn_qos_control
,
566 &hf_json_3gpp_suppfeat_npcf_sm_50_2g3giwk
,
567 &hf_json_3gpp_suppfeat_npcf_sm_51_timesensitivecommunication
,
568 &hf_json_3gpp_suppfeat_npcf_sm_52_enedge
,
571 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_sm_list_13
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
574 if (offset_reverse
== -1) {
578 static int * const json_3gpp_suppfeat_npcf_sm_list_14
[] = {
579 &hf_json_3gpp_suppfeat_npcf_sm_53_satbackhaulcategorychg
,
580 &hf_json_3gpp_suppfeat_npcf_sm_54_chfsetsupport
,
581 &hf_json_3gpp_suppfeat_npcf_sm_55_enatsss
,
582 &hf_json_3gpp_suppfeat_npcf_sm_56_mpsfordts
,
585 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_sm_list_14
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
588 if (offset_reverse
== -1) {
592 static int * const json_3gpp_suppfeat_npcf_sm_list_15
[] = {
593 &hf_json_3gpp_suppfeat_npcf_sm_57_routinginforemoval
,
594 &hf_json_3gpp_suppfeat_npcf_sm_58_epra
,
595 &hf_json_3gpp_suppfeat_npcf_sm_59_aminfluence
,
596 &hf_json_3gpp_suppfeat_npcf_sm_60_pvssupport
,
599 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_sm_list_15
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
602 if (offset_reverse
== -1) {
606 static int * const json_3gpp_suppfeat_npcf_sm_list_16
[] = {
607 &hf_json_3gpp_suppfeat_npcf_sm_61_enena
,
608 &hf_json_3gpp_suppfeat_npcf_sm_62_biumr
,
609 &hf_json_3gpp_suppfeat_npcf_sm_63_easipreplacement
,
610 &hf_json_3gpp_suppfeat_npcf_sm_64_exposuretoeas
,
613 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_sm_list_16
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
616 if (offset_reverse
== -1) {
620 static int* const json_3gpp_suppfeat_npcf_sm_list_17
[] = {
621 &hf_json_3gpp_suppfeat_npcf_sm_65_simultconnectivity
,
622 &hf_json_3gpp_suppfeat_npcf_sm_66_sgwrest
,
623 &hf_json_3gpp_suppfeat_npcf_sm_67_releasetoreactivate
,
624 &hf_json_3gpp_suppfeat_npcf_sm_68_easdiscovery
,
627 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_sm_list_17
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
630 if (offset_reverse
== -1) {
634 static int* const json_3gpp_suppfeat_npcf_sm_list_18
[] = {
635 &hf_json_3gpp_suppfeat_npcf_sm_69_accnetchargid_string
,
639 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_sm_list_18
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
642 if (offset_reverse
== -1) {
646 if (offset_reverse
> -1) {
647 proto_tree_add_format_text(sub_tree
, suppfeat_tvb
, 0, (offset_reverse
- len
));
650 } else if (strcmp(path
, NPCF_UE_POLICY_CONTROL
) == 0) {
651 /* TS 29.525 ch5.8 Feature negotiation */
653 static int * const json_3gpp_suppfeat_npcf_ue_list_1
[] = {
654 &hf_json_3gpp_suppfeat_npcf_ue_1_pendingtransaction
,
655 &hf_json_3gpp_suppfeat_npcf_ue_2_plmnchange
,
656 &hf_json_3gpp_suppfeat_npcf_ue_3_connectivitystatechange
,
657 &hf_json_3gpp_suppfeat_npcf_ue_4_v2x
,
660 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_ue_list_1
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
663 if (offset_reverse
== -1) {
667 static int * const json_3gpp_suppfeat_npcf_ue_list_2
[] = {
668 &hf_json_3gpp_suppfeat_npcf_ue_5_groupidlistchange
,
669 &hf_json_3gpp_suppfeat_npcf_ue_6_immediatereport
,
670 &hf_json_3gpp_suppfeat_npcf_ue_7_errorresponse
,
671 &hf_json_3gpp_suppfeat_npcf_ue_8_es3xx
,
674 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_ue_list_2
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
677 if (offset_reverse
== -1) {
681 static int * const json_3gpp_suppfeat_npcf_ue_list_3
[] = {
682 &hf_json_3gpp_suppfeat_npcf_ue_9_prose
,
685 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_npcf_ue_list_3
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
688 if (offset_reverse
== -1) {
692 if (offset_reverse
> -1) {
693 proto_tree_add_format_text(sub_tree
, suppfeat_tvb
, 0, (offset_reverse
- len
));
696 } else if (strncmp(path
, NSMF_PDU_SESSION
, 20) == 0) {
697 /* TS 29.502 ch6.1.8 Feature negotiation */
699 static int * const json_3gpp_suppfeat_nsmf_pdusession_list_1
[] = {
700 &hf_json_3gpp_suppfeat_nsmf_pdusession_1_ciot
,
701 &hf_json_3gpp_suppfeat_nsmf_pdusession_2_mapdu
,
702 &hf_json_3gpp_suppfeat_nsmf_pdusession_3_dtssa
,
703 &hf_json_3gpp_suppfeat_nsmf_pdusession_4_carpt
,
706 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_nsmf_pdusession_list_1
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
709 if (offset_reverse
== -1) {
713 static int * const json_3gpp_suppfeat_nsmf_pdusession_list_2
[] = {
714 &hf_json_3gpp_suppfeat_nsmf_pdusession_5_ctxtr
,
715 &hf_json_3gpp_suppfeat_nsmf_pdusession_6_vqos
,
716 &hf_json_3gpp_suppfeat_nsmf_pdusession_7_hofail
,
717 &hf_json_3gpp_suppfeat_nsmf_pdusession_8_es3xx
,
720 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_nsmf_pdusession_list_2
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
723 if (offset_reverse
== -1) {
727 static int * const json_3gpp_suppfeat_nsmf_pdusession_list_3
[] = {
728 &hf_json_3gpp_suppfeat_nsmf_pdusession_9_dce2er
,
729 &hf_json_3gpp_suppfeat_nsmf_pdusession_10_aasn
,
730 &hf_json_3gpp_suppfeat_nsmf_pdusession_11_enedge
,
731 &hf_json_3gpp_suppfeat_nsmf_pdusession_12_scpbu
,
734 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_nsmf_pdusession_list_3
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
737 if (offset_reverse
== -1) {
741 static int * const json_3gpp_suppfeat_nsmf_pdusession_list_4
[] = {
742 &hf_json_3gpp_suppfeat_nsmf_pdusession_13_enpn
,
743 &hf_json_3gpp_suppfeat_nsmf_pdusession_14_spae
,
744 &hf_json_3gpp_suppfeat_nsmf_pdusession_15_5gsat
,
745 &hf_json_3gpp_suppfeat_nsmf_pdusession_16_upipe
,
748 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_nsmf_pdusession_list_4
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
751 if (offset_reverse
== -1) {
755 static int * const json_3gpp_suppfeat_nsmf_pdusession_list_5
[] = {
756 &hf_json_3gpp_suppfeat_nsmf_pdusession_17_biumr
,
757 &hf_json_3gpp_suppfeat_nsmf_pdusession_18_acscr
,
758 &hf_json_3gpp_suppfeat_nsmf_pdusession_19_psetr
,
759 &hf_json_3gpp_suppfeat_nsmf_pdusession_20_dlset
,
762 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_nsmf_pdusession_list_5
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
765 if (offset_reverse
== -1) {
769 static int * const json_3gpp_suppfeat_nsmf_pdusession_list_6
[] = {
770 &hf_json_3gpp_suppfeat_nsmf_pdusession_21_n9fsc
,
773 proto_tree_add_bitmask_list_value(sub_tree
, suppfeat_tvb
, offset_reverse
, 1, json_3gpp_suppfeat_nsmf_pdusession_list_6
, g_ascii_xdigit_value(hex_ascii
[offset_reverse
]));
776 if (offset_reverse
== -1) {
780 if (offset_reverse
> -1) {
781 proto_tree_add_format_text(sub_tree
, suppfeat_tvb
, 0, (offset_reverse
- len
));
785 proto_tree_add_expert(tree
, pinfo
, &ei_json_3gpp_data_not_decoded
, tvb
, offset
, -1);
792 register_static_headers(void) {
796 /* Here hf[x].hfinfo.name is a header method which is used as key
797 * for matching ids while processing HTTP2 packets */
798 static hf_register_info hf
[] = {
800 &hf_json_3gpp_ueepspdnconnection
,
801 {"ueEpsPdnConnection", "json.3gpp.ueepspdnconnection",
802 FT_STRING
, BASE_NONE
, NULL
, 0x0,
806 &hf_json_3gpp_bearerlevelqos
,
807 {"bearerLevelQoS", "json.3gpp.bearerlevelqos",
808 FT_STRING
, BASE_NONE
, NULL
, 0x0,
812 &hf_json_3gpp_epsbearersetup
,
813 {"epsBearerSetup", "json.3gpp.epsbearersetup",
814 FT_STRING
, BASE_NONE
, NULL
, 0x0,
818 &hf_json_3gpp_forwardingbearercontexts
,
819 {"forwardingBearerContexts", "json.3gpp.forwardingbearercontexts",
820 FT_STRING
, BASE_NONE
, NULL
, 0x0,
824 &hf_json_3gpp_forwardingfteid
,
825 {"forwardingFTeid", "json.3gpp.forwardingfteid",
826 FT_STRING
, BASE_NONE
, NULL
, 0x0,
830 &hf_json_3gpp_pgwnodename
,
831 {"pgwNodeName", "json.3gpp.pgwnodename",
832 FT_STRING
, BASE_NONE
, NULL
, 0x0,
836 &hf_json_3gpp_pgws8cfteid
,
837 {"pgwS8cFteid", "json.3gpp.pgws8cfteid",
838 FT_STRING
, BASE_NONE
, NULL
, 0x0,
842 &hf_json_3gpp_pgws8ufteid
,
843 {"pgwS8uFteid", "json.3gpp.pgws8ufteid",
844 FT_STRING
, BASE_NONE
, NULL
, 0x0,
848 &hf_json_3gpp_qosrules
,
849 {"qosRules", "json.3gpp.qosrules",
850 FT_STRING
, BASE_NONE
, NULL
, 0x0,
854 &hf_json_3gpp_qosflowdescription
,
855 {"qosFlowDescription", "json.3gpp.qosflowdescription",
856 FT_STRING
, BASE_NONE
, NULL
, 0x0,
860 &hf_json_3gpp_suppFeat
,
861 {"suppFeat", "json.3gpp.suppFeat",
862 FT_STRING
, BASE_NONE
, NULL
, 0x0,
866 &hf_json_3gpp_supportedFeatures
,
867 {"supportedFeatures", "json.3gpp.supportedFeatures",
868 FT_STRING
, BASE_NONE
, NULL
, 0x0,
873 /* List of decoding functions the index matches the HF */
874 static void(*json_decode_fn
[])(tvbuff_t
* tvb
, proto_tree
* tree
, packet_info
* pinfo
, int offset
, int len
, const char* key_str
) = {
875 dissect_base64decoded_eps_ie
, /* ueEpsPdnConnection */
876 dissect_base64decoded_eps_ie
, /* bearerLevelQoS */
877 dissect_base64decoded_eps_ie
, /* epsBearerSetup */
878 dissect_base64decoded_eps_ie
, /* forwardingBearerContexts */
879 dissect_base64decoded_eps_ie
, /* forwardingFTeid */
880 dissect_base64decoded_eps_ie
, /* pgwNodeName */
881 dissect_base64decoded_eps_ie
, /* pgwS8cFteid */
882 dissect_base64decoded_eps_ie
, /* pgwS8uFteid */
884 dissect_base64decoded_nas5g_ie
, /* qosRules */
885 dissect_base64decoded_nas5g_ie
, /* qosFlowDescription */
887 dissect_3gpp_supportfeatures
, /* suppFeat */
888 dissect_3gpp_supportfeatures
, /* supportedFeatures */
893 /* Hfs with functions */
894 for (unsigned i
= 0; i
< G_N_ELEMENTS(hf
); ++i
) {
895 header_name
= g_strdup(hf
[i
].hfinfo
.name
);
896 json_data_decoder_t
* json_data_decoder_rec
= g_new(json_data_decoder_t
, 1);
897 json_data_decoder_rec
->hf_id
= &hf
[i
].hfinfo
.id
;
898 json_data_decoder_rec
->json_data_decoder
= json_decode_fn
[i
];
899 g_hash_table_insert(json_header_fields_hash
, header_name
, json_data_decoder_rec
);
902 proto_register_field_array(proto_json_3gpp
, hf
, G_N_ELEMENTS(hf
));
906 proto_register_json_3gpp(void)
908 static hf_register_info hf
[] = {
911 { &hf_json_3gpp_binary_data
,
912 { "Binary data", "json.binary_data",
913 FT_BYTES
, BASE_NONE
, NULL
, 0x00,
914 "JSON binary data", HFILL
}
916 { &hf_json_3gpp_suppfeat
,
917 { "Supported Features", "json.3gpp.suppfeat",
918 FT_STRING
, BASE_NONE
, NULL
, 0x0,
922 { &hf_json_3gpp_suppfeat_npcf_am_1_slicesupport
,
923 { "SliceSupport", "json.3gpp.suppfeat.slicesupport",
924 FT_BOOLEAN
, 4, NULL
, 0x1,
927 { &hf_json_3gpp_suppfeat_npcf_am_2_pendingtransaction
,
928 { "PendingTransaction", "json.3gpp.suppfeat.pendingtransaction",
929 FT_BOOLEAN
, 4, NULL
, 0x2,
932 { &hf_json_3gpp_suppfeat_npcf_am_3_ueambrauthorization
,
933 { "UE-AMBR_Authorization", "json.3gpp.suppfeat.ueambrauthorization",
934 FT_BOOLEAN
, 4, NULL
, 0x4,
937 { &hf_json_3gpp_suppfeat_npcf_am_4_dnnreplacementcontrol
,
938 { "DNNReplacementControl", "json.3gpp.suppfeat.dnnreplacementcontrol",
939 FT_BOOLEAN
, 4, NULL
, 0x8,
943 { &hf_json_3gpp_suppfeat_npcf_am_5_multipleaccesstypes
,
944 { "MultipleAccessTypes", "json.3gpp.suppfeat.multipleaccesstypes",
945 FT_BOOLEAN
, 4, NULL
, 0x1,
948 { &hf_json_3gpp_suppfeat_npcf_am_6_wirelinewirelessconvergence
,
949 { "WirelineWirelessConvergence", "json.3gpp.suppfeat.wirelinewirelessconvergence",
950 FT_BOOLEAN
, 4, NULL
, 0x2,
953 { &hf_json_3gpp_suppfeat_npcf_am_7_immediatereport
,
954 { "ImmediateReport", "json.3gpp.suppfeat.immediatereport",
955 FT_BOOLEAN
, 4, NULL
, 0x4,
958 { &hf_json_3gpp_suppfeat_npcf_am_8_es3xx
,
959 { "ES3XX", "json.3gpp.suppfeat.es3xx",
960 FT_BOOLEAN
, 4, NULL
, 0x8,
964 { &hf_json_3gpp_suppfeat_npcf_am_9_ueslicembrauthorization
,
965 { "UE-Slice-MBR_Authorization", "json.3gpp.suppfeat.ueslicembrauthorization",
966 FT_BOOLEAN
, 4, NULL
, 0x1,
969 { &hf_json_3gpp_suppfeat_npcf_am_10_aminfluence
,
970 { "AMInfluence", "json.3gpp.suppfeat.aminfluence",
971 FT_BOOLEAN
, 4, NULL
, 0x2,
974 { &hf_json_3gpp_suppfeat_npcf_am_11_enena
,
975 { "EneNA", "json.3gpp.suppfeat.enena",
976 FT_BOOLEAN
, 4, NULL
, 0x4,
979 { &hf_json_3gpp_suppfeat_npcf_am_12_targetnssai
,
980 { "TargetNSSAI", "json.3gpp.suppfeat.targetnssai",
981 FT_BOOLEAN
, 4, NULL
, 0x8,
985 { &hf_json_3gpp_suppfeat_npcf_am_13_5gaccessstratumtime
,
986 { "5GAccessStratumTime", "json.3gpp.suppfeat.5gaccessstratumtime",
987 FT_BOOLEAN
, 4, NULL
, 0x1,
991 { &hf_json_3gpp_suppfeat_npcf_sm_1_tsc
,
992 { "TSC", "json.3gpp.suppfeat.tsc",
993 FT_BOOLEAN
, 4, NULL
, 0x1,
996 { &hf_json_3gpp_suppfeat_npcf_sm_2_resshare
,
997 { "ResShare", "json.3gpp.suppfeat.resshare",
998 FT_BOOLEAN
, 4, NULL
, 0x2,
1001 { &hf_json_3gpp_suppfeat_npcf_sm_3_3gpppsdataoff
,
1002 { "3GPP-PS-Data-Off", "json.3gpp.suppfeat.3gpppsdataoff",
1003 FT_BOOLEAN
, 4, NULL
, 0x4,
1006 { &hf_json_3gpp_suppfeat_npcf_sm_4_adc
,
1007 { "ADC", "json.3gpp.suppfeat.adc",
1008 FT_BOOLEAN
, 4, NULL
, 0x8,
1012 { &hf_json_3gpp_suppfeat_npcf_sm_5_umc
,
1013 { "UMC", "json.3gpp.suppfeat.umc",
1014 FT_BOOLEAN
, 4, NULL
, 0x1,
1017 { &hf_json_3gpp_suppfeat_npcf_sm_6_netloc
,
1018 { "NetLoc", "json.3gpp.suppfeat.netloc",
1019 FT_BOOLEAN
, 4, NULL
, 0x2,
1022 { &hf_json_3gpp_suppfeat_npcf_sm_7_rannascause
,
1023 { "RAN-NAS-Cause", "json.3gpp.suppfeat.rannascause",
1024 FT_BOOLEAN
, 4, NULL
, 0x4,
1027 { &hf_json_3gpp_suppfeat_npcf_sm_8_provafsignalflow
,
1028 { "ProvAFsignalFlow", "json.3gpp.suppfeat.provafsignalflow",
1029 FT_BOOLEAN
, 4, NULL
, 0x8,
1033 { &hf_json_3gpp_suppfeat_npcf_sm_9_pcscfrestorationenhancement
,
1034 { "PCSCF-Restoration-Enhancement", "json.3gpp.suppfeat.pcscfrestorationenhancement",
1035 FT_BOOLEAN
, 4, NULL
, 0x1,
1038 { &hf_json_3gpp_suppfeat_npcf_sm_10_pra
,
1039 { "PRA", "json.3gpp.suppfeat.pra",
1040 FT_BOOLEAN
, 4, NULL
, 0x2,
1043 { &hf_json_3gpp_suppfeat_npcf_sm_11_ruleversioning
,
1044 { "RuleVersioning", "json.3gpp.suppfeat.ruleversioning",
1045 FT_BOOLEAN
, 4, NULL
, 0x4,
1048 { &hf_json_3gpp_suppfeat_npcf_sm_12_sponsoredconnectivity
,
1049 { "SponsoredConnectivity", "json.3gpp.suppfeat.sponsoredconnectivity",
1050 FT_BOOLEAN
, 4, NULL
, 0x8,
1054 { &hf_json_3gpp_suppfeat_npcf_sm_13_ransupportinfo
,
1055 { "RAN-Support-Info", "json.3gpp.suppfeat.ransupportinfo",
1056 FT_BOOLEAN
, 4, NULL
, 0x1,
1059 { &hf_json_3gpp_suppfeat_npcf_sm_14_policyupdatewhenuesuspends
,
1060 { "PolicyUpdateWhenUESuspends", "json.3gpp.suppfeat.policyupdatewhenuesuspends",
1061 FT_BOOLEAN
, 4, NULL
, 0x2,
1064 { &hf_json_3gpp_suppfeat_npcf_sm_15_accesstypecondition
,
1065 { "AccessTypeCondition", "json.3gpp.suppfeat.accesstypecondition",
1066 FT_BOOLEAN
, 4, NULL
, 0x4,
1069 { &hf_json_3gpp_suppfeat_npcf_sm_16_multiipv6addrprefix
,
1070 { "MultiIpv6AddrPrefix", "json.3gpp.suppfeat.multiipv6addrprefix",
1071 FT_BOOLEAN
, 4, NULL
, 0x8,
1075 { &hf_json_3gpp_suppfeat_npcf_sm_17_sessionruleerrorhandling
,
1076 { "SessionRuleErrorHandling", "json.3gpp.suppfeat.sessionruleerrorhandling",
1077 FT_BOOLEAN
, 4, NULL
, 0x1,
1080 { &hf_json_3gpp_suppfeat_npcf_sm_18_af_charging_identifier
,
1081 { "AF_Charging_Identifier", "json.3gpp.suppfeat.af_charging_identifier",
1082 FT_BOOLEAN
, 4, NULL
, 0x2,
1085 { &hf_json_3gpp_suppfeat_npcf_sm_19_atsss
,
1086 { "ATSSS", "json.3gpp.suppfeat.atsss",
1087 FT_BOOLEAN
, 4, NULL
, 0x4,
1090 { &hf_json_3gpp_suppfeat_npcf_sm_20_pendingtransaction
,
1091 { "PendingTransaction", "json.3gpp.suppfeat.pendingtransaction",
1092 FT_BOOLEAN
, 4, NULL
, 0x8,
1096 { &hf_json_3gpp_suppfeat_npcf_sm_21_urllc
,
1097 { "URLLC", "json.3gpp.suppfeat.urllc",
1098 FT_BOOLEAN
, 4, NULL
, 0x1,
1101 { &hf_json_3gpp_suppfeat_npcf_sm_22_macaddressrange
,
1102 { "MacAddressRange", "json.3gpp.suppfeat.macaddressrange",
1103 FT_BOOLEAN
, 4, NULL
, 0x2,
1106 { &hf_json_3gpp_suppfeat_npcf_sm_23_wwc
,
1107 { "WWC", "json.3gpp.suppfeat.wwc",
1108 FT_BOOLEAN
, 4, NULL
, 0x4,
1111 { &hf_json_3gpp_suppfeat_npcf_sm_24_qosmonitoring
,
1112 { "QosMonitoring", "json.3gpp.suppfeat.qosmonitoring",
1113 FT_BOOLEAN
, 4, NULL
, 0x8,
1117 { &hf_json_3gpp_suppfeat_npcf_sm_25_authorizationwithrequiredqos
,
1118 { "AuthorizationWithRequiredQoS", "json.3gpp.suppfeat.authorizationwithrequiredqos",
1119 FT_BOOLEAN
, 4, NULL
, 0x1,
1122 { &hf_json_3gpp_suppfeat_npcf_sm_26_enhancedbackgrounddatatransfer
,
1123 { "EnhancedBackgroundDataTransfer", "json.3gpp.suppfeat.enhancedbackgrounddatatransfer",
1124 FT_BOOLEAN
, 4, NULL
, 0x2,
1127 { &hf_json_3gpp_suppfeat_npcf_sm_27_dn_authorization
,
1128 { "DN-Authorization", "json.3gpp.suppfeat.dn_authorization",
1129 FT_BOOLEAN
, 4, NULL
, 0x4,
1132 { &hf_json_3gpp_suppfeat_npcf_sm_28_pdusessionrelcause
,
1133 { "PDUSessionRelCause", "json.3gpp.suppfeat.pdusessionrelcause",
1134 FT_BOOLEAN
, 4, NULL
, 0x8,
1138 { &hf_json_3gpp_suppfeat_npcf_sm_29_samepcf
,
1139 { "SamePcf", "json.3gpp.suppfeat.samepcf",
1140 FT_BOOLEAN
, 4, NULL
, 0x1,
1143 { &hf_json_3gpp_suppfeat_npcf_sm_30_adcmultiredirection
,
1144 { "ADCmultiRedirection", "json.3gpp.suppfeat.adcmultiredirection",
1145 FT_BOOLEAN
, 4, NULL
, 0x2,
1148 { &hf_json_3gpp_suppfeat_npcf_sm_31_respbasedsessionrel
,
1149 { "RespBasedSessionRel", "json.3gpp.suppfeat.respbasedsessionrel",
1150 FT_BOOLEAN
, 4, NULL
, 0x4,
1153 { &hf_json_3gpp_suppfeat_npcf_sm_32_timesensitivenetworking
,
1154 { "TimeSensitiveNetworking", "json.3gpp.suppfeat.timesensitivenetworking",
1155 FT_BOOLEAN
, 4, NULL
, 0x8,
1159 { &hf_json_3gpp_suppfeat_npcf_sm_33_emdbv
,
1160 { "EMDBV", "json.3gpp.suppfeat.emdbv",
1161 FT_BOOLEAN
, 4, NULL
, 0x1,
1164 { &hf_json_3gpp_suppfeat_npcf_sm_34_dnnselectionmode
,
1165 { "DNNSelectionMode", "json.3gpp.suppfeat.dnnselectionmodedirection",
1166 FT_BOOLEAN
, 4, NULL
, 0x2,
1169 { &hf_json_3gpp_suppfeat_npcf_sm_35_epsfallbackreport
,
1170 { "EPSFallbackReport", "json.3gpp.suppfeat.epsfallbackreport",
1171 FT_BOOLEAN
, 4, NULL
, 0x4,
1174 { &hf_json_3gpp_suppfeat_npcf_sm_36_policydecisionerrorhandling
,
1175 { "PolicyDecisionErrorHandling", "json.3gpp.suppfeat.policydecisionerrorhandling",
1176 FT_BOOLEAN
, 4, NULL
, 0x8,
1180 { &hf_json_3gpp_suppfeat_npcf_sm_37_ddneventpolicycontrol
,
1181 { "DDNEventPolicyControl", "json.3gpp.suppfeat.ddneventpolicycontrol",
1182 FT_BOOLEAN
, 4, NULL
, 0x1,
1185 { &hf_json_3gpp_suppfeat_npcf_sm_38_reallocationofcredit
,
1186 { "ReallocationOfCredit", "json.3gpp.suppfeat.reallocationofcredit",
1187 FT_BOOLEAN
, 4, NULL
, 0x2,
1190 { &hf_json_3gpp_suppfeat_npcf_sm_39_bdtpolicyrenegotiation
,
1191 { "BDTPolicyRenegotiation", "json.3gpp.suppfeat.bdtpolicyrenegotiation",
1192 FT_BOOLEAN
, 4, NULL
, 0x4,
1195 { &hf_json_3gpp_suppfeat_npcf_sm_40_extpolicydecisionerrorhandling
,
1196 { "ExtPolicyDecisionErrorHandling", "json.3gpp.suppfeat.extpolicydecisionerrorhandling",
1197 FT_BOOLEAN
, 4, NULL
, 0x8,
1201 { &hf_json_3gpp_suppfeat_npcf_sm_41_immediatetermination
,
1202 { "ImmediateTermination", "json.3gpp.suppfeat.immediatetermination",
1203 FT_BOOLEAN
, 4, NULL
, 0x1,
1206 { &hf_json_3gpp_suppfeat_npcf_sm_42_aggregateduelocchanges
,
1207 { "AggregatedUELocChanges", "json.3gpp.suppfeat.aggregateduelocchanges",
1208 FT_BOOLEAN
, 4, NULL
, 0x2,
1211 { &hf_json_3gpp_suppfeat_npcf_sm_43_es3xx
,
1212 { "ES3XX", "json.3gpp.suppfeat.es3xx",
1213 FT_BOOLEAN
, 4, NULL
, 0x4,
1216 { &hf_json_3gpp_suppfeat_npcf_sm_44_groupidlistchange
,
1217 { "GroupIdListChange", "json.3gpp.suppfeat.groupidlistchange",
1218 FT_BOOLEAN
, 4, NULL
, 0x8,
1222 { &hf_json_3gpp_suppfeat_npcf_sm_45_disableuenotification
,
1223 { "DisableUENotification", "json.3gpp.suppfeat.disableuenotification",
1224 FT_BOOLEAN
, 4, NULL
, 0x1,
1227 { &hf_json_3gpp_suppfeat_npcf_sm_46_offlinechonly
,
1228 { "OfflineChOnly", "json.3gpp.suppfeat.offlinechonly",
1229 FT_BOOLEAN
, 4, NULL
, 0x2,
1232 { &hf_json_3gpp_suppfeat_npcf_sm_47_dual_connectivity_redundant_up_paths
,
1233 { "Dual-Connectivity-redundant-UP-paths", "json.3gpp.suppfeat.dual_connectivity_redundant_up_paths",
1234 FT_BOOLEAN
, 4, NULL
, 0x4,
1237 { &hf_json_3gpp_suppfeat_npcf_sm_48_ddneventpolicycontrol2
,
1238 { "DDNEventPolicyControl2", "json.3gpp.suppfeat.ddneventpolicycontrol2",
1239 FT_BOOLEAN
, 4, NULL
, 0x8,
1243 { &hf_json_3gpp_suppfeat_npcf_sm_49_vplmn_qos_control
,
1244 { "VPLMN-QoS-Control", "json.3gpp.suppfeat.vplmn_qos_control",
1245 FT_BOOLEAN
, 4, NULL
, 0x1,
1248 { &hf_json_3gpp_suppfeat_npcf_sm_50_2g3giwk
,
1249 { "2G3GIWK", "json.3gpp.suppfeat.2g3giwk",
1250 FT_BOOLEAN
, 4, NULL
, 0x2,
1253 { &hf_json_3gpp_suppfeat_npcf_sm_51_timesensitivecommunication
,
1254 { "TimeSensitiveCommunication", "json.3gpp.suppfeat.timesensitivecommunication",
1255 FT_BOOLEAN
, 4, NULL
, 0x4,
1258 { &hf_json_3gpp_suppfeat_npcf_sm_52_enedge
,
1259 { "EnEDGE", "json.3gpp.suppfeat.enedge",
1260 FT_BOOLEAN
, 4, NULL
, 0x8,
1264 { &hf_json_3gpp_suppfeat_npcf_sm_53_satbackhaulcategorychg
,
1265 { "SatBackhaulCategoryChg", "json.3gpp.suppfeat.satbackhaulcategorychg",
1266 FT_BOOLEAN
, 4, NULL
, 0x1,
1269 { &hf_json_3gpp_suppfeat_npcf_sm_54_chfsetsupport
,
1270 { "CHFsetSupport", "json.3gpp.suppfeat.chfsetsupport",
1271 FT_BOOLEAN
, 4, NULL
, 0x2,
1274 { &hf_json_3gpp_suppfeat_npcf_sm_55_enatsss
,
1275 { "EnATSSS", "json.3gpp.suppfeat.enatsss",
1276 FT_BOOLEAN
, 4, NULL
, 0x4,
1279 { &hf_json_3gpp_suppfeat_npcf_sm_56_mpsfordts
,
1280 { "MPSforDTS", "json.3gpp.suppfeat.mpsfordts",
1281 FT_BOOLEAN
, 4, NULL
, 0x8,
1285 { &hf_json_3gpp_suppfeat_npcf_sm_57_routinginforemoval
,
1286 { "RoutingInfoRemoval", "json.3gpp.suppfeat.routinginforemoval",
1287 FT_BOOLEAN
, 4, NULL
, 0x1,
1290 { &hf_json_3gpp_suppfeat_npcf_sm_58_epra
,
1291 { "ePRA", "json.3gpp.suppfeat.epra",
1292 FT_BOOLEAN
, 4, NULL
, 0x2,
1295 { &hf_json_3gpp_suppfeat_npcf_sm_59_aminfluence
,
1296 { "AMInfluence", "json.3gpp.suppfeat.aminfluence",
1297 FT_BOOLEAN
, 4, NULL
, 0x4,
1300 { &hf_json_3gpp_suppfeat_npcf_sm_60_pvssupport
,
1301 { "PvsSupport", "json.3gpp.suppfeat.pvssupport",
1302 FT_BOOLEAN
, 4, NULL
, 0x8,
1306 { &hf_json_3gpp_suppfeat_npcf_sm_61_enena
,
1307 { "EneNA", "json.3gpp.suppfeat.enena",
1308 FT_BOOLEAN
, 4, NULL
, 0x1,
1311 { &hf_json_3gpp_suppfeat_npcf_sm_62_biumr
,
1312 { "BIUMR", "json.3gpp.suppfeat.biumr",
1313 FT_BOOLEAN
, 4, NULL
, 0x2,
1316 { &hf_json_3gpp_suppfeat_npcf_sm_63_easipreplacement
,
1317 { "EASIPreplacement", "json.3gpp.suppfeat.easipreplacement",
1318 FT_BOOLEAN
, 4, NULL
, 0x4,
1321 { &hf_json_3gpp_suppfeat_npcf_sm_64_exposuretoeas
,
1322 { "ExposureToEAS", "json.3gpp.suppfeat.exposuretoeas",
1323 FT_BOOLEAN
, 4, NULL
, 0x8,
1326 { &hf_json_3gpp_suppfeat_npcf_sm_65_simultconnectivity
,
1327 { "SimultConnectivity", "json.3gpp.suppfeat.simultconnectivity",
1328 FT_BOOLEAN
, 4, NULL
, 0x1,
1331 { &hf_json_3gpp_suppfeat_npcf_sm_66_sgwrest
,
1332 { "SGWRest", "json.3gpp.suppfeat.sgwrest",
1333 FT_BOOLEAN
, 4, NULL
, 0x2,
1336 { &hf_json_3gpp_suppfeat_npcf_sm_67_releasetoreactivate
,
1337 { "ReleaseToReactivate", "json.3gpp.suppfeat.releasetoreactivate",
1338 FT_BOOLEAN
, 4, NULL
, 0x4,
1341 { &hf_json_3gpp_suppfeat_npcf_sm_68_easdiscovery
,
1342 { "EASDiscovery", "json.3gpp.suppfeat.easdiscovery",
1343 FT_BOOLEAN
, 4, NULL
, 0x8,
1346 { &hf_json_3gpp_suppfeat_npcf_sm_69_accnetchargid_string
,
1347 { "AccNetChargId_String", "json.3gpp.suppfeat.accnetchargid_string",
1348 FT_BOOLEAN
, 4, NULL
, 0x1,
1352 { &hf_json_3gpp_suppfeat_npcf_ue_1_pendingtransaction
,
1353 { "PendingTransaction", "json.3gpp.suppfeat.pendingtransaction",
1354 FT_BOOLEAN
, 4, NULL
, 0x1,
1357 { &hf_json_3gpp_suppfeat_npcf_ue_2_plmnchange
,
1358 { "PlmnChange", "json.3gpp.suppfeat.plmnchange",
1359 FT_BOOLEAN
, 4, NULL
, 0x2,
1362 { &hf_json_3gpp_suppfeat_npcf_ue_3_connectivitystatechange
,
1363 { "ConnectivityStateChange", "json.3gpp.suppfeat.connectivitystatechange",
1364 FT_BOOLEAN
, 4, NULL
, 0x4,
1367 { &hf_json_3gpp_suppfeat_npcf_ue_4_v2x
,
1368 { "V2X", "json.3gpp.suppfeat.v2x",
1369 FT_BOOLEAN
, 4, NULL
, 0x8,
1373 { &hf_json_3gpp_suppfeat_npcf_ue_5_groupidlistchange
,
1374 { "GroupIdListChange", "json.3gpp.suppfeat.groupidlistchange",
1375 FT_BOOLEAN
, 4, NULL
, 0x1,
1378 { &hf_json_3gpp_suppfeat_npcf_ue_6_immediatereport
,
1379 { "ImmediateReport", "json.3gpp.suppfeat.immediatereport",
1380 FT_BOOLEAN
, 4, NULL
, 0x2,
1383 { &hf_json_3gpp_suppfeat_npcf_ue_7_errorresponse
,
1384 { "ErrorResponse", "json.3gpp.suppfeat.errorresponse",
1385 FT_BOOLEAN
, 4, NULL
, 0x4,
1388 { &hf_json_3gpp_suppfeat_npcf_ue_8_es3xx
,
1389 { "ES3XX", "json.3gpp.suppfeat.es3xx",
1390 FT_BOOLEAN
, 4, NULL
, 0x8,
1394 { &hf_json_3gpp_suppfeat_npcf_ue_9_prose
,
1395 { "ProSe", "json.3gpp.suppfeat.prose",
1396 FT_BOOLEAN
, 4, NULL
, 0x1,
1400 { &hf_json_3gpp_suppfeat_nsmf_pdusession_1_ciot
,
1401 { "CIOT", "json.3gpp.suppfeat.ciot",
1402 FT_BOOLEAN
, 4, NULL
, 0x1,
1403 "Cellular IoT", HFILL
}
1405 { &hf_json_3gpp_suppfeat_nsmf_pdusession_2_mapdu
,
1406 { "MAPDU", "json.3gpp.suppfeat.mapdu",
1407 FT_BOOLEAN
, 4, NULL
, 0x2,
1408 "Multi-Access PDU Session", HFILL
}
1410 { &hf_json_3gpp_suppfeat_nsmf_pdusession_3_dtssa
,
1411 { "DTSSA", "json.3gpp.suppfeat.dtssa",
1412 FT_BOOLEAN
, 4, NULL
, 0x4,
1413 "Deployments Topologies with specific SMF Service Areas", HFILL
}
1415 { &hf_json_3gpp_suppfeat_nsmf_pdusession_4_carpt
,
1416 { "CARPT", "json.3gpp.suppfeat.carpt",
1417 FT_BOOLEAN
, 4, NULL
, 0x8,
1418 "SMF derived CN Assisted RAN parameters Tuning", HFILL
}
1421 { &hf_json_3gpp_suppfeat_nsmf_pdusession_5_ctxtr
,
1422 { "CTXTR", "json.3gpp.suppfeat.ctxtr",
1423 FT_BOOLEAN
, 4, NULL
, 0x1,
1426 { &hf_json_3gpp_suppfeat_nsmf_pdusession_6_vqos
,
1427 { "VQOS", "json.3gpp.suppfeat.vqos",
1428 FT_BOOLEAN
, 4, NULL
, 0x2,
1429 "VPLMN QoS", HFILL
}
1431 { &hf_json_3gpp_suppfeat_nsmf_pdusession_7_hofail
,
1432 { "HOFAIL", "json.3gpp.suppfeat.hofail",
1433 FT_BOOLEAN
, 4, NULL
, 0x4,
1436 { &hf_json_3gpp_suppfeat_nsmf_pdusession_8_es3xx
,
1437 { "ES3XX", "json.3gpp.suppfeat.es3xx",
1438 FT_BOOLEAN
, 4, NULL
, 0x8,
1442 { &hf_json_3gpp_suppfeat_nsmf_pdusession_9_dce2er
,
1443 { "DCE2ER", "json.3gpp.suppfeat.dce2er",
1444 FT_BOOLEAN
, 4, NULL
, 0x1,
1447 { &hf_json_3gpp_suppfeat_nsmf_pdusession_10_aasn
,
1448 { "AASN", "json.3gpp.suppfeat.aasn",
1449 FT_BOOLEAN
, 4, NULL
, 0x2,
1452 { &hf_json_3gpp_suppfeat_nsmf_pdusession_11_enedge
,
1453 { "ENEDGE", "json.3gpp.suppfeat.enedge",
1454 FT_BOOLEAN
, 4, NULL
, 0x4,
1457 { &hf_json_3gpp_suppfeat_nsmf_pdusession_12_scpbu
,
1458 { "SCPBU", "json.3gpp.suppfeat.scpbu",
1459 FT_BOOLEAN
, 4, NULL
, 0x8,
1463 { &hf_json_3gpp_suppfeat_nsmf_pdusession_13_enpn
,
1464 { "ENPN", "json.3gpp.suppfeat.enpn",
1465 FT_BOOLEAN
, 4, NULL
, 0x1,
1468 { &hf_json_3gpp_suppfeat_nsmf_pdusession_14_spae
,
1469 { "SPAE", "json.3gpp.suppfeat.spae",
1470 FT_BOOLEAN
, 4, NULL
, 0x2,
1473 { &hf_json_3gpp_suppfeat_nsmf_pdusession_15_5gsat
,
1474 { "5GSAT", "json.3gpp.suppfeat.5gsat",
1475 FT_BOOLEAN
, 4, NULL
, 0x4,
1478 { &hf_json_3gpp_suppfeat_nsmf_pdusession_16_upipe
,
1479 { "UPIPE", "json.3gpp.suppfeat.upipe",
1480 FT_BOOLEAN
, 4, NULL
, 0x8,
1481 "User Plane Integrity Protection with EPS", HFILL
}
1484 { &hf_json_3gpp_suppfeat_nsmf_pdusession_17_biumr
,
1485 { "BIUMR", "json.3gpp.suppfeat.biumr",
1486 FT_BOOLEAN
, 4, NULL
, 0x1,
1489 { &hf_json_3gpp_suppfeat_nsmf_pdusession_18_acscr
,
1490 { "ACSCR", "json.3gpp.suppfeat.acscr",
1491 FT_BOOLEAN
, 4, NULL
, 0x2,
1494 { &hf_json_3gpp_suppfeat_nsmf_pdusession_19_psetr
,
1495 { "PSETR", "json.3gpp.suppfeat.psetr",
1496 FT_BOOLEAN
, 4, NULL
, 0x4,
1499 { &hf_json_3gpp_suppfeat_nsmf_pdusession_20_dlset
,
1500 { "DLSET", "json.3gpp.suppfeat.dlset",
1501 FT_BOOLEAN
, 4, NULL
, 0x8,
1505 { &hf_json_3gpp_suppfeat_nsmf_pdusession_21_n9fsc
,
1506 { "N9FSC", "json.3gpp.suppfeat.n9fsc",
1507 FT_BOOLEAN
, 4, NULL
, 0x1,
1513 static int *ett
[] = {
1514 &ett_json_base64decoded_eps_ie
,
1515 &ett_json_base64decoded_nas5g_ie
,
1516 &ett_json_3gpp_data
,
1519 static ei_register_info ei
[] = {
1520 { &ei_json_3gpp_data_not_decoded
,{ "json.3gpp.data_not_decoded", PI_UNDECODED
, PI_NOTE
, "Data not decoded by WS yet", EXPFILL
} },
1521 { &ei_json_3gpp_encoding_error
,{ "json.3gpp.encoding_error", PI_UNDECODED
, PI_ERROR
, "Data wrongly encoded", EXPFILL
} },
1524 expert_module_t
* expert_json_3gpp
;
1526 /* Required function calls to register the header fields and subtrees used */
1527 proto_json_3gpp
= proto_register_protocol("JSON 3GPP","JSON_3GPP", "json.3gpp");
1528 proto_register_field_array(proto_json_3gpp
, hf
, array_length(hf
));
1529 proto_register_subtree_array(ett
, array_length(ett
));
1530 expert_json_3gpp
= expert_register_protocol(proto_json_3gpp
);
1531 expert_register_field_array(expert_json_3gpp
, ei
, array_length(ei
));
1533 /* Fill hash table with static headers */
1534 register_static_headers();
1538 proto_reg_handoff_json_3gpp(void)
1540 proto_http
= proto_get_id_by_filter_name("http");
1544 * Editor modelines - https://www.wireshark.org/tools/modelines.html
1549 * indent-tabs-mode: t
1552 * vi: set shiftwidth=8 tabstop=8 noexpandtab:
1553 * :indentSize=8:tabSize=8:noTabs=false: