3 * Routines to Dissect Appendix C TLVs
4 * Copyright 2015, Adrian Simionov <daniel.simionov@gmail.com>
5 * Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
6 * Copyright 2017, Bruno Verstuyft <bruno.verstuyft@excentis.com>
8 * Wireshark - Network traffic analyzer
9 * By Gerald Combs <gerald@wireshark.org>
10 * Copyright 1998 Gerald Combs
12 * SPDX-License-Identifier: GPL-2.0-or-later
17 #include <epan/packet.h>
18 #include <epan/expert.h>
19 #include <epan/reassemble.h>
21 #include <epan/unit_strings.h>
23 #include "packet-docsis-tlv.h"
25 /* This module will dissect the Appendix C TLVs. Please see:
26 * http://www.cablemodem.com/specifications/specifications.html
28 * The main dissector is dissect_docsis_tlv. This routine will dissect
29 * top level TLVs and call sub-dissectors for the sub-TLVs.
32 void proto_register_docsis_tlv(void);
33 void proto_reg_handoff_docsis_tlv(void);
35 /* Initialize the protocol and registered fields */
36 static dissector_handle_t docsis_vsif_handle
;
37 static dissector_handle_t docsis_ucd_handle
;
38 static dissector_handle_t docsis_rba_handle
;
40 static int proto_docsis_tlv
;
41 static int hf_docsis_tlv_down_freq
;
42 static int hf_docsis_tlv_upstream_chid
;
43 static int hf_docsis_tlv_net_access
;
44 /* static int hf_docsis_tlv_cos; */
45 /* static int hf_docsis_tlv_mcap; */
46 static int hf_docsis_tlv_privacy_enable
;
47 static int hf_docsis_tlv_max_cpe
;
48 static int hf_docsis_tlv_max_classifiers
;
49 static int hf_docsis_tlv_snmp_access
;
50 static int hf_docsis_tlv_snmp_obj
;
51 static int hf_docsis_tlv_svc_unavail
;
52 static int hf_docsis_tlv_svc_unavail_classid
;
53 static int hf_docsis_tlv_svc_unavail_type
;
54 static int hf_docsis_tlv_svc_unavail_code
;
55 static int hf_docsis_tlv_bpi
;
56 /* static int hf_docsis_tlv_phs; */
57 static int hf_docsis_tlv_hmac_digest
;
58 static int hf_docsis_tlv_tftp_server_timestamp
;
59 static int hf_docsis_tlv_tftp_prov_modem_address
;
60 /* static int hf_docsis_tlv_upclsfr; */
61 /* static int hf_docsis_tlv_downclsfr; */
62 /* static int hf_docsis_tlv_upsflow; */
63 /* static int hf_docsis_tlv_downsflow; */
64 /* static int hf_docsis_tlv_vendor_spec; */
65 static int hf_docsis_tlv_cm_mic
;
66 static int hf_docsis_tlv_cmts_mic
;
67 static int hf_docsis_tlv_auth_block
;
68 static int hf_docsis_tlv_key_seq_num
;
69 static int hf_docsis_tlv_snmpv3_kick
;
70 static int hf_docsis_tlv_snmpv3_kick_name
;
71 static int hf_docsis_tlv_snmpv3_kick_publicnum
;
72 static int hf_docsis_tlv_mfgr_cvc
;
73 static int hf_docsis_tlv_cosign_cvc
;
74 static int hf_docsis_tlv_vendor_id
;
75 static int hf_docsis_tlv_sw_file
;
76 static int hf_docsis_tlv_sw_upg_srvr
;
77 static int hf_docsis_tlv_cpe_ethernet
;
78 static int hf_docsis_tlv_modem_addr
;
79 static int hf_docsis_tlv_rng_tech
;
80 static int hf_docsis_tlv_subs_mgmt_ctrl
;
81 static int hf_docsis_tlv_subs_mgmt_ip_table
;
82 static int hf_docsis_tlv_subs_mgmt_ip_entry
;
83 static int hf_docsis_tlv_subs_mgmt_filter_grps
;
84 static int hf_docsis_tlv_snmpv3_ntfy_rcvr
;
85 static int hf_docsis_tlv_enable_20_mode
;
86 static int hf_docsis_tlv_enable_test_modes
;
87 /* static int hf_docsis_tlv_ds_ch_list; */
88 static int hf_docsis_tlv_mc_mac_address
;
89 /* static int hf_docsis_tlv_dut_filter; */
90 /* static int hf_docsis_tlv_tcc; */
91 /* static int hf_docsis_tlv_sid_cl; */
92 /* static int hf_docsis_tlv_rcp; */
93 /* static int hf_docsis_tlv_rcc; */
94 /* static int hf_docsis_tlv_dsid; */
95 /* static int hf_docsis_tlv_sec_assoc; */
96 static int hf_docsis_tlv_init_ch_timeout
;
97 /* static int hf_docsis_tlv_ch_asgn; */
98 static int hf_docsis_tlv_cm_init_reason
;
99 static int hf_docsis_tlv_sw_upg_srvr_ipv6
;
100 static int hf_docsis_tlv_tftp_prov_cm_ipv6_addr
;
101 static int hf_docsis_tlv_us_drop_clfy
;
102 static int hf_docsis_tlv_subs_mgmt_ipv6_lst
;
103 static int hf_docsis_tlv_us_drop_clfy_group_id
;
104 static int hf_docsis_tlv_subs_mgmt_ctrl_max_cpe_ipv6
;
105 /* static int hf_docsis_tlv_cmts_mc_sess_enc; */
107 static int hf_docsis_tlv_cos_id
;
108 static int hf_docsis_tlv_cos_sid
;
109 static int hf_docsis_tlv_cos_max_down
;
110 static int hf_docsis_tlv_cos_max_up
;
111 static int hf_docsis_tlv_cos_up_chnl_pri
;
112 static int hf_docsis_tlv_cos_min_grntd_up
;
113 static int hf_docsis_tlv_cos_max_up_burst
;
114 static int hf_docsis_tlv_cos_privacy_enable
;
116 static int hf_docsis_tlv_mcap_concat
;
117 static int hf_docsis_tlv_mcap_docs_ver
;
118 static int hf_docsis_tlv_mcap_frag
;
119 static int hf_docsis_tlv_mcap_phs
;
120 static int hf_docsis_tlv_mcap_igmp
;
121 static int hf_docsis_tlv_mcap_down_said
;
122 static int hf_docsis_tlv_mcap_up_sid
;
123 static int hf_docsis_tlv_mcap_privacy
;
124 static int hf_docsis_tlv_mcap_8021P_filter
;
125 static int hf_docsis_tlv_mcap_8021Q_filter
;
126 static int hf_docsis_tlv_mcap_xmit_eq_taps_per_sym
;
127 static int hf_docsis_tlv_mcap_xmit_eq_taps
;
128 static int hf_docsis_tlv_mcap_dcc
;
129 static int hf_docsis_tlv_mcap_ip_filters
;
130 static int hf_docsis_tlv_mcap_llc_filters
;
131 static int hf_docsis_tlv_mcap_exp_unicast_sid
;
132 static int hf_docsis_tlv_mcap_rnghoff_cm
;
133 static int hf_docsis_tlv_mcap_rnghoff_erouter
;
134 static int hf_docsis_tlv_mcap_rnghoff_emta
;
135 static int hf_docsis_tlv_mcap_rnghoff_estb
;
136 static int hf_docsis_tlv_mcap_l2vpn
;
137 static int hf_docsis_tlv_mcap_l2vpn_esafe
;
138 static int hf_docsis_tlv_mcap_dut_filtering
;
139 static int hf_docsis_tlv_mcap_us_freq_range
;
140 static int hf_docsis_tlv_mcap_us_srate_160
;
141 static int hf_docsis_tlv_mcap_us_srate_320
;
142 static int hf_docsis_tlv_mcap_us_srate_640
;
143 static int hf_docsis_tlv_mcap_us_srate_1280
;
144 static int hf_docsis_tlv_mcap_us_srate_2560
;
145 static int hf_docsis_tlv_mcap_us_srate_5120
;
146 static int hf_docsis_tlv_mcap_sac
;
147 static int hf_docsis_tlv_mcap_code_hop_mode2
;
148 static int hf_docsis_tlv_mcap_mtc
;
149 static int hf_docsis_tlv_mcap_512_msps_utc
;
150 static int hf_docsis_tlv_mcap_256_msps_utc
;
151 static int hf_docsis_tlv_mcap_total_sid_cluster
;
152 static int hf_docsis_tlv_mcap_sid_per_sf
;
153 static int hf_docsis_tlv_mcap_mrc
;
154 static int hf_docsis_tlv_mcap_total_dsid
;
155 static int hf_docsis_tlv_mcap_reseq_dsid
;
156 static int hf_docsis_tlv_mcap_mc_dsid
;
157 static int hf_docsis_tlv_mcap_mc_dsid_fwd
;
158 static int hf_docsis_tlv_mcap_fctype_fwd
;
159 static int hf_docsis_tlv_mcap_dpv_path
;
160 static int hf_docsis_tlv_mcap_dpv_packet
;
161 static int hf_docsis_tlv_mcap_ugs
;
162 static int hf_docsis_tlv_mcap_map_ucd
;
163 static int hf_docsis_tlv_mcap_udc
;
164 static int hf_docsis_tlv_mcap_ipv6
;
165 static int hf_docsis_tlv_mcap_ext_us_trans_power
;
166 static int hf_docsis_tlv_mcap_em
;
167 static int hf_docsis_tlv_mcap_em_1x1
;
168 static int hf_docsis_tlv_mcap_em_light_sleep
;
169 static int hf_docsis_tlv_mcap_cm_status_ack
;
170 static int hf_docsis_tlv_mcap_em_pref
;
171 static int hf_docsis_tlv_mcap_em_pref_1x1
;
172 static int hf_docsis_tlv_mcap_em_pref_dls
;
173 static int hf_docsis_tlv_mcap_ext_pkt_len_sup_cap
;
174 static int hf_docsis_tlv_mcap_ofdm_mult_recv_chan_sup
;
175 static int hf_docsis_tlv_mcap_ofdma_mult_trans_chan_sup
;
176 static int hf_docsis_tlv_mcap_down_ofdm_prof_sup
;
177 static int hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup
;
178 static int hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_reserved
;
179 static int hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_qpsk
;
180 static int hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_16qam
;
181 static int hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_64qam
;
182 static int hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_128qam
;
183 static int hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_256qam
;
184 static int hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_512qam
;
185 static int hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_1024qam
;
186 static int hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_2048qam
;
187 static int hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_4096qam
;
188 static int hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_8192qam
;
189 static int hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_16384qam
;
190 static int hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup
;
191 static int hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_reserved
;
192 static int hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_qpsk
;
193 static int hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_8qam
;
194 static int hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_16qam
;
195 static int hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_32qam
;
196 static int hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_64qam
;
197 static int hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_128qam
;
198 static int hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_256qam
;
199 static int hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_512qam
;
200 static int hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_1024qam
;
201 static int hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_2048qam
;
202 static int hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_4096qam
;
203 static int hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_8192qam
;
204 static int hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_16384qam
;
205 static int hf_docsis_tlv_mcap_down_lower_band_edge_conf
;
206 static int hf_docsis_tlv_mcap_down_lower_band_edge_conf_108
;
207 static int hf_docsis_tlv_mcap_down_lower_band_edge_conf_258
;
208 static int hf_docsis_tlv_mcap_down_upper_band_edge_conf
;
209 static int hf_docsis_tlv_mcap_down_upper_band_edge_conf_1218
;
210 static int hf_docsis_tlv_mcap_down_upper_band_edge_conf_1794
;
211 static int hf_docsis_tlv_mcap_down_upper_band_edge_conf_1002
;
212 static int hf_docsis_tlv_mcap_dipl_up_upper_band_edge_conf
;
213 static int hf_docsis_tlv_mcap_docsis_time_prot_mode
;
214 static int hf_docsis_tlv_mcap_docsis_time_prot_perf_sup
;
215 static int hf_docsis_tlv_mcap_pmax
;
216 static int hf_docsis_tlv_mcap_dipl_down_lower_band_edge
;
217 static int hf_docsis_tlv_mcap_dipl_down_lower_band_edge_108
;
218 static int hf_docsis_tlv_mcap_dipl_down_lower_band_edge_258
;
219 static int hf_docsis_tlv_mcap_dipl_down_upper_band_edge
;
220 static int hf_docsis_tlv_mcap_dipl_down_upper_band_edge_1218
;
221 static int hf_docsis_tlv_mcap_dipl_down_upper_band_edge_1794
;
222 static int hf_docsis_tlv_mcap_dipl_down_upper_band_edge_1002
;
223 static int hf_docsis_tlv_mcap_dipl_up_upper_band_edge
;
224 static int hf_docsis_tlv_mcap_dipl_up_upper_band_edge_42
;
225 static int hf_docsis_tlv_mcap_dipl_up_upper_band_edge_65
;
226 static int hf_docsis_tlv_mcap_dipl_up_upper_band_edge_85
;
227 static int hf_docsis_tlv_mcap_dipl_up_upper_band_edge_117
;
228 static int hf_docsis_tlv_mcap_dipl_up_upper_band_edge_204
;
229 static int hf_docsis_tlv_mcap_advanced_band_plan
;
230 static int hf_docsis_tlv_mcap_advanced_band_plan_fdx_l
;
231 static int hf_docsis_tlv_mcap_advanced_band_plan_fdx
;
232 static int hf_docsis_tlv_mcap_advanced_band_plan_fdd
;
233 static int hf_docsis_tlv_mcap_advanced_band_plan_reserved
;
234 static int hf_docsis_tlv_mcap_ext_sf_cluster_assign_sup
;
235 static int hf_docsis_tlv_mcap_low_latency_sup
;
236 static int hf_docsis_tlv_mcap_adv_down_lower_band_edge_conf
;
237 static int hf_docsis_tlv_mcap_adv_down_upper_band_edge_conf
;
238 static int hf_docsis_tlv_mcap_adv_up_upper_band_edge_conf
;
239 static int hf_docsis_tlv_mcap_adv_down_lower_band_edge_option
;
240 static int hf_docsis_tlv_mcap_adv_down_upper_band_edge_option
;
241 static int hf_docsis_tlv_mcap_adv_up_upper_band_edge_option
;
242 static int hf_docsis_tlv_mcap_extended_power_options
;
244 static int hf_docsis_tlv_clsfr_ref
;
245 static int hf_docsis_tlv_clsfr_id
;
246 static int hf_docsis_tlv_clsfr_sflow_ref
;
247 static int hf_docsis_tlv_clsfr_sflow_id
;
248 static int hf_docsis_tlv_clsfr_rule_pri
;
249 static int hf_docsis_tlv_clsfr_act_state
;
250 static int hf_docsis_tlv_clsfr_dsc_act
;
251 /* static int hf_docsis_tlv_clsfr_err; */
252 /* static int hf_docsis_tlv_ipclsfr; */
253 /* static int hf_docsis_tlv_ethclsfr; */
254 /* static int hf_docsis_tlv_dot1qclsfr; */
256 static int hf_docsis_tlv_clsfr_vendor_spc
;
258 static int hf_docsis_tlv_clsfr_err_param
;
259 static int hf_docsis_tlv_clsfr_err_code
;
260 static int hf_docsis_tlv_clsfr_err_msg
;
262 static int hf_docsis_tlv_ipclsfr_tosmask
;
263 static int hf_docsis_tlv_ipclsfr_ipproto
;
264 static int hf_docsis_tlv_ipclsfr_src
;
265 static int hf_docsis_tlv_ipclsfr_dst
;
266 static int hf_docsis_tlv_ipclsfr_srcmask
;
267 static int hf_docsis_tlv_ipclsfr_dstmask
;
268 static int hf_docsis_tlv_ipclsfr_sport_start
;
269 static int hf_docsis_tlv_ipclsfr_sport_end
;
270 static int hf_docsis_tlv_ipclsfr_dport_start
;
271 static int hf_docsis_tlv_ipclsfr_dport_end
;
273 static int hf_docsis_tlv_ip6clsfr_tc_low
;
274 static int hf_docsis_tlv_ip6clsfr_tc_high
;
275 static int hf_docsis_tlv_ip6clsfr_tc_mask
;
276 static int hf_docsis_tlv_ip6clsfr_flow_label
;
277 static int hf_docsis_tlv_ip6clsfr_next_header
;
278 static int hf_docsis_tlv_ip6clsfr_src
;
279 static int hf_docsis_tlv_ip6clsfr_src_prefix_length
;
280 static int hf_docsis_tlv_ip6clsfr_dst
;
281 static int hf_docsis_tlv_ip6clsfr_dst_prefix_length
;
283 static int hf_docsis_tlv_ethclsfr_dmac
;
284 static int hf_docsis_tlv_ethclsfr_smac
;
285 static int hf_docsis_tlv_ethclsfr_ethertype
;
287 static int hf_docsis_tlv_dot1qclsfr_user_pri
;
288 static int hf_docsis_tlv_dot1qclsfr_vlanid
;
289 static int hf_docsis_tlv_dot1qclsfr_vendorspec
;
291 static int hf_docsis_tlv_sflow_ref
;
292 static int hf_docsis_tlv_sflow_id
;
293 static int hf_docsis_tlv_sflow_sid
;
294 static int hf_docsis_tlv_sflow_classname
;
295 static int hf_docsis_tlv_sflow_qos_param
;
296 /* static int hf_docsis_tlv_sflow_err; */
297 static int hf_docsis_tlv_sflow_traf_pri
;
298 static int hf_docsis_tlv_sflow_max_sus
;
299 static int hf_docsis_tlv_sflow_max_burst
;
300 static int hf_docsis_tlv_sflow_min_traf
;
301 static int hf_docsis_tlv_sflow_ass_min_pkt_size
;
302 static int hf_docsis_tlv_sflow_timeout_active
;
303 static int hf_docsis_tlv_sflow_timeout_admitted
;
304 static int hf_docsis_tlv_sflow_peak_traffic_rate
;
305 static int hf_docsis_tlv_sflow_req_attr_mask
;
306 static int hf_docsis_tlv_sflow_forb_attr_mask
;
307 static int hf_docsis_tlv_sflow_attr_aggr_rule_mask
;
308 static int hf_docsis_tlv_sflow_vendor_spec
;
309 static int hf_docsis_tlv_sflow_max_concat_burst
;
310 static int hf_docsis_tlv_sflow_sched_type
;
311 static int hf_docsis_tlv_sflow_reqxmit_pol
;
312 static int hf_docsis_tlv_sflow_reqxmit_all_cm_broadcast
;
313 static int hf_docsis_tlv_sflow_reqxmit_priority_multicast
;
314 static int hf_docsis_tlv_sflow_reqxmit_req_data_requests
;
315 static int hf_docsis_tlv_sflow_reqxmit_req_data_data
;
316 static int hf_docsis_tlv_sflow_reqxmit_piggy_back
;
317 static int hf_docsis_tlv_sflow_reqxmit_concatenate_data
;
318 static int hf_docsis_tlv_sflow_reqxmit_fragment
;
319 static int hf_docsis_tlv_sflow_reqxmit_suppress_payload
;
320 static int hf_docsis_tlv_sflow_reqxmit_drop_packets
;
321 static int hf_docsis_tlv_sflow_nominal_polling
;
322 static int hf_docsis_tlv_sflow_tolerated_jitter
;
323 static int hf_docsis_tlv_sflow_ugs_size
;
324 static int hf_docsis_tlv_sflow_nom_grant_intvl
;
325 static int hf_docsis_tlv_sflow_tol_grant_jitter
;
326 static int hf_docsis_tlv_sflow_grants_per_intvl
;
327 static int hf_docsis_tlv_sflow_ip_tos_overwrite
;
328 static int hf_docsis_tlv_sflow_ugs_timeref
;
329 static int hf_docsis_tlv_sflow_cont_req_backoff_window_mult
;
330 static int hf_docsis_tlv_sflow_num_of_bytes_requested_mult
;
331 static int hf_docsis_tlv_sflow_max_down_latency
;
332 static int hf_docsis_tlv_sflow_down_reseq
;
334 static int hf_docsis_tlv_sflow_err_param
;
335 static int hf_docsis_tlv_sflow_err_code
;
336 static int hf_docsis_tlv_sflow_err_msg
;
338 static int hf_docsis_tlv_phs_class_ref
;
339 static int hf_docsis_tlv_phs_class_id
;
340 static int hf_docsis_tlv_phs_sflow_ref
;
341 static int hf_docsis_tlv_phs_sflow_id
;
342 static int hf_docsis_tlv_phs_dsc_action
;
343 /* static int hf_docsis_tlv_phs_err; */
344 static int hf_docsis_tlv_phs_phsf
;
345 static int hf_docsis_tlv_phs_phsm
;
346 /* static int hf_docsis_tlv_phs_phsv; */
347 static int hf_docsis_tlv_phs_phsi
;
348 static int hf_docsis_tlv_phs_phss
;
349 static int hf_docsis_tlv_phs_dbc_action
;
350 static int hf_docsis_tlv_phs_vendorspec
;
352 static int hf_docsis_tlv_phs_err_param
;
353 static int hf_docsis_tlv_phs_err_code
;
354 static int hf_docsis_tlv_phs_err_msg
;
356 /* static int hf_docsis_tlv_ds_ch_list_single; */
357 /* static int hf_docsis_tlv_ds_ch_list_range; */
358 static int hf_docsis_tlv_ds_ch_list_default_timeout
;
360 static int hf_docsis_tlv_single_ch_timeout
;
361 static int hf_docsis_tlv_single_ch_freq
;
363 static int hf_docsis_tlv_freq_rng_timeout
;
364 static int hf_docsis_tlv_freq_rng_start
;
365 static int hf_docsis_tlv_freq_rng_end
;
366 static int hf_docsis_tlv_freq_rng_step
;
368 static int hf_docsis_tlv_dut_filter_control
;
369 static int hf_docsis_tlv_dut_filter_cmim
;
371 static int hf_docsis_tlv_tcc_refid
;
372 static int hf_docsis_tlv_tcc_us_ch_action
;
373 static int hf_docsis_tlv_tcc_us_ch_id
;
374 static int hf_docsis_tlv_tcc_new_us_ch_id
;
375 static int hf_docsis_tlv_tcc_ucd
;
376 static int hf_docsis_tlv_tcc_rng_sid
;
377 static int hf_docsis_tlv_tcc_init_tech
;
378 /* static int hf_docsis_tlv_tcc_rng_parms; */
379 static int hf_docsis_tlv_tcc_dyn_rng_win
;
380 static int hf_docsis_tlv_tcc_p_16hi
;
381 static int hf_docsis_tlv_tcc_oudp_iuc
;
382 static int hf_docsis_tlv_tcc_extended_drw
;
383 static int hf_docsis_tlv_tcc_extended_us_rng_pwr
;
384 static int hf_docsis_tlv_tcc_oudp_sounding_sid
;
385 /* static int hf_docsis_tlv_tcc_err; */
387 static int hf_docsis_rng_parms_us_ch_id
;
388 static int hf_docsis_rng_parms_time_off_int
;
389 static int hf_docsis_rng_parms_time_off_frac
;
390 static int hf_docsis_rng_parms_power_off
;
391 static int hf_docsis_rng_parms_freq_off
;
393 static int hf_docsis_tcc_err_subtype
;
394 static int hf_docsis_tcc_err_code
;
395 static int hf_docsis_tcc_err_msg
;
397 static int hf_docsis_sid_cl_sf_id
;
398 /* static int hf_docsis_sid_cl_enc; */
399 /* static int hf_docsis_sid_cl_so_crit; */
401 static int hf_docsis_sid_cl_enc_id
;
402 /* static int hf_docsis_sid_cl_enc_map; */
404 static int hf_docsis_sid_cl_map_us_ch_id
;
405 static int hf_docsis_sid_cl_map_sid
;
406 static int hf_docsis_sid_cl_map_action
;
408 static int hf_docsis_sid_cl_so_max_req
;
409 static int hf_docsis_sid_cl_so_max_out_bytes
;
410 static int hf_docsis_sid_cl_so_max_req_bytes
;
411 static int hf_docsis_sid_cl_so_max_time
;
413 static int hf_docsis_tlv_rcp_id
;
414 static int hf_docsis_tlv_rcp_name
;
415 static int hf_docsis_tlv_rcp_freq_spc
;
416 /* static int hf_docsis_tlv_rcp_rcv_mod_enc; */
417 /* static int hf_docsis_tlv_rcp_rcv_ch; */
418 /* static int hf_docsis_tlv_rcp_ven_spec; */
420 static int hf_docsis_rcv_mod_enc_idx
;
421 static int hf_docsis_rcv_mod_enc_adj_ch
;
422 /* static int hf_docsis_rcv_mod_enc_ch_bl_rng; */
423 static int hf_docsis_rcv_mod_enc_ctr_freq_asgn
;
424 static int hf_docsis_rcv_mod_enc_rsq_ch_subs_cap
;
425 static int hf_docsis_rcv_mod_enc_conn
;
426 static int hf_docsis_rcv_mod_enc_phy_layr_parms
;
428 static int hf_docsis_rcc_rcv_mod_enc_idx
;
429 static int hf_docsis_rcc_rcv_mod_enc_ctr_freq_asgn
;
430 static int hf_docsis_rcc_rcv_mod_enc_conn
;
432 static int hf_docsis_ch_bl_rng_min_ctr_freq
;
433 static int hf_docsis_ch_bl_rng_max_ctr_freq
;
435 static int hf_docsis_rcv_ch_idx
;
436 static int hf_docsis_rcv_ch_conn
;
437 static int hf_docsis_rcv_ch_conn_off
;
438 static int hf_docsis_rcv_ch_prim_ds_ch_ind
;
440 static int hf_docsis_rcc_rcv_ch_idx
;
441 static int hf_docsis_rcc_rcv_ch_conn
;
442 static int hf_docsis_rcc_rcv_ch_ctr_freq_asgn
;
443 static int hf_docsis_rcc_rcv_ch_prim_ds_ch_ind
;
445 static int hf_docsis_tlv_rcc_id
;
446 static int hf_docsis_tlv_rcc_partial_serv_down_chan_id
;
447 static int hf_docsis_tlv_rcc_srcc_prim_ds_chan_assign_ds_ch_id
;
448 static int hf_docsis_tlv_rcc_srcc_ds_chan_assign_ds_ch_id
;
449 static int hf_docsis_tlv_rcc_srcc_ds_prof_assign_dcid
;
450 static int hf_docsis_tlv_rcc_srcc_ds_prof_asssign_prof_list_prof_id
;
451 static int hf_docsis_tlv_rcc_prim_down_chan
;
452 /* static int hf_docsis_tlv_rcc_rcv_mod_enc; */
453 /* static int hf_docsis_tlv_rcc_rcv_ch; */
454 /* static int hf_docsis_tlv_rcc_part_serv_ds_ch; */
455 /* static int hf_docsis_tlv_rcc_ven_spec; */
456 /* static int hf_docsis_tlv_rcc_err; */
458 static int hf_docsis_tlv_rcc_err_mod_or_ch
;
459 static int hf_docsis_tlv_rcc_err_idx
;
460 static int hf_docsis_tlv_rcc_err_param
;
461 static int hf_docsis_tlv_rcc_err_code
;
462 static int hf_docsis_tlv_rcc_err_msg
;
464 static int hf_docsis_tlv_dsid_id
;
465 static int hf_docsis_tlv_dsid_action
;
466 /* static int hf_docsis_tlv_dsid_ds_reseq; */
467 /* static int hf_docsis_tlv_dsid_mc; */
469 static int hf_docsis_ds_reseq_dsid
;
470 static int hf_docsis_ds_reseq_ch_lst
;
471 static int hf_docsis_ds_reseq_wait_time
;
472 static int hf_docsis_ds_reseq_warn_thresh
;
473 static int hf_docsis_ds_reseq_ho_timer
;
475 /* static int hf_docsis_tlv_dsid_mc_addr; */
476 static int hf_docsis_tlv_dsid_mc_cmim
;
477 static int hf_docsis_tlv_dsid_mc_group
;
478 /* static int hf_docsis_tlv_dsid_mc_phs; */
480 static int hf_docsis_mc_addr_action
;
481 static int hf_docsis_mc_addr_addr
;
483 static int hf_docsis_tlv_sec_assoc_action
;
484 static int hf_docsis_tlv_sec_assoc_desc
;
486 static int hf_docsis_ch_asgn_us_ch_id
;
487 static int hf_docsis_ch_asgn_rx_freq
;
489 static int hf_docsis_cmts_mc_sess_enc_grp
;
490 static int hf_docsis_cmts_mc_sess_enc_src
;
491 static int hf_docsis_cmts_mc_sess_enc_cmim
;
493 static int hf_docsis_tlv_em_mode_ind
;
495 static int hf_docsis_tlv_em_id_list_for_cm_em_id
;
497 static int hf_docsis_tlv_fdx_reset
;
499 static int hf_docsis_tlv_fdx_tg_assignment_tg_id
;
500 static int hf_docsis_tlv_fdx_tg_assignment_rba_type
;
502 static int hf_docsis_tlv_unknown
;
503 static int hf_docsis_tlv_unknown_type
;
504 static int hf_docsis_tlv_unknown_length
;
505 static int hf_docsis_tlv_unknown_value
;
508 static int hf_docsis_ucd_fragments
;
509 static int hf_docsis_ucd_fragment
;
510 static int hf_docsis_ucd_fragment_overlap
;
511 static int hf_docsis_ucd_fragment_overlap_conflict
;
512 static int hf_docsis_ucd_fragment_multiple_tails
;
513 static int hf_docsis_ucd_fragment_too_long_fragment
;
514 static int hf_docsis_ucd_fragment_error
;
515 static int hf_docsis_ucd_fragment_count
;
516 static int hf_docsis_ucd_reassembled_in
;
517 static int hf_docsis_ucd_reassembled_length
;
518 static int hf_docsis_ucd_reassembled_data
;
520 static int hf_docsis_ucd_reassembled
;
523 /* Initialize the subtree pointers */
524 static int ett_docsis_tlv
;
525 static int ett_docsis_tlv_cos
;
526 static int ett_docsis_tlv_mcap
;
527 static int ett_docsis_tlv_mcap_em
;
528 static int ett_docsis_tlv_mcap_em_pref
;
529 static int ett_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup
;
530 static int ett_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup
;
531 static int ett_docsis_tlv_mcap_down_lower_band_edge_conf
;
532 static int ett_docsis_tlv_mcap_down_upper_band_edge_conf
;
533 static int ett_docsis_tlv_mcap_dipl_down_lower_band_edge
;
534 static int ett_docsis_tlv_mcap_dipl_down_upper_band_edge
;
535 static int ett_docsis_tlv_mcap_dipl_up_upper_band_edge
;
536 static int ett_docsis_tlv_mcap_advanced_band_plan
;
537 static int ett_docsis_tlv_mcap_dipl_down_lower_band_edge_options_list
;
538 static int ett_docsis_tlv_mcap_dipl_down_upper_band_edge_options_list
;
539 static int ett_docsis_tlv_mcap_dipl_up_upper_band_edge_options_list
;
540 static int ett_docsis_tlv_clsfr
;
541 static int ett_docsis_tlv_clsfr_ip
;
542 static int ett_docsis_tlv_clsfr_ip6
;
543 static int ett_docsis_tlv_clsfr_ip6_tc
;
544 static int ett_docsis_tlv_clsfr_eth
;
545 static int ett_docsis_tlv_clsfr_err
;
546 static int ett_docsis_tlv_phs
;
547 static int ett_docsis_tlv_phs_err
;
548 static int ett_docsis_tlv_clsfr_dot1q
;
549 static int ett_docsis_tlv_reqxmitpol
;
550 static int ett_docsis_tlv_sflow_err
;
551 static int ett_docsis_tlv_svc_unavail
;
552 static int ett_docsis_tlv_snmpv3_kick
;
553 static int ett_docsis_tlv_ds_ch_list
;
554 static int ett_docsis_tlv_ds_ch_list_single
;
555 static int ett_docsis_tlv_ds_ch_list_range
;
556 static int ett_docsis_tlv_ext_field
;
557 static int ett_docsis_tlv_vendor_specific_cap
;
558 static int ett_docsis_tlv_dut_filter
;
559 static int ett_docsis_tlv_tcc
;
560 static int ett_docsis_tlv_tcc_ucd
;
561 static int ett_docsis_tlv_tcc_rng_parms
;
562 static int ett_docsis_tlv_tcc_oudp
;
563 static int ett_docsis_tlv_tcc_err
;
564 static int ett_docsis_tlv_sid_cl
;
565 static int ett_docsis_tlv_sid_cl_enc
;
566 static int ett_docsis_tlv_sid_cl_enc_map
;
567 static int ett_docsis_tlv_sid_cl_so
;
568 static int ett_docsis_tlv_rcp
;
569 static int ett_docsis_tlv_rcp_rcv_mod_enc
;
570 static int ett_docsis_tlv_rcp_ch_bl_rng
;
571 static int ett_docsis_tlv_rcp_rcv_ch
;
572 static int ett_docsis_tlv_rcc
;
573 static int ett_docsis_tlv_rcc_rcv_mod_enc
;
574 static int ett_docsis_tlv_rcc_rcv_ch
;
575 static int ett_docsis_tlv_rcc_partial_serv_down_chan
;
576 static int ett_docsis_tlv_rcc_srcc
;
577 static int ett_docsis_tlv_rcc_srcc_prim_ds_assign
;
578 static int ett_docsis_tlv_rcc_srcc_ds_assign
;
579 static int ett_docsis_tlv_rcc_srcc_ds_prof_assign
;
580 static int ett_docsis_tlv_rcc_srcc_ds_prof_assign_prof_list
;
581 static int ett_docsis_tlv_rcc_err
;
582 static int ett_docsis_tlv_dsid
;
583 static int ett_docsis_tlv_dsid_ds_reseq
;
584 static int ett_docsis_tlv_dsid_mc
;
585 static int ett_docsis_tlv_dsid_mc_addr
;
586 static int ett_docsis_tlv_sec_assoc
;
587 static int ett_docsis_tlv_ch_asgn
;
588 static int ett_docsis_cmts_mc_sess_enc
;
589 static int ett_docsis_em_id_list_for_cm
;
590 static int ett_docsis_tlv_tg_assignment
;
591 static int ett_docsis_tlv_unknown
;
592 static int ett_docsis_ucd_fragments
;
593 static int ett_docsis_ucd_fragment
;
594 static int ett_docsis_ucd_reassembled
;
597 static expert_field ei_docsis_tlv_tlvlen_bad
;
598 static expert_field ei_docsis_tlv_tlvval_bad
;
601 static const true_false_string ena_dis_tfs
= {
606 static const value_string sup_unsup_vals
[] = {
612 static const true_false_string sup_unsup_tfs
= {
617 static const value_string docs_ver_vals
[] = {
627 static const value_string dsc_act_vals
[] = {
628 {0, "DSC Add Classifier"},
629 {1, "DSC Replace Classifier"},
630 {2, "DSC Delete Classifier"},
634 static const value_string qos_param_vals
[] = {
635 {0x01, "Apply to provisioned set only"},
636 {0x02, "Perform admission control add apply to admitted set"},
637 {0x03, "Apply to provisioned and admitted set; Perform admission control"},
638 {0x04, "Perform admission control if needed and apply to active set"},
640 "Apply to provisioned and active sets; Admission control on admitted set in separate service flow, and activate service flow"},
642 "Perform admission control and activate; Apply to admitted and active sets"},
644 "Apply to Provisioned, Active and Admitted Sets; Admission Control and Activate Service Flow"},
648 static const value_string sched_type_vals
[] = {
650 {1, "Undefined (CMTS Dependent)"},
651 {2, "Best Effort Service"},
652 {3, "Non-Real-Time Polling Service"},
653 {4, "Real-Time Polling Service"},
654 {5, "Unsolicited Grant Service w/Activity Detection"},
655 {6, "Unsolicited Grant Service"},
659 static const value_string action_vals
[] = {
662 {2, "Delete PHS Rule"},
663 {3, "Delete all PHS Rules"},
667 static const value_string dbc_action_vals
[] = {
669 {1, "Delete PHS Rule"},
674 static const true_false_string verify_tfs
= {
680 static const value_string rng_tech_vals
[] = {
681 {0, "Perform initial maintenance on new channel"},
682 {1, "Perform only station maintenance on new channel"},
683 {2, "Perform either initial maintenance or station maintenance on new channel"},
684 {3, "Use the new channel directly without performing initial or station maintenance"},
689 const value_string docsis_conf_code
[] = {
690 { 0, "okay/success"},
691 { 1, "Reject: Other/Auth failure (1.0)"},
692 { 2, "Reject: Unrecognized configuration setting/COS failure (1.0)"},
693 { 3, "Reject: Temporary/Reject resource"},
694 { 4, "Reject: Permanent/Reject admin"},
695 { 5, "Reject: Not owner"},
696 { 6, "Reject: Service flow not found"},
697 { 7, "Reject: Service flow exists"},
698 { 8, "Reject: Required parameter not present"},
699 { 9, "Reject: Header suppression"},
700 { 10, "Reject: Unknown transaction ID"},
701 { 11, "Reject: Authentication failure"},
702 { 12, "Reject: Add aborted"},
703 { 13, "Reject: Multiple errors"},
704 { 14, "Reject: Classifier not found"},
705 { 15, "Reject: Classifier exists"},
706 { 16, "Reject: PHS rule not found"},
707 { 17, "Reject: PHS rule exists"},
708 { 18, "Reject: Duplicate reference ID or index in message"},
709 { 19, "Reject: Multiple upstream service flows"},
710 { 20, "Reject: Multiple downstream service flows"},
711 { 21, "Reject: Classifier for another service flow"},
712 { 22, "Reject: PHS for another service flow"},
713 { 23, "Reject: Parameter invalid for context"},
714 { 24, "Reject: Authorization failure"},
715 { 25, "Reject: Temporary DCC"},
716 { 26, "Reject: Downstream Inconsistency"},
717 { 27, "Reject: Upstream Inconsistency"},
718 { 28, "Reject: Insufficient SID Cluster Resources"},
719 { 29, "Reject: Missing RCP"},
720 { 30, "Partial Service"},
721 { 31, "Reject: Temporary DBC"},
722 { 32, "Reject: Unknown DSID"},
723 { 33, "Reject: Unknown SID Cluster"},
724 { 34, "Reject: Invalid Initialization Technique"},
725 { 35, "Reject: No Change"},
726 { 36, "Reject: Invalid DBC Request"},
727 { 37, "Reject: Mode Switch"},
728 { 38, "Reject: Insufficient Transmitters"},
729 { 40, "Reject: Insufficient DSID Resources"},
730 { 41, "Reject: Invalid DSID Encoding"},
731 { 42, "Reject: Unknown Client MAC Address"},
732 { 43, "Reject: Unknown SAID"},
733 { 44, "Reject: Insufficient SA Resources"},
734 { 45, "Reject: Invalid SA Encoding"},
735 { 46, "Reject: Invalid SA Crypto Suite"},
736 { 47, "Reject: TEK Exists"},
737 { 48, "Reject: Invalid SID Cluster Encoding"},
738 { 49, "Reject: Insufficient SID Resources"},
739 { 50, "Reject: Unsupported Parameter Change"},
740 { 51, "Reject: PHS Rule Fully Defined"},
741 { 52, "Reject: No MAPs Or UCDs"},
742 { 53, "Error: T3 Retries Exceeded"},
743 { 54, "Error: T2 Timeout"},
744 { 55, "Error: T4 Timeout"},
745 { 56, "Error: Ranging Abort"},
746 { 57, "Error: Initialization Channel Timeout"},
747 { 58, "Error: DBC-REQ Incomplete"},
748 { 59, "Reject: Too Many OFDMA Profiles"},
749 { 60, "Reject: Too Many OFDM Profiles"},
750 { 61, "Reject: EM Incorrect Primary DS"},
751 { 62, "Reject: AQM Not Supported"},
752 { 63, "Reject: Invalid DPD"},
753 {100, "Reject: VLAD ID In Use"},
754 {101, "Reject: Multipoint L2VPN"},
755 {102, "Reject: Multipoint NSI"},
756 {160, "Reject: Unknown RCP ID"},
757 {161, "Reject: Multiple RCP IDs"},
758 {162, "Reject: Missing Receive Module Index"},
759 {163, "Reject: Invalid Receive Module Index"},
760 {164, "Reject: Invalid Receive Channel Center Frequency"},
761 {165, "Reject: Invalid Receive Module First Channel Center Frequency"},
762 {166, "Reject: Missing Receive Module First Channel Center Frequency"},
763 {167, "Reject: No Primary Downstream Channel Assigned"},
764 {168, "Reject: Multiple Primary Downstream Channel Assigned"},
765 {169, "Reject: Receive Module Connectivity Error"},
766 {170, "Reject: Invalid Receive Channel Index"},
767 {171, "Reject: Center Frequency Not Multiple of 62500 Hz"},
770 {182, "Reject: Already There"},
771 {183, "Reject: Reject 2.0 Disable"},
772 {200, "Reject: Major Service Flow Error"},
773 {201, "Reject: Major Classifier Error"},
774 {202, "Reject: Major PHS Rule Error"},
775 {203, "Reject: Multiple Major Errors"},
776 {204, "Reject: Message Syntax Error"},
777 {205, "Reject: Primary Service Flow Error"},
778 {206, "Reject: Message Too Big"},
779 {207, "Reject: Invalid Modem Capabilities"},
780 {208, "Reject: Bad RCC"},
781 {209, "Reject: Bad TCC"},
782 {210, "Reject: Dynamic Range Window Violation"},
783 {211, "Reject: Unable to support Queue Depth"},
784 {212, "Reject: Energy Management Parameters"},
785 {213, "Reject: Invalid Backup Primary Downstream"},
789 value_string_ext docsis_conf_code_ext
= VALUE_STRING_EXT_INIT(docsis_conf_code
);
791 static const value_string next_header_vals
[] = {
796 {51, "Authentication"},
797 {50, "Encapsulation"},
799 {256, "All IPv6 Traffic"},
800 {257, "All UDP and TCP Traffic"},
804 static const value_string us_ch_action_vals
[] = {
814 static const value_string init_tech_vals
[] = {
816 {1, "Perform broadcast initial ranging before normal ops"},
817 {2, "Perform unicast ranging before normal ops"},
818 {3, "Perform either broadcast or unicast ranging before normal ops"},
819 {4, "Use new channel directly without reinitializing or ranging"},
820 {5, "Perform probing before normal ops"},
821 {6, "Perform unicast initial ranging before normal ops"},
822 {7, "Perform station ranging before normal ops"},
823 {8, "Use FDX channel directly"},
827 static const value_string sid_ch_map_vals
[] = {
834 static const value_string mod_or_ch_vals
[] = {
839 {4, "Receive Module"},
840 {5, "Receive Channel"},
844 static const value_string dsid_action_vals
[] = {
851 static const value_string add_del_vals
[] = {
857 static const value_string init_reason_vals
[] = {
860 { 2, "T17 Lost Sync"},
861 { 3, "All Upstream Failed"},
862 { 4, "Bad DHCP Ack"},
863 { 5, "Link Local Address in use"},
865 { 7, "REG-RSP not ok"},
867 { 9, "Failed Primary Downstream"},
868 {10, "TCS failed on all upstreams"},
875 {17, "No Primary SF on US Channel"},
876 {18, "CM Control Init"},
877 {19, "Dynamic Range Window Violation"},
878 {20, "IP Provisioning Mode Override"},
879 {21, "SW Upgrade Reboot"},
881 {23, "REG-RSP Missing RCC"},
882 {24, "REG-RSP Missing TCC"},
883 {25, "REG-RSP MTC Not Enabled"},
884 {26, "DHCPv6 Bad Reply"},
885 {27, "Reset Due To Diplexer Change"},
889 static const value_string docsis_freq_rng_vals
[] = {
890 {0, "Standard Upstream Frequency Range (5-42 MHz)"},
891 {1, "Selectable Between Standard (5-42 MHz) and Extended (5-85 MHz) Upstream Frequency Range"},
892 {2, "Extended Upstream Frequency Range (5-85 MHz)"},
896 static const value_string mc_dsid_fwd_vals
[] = {
897 {0, "No support for multicast DSID forwarding"},
898 {1, "Support for GMAC explicit multicast DSID forwarding"},
899 {2, "Support for GMAC promiscuous multicast DSID forwarding"},
903 static const value_string fctype_fwd_vals
[] = {
904 {0, "Isolation Packet PDU Header (FC_Type of 10) is not forwarded"},
905 {1, "Isolation Packet PDU Header (FC_Type of 10) is forwarded"},
909 static const value_string em_mode_ind_vals
[] = {
910 {0, "Do not operate in any Energy Management Mode"},
911 {1, "Operate in Energy Management 1x1 Mode"},
912 {2, "Operate in DOCSIS Light Sleep (DLS) Mode"},
916 static const value_string down_reseq_vals
[] = {
917 {0, "The CMTS is required to associate this service flow with a resequencing DSID if the service flow is assigned to a downstream bonding group."},
918 {1, "The CMTS is required to not associate this service flow with a resequencing DSID."},
922 static const value_string dipl_up_upper_band_edge_conf_vals
[] = {
923 {0, "Upstream Frequency Range up to 42 MHz"},
924 {1, "Upstream Frequency Range up to 65 MHz"},
925 {2, "Upstream Frequency Range up to 85 MHz"},
926 {3, "Upstream Frequency Range up to 117 MHz"},
927 {4, "Upstream Frequency Range up to 204 MHz"},
931 static const value_string docsis_time_prot_mode_vals
[] = {
932 {0, "DTP operation is not supported"},
933 {1, "DTP Slave capable only"},
934 {2, "DTP Master capable only"},
935 {3, "DTP Master or Slave capable"},
939 static const value_string docsis_time_prot_perf_sup_vals
[] = {
940 {0, "DTP mode is not supported"},
941 {1, "DTP support for DTP Level 1"},
942 {2, "DTP support for DTP Level 2"},
943 {3, "DTP support for DTP Level 3"},
944 {4, "DTP support for DTP Level 4"},
945 {5, "DTP support for DTP Level 5"},
946 {6, "DTP supported but with no specified performance"},
950 static const value_string rba_type_vals
[] = {
956 static const value_string fdx_reset_vals
[] = {
957 {0, "Do not reset FDX state"},
958 {1, "Reset FDX state and restart FDX initialization"},
962 static const value_string docsis_mcap_ext_sf_cluster_assign_sup_vals
[] = {
964 {1, "Support available"},
968 static const value_string extended_power_options_vals
[] = {
969 {0, "No battery backup"},
970 {1, "Battery backup"},
971 {2, "Modem capacitance"},
976 fourth_db(char *buf
, uint32_t value
)
978 snprintf(buf
, ITEM_LABEL_LENGTH
, "%.2f dB", value
/4.0);
982 fourth_dbmv(char *buf
, uint32_t value
)
984 snprintf(buf
, ITEM_LABEL_LENGTH
, "%.2f dBmV", value
/4.0);
987 static reassembly_table ucd_reassembly_table
;
989 static const fragment_items ucd_frag_items
= {
990 &ett_docsis_ucd_fragment
,
991 &ett_docsis_ucd_fragments
,
992 &hf_docsis_ucd_fragments
,
993 &hf_docsis_ucd_fragment
,
994 &hf_docsis_ucd_fragment_overlap
,
995 &hf_docsis_ucd_fragment_overlap_conflict
,
996 &hf_docsis_ucd_fragment_multiple_tails
,
997 &hf_docsis_ucd_fragment_too_long_fragment
,
998 &hf_docsis_ucd_fragment_error
,
999 &hf_docsis_ucd_fragment_count
,
1000 &hf_docsis_ucd_reassembled_in
,
1001 &hf_docsis_ucd_reassembled_length
,
1002 &hf_docsis_ucd_reassembled_data
,
1009 dissect_unknown_tlv(tvbuff_t
* tvb
, packet_info
*pinfo
, proto_tree
* tree
, int start
, uint16_t len
) {
1010 unsigned type
, length
;
1011 proto_tree
* unknown_tree
;
1012 proto_item
* unknown_item
;
1014 unknown_item
= proto_tree_add_item(tree
, hf_docsis_tlv_unknown
, tvb
, start
, len
, ENC_NA
);
1015 unknown_tree
= proto_item_add_subtree(unknown_item
, ett_docsis_tlv_unknown
);
1019 expert_add_info_format(pinfo
, unknown_item
, &ei_docsis_tlv_tlvlen_bad
, "Unknown TLV: total length < 2: %u", len
);
1023 proto_tree_add_item_ret_uint (unknown_tree
, hf_docsis_tlv_unknown_type
, tvb
, start
, 1, ENC_BIG_ENDIAN
, &type
);
1024 proto_tree_add_item_ret_uint (unknown_tree
, hf_docsis_tlv_unknown_length
, tvb
, start
+ 1, 1, ENC_BIG_ENDIAN
, &length
);
1026 proto_item_append_text(unknown_item
," (Type: %d, Length: %d)", type
, length
);
1028 if (length
+ 2 != len
)
1030 expert_add_info_format(pinfo
, unknown_item
, &ei_docsis_tlv_tlvlen_bad
, "Unknown TLV: Wrong TLV length: %u", length
);
1034 proto_tree_add_item (unknown_tree
, hf_docsis_tlv_unknown_value
, tvb
, start
+ 2, len
- 2, ENC_NA
);
1038 dissect_phs_err (tvbuff_t
* tvb
, packet_info
*pinfo
, proto_tree
* tree
, int start
, uint16_t len
)
1040 uint8_t type
, length
;
1041 proto_tree
*err_tree
;
1042 proto_item
*err_item
;
1046 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_sflow_err
, &err_item
,
1047 "5 Service Flow Error Encodings (Length = %u)", len
);
1049 while (pos
< (start
+ len
))
1051 type
= tvb_get_uint8 (tvb
, pos
++);
1052 length
= tvb_get_uint8 (tvb
, pos
++);
1058 proto_tree_add_item (err_tree
, hf_docsis_tlv_phs_err_param
, tvb
,
1059 pos
, length
, ENC_BIG_ENDIAN
);
1063 expert_add_info_format(pinfo
, err_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1069 proto_tree_add_item (err_tree
, hf_docsis_tlv_phs_err_code
, tvb
,
1070 pos
, length
, ENC_BIG_ENDIAN
);
1074 expert_add_info_format(pinfo
, err_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1078 proto_tree_add_item (err_tree
, hf_docsis_tlv_phs_err_msg
, tvb
, pos
,
1082 dissect_unknown_tlv (tvb
, pinfo
, err_tree
, pos
- 2, length
+ 2);
1091 dissect_phs (tvbuff_t
* tvb
, packet_info
*pinfo
, proto_tree
* tree
, int start
, uint16_t len
)
1093 uint8_t type
, length
;
1094 proto_tree
*phs_tree
;
1095 proto_item
*phs_item
;
1099 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_phs
, &phs_item
,
1100 "26 PHS Encodings (Length = %u)", len
);
1102 while (pos
< (start
+ len
))
1104 type
= tvb_get_uint8 (tvb
, pos
++);
1105 length
= tvb_get_uint8 (tvb
, pos
++);
1111 proto_tree_add_item (phs_tree
, hf_docsis_tlv_phs_class_ref
, tvb
,
1112 pos
, length
, ENC_BIG_ENDIAN
);
1116 expert_add_info_format(pinfo
, phs_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1122 proto_tree_add_item (phs_tree
, hf_docsis_tlv_phs_class_id
, tvb
,
1123 pos
, length
, ENC_BIG_ENDIAN
);
1127 expert_add_info_format(pinfo
, phs_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1133 proto_tree_add_item (phs_tree
, hf_docsis_tlv_phs_sflow_ref
, tvb
,
1134 pos
, length
, ENC_BIG_ENDIAN
);
1138 expert_add_info_format(pinfo
, phs_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1144 proto_tree_add_item (phs_tree
, hf_docsis_tlv_phs_sflow_id
, tvb
,
1145 pos
, length
, ENC_BIG_ENDIAN
);
1149 expert_add_info_format(pinfo
, phs_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1152 case PHS_DSC_ACTION
:
1155 proto_tree_add_item (phs_tree
, hf_docsis_tlv_phs_dsc_action
,
1156 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
1160 expert_add_info_format(pinfo
, phs_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1164 dissect_phs_err (tvb
, pinfo
, phs_tree
, pos
, length
);
1167 proto_tree_add_item (phs_tree
, hf_docsis_tlv_phs_phsf
, tvb
, pos
,
1173 proto_tree_add_item (phs_tree
, hf_docsis_tlv_phs_phsi
, tvb
, pos
,
1174 length
, ENC_BIG_ENDIAN
);
1178 expert_add_info_format(pinfo
, phs_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1182 proto_tree_add_item (phs_tree
, hf_docsis_tlv_phs_phsm
, tvb
, pos
,
1188 proto_tree_add_item (phs_tree
, hf_docsis_tlv_phs_phss
, tvb
, pos
,
1189 length
, ENC_BIG_ENDIAN
);
1193 expert_add_info_format(pinfo
, phs_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1196 case PHS_VERIFICATION
:
1199 proto_tree_add_item (phs_tree
, hf_docsis_tlv_phs_phsf
, tvb
, pos
,
1204 expert_add_info_format(pinfo
, phs_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1207 case PHS_DBC_ACTION
:
1210 proto_tree_add_item (phs_tree
, hf_docsis_tlv_phs_dbc_action
, tvb
, pos
,
1215 expert_add_info_format(pinfo
, phs_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1218 case PHS_VENDOR_SPEC
:
1219 proto_tree_add_item (phs_tree
, hf_docsis_tlv_phs_vendorspec
, tvb
,
1220 pos
, length
, ENC_NA
);
1223 dissect_unknown_tlv (tvb
, pinfo
, phs_tree
, pos
- 2, length
+ 2);
1231 static const true_false_string tfs_must_not_must
= { "MUST NOT", "MUST" };
1232 static const true_false_string tfs_must_must_not
= { "MUST", "MUST NOT" };
1235 dissect_reqxmit_policy (tvbuff_t
* tvb
, proto_tree
* tree
, int start
)
1237 static int * const requests
[] = {
1238 &hf_docsis_tlv_sflow_reqxmit_all_cm_broadcast
,
1239 &hf_docsis_tlv_sflow_reqxmit_priority_multicast
,
1240 &hf_docsis_tlv_sflow_reqxmit_req_data_requests
,
1241 &hf_docsis_tlv_sflow_reqxmit_req_data_data
,
1242 &hf_docsis_tlv_sflow_reqxmit_piggy_back
,
1243 &hf_docsis_tlv_sflow_reqxmit_concatenate_data
,
1244 &hf_docsis_tlv_sflow_reqxmit_fragment
,
1245 &hf_docsis_tlv_sflow_reqxmit_suppress_payload
,
1246 &hf_docsis_tlv_sflow_reqxmit_drop_packets
,
1249 proto_tree_add_bitmask(tree
, tvb
, start
, hf_docsis_tlv_sflow_reqxmit_pol
,
1250 ett_docsis_tlv_reqxmitpol
, requests
, ENC_BIG_ENDIAN
);
1254 dissect_sflow_err (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int start
,
1257 uint8_t type
, length
;
1258 proto_tree
*err_tree
;
1259 proto_item
*err_item
;
1263 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_sflow_err
, &err_item
,
1264 "5 Service Flow Error Encodings (Length = %u)", len
);
1266 while (pos
< (start
+ len
))
1268 type
= tvb_get_uint8 (tvb
, pos
++);
1269 length
= tvb_get_uint8 (tvb
, pos
++);
1275 proto_tree_add_item (err_tree
, hf_docsis_tlv_sflow_err_param
,
1276 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
1280 expert_add_info_format(pinfo
, err_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1286 proto_tree_add_item (err_tree
, hf_docsis_tlv_sflow_err_code
,
1287 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
1291 expert_add_info_format(pinfo
, err_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1295 proto_tree_add_item (err_tree
, hf_docsis_tlv_sflow_err_msg
, tvb
,
1296 pos
, length
, ENC_ASCII
);
1299 dissect_unknown_tlv (tvb
, pinfo
, err_tree
, pos
- 2, length
+ 2);
1308 dissect_downstream_sflow (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* sflow_tree
,
1309 proto_item
* sflow_item
, int start
, uint16_t len
)
1311 uint8_t type
, length
;
1314 while (pos
< (start
+ len
))
1316 type
= tvb_get_uint8 (tvb
, pos
++);
1317 length
= tvb_get_uint8 (tvb
, pos
++);
1320 case SFW_MAX_DOWN_LAT
:
1323 proto_tree_add_item (sflow_tree
,
1324 hf_docsis_tlv_sflow_max_down_latency
, tvb
,
1325 pos
, length
, ENC_BIG_ENDIAN
);
1329 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1332 case SFW_DOWN_RESEQ
:
1335 proto_tree_add_item (sflow_tree
,
1336 hf_docsis_tlv_sflow_down_reseq
, tvb
,
1337 pos
, length
, ENC_BIG_ENDIAN
);
1341 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1345 dissect_unknown_tlv (tvb
, pinfo
, sflow_tree
, pos
- 2, length
+ 2);
1354 dissect_upstream_sflow (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* sflow_tree
,
1355 proto_item
* sflow_item
, int start
, uint16_t len
)
1357 uint8_t type
, length
;
1360 while (pos
< (start
+ len
))
1362 type
= tvb_get_uint8 (tvb
, pos
++);
1363 length
= tvb_get_uint8 (tvb
, pos
++);
1366 case SFW_MAX_CONCAT_BURST
:
1369 proto_tree_add_item (sflow_tree
,
1370 hf_docsis_tlv_sflow_max_concat_burst
, tvb
,
1371 pos
, length
, ENC_BIG_ENDIAN
);
1375 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1378 case SFW_SCHEDULING_TYPE
:
1381 proto_tree_add_item (sflow_tree
, hf_docsis_tlv_sflow_sched_type
,
1382 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
1386 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1389 case SFW_REQ_XMIT_POL
:
1390 dissect_reqxmit_policy (tvb
, sflow_tree
, pos
);
1392 case SFW_NOM_POLL_INT
:
1395 proto_tree_add_item (sflow_tree
,
1396 hf_docsis_tlv_sflow_nominal_polling
, tvb
,
1397 pos
, length
, ENC_BIG_ENDIAN
);
1401 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1404 case SFW_POLL_JTTR_TOL
:
1407 proto_tree_add_item (sflow_tree
,
1408 hf_docsis_tlv_sflow_tolerated_jitter
, tvb
,
1409 pos
, length
, ENC_BIG_ENDIAN
);
1413 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1419 proto_tree_add_item (sflow_tree
, hf_docsis_tlv_sflow_ugs_size
,
1420 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
1424 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1427 case SFW_NOM_GRNT_INTV
:
1430 proto_tree_add_item (sflow_tree
,
1431 hf_docsis_tlv_sflow_nom_grant_intvl
, tvb
,
1432 pos
, length
, ENC_BIG_ENDIAN
);
1436 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1439 case SFW_GRNT_JTTR_TOL
:
1442 proto_tree_add_item (sflow_tree
,
1443 hf_docsis_tlv_sflow_tol_grant_jitter
, tvb
,
1444 pos
, length
, ENC_BIG_ENDIAN
);
1448 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1451 case SFW_GRNTS_PER_INTV
:
1454 proto_tree_add_item (sflow_tree
,
1455 hf_docsis_tlv_sflow_grants_per_intvl
, tvb
,
1456 pos
, length
, ENC_BIG_ENDIAN
);
1460 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1463 case SFW_UG_TIME_REF
:
1466 proto_tree_add_item (sflow_tree
,
1467 hf_docsis_tlv_sflow_ugs_timeref
, tvb
, pos
,
1468 length
, ENC_BIG_ENDIAN
);
1472 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1475 case SFW_CONTENTION_REQ_BACKOFF_WINDOW_MULT
:
1478 proto_tree_add_item (sflow_tree
,
1479 hf_docsis_tlv_sflow_cont_req_backoff_window_mult
, tvb
, pos
,
1480 length
, ENC_BIG_ENDIAN
);
1484 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1487 case SFW_NUM_OF_BYTES_REQUESTED_MULT
:
1490 proto_tree_add_item (sflow_tree
,
1491 hf_docsis_tlv_sflow_num_of_bytes_requested_mult
, tvb
, pos
,
1492 length
, ENC_BIG_ENDIAN
);
1493 uint8_t multiplier_val
= tvb_get_uint8 (tvb
, pos
);
1494 if (multiplier_val
!= 1 && multiplier_val
!= 2 && multiplier_val
!= 4 &&
1495 multiplier_val
!= 8 && multiplier_val
!= 16)
1497 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvval_bad
,
1498 "Wrong TLV value: %u (should be equal to 1,2,4,8 or 16)", multiplier_val
);
1503 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1507 dissect_unknown_tlv (tvb
, pinfo
, sflow_tree
, pos
- 2, length
+ 2);
1516 dissect_sflow (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int start
, uint16_t len
,
1519 uint8_t type
, length
;
1520 proto_tree
*sflow_tree
;
1521 proto_item
*sflow_item
;
1524 if (direction
== 24)
1526 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_clsfr
, &sflow_item
,
1527 "24 Upstream Service Flow (Length = %u)", len
);
1528 else if (direction
== 25)
1530 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_clsfr
, &sflow_item
,
1531 "25 Downstream Service Flow (Length = %u)", len
);
1535 while (pos
< (start
+ len
))
1537 type
= tvb_get_uint8 (tvb
, pos
++);
1538 length
= tvb_get_uint8 (tvb
, pos
++);
1544 proto_tree_add_item (sflow_tree
, hf_docsis_tlv_sflow_ref
, tvb
,
1545 pos
, length
, ENC_BIG_ENDIAN
);
1549 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1555 proto_tree_add_item (sflow_tree
, hf_docsis_tlv_sflow_id
, tvb
,
1556 pos
, length
, ENC_BIG_ENDIAN
);
1560 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1566 proto_tree_add_item (sflow_tree
, hf_docsis_tlv_sflow_sid
, tvb
,
1567 pos
, length
, ENC_BIG_ENDIAN
);
1571 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1574 case SFW_SERVICE_CLASS_NAME
:
1575 proto_tree_add_item (sflow_tree
, hf_docsis_tlv_sflow_classname
, tvb
,
1576 pos
, length
, ENC_ASCII
);
1579 dissect_sflow_err (tvb
, pinfo
, sflow_tree
, pos
, length
);
1581 case SFW_QOS_SET_TYPE
:
1584 proto_tree_add_item (sflow_tree
, hf_docsis_tlv_sflow_qos_param
,
1585 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
1589 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1595 proto_tree_add_item (sflow_tree
, hf_docsis_tlv_sflow_traf_pri
,
1596 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
1600 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1603 case SFW_MAX_SUSTAINED
:
1606 proto_tree_add_item (sflow_tree
, hf_docsis_tlv_sflow_max_sus
,
1607 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
1611 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1617 proto_tree_add_item (sflow_tree
, hf_docsis_tlv_sflow_max_burst
,
1618 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
1622 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1625 case SFW_MIN_RSVD_TRAF
:
1628 proto_tree_add_item (sflow_tree
, hf_docsis_tlv_sflow_min_traf
,
1629 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
1633 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1636 case SFW_MIN_RSVD_PACKETSIZE
:
1639 proto_tree_add_item (sflow_tree
,
1640 hf_docsis_tlv_sflow_ass_min_pkt_size
, tvb
,
1641 pos
, length
, ENC_BIG_ENDIAN
);
1645 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1648 case SFW_ACTIVE_QOS_TIMEOUT
:
1651 proto_tree_add_item (sflow_tree
,
1652 hf_docsis_tlv_sflow_timeout_active
, tvb
,
1653 pos
, length
, ENC_BIG_ENDIAN
);
1657 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1660 case SFW_ADMITT_QOS_TIMEOUT
:
1663 proto_tree_add_item (sflow_tree
,
1664 hf_docsis_tlv_sflow_timeout_admitted
, tvb
,
1665 pos
, length
, ENC_BIG_ENDIAN
);
1669 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1672 case SFW_IP_TOS_OVERWRITE
:
1675 proto_tree_add_item (sflow_tree
,
1676 hf_docsis_tlv_sflow_ip_tos_overwrite
, tvb
,
1677 pos
, length
, ENC_BIG_ENDIAN
);
1681 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1684 case SFW_PEAK_TRAFFIC_RATE
:
1687 proto_tree_add_item (sflow_tree
,
1688 hf_docsis_tlv_sflow_peak_traffic_rate
, tvb
, pos
,
1689 length
, ENC_BIG_ENDIAN
);
1693 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1696 case SFW_REQUIRED_ATTRIBUTE_MASK
:
1699 proto_tree_add_item (sflow_tree
,
1700 hf_docsis_tlv_sflow_req_attr_mask
, tvb
,
1701 pos
, length
, ENC_NA
);
1705 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1709 case SFW_FORBIDDEN_ATTRIBUTE_MASK
:
1712 proto_tree_add_item (sflow_tree
,
1713 hf_docsis_tlv_sflow_forb_attr_mask
, tvb
,
1714 pos
, length
, ENC_NA
);
1718 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1721 case SFW_ATTRIBUTE_AGGREGATION_RULE_MASK
:
1724 proto_tree_add_item (sflow_tree
,
1725 hf_docsis_tlv_sflow_attr_aggr_rule_mask
, tvb
,
1726 pos
, length
, ENC_NA
);
1730 expert_add_info_format(pinfo
, sflow_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1733 case SFW_VENDOR_SPEC
:
1734 proto_tree_add_item (sflow_tree
, hf_docsis_tlv_sflow_vendor_spec
,
1735 tvb
, pos
, length
, ENC_NA
);
1738 if (direction
== 24)
1739 dissect_upstream_sflow (tvb
, pinfo
, sflow_tree
, sflow_item
, pos
- 2, length
);
1741 dissect_downstream_sflow (tvb
, pinfo
, sflow_tree
, sflow_item
, pos
- 2, length
);
1744 } /* switch (type) */
1746 } /* while(pos < start + len) */
1751 dissect_dot1q_clsfr (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int start
,
1754 uint8_t type
, length
;
1755 proto_tree
*dot1qclsfr_tree
;
1756 proto_item
*dot1qclsfr_item
;
1760 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_cos
, &dot1qclsfr_item
,
1761 "11 801.1P/Q Classifiers (Length = %u)", len
);
1763 while (pos
< (start
+ len
))
1765 type
= tvb_get_uint8 (tvb
, pos
++);
1766 length
= tvb_get_uint8 (tvb
, pos
++);
1769 case CFR_D1Q_USER_PRI
:
1772 proto_tree_add_item (dot1qclsfr_tree
,
1773 hf_docsis_tlv_dot1qclsfr_user_pri
, tvb
,
1774 pos
, length
, ENC_BIG_ENDIAN
);
1778 expert_add_info_format(pinfo
, dot1qclsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1781 case CFR_D1Q_VLAN_ID
:
1784 proto_tree_add_item (dot1qclsfr_tree
,
1785 hf_docsis_tlv_dot1qclsfr_vlanid
, tvb
, pos
,
1786 length
, ENC_BIG_ENDIAN
);
1790 expert_add_info_format(pinfo
, dot1qclsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1793 case CFR_D1Q_VENDOR_SPEC
:
1794 proto_tree_add_item (dot1qclsfr_tree
,
1795 hf_docsis_tlv_dot1qclsfr_vendorspec
, tvb
, pos
,
1799 dissect_unknown_tlv (tvb
, pinfo
, dot1qclsfr_tree
, pos
- 2, length
+ 2);
1808 dissect_eth_clsfr (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int start
,
1811 uint8_t type
, length
;
1812 proto_tree
*ethclsfr_tree
;
1813 proto_item
*ethclsfr_item
;
1817 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_clsfr_eth
, ðclsfr_item
,
1818 ".10 Ethernet Classifiers (Length = %u)", len
);
1820 while (pos
< (start
+ len
))
1822 type
= tvb_get_uint8 (tvb
, pos
++);
1823 length
= tvb_get_uint8 (tvb
, pos
++);
1826 case CFR_ETH_DST_MAC
:
1829 proto_tree_add_item (ethclsfr_tree
, hf_docsis_tlv_ethclsfr_dmac
,
1830 tvb
, pos
, length
, ENC_NA
);
1834 expert_add_info_format(pinfo
, ethclsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1837 case CFR_ETH_SRC_MAC
:
1840 proto_tree_add_item (ethclsfr_tree
, hf_docsis_tlv_ethclsfr_smac
,
1841 tvb
, pos
, length
, ENC_NA
);
1845 expert_add_info_format(pinfo
, ethclsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1851 proto_tree_add_item (ethclsfr_tree
,
1852 hf_docsis_tlv_ethclsfr_ethertype
, tvb
, pos
,
1853 length
, ENC_BIG_ENDIAN
);
1857 expert_add_info_format(pinfo
, ethclsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1861 dissect_unknown_tlv (tvb
, pinfo
, ethclsfr_tree
, pos
- 2, length
+ 2);
1870 dissect_clsfr_err (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int start
,
1873 uint8_t type
, length
;
1874 proto_tree
*err_tree
;
1875 proto_tree
*err_item
;
1879 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_clsfr_err
, &err_item
,
1880 "8 Classifier Error Encodings (Length = %u)", len
);
1882 while (pos
< (start
+ len
))
1884 type
= tvb_get_uint8 (tvb
, pos
++);
1885 length
= tvb_get_uint8 (tvb
, pos
++);
1890 proto_tree_add_item (err_tree
, hf_docsis_tlv_clsfr_err_param
, tvb
,
1891 pos
, length
, ENC_BIG_ENDIAN
);
1892 else if (length
== 2)
1894 proto_tree_add_item (err_tree
, hf_docsis_tlv_clsfr_err_param
,
1895 tvb
, pos
, 1, ENC_BIG_ENDIAN
);
1896 proto_tree_add_item (err_tree
, hf_docsis_tlv_clsfr_err_param
,
1897 tvb
, pos
+ 1, 1, ENC_BIG_ENDIAN
);
1901 expert_add_info_format(pinfo
, err_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1907 proto_tree_add_item (err_tree
, hf_docsis_tlv_clsfr_err_code
,
1908 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
1912 expert_add_info_format(pinfo
, err_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1916 proto_tree_add_item (err_tree
, hf_docsis_tlv_clsfr_err_msg
, tvb
,
1917 pos
, length
, ENC_ASCII
);
1920 dissect_unknown_tlv (tvb
, pinfo
, err_tree
, pos
- 2, length
+ 2);
1929 dissect_ip_classifier (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int start
,
1932 uint8_t type
, length
;
1933 proto_tree
*ipclsfr_tree
;
1934 proto_tree
*ipclsfr_item
;
1938 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_clsfr_ip
, &ipclsfr_item
,
1939 ".9 IP Classifier (Length = %u)", len
);
1941 while (pos
< (start
+ len
))
1943 type
= tvb_get_uint8 (tvb
, pos
++);
1944 length
= tvb_get_uint8 (tvb
, pos
++);
1947 case CFR_IP_TOS_RANGE_MASK
:
1950 proto_tree_add_item (ipclsfr_tree
,
1951 hf_docsis_tlv_ipclsfr_tosmask
, tvb
, pos
,
1956 expert_add_info_format(pinfo
, ipclsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1962 proto_tree_add_item (ipclsfr_tree
,
1963 hf_docsis_tlv_ipclsfr_ipproto
, tvb
, pos
,
1964 length
, ENC_BIG_ENDIAN
);
1968 expert_add_info_format(pinfo
, ipclsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1971 case CFR_IP_SOURCE_ADDR
:
1974 proto_tree_add_item (ipclsfr_tree
, hf_docsis_tlv_ipclsfr_src
,
1975 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
1979 expert_add_info_format(pinfo
, ipclsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1982 case CFR_IP_SOURCE_MASK
:
1985 proto_tree_add_item (ipclsfr_tree
,
1986 hf_docsis_tlv_ipclsfr_srcmask
, tvb
, pos
,
1987 length
, ENC_BIG_ENDIAN
);
1991 expert_add_info_format(pinfo
, ipclsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
1994 case CFR_IP_DEST_ADDR
:
1997 proto_tree_add_item (ipclsfr_tree
, hf_docsis_tlv_ipclsfr_dst
,
1998 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
2002 expert_add_info_format(pinfo
, ipclsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2005 case CFR_IP_DEST_MASK
:
2008 proto_tree_add_item (ipclsfr_tree
,
2009 hf_docsis_tlv_ipclsfr_dstmask
, tvb
, pos
,
2010 length
, ENC_BIG_ENDIAN
);
2014 expert_add_info_format(pinfo
, ipclsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2017 case CFR_IP_SRCPORT_START
:
2020 proto_tree_add_item (ipclsfr_tree
,
2021 hf_docsis_tlv_ipclsfr_sport_start
, tvb
,
2022 pos
, length
, ENC_BIG_ENDIAN
);
2026 expert_add_info_format(pinfo
, ipclsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2029 case CFR_IP_SRCPORT_END
:
2032 proto_tree_add_item (ipclsfr_tree
,
2033 hf_docsis_tlv_ipclsfr_sport_end
, tvb
, pos
,
2034 length
, ENC_BIG_ENDIAN
);
2038 expert_add_info_format(pinfo
, ipclsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2041 case CFR_IP_DSTPORT_START
:
2044 proto_tree_add_item (ipclsfr_tree
,
2045 hf_docsis_tlv_ipclsfr_dport_start
, tvb
,
2046 pos
, length
, ENC_BIG_ENDIAN
);
2050 expert_add_info_format(pinfo
, ipclsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2053 case CFR_IP_DSTPORT_END
:
2056 proto_tree_add_item (ipclsfr_tree
,
2057 hf_docsis_tlv_ipclsfr_dport_end
, tvb
, pos
,
2058 length
, ENC_BIG_ENDIAN
);
2062 expert_add_info_format(pinfo
, ipclsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2066 dissect_unknown_tlv (tvb
, pinfo
, ipclsfr_tree
, pos
- 2, length
+ 2);
2075 dissect_ip6_classifier_tc (tvbuff_t
* tvb
, proto_tree
* tree
, int start
,
2078 proto_tree
*ip6clsfr_tc_tree
;
2079 proto_tree
*ip6clsfr_tc_item
;
2081 ip6clsfr_tc_tree
= proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_clsfr_ip6_tc
, &ip6clsfr_tc_item
,
2082 "..1 IPv6 Traffic Class Range and Mask");
2084 proto_tree_add_item(ip6clsfr_tc_tree
, hf_docsis_tlv_ip6clsfr_tc_low
, tvb
, start
, 1, ENC_BIG_ENDIAN
);
2085 proto_tree_add_item(ip6clsfr_tc_tree
, hf_docsis_tlv_ip6clsfr_tc_high
, tvb
, start
+ 1, 1, ENC_BIG_ENDIAN
);
2086 proto_tree_add_item(ip6clsfr_tc_tree
, hf_docsis_tlv_ip6clsfr_tc_mask
, tvb
, start
+ 2, 1, ENC_BIG_ENDIAN
);
2091 dissect_ip6_classifier (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int start
,
2094 uint8_t type
, length
;
2095 proto_tree
*ip6clsfr_tree
;
2096 proto_tree
*ip6clsfr_item
;
2101 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_clsfr_ip6
, &ip6clsfr_item
,
2102 ".12 IPv6 Classifier (Length = %u)", len
);
2104 while (pos
< (start
+ len
))
2106 type
= tvb_get_uint8 (tvb
, pos
++);
2107 length
= tvb_get_uint8 (tvb
, pos
++);
2110 case CFR_IP6_TRAFFIC_CLASS
:
2113 dissect_ip6_classifier_tc(tvb
, ip6clsfr_tree
, pos
, length
);
2117 expert_add_info_format(pinfo
, ip6clsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2120 case CFR_IP6_FLOW_LABEL
:
2123 proto_tree_add_item (ip6clsfr_tree
,
2124 hf_docsis_tlv_ip6clsfr_flow_label
, tvb
, pos
,
2125 length
, ENC_BIG_ENDIAN
);
2129 expert_add_info_format(pinfo
, ip6clsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2132 case CFR_IP6_NEXT_HEADER
:
2135 proto_tree_add_item (ip6clsfr_tree
,
2136 hf_docsis_tlv_ip6clsfr_next_header
, tvb
, pos
,
2137 length
, ENC_BIG_ENDIAN
);
2141 expert_add_info_format(pinfo
, ip6clsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2144 case CFR_IP6_SOURCE_ADDR
:
2147 proto_tree_add_item (ip6clsfr_tree
,
2148 hf_docsis_tlv_ip6clsfr_src
, tvb
, pos
,
2153 expert_add_info_format(pinfo
, ip6clsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2156 case CFR_IP6_SOURCE_PREFIX_LENGTH
:
2159 proto_tree_add_item (ip6clsfr_tree
,
2160 hf_docsis_tlv_ip6clsfr_src_prefix_length
, tvb
, pos
,
2161 length
, ENC_BIG_ENDIAN
);
2165 expert_add_info_format(pinfo
, ip6clsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2168 case CFR_IP6_DESTINATION_ADDR
:
2171 proto_tree_add_item (ip6clsfr_tree
,
2172 hf_docsis_tlv_ip6clsfr_dst
, tvb
, pos
,
2177 expert_add_info_format(pinfo
, ip6clsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2180 case CFR_IP6_DESTINATION_PREFIX_LENGTH
:
2183 proto_tree_add_item (ip6clsfr_tree
,
2184 hf_docsis_tlv_ip6clsfr_dst_prefix_length
, tvb
, pos
,
2185 length
, ENC_BIG_ENDIAN
);
2189 expert_add_info_format(pinfo
, ip6clsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2193 dissect_unknown_tlv (tvb
, pinfo
, ip6clsfr_tree
, pos
- 2, length
+ 2);
2201 dissect_classifiers (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int start
,
2202 uint16_t len
, uint8_t direction
)
2204 uint8_t type
, length
;
2205 proto_tree
*clsfr_tree
;
2206 proto_item
*clsfr_item
;
2209 if (direction
== 22)
2211 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_clsfr
, &clsfr_item
,
2212 "22 Upstream Packet Classifier (Length = %u)",
2214 else if (direction
== 23)
2216 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_clsfr
, &clsfr_item
,
2217 "23 Downstream Packet Classifier (Length = %u)",
2222 while (pos
< (start
+ len
))
2224 type
= tvb_get_uint8 (tvb
, pos
++);
2225 length
= tvb_get_uint8 (tvb
, pos
++);
2231 proto_tree_add_item (clsfr_tree
, hf_docsis_tlv_clsfr_ref
, tvb
,
2232 pos
, length
, ENC_BIG_ENDIAN
);
2236 expert_add_info_format(pinfo
, clsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2242 proto_tree_add_item (clsfr_tree
, hf_docsis_tlv_clsfr_id
, tvb
,
2243 pos
, length
, ENC_BIG_ENDIAN
);
2247 expert_add_info_format(pinfo
, clsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2253 proto_tree_add_item (clsfr_tree
, hf_docsis_tlv_clsfr_sflow_ref
,
2254 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
2258 expert_add_info_format(pinfo
, clsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2264 proto_tree_add_item (clsfr_tree
, hf_docsis_tlv_clsfr_sflow_id
,
2265 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
2269 expert_add_info_format(pinfo
, clsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2275 proto_tree_add_item (clsfr_tree
, hf_docsis_tlv_clsfr_rule_pri
,
2276 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
2280 expert_add_info_format(pinfo
, clsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2286 proto_tree_add_item (clsfr_tree
, hf_docsis_tlv_clsfr_act_state
,
2287 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
2291 expert_add_info_format(pinfo
, clsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2294 case CFR_DSA_ACTION
:
2297 proto_tree_add_item (clsfr_tree
, hf_docsis_tlv_clsfr_dsc_act
,
2298 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
2302 expert_add_info_format(pinfo
, clsfr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2306 dissect_clsfr_err (tvb
, pinfo
, clsfr_tree
, pos
, length
);
2308 case CFR_IP_CLASSIFIER
:
2309 dissect_ip_classifier (tvb
, pinfo
, clsfr_tree
, pos
, length
);
2311 case CFR_IP6_CLASSIFIER
:
2312 dissect_ip6_classifier (tvb
, pinfo
, clsfr_tree
, pos
, length
);
2314 case CFR_ETH_CLASSIFIER
:
2315 dissect_eth_clsfr (tvb
, pinfo
, clsfr_tree
, pos
, length
);
2317 case CFR_8021Q_CLASSIFIER
:
2318 dissect_dot1q_clsfr (tvb
, pinfo
, clsfr_tree
, pos
, length
);
2320 case CFR_VENDOR_SPEC
:
2321 proto_tree_add_item (clsfr_tree
, hf_docsis_tlv_clsfr_vendor_spc
,
2322 tvb
, pos
, length
, ENC_NA
);
2325 dissect_unknown_tlv (tvb
, pinfo
, clsfr_tree
, pos
- 2, length
+ 2);
2334 dissect_doc10cos (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int start
,
2337 uint8_t type
, length
;
2338 proto_tree
*doc10cos_tree
;
2339 proto_tree
*doc10cos_item
;
2343 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_cos
, &doc10cos_item
,
2344 "1 Docsis 1.0 Class of Service (Length = %u)", len
);
2346 while (pos
< (start
+ len
))
2348 type
= tvb_get_uint8 (tvb
, pos
++);
2349 length
= tvb_get_uint8 (tvb
, pos
++);
2355 proto_tree_add_item (doc10cos_tree
, hf_docsis_tlv_cos_id
, tvb
,
2356 pos
, length
, ENC_BIG_ENDIAN
);
2360 expert_add_info_format(pinfo
, doc10cos_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2366 proto_tree_add_item (doc10cos_tree
, hf_docsis_tlv_cos_sid
, tvb
,
2367 pos
, length
, ENC_BIG_ENDIAN
);
2371 expert_add_info_format(pinfo
, doc10cos_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2375 dissect_unknown_tlv (tvb
, pinfo
, doc10cos_tree
, pos
- 2, length
+ 2);
2384 dissect_modemcap (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int start
,
2387 uint8_t type
, length
;
2389 proto_tree
*mcap_tree
, *tlv_tree
;
2390 proto_tree
*mcap_item
, *tlv_item
;
2394 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_mcap
, &mcap_item
,
2395 "5 Modem Capabilities Type (Length = %u)", len
);
2397 while (pos
< (start
+ len
))
2399 type
= tvb_get_uint8 (tvb
, pos
++);
2400 length
= tvb_get_uint8 (tvb
, pos
++);
2406 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_concat
, tvb
,
2407 pos
, length
, ENC_BIG_ENDIAN
);
2411 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2414 case CAP_DOCSIS_VER
:
2417 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_docs_ver
,
2418 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
2422 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2428 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_frag
, tvb
,
2429 pos
, length
, ENC_BIG_ENDIAN
);
2433 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2439 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_phs
, tvb
,
2440 pos
, length
, ENC_BIG_ENDIAN
);
2444 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2450 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_igmp
, tvb
,
2451 pos
, length
, ENC_BIG_ENDIAN
);
2455 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2461 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_privacy
, tvb
,
2462 pos
, length
, ENC_BIG_ENDIAN
);
2466 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2472 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_down_said
,
2473 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
2477 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2483 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_up_sid
, tvb
,
2484 pos
, length
, ENC_BIG_ENDIAN
);
2488 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2494 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_8021P_filter
,
2495 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
2496 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_8021Q_filter
,
2497 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
2501 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2504 case CAP_XMIT_EQPERSYM
:
2507 proto_tree_add_item (mcap_tree
,
2508 hf_docsis_tlv_mcap_xmit_eq_taps_per_sym
,
2509 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
2513 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2516 case CAP_NUM_XMIT_EQ_TAPS
:
2519 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_xmit_eq_taps
,
2520 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
2524 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2530 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_dcc
, tvb
,
2531 pos
, length
, ENC_BIG_ENDIAN
);
2535 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2538 case CAP_IP_FILTERS
:
2541 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_ip_filters
, tvb
,
2542 pos
, length
, ENC_BIG_ENDIAN
);
2546 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2549 case CAP_LLC_FILTERS
:
2552 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_llc_filters
, tvb
,
2553 pos
, length
, ENC_BIG_ENDIAN
);
2557 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2560 case CAP_EXP_UNICAST_SID
:
2563 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_exp_unicast_sid
, tvb
,
2564 pos
, length
, ENC_BIG_ENDIAN
);
2568 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2574 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_rnghoff_cm
, tvb
,
2575 pos
, length
, ENC_BIG_ENDIAN
);
2576 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_rnghoff_erouter
, tvb
,
2577 pos
, length
, ENC_BIG_ENDIAN
);
2578 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_rnghoff_emta
, tvb
,
2579 pos
, length
, ENC_BIG_ENDIAN
);
2580 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_rnghoff_estb
, tvb
,
2581 pos
, length
, ENC_BIG_ENDIAN
);
2585 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2589 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_l2vpn
, tvb
,
2590 pos
, length
, ENC_NA
);
2592 case CAP_L2VPN_ESAFE
:
2593 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_l2vpn_esafe
, tvb
,
2594 pos
, length
, ENC_NA
);
2596 case CAP_DUT_FILTERING
:
2597 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_dut_filtering
, tvb
,
2598 pos
, length
, ENC_NA
);
2600 case CAP_US_FREQ_RNG
:
2603 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_us_freq_range
, tvb
,
2604 pos
, length
, ENC_BIG_ENDIAN
);
2608 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2614 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_us_srate_160
, tvb
,
2615 pos
, length
, ENC_BIG_ENDIAN
);
2616 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_us_srate_320
, tvb
,
2617 pos
, length
, ENC_BIG_ENDIAN
);
2618 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_us_srate_640
, tvb
,
2619 pos
, length
, ENC_BIG_ENDIAN
);
2620 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_us_srate_1280
, tvb
,
2621 pos
, length
, ENC_BIG_ENDIAN
);
2622 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_us_srate_2560
, tvb
,
2623 pos
, length
, ENC_BIG_ENDIAN
);
2624 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_us_srate_5120
, tvb
,
2625 pos
, length
, ENC_BIG_ENDIAN
);
2629 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2635 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_sac
, tvb
,
2636 pos
, length
, ENC_BIG_ENDIAN
);
2640 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2643 case CAP_CODE_HOP_M2
:
2646 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_code_hop_mode2
, tvb
,
2647 pos
, length
, ENC_BIG_ENDIAN
);
2651 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2657 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_mtc
, tvb
,
2658 pos
, length
, ENC_BIG_ENDIAN
);
2662 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2665 case CAP_512_MSPS_UTC
:
2668 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_512_msps_utc
, tvb
,
2669 pos
, length
, ENC_BIG_ENDIAN
);
2673 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2676 case CAP_256_MSPS_UTC
:
2679 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_256_msps_utc
, tvb
,
2680 pos
, length
, ENC_BIG_ENDIAN
);
2684 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2687 case CAP_TOTAL_SID_CLUST
:
2690 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_total_sid_cluster
, tvb
,
2691 pos
, length
, ENC_BIG_ENDIAN
);
2695 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2698 case CAP_SID_PER_SF
:
2701 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_sid_per_sf
, tvb
,
2702 pos
, length
, ENC_BIG_ENDIAN
);
2706 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2712 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_mrc
, tvb
,
2713 pos
, length
, ENC_BIG_ENDIAN
);
2717 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2720 case CAP_TOTAL_DSID
:
2723 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_total_dsid
, tvb
,
2724 pos
, length
, ENC_BIG_ENDIAN
);
2728 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2731 case CAP_RESEQ_DSID
:
2734 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_reseq_dsid
, tvb
,
2735 pos
, length
, ENC_BIG_ENDIAN
);
2739 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2745 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_mc_dsid
, tvb
,
2746 pos
, length
, ENC_BIG_ENDIAN
);
2750 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2753 case CAP_MC_DSID_FWD
:
2756 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_mc_dsid_fwd
, tvb
,
2757 pos
, length
, ENC_BIG_ENDIAN
);
2761 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2764 case CAP_FCTYPE_FWD
:
2767 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_fctype_fwd
, tvb
,
2768 pos
, length
, ENC_BIG_ENDIAN
);
2772 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2778 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_dpv_path
, tvb
,
2779 pos
, length
, ENC_BIG_ENDIAN
);
2780 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_dpv_packet
, tvb
,
2781 pos
, length
, ENC_BIG_ENDIAN
);
2785 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2791 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_ugs
, tvb
,
2792 pos
, length
, ENC_BIG_ENDIAN
);
2796 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2802 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_map_ucd
, tvb
,
2803 pos
, length
, ENC_BIG_ENDIAN
);
2807 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2813 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_udc
, tvb
,
2814 pos
, length
, ENC_BIG_ENDIAN
);
2818 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2824 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_ipv6
, tvb
,
2825 pos
, length
, ENC_BIG_ENDIAN
);
2829 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2832 case CAP_EXT_US_TRNS_PWR
:
2836 proto_item
* power_cap_it
= proto_tree_add_item_ret_uint (mcap_tree
, hf_docsis_tlv_mcap_ext_us_trans_power
,
2837 tvb
, pos
, length
, ENC_BIG_ENDIAN
, &power_raw
);
2838 proto_item_append_text(power_cap_it
, " (%.2f dB)", power_raw
* 0.25);
2842 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2848 static int * const cap_em
[] = {
2849 &hf_docsis_tlv_mcap_em_1x1
,
2850 &hf_docsis_tlv_mcap_em_light_sleep
,
2854 proto_tree_add_bitmask_with_flags(mcap_tree
, tvb
, pos
, hf_docsis_tlv_mcap_em
, ett_docsis_tlv_mcap_em
, cap_em
, ENC_BIG_ENDIAN
, BMT_NO_FLAGS
);
2858 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2861 case CAP_CM_STATUS_ACK
:
2864 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_cm_status_ack
, tvb
,
2865 pos
, length
, ENC_BIG_ENDIAN
);
2869 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2875 static int * const em_pref
[] = {
2876 &hf_docsis_tlv_mcap_em_pref_1x1
,
2877 &hf_docsis_tlv_mcap_em_pref_dls
,
2881 proto_tree_add_bitmask(mcap_tree
, tvb
, pos
, hf_docsis_tlv_mcap_em_pref
,
2882 ett_docsis_tlv_mcap_em_pref
, em_pref
, ENC_BIG_ENDIAN
);
2886 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2889 case CAP_EXT_PKT_LEN_SUP_CAP
:
2892 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_ext_pkt_len_sup_cap
, tvb
,
2893 pos
, length
, ENC_BIG_ENDIAN
);
2897 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2900 case CAP_OFDM_MULT_RECV_CHAN_SUP
:
2903 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_ofdm_mult_recv_chan_sup
, tvb
,
2904 pos
, length
, ENC_BIG_ENDIAN
);
2908 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2911 case CAP_OFDMA_MULT_TRANS_CHAN_SUP
:
2914 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_ofdma_mult_trans_chan_sup
, tvb
,
2915 pos
, length
, ENC_BIG_ENDIAN
);
2919 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2922 case CAP_DOWN_OFDM_PROF_SUP
:
2925 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_down_ofdm_prof_sup
, tvb
,
2926 pos
, length
, ENC_BIG_ENDIAN
);
2930 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2933 case CAP_DOWN_OFDM_CHAN_SUBC_QAM_MOD_SUP
:
2936 static int * const ofdm_qam_mod_sup
[] = {
2937 &hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_reserved
,
2938 &hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_qpsk
,
2939 &hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_16qam
,
2940 &hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_64qam
,
2941 &hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_128qam
,
2942 &hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_256qam
,
2943 &hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_512qam
,
2944 &hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_1024qam
,
2945 &hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_2048qam
,
2946 &hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_4096qam
,
2947 &hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_8192qam
,
2948 &hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_16384qam
,
2952 proto_tree_add_bitmask(mcap_tree
, tvb
, pos
, hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup
,
2953 ett_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup
, ofdm_qam_mod_sup
, ENC_BIG_ENDIAN
);
2957 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2960 case CAP_UP_OFDMA_CHAN_SUBC_QAM_MOD_SUP
:
2963 static int * const ofdma_qam_mod_sup
[] = {
2964 &hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_reserved
,
2965 &hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_qpsk
,
2966 &hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_8qam
,
2967 &hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_16qam
,
2968 &hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_32qam
,
2969 &hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_64qam
,
2970 &hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_128qam
,
2971 &hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_256qam
,
2972 &hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_512qam
,
2973 &hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_1024qam
,
2974 &hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_2048qam
,
2975 &hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_4096qam
,
2976 &hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_8192qam
,
2977 &hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_16384qam
,
2981 proto_tree_add_bitmask(mcap_tree
, tvb
, pos
, hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup
,
2982 ett_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup
, ofdma_qam_mod_sup
, ENC_BIG_ENDIAN
);
2986 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
2989 case CAP_DOWN_LOWER_BAND_EDGE_CONF
:
2992 static int * const down_lower_band_edge_conf
[] = {
2993 &hf_docsis_tlv_mcap_down_lower_band_edge_conf_108
,
2994 &hf_docsis_tlv_mcap_down_lower_band_edge_conf_258
,
2998 proto_tree_add_bitmask(mcap_tree
, tvb
, pos
, hf_docsis_tlv_mcap_down_lower_band_edge_conf
,
2999 ett_docsis_tlv_mcap_down_lower_band_edge_conf
, down_lower_band_edge_conf
, ENC_BIG_ENDIAN
);
3003 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3006 case CAP_DOWN_UPPER_BAND_EDGE_CONF
:
3009 static int * const down_upper_band_edge_conf
[] = {
3010 &hf_docsis_tlv_mcap_down_upper_band_edge_conf_1218
,
3011 &hf_docsis_tlv_mcap_down_upper_band_edge_conf_1794
,
3012 &hf_docsis_tlv_mcap_down_upper_band_edge_conf_1002
,
3016 proto_tree_add_bitmask(mcap_tree
, tvb
, pos
, hf_docsis_tlv_mcap_down_upper_band_edge_conf
,
3017 ett_docsis_tlv_mcap_down_upper_band_edge_conf
, down_upper_band_edge_conf
, ENC_BIG_ENDIAN
);
3021 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3024 case CAP_DIPL_UP_UPPER_BAND_EDGE_CONF
:
3027 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_dipl_up_upper_band_edge_conf
, tvb
,
3028 pos
, length
, ENC_BIG_ENDIAN
);
3032 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3035 case CAP_DOCSIS_TIME_PROT_MODE
:
3038 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_docsis_time_prot_mode
, tvb
,
3039 pos
, length
, ENC_BIG_ENDIAN
);
3043 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3046 case CAP_DOCSIS_TIME_PROT_PERF_SUP
:
3049 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_docsis_time_prot_perf_sup
, tvb
,
3050 pos
, length
, ENC_BIG_ENDIAN
);
3054 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3060 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_pmax
, tvb
,
3061 pos
, length
, ENC_BIG_ENDIAN
);
3065 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3068 case CAP_DIPL_DOWN_LOWER_BAND_EDGE
:
3071 static int * const dipl_down_lower_band_edge
[] = {
3072 &hf_docsis_tlv_mcap_dipl_down_lower_band_edge_108
,
3073 &hf_docsis_tlv_mcap_dipl_down_lower_band_edge_258
,
3077 proto_tree_add_bitmask(mcap_tree
, tvb
, pos
, hf_docsis_tlv_mcap_dipl_down_lower_band_edge
,
3078 ett_docsis_tlv_mcap_dipl_down_lower_band_edge
, dipl_down_lower_band_edge
, ENC_BIG_ENDIAN
);
3082 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3085 case CAP_DIPL_DOWN_UPPER_BAND_EDGE
:
3088 static int * const dipl_down_upper_band_edge
[] = {
3089 &hf_docsis_tlv_mcap_dipl_down_upper_band_edge_1218
,
3090 &hf_docsis_tlv_mcap_dipl_down_upper_band_edge_1794
,
3091 &hf_docsis_tlv_mcap_dipl_down_upper_band_edge_1002
,
3095 proto_tree_add_bitmask(mcap_tree
, tvb
, pos
, hf_docsis_tlv_mcap_dipl_down_upper_band_edge
,
3096 ett_docsis_tlv_mcap_dipl_down_upper_band_edge
, dipl_down_upper_band_edge
, ENC_BIG_ENDIAN
);
3100 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3103 case CAP_DIPL_UP_UPPER_BAND_EDGE
:
3106 static int * const dipl_up_upper_band_edge
[] = {
3107 &hf_docsis_tlv_mcap_dipl_up_upper_band_edge_42
,
3108 &hf_docsis_tlv_mcap_dipl_up_upper_band_edge_65
,
3109 &hf_docsis_tlv_mcap_dipl_up_upper_band_edge_85
,
3110 &hf_docsis_tlv_mcap_dipl_up_upper_band_edge_117
,
3111 &hf_docsis_tlv_mcap_dipl_up_upper_band_edge_204
,
3115 proto_tree_add_bitmask(mcap_tree
, tvb
, pos
, hf_docsis_tlv_mcap_dipl_up_upper_band_edge
,
3116 ett_docsis_tlv_mcap_dipl_up_upper_band_edge
, dipl_up_upper_band_edge
, ENC_BIG_ENDIAN
);
3120 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3123 case CAP_ADVANCED_BAND_PLAN
:
3126 static int * const advanved_band_plan
[] = {
3127 &hf_docsis_tlv_mcap_advanced_band_plan_fdx_l
,
3128 &hf_docsis_tlv_mcap_advanced_band_plan_fdx
,
3129 &hf_docsis_tlv_mcap_advanced_band_plan_fdd
,
3130 &hf_docsis_tlv_mcap_advanced_band_plan_reserved
,
3134 proto_tree_add_bitmask(mcap_tree
, tvb
, pos
, hf_docsis_tlv_mcap_advanced_band_plan
,
3135 ett_docsis_tlv_mcap_advanced_band_plan
, advanved_band_plan
, ENC_BIG_ENDIAN
);
3139 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3142 case CAP_EXTENDED_SF_SID_CLUSTER_ASSIGN
:
3145 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_ext_sf_cluster_assign_sup
, tvb
,
3146 pos
, length
, ENC_BIG_ENDIAN
);
3150 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3153 case CAP_LOW_LATENCY_SUP
:
3156 tlv_item
= proto_tree_add_item_ret_uint (mcap_tree
, hf_docsis_tlv_mcap_low_latency_sup
, tvb
,
3157 pos
, length
, ENC_BIG_ENDIAN
, &tlv_value
);
3160 proto_item_append_text(tlv_item
, " %s", (tlv_value
== 1) ? "ASF" : "ASFs" );
3165 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3168 case CAP_ADVANCED_DOWN_LOWER_BAND_EDGE_CONF
:
3171 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_adv_down_lower_band_edge_conf
, tvb
,
3172 pos
, length
, ENC_BIG_ENDIAN
);
3176 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3179 case CAP_ADVANCED_DOWN_UPPER_BAND_EDGE_CONF
:
3182 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_adv_down_upper_band_edge_conf
, tvb
,
3183 pos
, length
, ENC_BIG_ENDIAN
);
3187 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3190 case CAP_ADVANCED_UP_UPPER_BAND_EDGE_CONF
:
3193 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_adv_up_upper_band_edge_conf
, tvb
,
3194 pos
, length
, ENC_BIG_ENDIAN
);
3198 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3201 case CAP_ADVANCED_DOWN_LOWER_BAND_EDGE_OPTIONS_LIST
:
3202 if (length
> 0 && length
% 2 == 0)
3204 tlv_tree
= proto_tree_add_subtree_format(mcap_tree
, tvb
, pos
, length
,
3205 ett_docsis_tlv_mcap_dipl_down_lower_band_edge_options_list
, &tlv_item
,
3206 ".82 Advanced Diplexer Downstream Lower Band Edge Options List");
3208 for (uint8_t i
= 0; i
< length
; i
= i
+ 2)
3210 proto_tree_add_item_ret_uint (tlv_tree
, hf_docsis_tlv_mcap_adv_down_lower_band_edge_option
,
3211 tvb
, pos
+ i
, 2, ENC_BIG_ENDIAN
, &tlv_value
);
3212 proto_item_append_text(tlv_item
, "%s %d MHz", (i
== 0) ? ":" : ",", tlv_value
);
3217 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3220 case CAP_ADVANCED_DOWN_UPPER_BAND_EDGE_OPTIONS_LIST
:
3221 if (length
> 0 && length
% 2 == 0)
3223 tlv_tree
= proto_tree_add_subtree_format(mcap_tree
, tvb
, pos
, length
,
3224 ett_docsis_tlv_mcap_dipl_down_upper_band_edge_options_list
, &tlv_item
,
3225 ".83 Advanced Diplexer Downstream Upper Band Edge Options List");
3227 for (uint8_t i
= 0; i
< length
; i
= i
+ 2)
3229 proto_tree_add_item_ret_uint (tlv_tree
, hf_docsis_tlv_mcap_adv_down_upper_band_edge_option
,
3230 tvb
, pos
+ i
, 2, ENC_BIG_ENDIAN
, &tlv_value
);
3231 proto_item_append_text(tlv_item
, "%s %d MHz", (i
== 0) ? ":" : ",", tlv_value
);
3236 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3239 case CAP_ADVANCED_UP_UPPER_BAND_EDGE_OPTIONS_LIST
:
3240 if (length
> 0 && length
% 2 == 0)
3242 tlv_tree
= proto_tree_add_subtree_format(mcap_tree
, tvb
, pos
, length
,
3243 ett_docsis_tlv_mcap_dipl_up_upper_band_edge_options_list
, &tlv_item
,
3244 ".84 Advanced Diplexer Upstream Upper Band Edge Options List");
3246 for (uint8_t i
= 0; i
< length
; i
= i
+ 2)
3248 proto_tree_add_item_ret_uint (tlv_tree
, hf_docsis_tlv_mcap_adv_up_upper_band_edge_option
,
3249 tvb
, pos
+ i
, 2, ENC_BIG_ENDIAN
, &tlv_value
);
3250 proto_item_append_text(tlv_item
, "%s %d MHz", (i
== 0) ? ":" : ",", tlv_value
);
3255 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3258 case CAP_EXTENDED_POWER_OPTIONS
:
3261 proto_tree_add_item (mcap_tree
, hf_docsis_tlv_mcap_extended_power_options
, tvb
,
3262 pos
, length
, ENC_BIG_ENDIAN
);
3266 expert_add_info_format(pinfo
, mcap_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3270 dissect_unknown_tlv (tvb
, pinfo
, mcap_tree
, pos
- 2, length
+ 2);
3272 } /* switch (type) */
3274 } /* while (pos < pos+len) */
3278 dissect_cos (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int start
, uint16_t len
)
3280 uint8_t type
, length
;
3281 proto_tree
*cos_tree
;
3282 proto_tree
*cos_item
;
3286 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_cos
, &cos_item
,
3287 "4 Class of Service Type (Length = %u)", len
);
3289 while (pos
< (start
+ len
))
3291 type
= tvb_get_uint8 (tvb
, pos
++);
3292 length
= tvb_get_uint8 (tvb
, pos
++);
3298 proto_tree_add_item (cos_tree
, hf_docsis_tlv_cos_id
, tvb
, pos
,
3299 length
, ENC_BIG_ENDIAN
);
3303 expert_add_info_format(pinfo
, cos_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3309 proto_tree_add_item (cos_tree
, hf_docsis_tlv_cos_max_down
, tvb
,
3310 pos
, length
, ENC_BIG_ENDIAN
);
3314 expert_add_info_format(pinfo
, cos_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3320 proto_tree_add_item (cos_tree
, hf_docsis_tlv_cos_max_up
, tvb
,
3321 pos
, length
, ENC_BIG_ENDIAN
);
3325 expert_add_info_format(pinfo
, cos_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3328 case COS_UP_CH_PRIO
:
3331 proto_tree_add_item (cos_tree
, hf_docsis_tlv_cos_up_chnl_pri
,
3332 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
3336 expert_add_info_format(pinfo
, cos_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3339 case COS_MIN_UP_RATE
:
3342 proto_tree_add_item (cos_tree
, hf_docsis_tlv_cos_min_grntd_up
,
3343 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
3347 expert_add_info_format(pinfo
, cos_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3350 case COS_MAX_UP_BURST
:
3353 proto_tree_add_item (cos_tree
, hf_docsis_tlv_cos_max_up_burst
,
3354 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
3358 expert_add_info_format(pinfo
, cos_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3364 proto_tree_add_item (cos_tree
, hf_docsis_tlv_cos_privacy_enable
,
3365 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
3369 expert_add_info_format(pinfo
, cos_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3373 dissect_unknown_tlv (tvb
, pinfo
, cos_tree
, pos
- 2, length
+ 2);
3375 } /* switch (type) */
3377 } /* while (pos < pos+len) */
3381 dissect_svc_unavail(tvbuff_t
* tvb
, proto_tree
* tree
, int pos
, uint16_t length
) {
3383 proto_item
*svc_unavail_it
;
3384 proto_tree
*svc_unavail_tree
;
3385 svc_unavail_it
= proto_tree_add_item (tree
,
3386 hf_docsis_tlv_svc_unavail
,
3387 tvb
, pos
, length
, ENC_NA
);
3388 svc_unavail_tree
= proto_item_add_subtree(svc_unavail_it
, ett_docsis_tlv_svc_unavail
);
3389 proto_tree_add_item (svc_unavail_tree
,
3390 hf_docsis_tlv_svc_unavail_classid
, tvb
,
3391 pos
, 1, ENC_BIG_ENDIAN
);
3392 proto_tree_add_item (svc_unavail_tree
,
3393 hf_docsis_tlv_svc_unavail_type
, tvb
,
3394 pos
+1, 1, ENC_BIG_ENDIAN
);
3395 proto_tree_add_item (svc_unavail_tree
,
3396 hf_docsis_tlv_svc_unavail_code
, tvb
,
3397 pos
+2, 1, ENC_BIG_ENDIAN
);
3402 dissect_snmpv3_kickstart(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
) {
3403 proto_item
*snmpv3_it
;
3404 proto_tree
*snmpv3_tree
;
3405 uint8_t type
, length
;
3408 snmpv3_it
= proto_tree_add_item (tree
,
3409 hf_docsis_tlv_snmpv3_kick
,
3410 tvb
, start
, len
, ENC_NA
);
3411 snmpv3_tree
= proto_item_add_subtree(snmpv3_it
, ett_docsis_tlv_snmpv3_kick
);
3413 while (pos
< (start
+ len
))
3415 type
= tvb_get_uint8 (tvb
, pos
++);
3416 length
= tvb_get_uint8 (tvb
, pos
++);
3419 case SNMPV3_SEC_NAME
:
3420 proto_tree_add_item (snmpv3_tree
,
3421 hf_docsis_tlv_snmpv3_kick_name
, tvb
,
3422 pos
, length
, ENC_ASCII
);
3424 case SNMPV3_MGR_PUB_NUM
:
3425 proto_tree_add_item (snmpv3_tree
,
3426 hf_docsis_tlv_snmpv3_kick_publicnum
, tvb
,
3427 pos
, length
, ENC_NA
);
3430 dissect_unknown_tlv (tvb
, pinfo
, snmpv3_tree
, pos
- 2, length
+ 2);
3438 dissect_ds_ch_list_single (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
,
3439 int start
, uint16_t len
)
3441 uint8_t type
, length
;
3442 proto_tree
*single_tree
;
3443 proto_item
*single_item
;
3447 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_ds_ch_list_single
, &single_item
,
3448 "1 Single Downstream Channel (Length = %u)", len
);
3450 while (pos
< (start
+ len
))
3452 type
= tvb_get_uint8 (tvb
, pos
++);
3453 length
= tvb_get_uint8 (tvb
, pos
++);
3456 case SINGLE_CH_TIMEOUT
:
3459 proto_tree_add_item (single_tree
, hf_docsis_tlv_single_ch_timeout
, tvb
,
3460 pos
, length
, ENC_BIG_ENDIAN
);
3464 expert_add_info_format(pinfo
, single_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3467 case SINGLE_CH_FREQ
:
3470 proto_tree_add_item (single_tree
, hf_docsis_tlv_single_ch_freq
, tvb
,
3471 pos
, length
, ENC_BIG_ENDIAN
);
3475 expert_add_info_format(pinfo
, single_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3479 dissect_unknown_tlv (tvb
, pinfo
, single_tree
, pos
- 2, length
+ 2);
3487 dissect_ds_ch_list_range (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
,
3488 int start
, uint16_t len
)
3490 uint8_t type
, length
;
3491 proto_tree
*range_tree
;
3492 proto_item
*range_item
;
3496 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_ds_ch_list_range
, &range_item
,
3497 "2 Downstream Frequency Range (Length = %u)", len
);
3499 while (pos
< (start
+ len
))
3501 type
= tvb_get_uint8 (tvb
, pos
++);
3502 length
= tvb_get_uint8 (tvb
, pos
++);
3505 case FREQ_RNG_TIMEOUT
:
3508 proto_tree_add_item (range_tree
, hf_docsis_tlv_freq_rng_timeout
, tvb
,
3509 pos
, length
, ENC_BIG_ENDIAN
);
3513 expert_add_info_format(pinfo
, range_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3516 case FREQ_RNG_START
:
3519 proto_tree_add_item (range_tree
, hf_docsis_tlv_freq_rng_start
, tvb
,
3520 pos
, length
, ENC_BIG_ENDIAN
);
3524 expert_add_info_format(pinfo
, range_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3530 proto_tree_add_item (range_tree
, hf_docsis_tlv_freq_rng_end
, tvb
,
3531 pos
, length
, ENC_BIG_ENDIAN
);
3535 expert_add_info_format(pinfo
, range_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3541 proto_tree_add_item (range_tree
, hf_docsis_tlv_freq_rng_step
, tvb
,
3542 pos
, length
, ENC_BIG_ENDIAN
);
3546 expert_add_info_format(pinfo
, range_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3550 dissect_unknown_tlv (tvb
, pinfo
, range_tree
, pos
- 2, length
+ 2);
3558 dissect_dut_filter (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
,
3559 int start
, uint16_t len
)
3561 uint8_t type
, length
;
3562 proto_tree
*dut_tree
;
3563 proto_item
*dut_item
;
3567 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_dut_filter
, &dut_item
,
3568 "45 Downstream Unencrypted Traffic (Length = %u)", len
);
3570 while (pos
< (start
+ len
))
3572 type
= tvb_get_uint8 (tvb
, pos
++);
3573 length
= tvb_get_uint8 (tvb
, pos
++);
3579 proto_tree_add_item (dut_tree
, hf_docsis_tlv_dut_filter_control
, tvb
,
3580 pos
, length
, ENC_BIG_ENDIAN
);
3584 expert_add_info_format(pinfo
, dut_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3588 proto_tree_add_item (dut_tree
, hf_docsis_tlv_dut_filter_cmim
, tvb
,
3589 pos
, length
, ENC_NA
);
3592 dissect_unknown_tlv (tvb
, pinfo
, dut_tree
, pos
- 2, length
+ 2);
3600 dissect_ds_ch_list(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
3602 uint8_t type
, length
;
3603 proto_tree
*dschlst_tree
;
3604 proto_item
*dschlst_item
;
3608 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_ds_ch_list
, &dschlst_item
,
3609 "41 Downstream Channel List (Length = %u)", len
);
3611 while (pos
< (start
+ len
))
3613 type
= tvb_get_uint8 (tvb
, pos
++);
3614 length
= tvb_get_uint8 (tvb
, pos
++);
3617 case DS_CH_LIST_SINGLE
:
3618 dissect_ds_ch_list_single(tvb
, pinfo
, dschlst_tree
, pos
, length
);
3620 case DS_CH_LIST_RANGE
:
3621 dissect_ds_ch_list_range(tvb
, pinfo
, dschlst_tree
, pos
, length
);
3623 case DS_CH_LIST_DEFAULT_TIMEOUT
:
3626 proto_tree_add_item (dschlst_tree
,
3627 hf_docsis_tlv_ds_ch_list_default_timeout
, tvb
, pos
,
3628 length
, ENC_BIG_ENDIAN
);
3632 expert_add_info_format(pinfo
, dschlst_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3636 dissect_unknown_tlv (tvb
, pinfo
, dschlst_tree
, pos
- 2, length
+ 2);
3644 dissect_docsis_extension_field(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
3646 proto_tree
*ext_field_tree
;
3647 proto_item
*ext_field_item
;
3651 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_ext_field
, &ext_field_item
,
3652 "43 DOCSIS Extension Field (Length = %u)", len
);
3654 vsif_tvb
= tvb_new_subset_length (tvb
, start
, len
);
3655 call_dissector (docsis_vsif_handle
, vsif_tvb
, pinfo
, ext_field_tree
);
3659 dissect_vendor_specific_capabilities(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
3661 proto_tree
*vend_spec_cap_tree
;
3662 proto_item
*vend_spec_cap_item
;
3665 vend_spec_cap_tree
=
3666 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_vendor_specific_cap
, &vend_spec_cap_item
,
3667 "44 Vendor Specific Capabilities (Length = %u)", len
);
3669 vsif_tvb
= tvb_new_subset_length (tvb
, start
, len
);
3670 call_dissector (docsis_vsif_handle
, vsif_tvb
, pinfo
, vend_spec_cap_tree
);
3674 dissect_tcc_err(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
3676 uint8_t type
, length
;
3677 proto_tree
*tccerr_tree
;
3678 proto_tree
*tccerr_item
;
3682 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_tcc_err
, &tccerr_item
,
3683 "TCC Error Encodings (Length = %u)", len
);
3685 while (pos
< (start
+ len
))
3687 type
= tvb_get_uint8 (tvb
, pos
++);
3688 length
= tvb_get_uint8 (tvb
, pos
++);
3691 case TCC_ERR_SUBTYPE
:
3692 proto_tree_add_item (tccerr_tree
,
3693 hf_docsis_tcc_err_subtype
, tvb
,
3694 pos
, length
, ENC_NA
);
3699 proto_tree_add_item (tccerr_tree
,
3700 hf_docsis_tcc_err_code
, tvb
, pos
,
3701 length
, ENC_BIG_ENDIAN
);
3705 expert_add_info_format(pinfo
, tccerr_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3709 proto_tree_add_item (tccerr_tree
,
3710 hf_docsis_tcc_err_msg
, tvb
,
3711 pos
, length
, ENC_ASCII
);
3714 dissect_unknown_tlv (tvb
, pinfo
, tccerr_tree
, pos
- 2, length
+ 2);
3722 dissect_tcc_rng_parms(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
3724 uint8_t type
, length
;
3725 proto_tree
*rngparm_tree
;
3726 proto_item
*rngparm_item
;
3730 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_tcc_rng_parms
, &rngparm_item
,
3731 ".8 Ranging Parameters (Length = %u)", len
);
3733 while (pos
< (start
+ len
))
3735 type
= tvb_get_uint8 (tvb
, pos
++);
3736 length
= tvb_get_uint8 (tvb
, pos
++);
3739 case RNG_PARMS_US_CH_ID
:
3742 proto_tree_add_item (rngparm_tree
,
3743 hf_docsis_rng_parms_us_ch_id
, tvb
, pos
,
3744 length
, ENC_BIG_ENDIAN
);
3748 expert_add_info_format(pinfo
, rngparm_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3751 case RNG_PARMS_TIME_OFF_INT
:
3754 proto_tree_add_item (rngparm_tree
,
3755 hf_docsis_rng_parms_time_off_int
, tvb
, pos
,
3756 length
, ENC_BIG_ENDIAN
);
3760 expert_add_info_format(pinfo
, rngparm_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3763 case RNG_PARMS_TIME_OFF_FRAC
:
3766 proto_tree_add_item (rngparm_tree
,
3767 hf_docsis_rng_parms_time_off_frac
, tvb
, pos
,
3768 length
, ENC_BIG_ENDIAN
);
3772 expert_add_info_format(pinfo
, rngparm_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3775 case RNG_PARMS_POWER_OFF
:
3778 proto_tree_add_item (rngparm_tree
,
3779 hf_docsis_rng_parms_power_off
, tvb
, pos
,
3780 length
, ENC_BIG_ENDIAN
);
3784 expert_add_info_format(pinfo
, rngparm_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3787 case RNG_PARMS_FREQ_OFF
:
3790 proto_tree_add_item (rngparm_tree
,
3791 hf_docsis_rng_parms_freq_off
, tvb
, pos
,
3792 length
, ENC_BIG_ENDIAN
);
3796 expert_add_info_format(pinfo
, rngparm_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3800 dissect_unknown_tlv (tvb
, pinfo
, rngparm_tree
, pos
- 2, length
+ 2);
3808 dissect_tcc_oudp(tvbuff_t
* tvb
, proto_tree
*tree
, int start
, uint16_t len
)
3810 proto_tree
*oudp_tree
;
3811 proto_item
*oudp_item
;
3815 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_tcc_oudp
, &oudp_item
,
3816 ".11 Assigned OFDMA Upstream Data Profile (OUDP) IUC (Length = %u)", len
);
3818 while (pos
< (start
+ len
))
3820 proto_tree_add_item (oudp_tree
, hf_docsis_tlv_tcc_oudp_iuc
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
3826 dissect_sid_cl_so_crit(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
3828 uint8_t type
, length
;
3829 proto_tree
*crit_tree
;
3830 proto_item
*crit_item
;
3834 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_sid_cl_so
, &crit_item
,
3835 ".3 SID Cluster Switchover Criteria (Length = %u)", len
);
3837 while (pos
< (start
+ len
))
3839 type
= tvb_get_uint8 (tvb
, pos
++);
3840 length
= tvb_get_uint8 (tvb
, pos
++);
3843 case SID_CL_SO_MAX_REQ
:
3846 proto_tree_add_item (crit_tree
,
3847 hf_docsis_sid_cl_so_max_req
, tvb
, pos
,
3848 length
, ENC_BIG_ENDIAN
);
3852 expert_add_info_format(pinfo
, crit_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3855 case SID_CL_SO_MAX_OUT_BYTES
:
3858 proto_tree_add_item (crit_tree
,
3859 hf_docsis_sid_cl_so_max_out_bytes
, tvb
, pos
,
3860 length
, ENC_BIG_ENDIAN
);
3864 expert_add_info_format(pinfo
, crit_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3867 case SID_CL_SO_MAX_REQ_BYTES
:
3870 proto_tree_add_item (crit_tree
,
3871 hf_docsis_sid_cl_so_max_req_bytes
, tvb
, pos
,
3872 length
, ENC_BIG_ENDIAN
);
3876 expert_add_info_format(pinfo
, crit_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3879 case SID_CL_SO_MAX_TIME
:
3882 proto_tree_add_item (crit_tree
,
3883 hf_docsis_sid_cl_so_max_time
, tvb
, pos
,
3884 length
, ENC_BIG_ENDIAN
);
3888 expert_add_info_format(pinfo
, crit_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3892 dissect_unknown_tlv (tvb
, pinfo
, crit_tree
, pos
- 2, length
+ 2);
3900 dissect_sid_cl_enc_map(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
3902 uint8_t type
, length
;
3903 proto_tree
*map_tree
;
3904 proto_item
*map_item
;
3908 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_sid_cl_enc_map
, &map_item
,
3909 "..2 SID-to-Channel Mapping (Length = %u)", len
);
3911 while (pos
< (start
+ len
))
3913 type
= tvb_get_uint8 (tvb
, pos
++);
3914 length
= tvb_get_uint8 (tvb
, pos
++);
3917 case SID_CL_MAP_US_CH_ID
:
3920 proto_tree_add_item (map_tree
,
3921 hf_docsis_sid_cl_map_us_ch_id
, tvb
, pos
,
3922 length
, ENC_BIG_ENDIAN
);
3926 expert_add_info_format(pinfo
, map_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3929 case SID_CL_MAP_SID
:
3932 proto_tree_add_item (map_tree
,
3933 hf_docsis_sid_cl_map_sid
, tvb
, pos
,
3934 length
, ENC_BIG_ENDIAN
);
3938 expert_add_info_format(pinfo
, map_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3941 case SID_CL_MAP_ACTION
:
3944 proto_tree_add_item (map_tree
,
3945 hf_docsis_sid_cl_map_action
, tvb
, pos
,
3946 length
, ENC_BIG_ENDIAN
);
3950 expert_add_info_format(pinfo
, map_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3954 dissect_unknown_tlv (tvb
, pinfo
, map_tree
, pos
- 2, length
+ 2);
3962 dissect_sid_cl_enc(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
3964 uint8_t type
, length
;
3965 proto_tree
*enc_tree
;
3966 proto_item
*enc_item
;
3970 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_sid_cl_enc
, &enc_item
,
3971 ".2 SID Cluster Encoding (Length = %u)", len
);
3973 while (pos
< (start
+ len
))
3975 type
= tvb_get_uint8 (tvb
, pos
++);
3976 length
= tvb_get_uint8 (tvb
, pos
++);
3982 proto_tree_add_item (enc_tree
,
3983 hf_docsis_sid_cl_enc_id
, tvb
, pos
,
3984 length
, ENC_BIG_ENDIAN
);
3988 expert_add_info_format(pinfo
, enc_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3991 case SID_CL_ENC_MAP
:
3993 dissect_sid_cl_enc_map(tvb
, pinfo
, enc_tree
, pos
, length
);
3995 expert_add_info_format(pinfo
, enc_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
3998 dissect_unknown_tlv (tvb
, pinfo
, enc_tree
, pos
- 2, length
+ 2);
4006 dissect_sid_cl(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
4008 uint8_t type
, length
;
4009 proto_tree
*sid_tree
;
4010 proto_item
*sid_item
;
4014 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_sid_cl
, &sid_item
,
4015 "47 Service Flow SID Cluster Assignments (Length = %u)", len
);
4017 while (pos
< (start
+ len
))
4019 type
= tvb_get_uint8 (tvb
, pos
++);
4020 length
= tvb_get_uint8 (tvb
, pos
++);
4026 proto_tree_add_item (sid_tree
,
4027 hf_docsis_sid_cl_sf_id
, tvb
, pos
,
4028 length
, ENC_BIG_ENDIAN
);
4032 expert_add_info_format(pinfo
, sid_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4036 dissect_sid_cl_enc(tvb
, pinfo
, sid_tree
, pos
, length
);
4038 case SID_CL_SO_CRIT
:
4039 dissect_sid_cl_so_crit(tvb
, pinfo
, sid_tree
, pos
, length
);
4042 dissect_unknown_tlv (tvb
, pinfo
, sid_tree
, pos
- 2, length
+ 2);
4050 dissect_tcc(tvbuff_t
* tvb
, packet_info
* pinfo
,
4051 proto_tree
*tree
, int start
, uint16_t len
, int* previous_channel_id
)
4053 uint8_t type
, length
;
4054 proto_tree
*tcc_tree
, *reassembled_ucd_tree
;
4055 proto_item
*tcc_item
, *reassembled_ucd_item
;
4057 int channel_id
= -1;
4059 fragment_head
* reassembled_ucd
= NULL
;
4062 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_tcc
, &tcc_item
,
4063 "46 Transmit Channel Configuration (Length = %u)", len
);
4065 while (pos
< (start
+ len
))
4067 type
= tvb_get_uint8 (tvb
, pos
++);
4068 length
= tvb_get_uint8 (tvb
, pos
++);
4074 proto_tree_add_item (tcc_tree
,
4075 hf_docsis_tlv_tcc_refid
, tvb
, pos
,
4076 length
, ENC_BIG_ENDIAN
);
4080 expert_add_info_format(pinfo
, tcc_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4083 case TLV_TCC_US_CH_ACTION
:
4086 proto_tree_add_item (tcc_tree
,
4087 hf_docsis_tlv_tcc_us_ch_action
, tvb
, pos
,
4088 length
, ENC_BIG_ENDIAN
);
4092 expert_add_info_format(pinfo
, tcc_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4095 case TLV_TCC_US_CH_ID
:
4098 proto_tree_add_item_ret_uint (tcc_tree
,
4099 hf_docsis_tlv_tcc_us_ch_id
, tvb
, pos
,
4100 length
, ENC_BIG_ENDIAN
, &channel_id
);
4101 /* Only perform reassembly on UCD if TLV is reassembled. fragment_end_seq_next added for the rare cases where UCD end is 254 long. */
4102 if(!pinfo
->fragmented
&& *previous_channel_id
!= -1) {
4103 fragment_end_seq_next(&ucd_reassembly_table
, pinfo
, *previous_channel_id
, NULL
);
4105 *previous_channel_id
= channel_id
;
4110 expert_add_info_format(pinfo
, tcc_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4113 case TLV_TCC_NEW_US_CH_ID
:
4116 proto_tree_add_item (tcc_tree
,
4117 hf_docsis_tlv_tcc_new_us_ch_id
, tvb
, pos
,
4118 length
, ENC_BIG_ENDIAN
);
4122 expert_add_info_format(pinfo
, tcc_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4126 proto_tree_add_item (tcc_tree
, hf_docsis_tlv_tcc_ucd
, tvb
, pos
, length
, ENC_NA
);
4127 if (channel_id
== -1) {
4128 channel_id
= *previous_channel_id
;
4131 /* Only perform reassembly on UCD if TLV is reassembled */
4132 if(!pinfo
->fragmented
) {
4133 reassembled_ucd_item
= proto_tree_add_item(tcc_tree
, hf_docsis_ucd_reassembled
, tvb
, 0, -1, ENC_NA
);
4134 reassembled_ucd_tree
= proto_item_add_subtree (reassembled_ucd_item
, ett_docsis_ucd_reassembled
);
4136 reassembled_ucd
= fragment_add_seq_next(&ucd_reassembly_table
,
4138 channel_id
, NULL
, /* ID for fragments belonging together */
4139 length
, /* fragment length - to the end */
4140 (len
== 254)); /* More fragments? */
4142 if (reassembled_ucd
) {
4143 tvbuff_t
*ucd_tvb
= NULL
;
4144 ucd_tvb
= process_reassembled_data(tvb
, pos
, pinfo
, ".5 Reassembled UCD", reassembled_ucd
, &ucd_frag_items
,
4145 NULL
, reassembled_ucd_tree
);
4147 if (ucd_tvb
&& tvb_reported_length(ucd_tvb
) > 0) {
4148 call_dissector (docsis_ucd_handle
, ucd_tvb
, pinfo
, reassembled_ucd_tree
);
4154 case TLV_TCC_RNG_SID
:
4157 proto_tree_add_item (tcc_tree
,
4158 hf_docsis_tlv_tcc_rng_sid
, tvb
, pos
,
4159 length
, ENC_BIG_ENDIAN
);
4163 expert_add_info_format(pinfo
, tcc_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4166 case TLV_TCC_INIT_TECH
:
4169 proto_tree_add_item (tcc_tree
,
4170 hf_docsis_tlv_tcc_init_tech
, tvb
, pos
,
4171 length
, ENC_BIG_ENDIAN
);
4175 expert_add_info_format(pinfo
, tcc_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4178 case TLV_TCC_RNG_PARMS
:
4179 dissect_tcc_rng_parms(tvb
, pinfo
, tcc_tree
, pos
, length
);
4181 case TLV_TCC_DYN_RNG_WIN
:
4184 proto_tree_add_item (tcc_tree
,
4185 hf_docsis_tlv_tcc_dyn_rng_win
, tvb
, pos
,
4186 length
, ENC_BIG_ENDIAN
);
4190 expert_add_info_format(pinfo
, tcc_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4193 case TLV_TCC_P1_6HI
:
4196 proto_tree_add_item (tcc_tree
,
4197 hf_docsis_tlv_tcc_p_16hi
, tvb
, pos
,
4198 length
, ENC_BIG_ENDIAN
);
4202 expert_add_info_format(pinfo
, tcc_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4205 case TLV_TCC_ASSIGN_OFDMA_UP_DATA_PROF
:
4206 dissect_tcc_oudp(tvb
, tcc_tree
, pos
, length
);
4208 case TLV_TCC_EXTENDED_DRW
:
4211 proto_tree_add_item (tcc_tree
,
4212 hf_docsis_tlv_tcc_extended_drw
, tvb
, pos
,
4213 length
, ENC_BIG_ENDIAN
);
4217 expert_add_info_format(pinfo
, tcc_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4220 case TLV_TCC_EXTENDED_US_RNG_PWR
:
4223 proto_tree_add_item (tcc_tree
,
4224 hf_docsis_tlv_tcc_extended_us_rng_pwr
, tvb
, pos
,
4225 length
, ENC_BIG_ENDIAN
);
4229 expert_add_info_format(pinfo
, tcc_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4232 case TLV_TCC_OUDP_SOUNDING_SID
:
4235 proto_tree_add_item (tcc_tree
,
4236 hf_docsis_tlv_tcc_oudp_sounding_sid
, tvb
, pos
,
4237 length
, ENC_BIG_ENDIAN
);
4241 expert_add_info_format(pinfo
, tcc_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4245 dissect_tcc_err(tvb
, pinfo
, tcc_tree
, pos
, length
);
4248 dissect_unknown_tlv (tvb
, pinfo
, tcc_tree
, pos
- 2, length
+ 2);
4256 dissect_ch_bl_rng(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
4258 uint8_t type
, length
;
4259 proto_tree
*chblrng_tree
;
4260 proto_item
*chblrng_item
;
4264 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_rcp_ch_bl_rng
, &chblrng_item
,
4265 "..3 Receive Module Channel Block Range (Length = %u)", len
);
4267 while (pos
< (start
+ len
))
4269 type
= tvb_get_uint8 (tvb
, pos
++);
4270 length
= tvb_get_uint8 (tvb
, pos
++);
4273 case CH_BL_RNG_MIN_CTR_FREQ
:
4276 proto_tree_add_item (chblrng_tree
,
4277 hf_docsis_ch_bl_rng_min_ctr_freq
, tvb
, pos
,
4278 length
, ENC_BIG_ENDIAN
);
4282 expert_add_info_format(pinfo
, chblrng_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4285 case CH_BL_RNG_MAX_CTR_FREQ
:
4288 proto_tree_add_item (chblrng_tree
,
4289 hf_docsis_ch_bl_rng_max_ctr_freq
, tvb
, pos
,
4290 length
, ENC_BIG_ENDIAN
);
4294 expert_add_info_format(pinfo
, chblrng_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4298 dissect_unknown_tlv (tvb
, pinfo
, chblrng_tree
, pos
- 2, length
+ 2);
4306 dissect_rcp_rcv_mod(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
4308 uint8_t type
, length
;
4309 proto_tree
*rcvmod_tree
;
4310 proto_item
*rcvmod_item
;
4314 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_rcp_rcv_mod_enc
, &rcvmod_item
,
4315 ".4 Receive Module Capability (Length = %u)", len
);
4317 while (pos
< (start
+ len
))
4319 type
= tvb_get_uint8 (tvb
, pos
++);
4320 length
= tvb_get_uint8 (tvb
, pos
++);
4323 case RCV_MOD_ENC_IDX
:
4326 proto_tree_add_item (rcvmod_tree
,
4327 hf_docsis_rcv_mod_enc_idx
, tvb
, pos
,
4328 length
, ENC_BIG_ENDIAN
);
4332 expert_add_info_format(pinfo
, rcvmod_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4335 case RCV_MOD_ENC_ADJ_CH
:
4338 proto_tree_add_item (rcvmod_tree
,
4339 hf_docsis_rcv_mod_enc_adj_ch
, tvb
, pos
,
4340 length
, ENC_BIG_ENDIAN
);
4344 expert_add_info_format(pinfo
, rcvmod_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4347 case RCV_MOD_ENC_CH_BL_RNG
:
4348 dissect_ch_bl_rng(tvb
, pinfo
, rcvmod_tree
, pos
, length
);
4350 case RCV_MOD_ENC_CTR_FREQ_ASGN
:
4353 proto_tree_add_item (rcvmod_tree
,
4354 hf_docsis_rcv_mod_enc_ctr_freq_asgn
, tvb
, pos
,
4355 length
, ENC_BIG_ENDIAN
);
4359 expert_add_info_format(pinfo
, rcvmod_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4362 case RCV_MOD_ENC_RSQ_CH_SUBS_CAP
:
4363 proto_tree_add_item (rcvmod_tree
,
4364 hf_docsis_rcv_mod_enc_rsq_ch_subs_cap
, tvb
, pos
,
4367 case RCV_MOD_ENC_CONN
:
4368 proto_tree_add_item (rcvmod_tree
,
4369 hf_docsis_rcv_mod_enc_conn
, tvb
, pos
,
4372 case RCV_MOD_ENC_PHY_LAYR_PARMS
:
4373 proto_tree_add_item (rcvmod_tree
,
4374 hf_docsis_rcv_mod_enc_phy_layr_parms
, tvb
, pos
,
4378 dissect_unknown_tlv (tvb
, pinfo
, rcvmod_tree
, pos
- 2, length
+ 2);
4386 dissect_rcp_rcv_ch(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
4388 uint8_t type
, length
;
4389 proto_tree
*rcvch_tree
;
4390 proto_item
*rcvch_item
;
4394 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_rcp_rcv_ch
, &rcvch_item
,
4395 ".5 Receive Channels (Length = %u)", len
);
4397 while (pos
< (start
+ len
))
4399 type
= tvb_get_uint8 (tvb
, pos
++);
4400 length
= tvb_get_uint8 (tvb
, pos
++);
4406 proto_tree_add_item (rcvch_tree
,
4407 hf_docsis_rcv_ch_idx
, tvb
, pos
,
4408 length
, ENC_BIG_ENDIAN
);
4412 expert_add_info_format(pinfo
, rcvch_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4416 proto_tree_add_item (rcvch_tree
,
4417 hf_docsis_rcv_ch_conn
, tvb
, pos
,
4420 case RCV_CH_CONN_OFF
:
4423 proto_tree_add_item (rcvch_tree
,
4424 hf_docsis_rcv_ch_conn_off
, tvb
, pos
,
4425 length
, ENC_BIG_ENDIAN
);
4429 expert_add_info_format(pinfo
, rcvch_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4432 case RCV_CH_PRIM_DS_CH_IND
:
4435 proto_tree_add_item (rcvch_tree
,
4436 hf_docsis_rcv_ch_prim_ds_ch_ind
, tvb
, pos
,
4437 length
, ENC_BIG_ENDIAN
);
4441 expert_add_info_format(pinfo
, rcvch_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4445 dissect_unknown_tlv (tvb
, pinfo
, rcvch_tree
, pos
- 2, length
+ 2);
4454 dissect_rcp(tvbuff_t
* tvb
, packet_info
* pinfo
,
4455 proto_tree
*tree
, int start
, uint16_t len
)
4457 uint8_t type
, length
;
4458 proto_tree
*rcp_tree
;
4459 proto_item
*rcp_item
;
4464 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_rcp
, &rcp_item
,
4465 "48 Receive Channel Profile (Length = %u)", len
);
4467 while (pos
< (start
+ len
))
4469 type
= tvb_get_uint8 (tvb
, pos
++);
4470 length
= tvb_get_uint8 (tvb
, pos
++);
4476 proto_tree_add_item (rcp_tree
,
4477 hf_docsis_tlv_rcp_id
, tvb
, pos
,
4482 expert_add_info_format(pinfo
, rcp_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4488 proto_tree_add_item (rcp_tree
,
4489 hf_docsis_tlv_rcp_name
, tvb
, pos
,
4494 expert_add_info_format(pinfo
, rcp_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4497 case TLV_RCP_FREQ_SPC
:
4500 proto_tree_add_item (rcp_tree
,
4501 hf_docsis_tlv_rcp_freq_spc
, tvb
, pos
,
4502 length
, ENC_BIG_ENDIAN
);
4506 expert_add_info_format(pinfo
, rcp_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4509 case TLV_RCP_RCV_MOD_ENC
:
4510 dissect_rcp_rcv_mod(tvb
, pinfo
, rcp_tree
, pos
, length
);
4512 case TLV_RCP_RCV_CH
:
4513 dissect_rcp_rcv_ch(tvb
, pinfo
, rcp_tree
, pos
, length
);
4515 case TLV_RCP_VEN_SPEC
:
4516 vsif_tvb
= tvb_new_subset_length (tvb
, pos
, length
);
4517 call_dissector (docsis_vsif_handle
, vsif_tvb
, pinfo
, rcp_tree
);
4520 dissect_unknown_tlv (tvb
, pinfo
, rcp_tree
, pos
- 2, length
+ 2);
4528 dissect_rcc_rcv_mod(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
4530 uint8_t type
, length
;
4531 proto_tree
*rcvmod_tree
;
4532 proto_item
*rcvmod_item
;
4536 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_rcc_rcv_mod_enc
, &rcvmod_item
,
4537 ".4 Receive Module Assignment (Length = %u)", len
);
4539 while (pos
< (start
+ len
))
4541 type
= tvb_get_uint8 (tvb
, pos
++);
4542 length
= tvb_get_uint8 (tvb
, pos
++);
4545 case RCV_MOD_ENC_IDX
:
4548 proto_tree_add_item (rcvmod_tree
,
4549 hf_docsis_rcc_rcv_mod_enc_idx
, tvb
, pos
,
4550 length
, ENC_BIG_ENDIAN
);
4554 expert_add_info_format(pinfo
, rcvmod_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4557 case RCV_MOD_ENC_CTR_FREQ_ASGN
:
4560 proto_tree_add_item (rcvmod_tree
,
4561 hf_docsis_rcc_rcv_mod_enc_ctr_freq_asgn
, tvb
, pos
,
4562 length
, ENC_BIG_ENDIAN
);
4566 expert_add_info_format(pinfo
, rcvmod_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4569 case RCV_MOD_ENC_CONN
:
4570 proto_tree_add_item (rcvmod_tree
,
4571 hf_docsis_rcc_rcv_mod_enc_conn
, tvb
, pos
,
4575 dissect_unknown_tlv (tvb
, pinfo
, rcvmod_tree
, pos
- 2, length
+ 2);
4583 dissect_rcc_rcv_ch(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
4585 uint8_t type
, length
;
4586 proto_tree
*rcvch_tree
;
4587 proto_item
*rcvch_item
;
4591 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_rcc_rcv_ch
, &rcvch_item
,
4592 ".5 Receive Channels (Length = %u)", len
);
4594 while (pos
< (start
+ len
))
4596 type
= tvb_get_uint8 (tvb
, pos
++);
4597 length
= tvb_get_uint8 (tvb
, pos
++);
4603 proto_tree_add_item (rcvch_tree
,
4604 hf_docsis_rcc_rcv_ch_idx
, tvb
, pos
,
4605 length
, ENC_BIG_ENDIAN
);
4609 expert_add_info_format(pinfo
, rcvch_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4613 proto_tree_add_item (rcvch_tree
,
4614 hf_docsis_rcc_rcv_ch_conn
, tvb
, pos
,
4617 case RCV_CH_CTR_FREQ_ASGN
:
4620 proto_tree_add_item (rcvch_tree
,
4621 hf_docsis_rcc_rcv_ch_ctr_freq_asgn
, tvb
, pos
,
4622 length
, ENC_BIG_ENDIAN
);
4626 expert_add_info_format(pinfo
, rcvch_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4629 case RCV_CH_PRIM_DS_CH_IND
:
4632 proto_tree_add_item (rcvch_tree
,
4633 hf_docsis_rcc_rcv_ch_prim_ds_ch_ind
, tvb
, pos
,
4634 length
, ENC_BIG_ENDIAN
);
4638 expert_add_info_format(pinfo
, rcvch_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4642 dissect_unknown_tlv (tvb
, pinfo
, rcvch_tree
, pos
- 2, length
+ 2);
4650 dissect_rcc_partial_serv_down_chan(tvbuff_t
* tvb
, proto_tree
*tree
, int start
, uint16_t len
)
4652 proto_tree
*rcc_partial_serv_down_chan_tree
;
4653 proto_item
*rcc_partial_serv_down_chan_item
;
4657 rcc_partial_serv_down_chan_tree
=
4658 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_rcc_partial_serv_down_chan
, &rcc_partial_serv_down_chan_item
,
4659 ".6 Partial Service Downstream Channels (Length = %u)", len
);
4660 for (i
=0; i
< len
; ++i
)
4662 proto_tree_add_item (rcc_partial_serv_down_chan_tree
,
4663 hf_docsis_tlv_rcc_partial_serv_down_chan_id
, tvb
, pos
+i
,
4669 dissect_rcc_srcc_prim_ds_ch_assign(tvbuff_t
* tvb
, proto_tree
*tree
, int start
, uint16_t len
)
4671 proto_tree
*rcc_srcc_prim_ds_assign_tree
;
4672 proto_item
*rcc_srcc_prim_ds_assign_item
;
4676 rcc_srcc_prim_ds_assign_tree
=
4677 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_rcc_srcc_prim_ds_assign
, &rcc_srcc_prim_ds_assign_item
,
4678 "..1 RCC SRCC Primary Downstream Channel Assignment (Length = %u)", len
);
4679 for (i
=0; i
< len
; ++i
)
4681 proto_tree_add_item (rcc_srcc_prim_ds_assign_tree
,
4682 hf_docsis_tlv_rcc_srcc_prim_ds_chan_assign_ds_ch_id
, tvb
, pos
+i
,
4688 dissect_rcc_srcc_ds_ch_assign(tvbuff_t
* tvb
, proto_tree
*tree
, int start
, uint16_t len
)
4690 proto_tree
*rcc_srcc_ds_assign_tree
;
4691 proto_item
*rcc_srcc_ds_assign_item
;
4695 rcc_srcc_ds_assign_tree
=
4696 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_rcc_srcc_ds_assign
, &rcc_srcc_ds_assign_item
,
4697 "..2 RCC SRCC Downstream Channel Assignment (Length = %u)", len
);
4698 for (i
=0; i
< len
; ++i
)
4700 proto_tree_add_item (rcc_srcc_ds_assign_tree
,
4701 hf_docsis_tlv_rcc_srcc_ds_chan_assign_ds_ch_id
, tvb
, pos
+i
,
4707 dissect_rcc_srcc_ds_prof_assign_prof_list(tvbuff_t
* tvb
, proto_tree
*tree
, int start
, uint16_t len
)
4709 proto_tree
*rcc_srcc_ds_prof_assign_prof_list_tree
;
4710 proto_item
*rcc_srcc_ds_prof_assign_prof_list_item
;
4714 rcc_srcc_ds_prof_assign_prof_list_tree
=
4715 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_rcc_srcc_ds_prof_assign_prof_list
, &rcc_srcc_ds_prof_assign_prof_list_item
,
4716 "....2 RCC SRCC Downstream Profile Assignment - Profile List (Length = %u)", len
);
4717 for (i
=0; i
< len
; ++i
)
4719 proto_tree_add_item (rcc_srcc_ds_prof_assign_prof_list_tree
,
4720 hf_docsis_tlv_rcc_srcc_ds_prof_asssign_prof_list_prof_id
, tvb
, pos
+i
,
4726 dissect_rcc_srcc_ds_prof_assign(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
4728 uint8_t type
, length
;
4729 proto_tree
*rcc_srcc_ds_prof_assign_tree
;
4730 proto_item
*rcc_srcc_ds_prof_assign_item
;
4733 rcc_srcc_ds_prof_assign_tree
=
4734 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_rcc_srcc_ds_prof_assign
, &rcc_srcc_ds_prof_assign_item
,
4735 "..3 RCC SRCC Downstream Profile Assignment(Length = %u)", len
);
4736 while (pos
< (start
+ len
))
4738 type
= tvb_get_uint8 (tvb
, pos
++);
4739 length
= tvb_get_uint8 (tvb
, pos
++);
4742 case RCC_SRCC_DS_PROF_ASSIGN_DCID
:
4745 proto_tree_add_item (rcc_srcc_ds_prof_assign_tree
,
4746 hf_docsis_tlv_rcc_srcc_ds_prof_assign_dcid
, tvb
, pos
,
4747 length
, ENC_BIG_ENDIAN
);
4751 expert_add_info_format(pinfo
, rcc_srcc_ds_prof_assign_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4754 case RCC_SRCC_DS_PROF_ASSIGN_PROF_LIST
:
4755 dissect_rcc_srcc_ds_prof_assign_prof_list(tvb
, rcc_srcc_ds_prof_assign_tree
, pos
, length
);
4758 dissect_unknown_tlv (tvb
, pinfo
, rcc_srcc_ds_prof_assign_tree
, pos
- 2, length
+ 2);
4766 dissect_rcc_srcc(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
4768 uint8_t type
, length
;
4769 proto_tree
*rcc_srcc_tree
;
4770 proto_item
*rcc_srcc_item
;
4774 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_rcc_srcc
, &rcc_srcc_item
,
4775 ".7 RCC Simplified Receive Channel Configuration (Length = %u)", len
);
4776 while (pos
< (start
+ len
))
4778 type
= tvb_get_uint8 (tvb
, pos
++);
4779 length
= tvb_get_uint8 (tvb
, pos
++);
4782 case RCC_SRCC_PRIM_DS_CHAN_ASSIGN
:
4783 dissect_rcc_srcc_prim_ds_ch_assign(tvb
, rcc_srcc_tree
, pos
, length
);
4785 case RCC_SRCC_DS_CHAN_ASSIGN
:
4786 dissect_rcc_srcc_ds_ch_assign(tvb
, rcc_srcc_tree
, pos
, length
);
4788 case RCC_SRCC_DS_PROF_ASSIGN
:
4789 dissect_rcc_srcc_ds_prof_assign(tvb
, pinfo
, rcc_srcc_tree
, pos
, length
);
4792 dissect_unknown_tlv (tvb
, pinfo
, rcc_srcc_tree
, pos
- 2, length
+ 2);
4800 dissect_rcc_err(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
4802 uint8_t type
, length
;
4803 proto_tree
*err_tree
;
4804 proto_item
*err_item
;
4808 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_rcc_rcv_ch
, &err_item
,
4809 ".254 RCC Error Encodings (Length = %u)", len
);
4811 while (pos
< (start
+ len
))
4813 type
= tvb_get_uint8 (tvb
, pos
++);
4814 length
= tvb_get_uint8 (tvb
, pos
++);
4817 case RCC_ERR_MOD_OR_CH
:
4820 proto_tree_add_item (err_tree
,
4821 hf_docsis_tlv_rcc_err_mod_or_ch
, tvb
, pos
,
4822 length
, ENC_BIG_ENDIAN
);
4826 expert_add_info_format(pinfo
, err_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4832 proto_tree_add_item (err_tree
,
4833 hf_docsis_tlv_rcc_err_idx
, tvb
, pos
,
4834 length
, ENC_BIG_ENDIAN
);
4838 expert_add_info_format(pinfo
, err_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4844 proto_tree_add_item (err_tree
,
4845 hf_docsis_tlv_rcc_err_param
, tvb
, pos
,
4846 length
, ENC_BIG_ENDIAN
);
4850 expert_add_info_format(pinfo
, err_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4856 proto_tree_add_item (err_tree
,
4857 hf_docsis_tlv_rcc_err_code
, tvb
, pos
,
4858 length
, ENC_BIG_ENDIAN
);
4862 expert_add_info_format(pinfo
, err_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4866 proto_tree_add_item (err_tree
,
4867 hf_docsis_tlv_rcc_err_msg
, tvb
, pos
,
4871 dissect_unknown_tlv (tvb
, pinfo
, err_tree
, pos
- 2, length
+ 2);
4879 dissect_rcc(tvbuff_t
* tvb
, packet_info
* pinfo
,
4880 proto_tree
*tree
, int start
, uint16_t len
)
4882 uint8_t type
, length
;
4883 proto_tree
*rcc_tree
;
4884 proto_item
*rcc_item
;
4889 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_rcc
, &rcc_item
,
4890 "49 Receive Channel Configuration (Length = %u)", len
);
4892 while (pos
< (start
+ len
))
4894 type
= tvb_get_uint8 (tvb
, pos
++);
4895 length
= tvb_get_uint8 (tvb
, pos
++);
4901 proto_tree_add_item (rcc_tree
,
4902 hf_docsis_tlv_rcc_id
, tvb
, pos
,
4907 expert_add_info_format(pinfo
, rcc_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4910 case TLV_RCP_RCV_MOD_ENC
:
4911 dissect_rcc_rcv_mod(tvb
, pinfo
, rcc_tree
, pos
, length
);
4913 case TLV_RCP_RCV_CH
:
4914 dissect_rcc_rcv_ch(tvb
, pinfo
, rcc_tree
, pos
, length
);
4916 case TLV_RCP_VEN_SPEC
:
4917 vsif_tvb
= tvb_new_subset_length (tvb
, pos
, length
);
4918 call_dissector (docsis_vsif_handle
, vsif_tvb
, pinfo
, rcc_tree
);
4920 case TLV_RCC_PARTIAL_SERV_DOWN_CHAN
:
4921 dissect_rcc_partial_serv_down_chan(tvb
, rcc_tree
, pos
, length
);
4924 dissect_rcc_srcc(tvb
, pinfo
, rcc_tree
, pos
, length
);
4926 case TLV_RCC_PRIM_DOWN_CHAN
:
4929 proto_tree_add_item (rcc_tree
,
4930 hf_docsis_tlv_rcc_prim_down_chan
, tvb
, pos
,
4935 expert_add_info_format(pinfo
, rcc_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4939 dissect_rcc_err(tvb
, pinfo
, rcc_tree
, pos
, length
);
4942 dissect_unknown_tlv (tvb
, pinfo
, rcc_tree
, pos
- 2, length
+ 2);
4950 dissect_dsid_ds_reseq(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
4952 uint8_t type
, length
;
4953 proto_tree
*dsid_tree
;
4954 proto_item
*dsid_item
;
4958 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_dsid_ds_reseq
, &dsid_item
,
4959 ".3 Resequencing DSID (Length = %u)", len
);
4961 while (pos
< (start
+ len
))
4963 type
= tvb_get_uint8 (tvb
, pos
++);
4964 length
= tvb_get_uint8 (tvb
, pos
++);
4970 proto_tree_add_item (dsid_tree
,
4971 hf_docsis_ds_reseq_dsid
, tvb
, pos
,
4972 length
, ENC_BIG_ENDIAN
);
4976 expert_add_info_format(pinfo
, dsid_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4979 case DS_RESEQ_CH_LST
:
4980 proto_tree_add_item (dsid_tree
,
4981 hf_docsis_ds_reseq_ch_lst
, tvb
, pos
,
4984 case DS_RESEQ_WAIT_TIME
:
4987 proto_tree_add_item (dsid_tree
,
4988 hf_docsis_ds_reseq_wait_time
, tvb
, pos
,
4989 length
, ENC_BIG_ENDIAN
);
4993 expert_add_info_format(pinfo
, dsid_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
4996 case DS_RESEQ_WARN_THRESH
:
4999 proto_tree_add_item (dsid_tree
,
5000 hf_docsis_ds_reseq_warn_thresh
, tvb
, pos
,
5001 length
, ENC_BIG_ENDIAN
);
5005 expert_add_info_format(pinfo
, dsid_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5008 case DS_RESEQ_HO_TIMER
:
5011 proto_tree_add_item (dsid_tree
,
5012 hf_docsis_ds_reseq_ho_timer
, tvb
, pos
,
5013 length
, ENC_BIG_ENDIAN
);
5017 expert_add_info_format(pinfo
, dsid_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5021 dissect_unknown_tlv (tvb
, pinfo
, dsid_tree
, pos
- 2, length
+ 2);
5029 dissect_dsid_mc_addr(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
5031 uint8_t type
, length
;
5032 proto_tree
*dsid_tree
;
5033 proto_item
*dsid_item
;
5037 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_dsid_mc_addr
, &dsid_item
,
5038 "..1 Client MAC Address Encodings (Length = %u)", len
);
5040 while (pos
< (start
+ len
))
5042 type
= tvb_get_uint8 (tvb
, pos
++);
5043 length
= tvb_get_uint8 (tvb
, pos
++);
5046 case MC_ADDR_ACTION
:
5049 proto_tree_add_item (dsid_tree
,
5050 hf_docsis_mc_addr_action
, tvb
, pos
,
5051 length
, ENC_BIG_ENDIAN
);
5055 expert_add_info_format(pinfo
, dsid_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5061 proto_tree_add_item (dsid_tree
,
5062 hf_docsis_mc_addr_addr
, tvb
, pos
,
5067 expert_add_info_format(pinfo
, dsid_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5071 dissect_unknown_tlv (tvb
, pinfo
, dsid_tree
, pos
- 2, length
+ 2);
5079 dissect_dsid_mc(tvbuff_t
* tvb
, packet_info
*pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
5081 uint8_t type
, length
;
5082 proto_tree
*dsid_tree
;
5086 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_dsid_mc
, NULL
,
5087 ".4 Multicast Encodings (Length = %u)", len
);
5089 while (pos
< (start
+ len
))
5091 type
= tvb_get_uint8 (tvb
, pos
++);
5092 length
= tvb_get_uint8 (tvb
, pos
++);
5095 case TLV_DSID_MC_ADDR
:
5096 dissect_dsid_mc_addr(tvb
, pinfo
, dsid_tree
, pos
, length
);
5098 case TLV_DSID_MC_CMIM
:
5099 proto_tree_add_item (dsid_tree
,
5100 hf_docsis_tlv_dsid_mc_cmim
, tvb
, pos
,
5103 case TLV_DSID_MC_GROUP
:
5104 proto_tree_add_item (dsid_tree
,
5105 hf_docsis_tlv_dsid_mc_group
, tvb
, pos
,
5108 case TLV_DSID_MC_PHS
:
5109 dissect_phs(tvb
, pinfo
, dsid_tree
, pos
, length
);
5112 dissect_unknown_tlv (tvb
, pinfo
, dsid_tree
, pos
- 2, length
+ 2);
5120 dissect_dsid(tvbuff_t
* tvb
, packet_info
*pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
5122 uint8_t type
, length
;
5123 proto_tree
*dsid_tree
;
5124 proto_item
*dsid_item
;
5128 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_dsid
, &dsid_item
,
5129 "50 DSID Encodings (Length = %u)", len
);
5131 while (pos
< (start
+ len
))
5133 type
= tvb_get_uint8 (tvb
, pos
++);
5134 length
= tvb_get_uint8 (tvb
, pos
++);
5140 proto_tree_add_item (dsid_tree
,
5141 hf_docsis_tlv_dsid_id
, tvb
, pos
,
5142 length
, ENC_BIG_ENDIAN
);
5146 expert_add_info_format(pinfo
, dsid_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5149 case TLV_DSID_ACTION
:
5152 proto_tree_add_item (dsid_tree
,
5153 hf_docsis_tlv_dsid_action
, tvb
, pos
,
5154 length
, ENC_BIG_ENDIAN
);
5158 expert_add_info_format(pinfo
, dsid_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5161 case TLV_DSID_DS_RESEQ
:
5162 dissect_dsid_ds_reseq(tvb
, pinfo
, dsid_tree
, pos
, length
);
5165 dissect_dsid_mc(tvb
, pinfo
, dsid_tree
, pos
, length
);
5168 dissect_unknown_tlv (tvb
, pinfo
, dsid_tree
, pos
- 2, length
+ 2);
5176 dissect_sec_assoc(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
5178 uint8_t type
, length
;
5179 proto_tree
*sec_tree
;
5180 proto_item
*sec_item
;
5184 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_dsid
, &sec_item
,
5185 "51 Security Association Encodings (Length = %u)", len
);
5187 while (pos
< (start
+ len
))
5189 type
= tvb_get_uint8 (tvb
, pos
++);
5190 length
= tvb_get_uint8 (tvb
, pos
++);
5193 case TLV_SEC_ASSOC_ACTION
:
5196 proto_tree_add_item (sec_tree
,
5197 hf_docsis_tlv_sec_assoc_action
, tvb
, pos
,
5198 length
, ENC_BIG_ENDIAN
);
5202 expert_add_info_format(pinfo
, sec_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5205 case TLV_SEC_ASSOC_DESC
:
5208 proto_tree_add_item (sec_tree
,
5209 hf_docsis_tlv_sec_assoc_desc
, tvb
, pos
,
5214 expert_add_info_format(pinfo
, sec_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5218 dissect_unknown_tlv (tvb
, pinfo
, sec_tree
, pos
- 2, length
+ 2);
5226 dissect_ch_asgn(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
5228 uint8_t type
, length
;
5229 proto_tree
*asgn_tree
;
5230 proto_item
*asgn_item
;
5234 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_ch_asgn
, &asgn_item
,
5235 "56 Channel Assignment Configuration Settings (Length = %u)", len
);
5237 while (pos
< (start
+ len
))
5239 type
= tvb_get_uint8 (tvb
, pos
++);
5240 length
= tvb_get_uint8 (tvb
, pos
++);
5243 case TLV_CH_ASGN_US_CH_ID
:
5246 proto_tree_add_item (asgn_tree
,
5247 hf_docsis_ch_asgn_us_ch_id
, tvb
, pos
,
5248 length
, ENC_BIG_ENDIAN
);
5252 expert_add_info_format(pinfo
, asgn_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5255 case TLV_CH_ASGN_RX_FREQ
:
5258 proto_tree_add_item (asgn_tree
,
5259 hf_docsis_ch_asgn_rx_freq
, tvb
, pos
,
5260 length
, ENC_BIG_ENDIAN
);
5264 expert_add_info_format(pinfo
, asgn_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5268 dissect_unknown_tlv (tvb
, pinfo
, asgn_tree
, pos
- 2, length
+ 2);
5276 dissect_cmts_mc_sess_enc(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
5278 uint8_t type
, length
;
5279 proto_tree
*mc_tree
;
5280 proto_item
*mc_item
;
5284 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_cmts_mc_sess_enc
, &mc_item
,
5285 "64 CMTS Static Multicast Session Encoding (Length = %u)", len
);
5287 while (pos
< (start
+ len
))
5289 type
= tvb_get_uint8 (tvb
, pos
++);
5290 length
= tvb_get_uint8 (tvb
, pos
++);
5293 case CMTS_MC_SESS_ENC_GRP
:
5294 if (length
== 4 || length
== 16)
5296 proto_tree_add_item (mc_tree
,
5297 hf_docsis_cmts_mc_sess_enc_grp
, tvb
, pos
,
5302 expert_add_info_format(pinfo
, mc_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5305 case CMTS_MC_SESS_ENC_SRC
:
5306 if (length
== 4 || length
== 16)
5308 proto_tree_add_item (mc_tree
,
5309 hf_docsis_cmts_mc_sess_enc_src
, tvb
, pos
,
5314 expert_add_info_format(pinfo
, mc_item
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5317 case CMTS_MC_SESS_ENC_CMIM
:
5318 proto_tree_add_item (mc_tree
,
5319 hf_docsis_cmts_mc_sess_enc_cmim
, tvb
, pos
,
5323 dissect_unknown_tlv (tvb
, pinfo
, mc_tree
, pos
- 2, length
+ 2);
5331 dissect_em_id_list_for_cm(tvbuff_t
* tvb
, proto_tree
*tree
, int start
, uint16_t len
)
5333 proto_tree
*em_id_list_tree
;
5334 proto_item
*em_id_list_item
;
5338 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_em_id_list_for_cm
, &em_id_list_item
,
5339 "78 Energy Management Identifier List for CM (Length = %u)", len
);
5341 while (pos
< (start
+ len
))
5343 proto_tree_add_item (em_id_list_tree
, hf_docsis_tlv_em_id_list_for_cm_em_id
, tvb
, pos
, 2, ENC_NA
);
5349 dissect_fdx_tg_assignment(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
5351 uint8_t type
, length
;
5352 proto_tree
*tg_assignment_tree
;
5353 proto_item
*tg_assignment_item
;
5357 tg_assignment_tree
=
5358 proto_tree_add_subtree_format(tree
, tvb
, start
, len
, ett_docsis_tlv_tg_assignment
, &tg_assignment_item
,
5359 "85 FDX Transmission Group Assignment (Length = %u)", len
);
5361 while (pos
< (start
+ len
))
5363 type
= tvb_get_uint8 (tvb
, pos
++);
5364 length
= tvb_get_uint8 (tvb
, pos
++);
5367 case TLV_FDX_TG_ASSIGNMENT_TG_ID
:
5370 proto_tree_add_item (tg_assignment_tree
,
5371 hf_docsis_tlv_fdx_tg_assignment_tg_id
, tvb
, pos
,
5372 length
, ENC_BIG_ENDIAN
);
5376 expert_add_info_format(pinfo
, tg_assignment_item
, &ei_docsis_tlv_tlvlen_bad
,
5377 "Wrong TLV length: %u", length
);
5380 case TLV_FDX_TG_ASSIGNMENT_RBA_TYPE
:
5383 proto_tree_add_item (tg_assignment_tree
,
5384 hf_docsis_tlv_fdx_tg_assignment_rba_type
, tvb
, pos
,
5385 length
, ENC_BIG_ENDIAN
);
5389 expert_add_info_format(pinfo
, tg_assignment_item
, &ei_docsis_tlv_tlvlen_bad
,
5390 "Wrong TLV length: %u", length
);
5393 case TLV_FDX_TG_ASSIGNMENT_RBA_MESSAGE
:
5394 rba_tvb
= tvb_new_subset_length (tvb
, pos
, length
);
5395 call_dissector (docsis_rba_handle
, rba_tvb
, pinfo
, tg_assignment_tree
);
5398 dissect_unknown_tlv (tvb
, pinfo
, tg_assignment_tree
, pos
- 2, length
+ 2);
5406 dissect_docsis_tlv (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
5409 proto_tree
*tlv_tree
;
5412 uint8_t type
, length
;
5414 int previous_channel_id
= -1;
5416 total_len
= tvb_reported_length_remaining (tvb
, 0);
5420 proto_tree_add_protocol_format (tree
, proto_docsis_tlv
, tvb
, 0,
5421 total_len
, "TLV Data");
5422 tlv_tree
= proto_item_add_subtree (it
, ett_docsis_tlv
);
5423 while (pos
< total_len
)
5425 type
= tvb_get_uint8 (tvb
, pos
++);
5426 length
= tvb_get_uint8 (tvb
, pos
++);
5430 /* This is ugly. There are multiple type 1 TLVs that may appear
5431 * in the TLV data, the problem is that they are dependent on
5434 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_down_freq
, tvb
,
5435 pos
, length
, ENC_BIG_ENDIAN
);
5436 else if (length
== 1)
5437 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_rng_tech
, tvb
,
5438 pos
, length
, ENC_BIG_ENDIAN
);
5440 dissect_doc10cos (tvb
, pinfo
, tlv_tree
, pos
, length
);
5445 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_upstream_chid
,
5446 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5450 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5453 case TLV_NET_ACCESS
:
5456 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_net_access
,
5457 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5461 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5465 dissect_cos (tvb
, pinfo
, tlv_tree
, pos
, length
);
5468 dissect_modemcap (tvb
, pinfo
, tlv_tree
, pos
, length
);
5473 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_cm_mic
, tvb
,
5474 pos
, length
, ENC_NA
);
5478 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5484 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_cmts_mic
, tvb
,
5485 pos
, length
, ENC_NA
);
5489 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5495 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_vendor_id
, tvb
,
5496 pos
, length
, ENC_NA
);
5500 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5503 case TLV_SW_UPG_FILE
:
5504 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_sw_file
, tvb
, pos
,
5507 case TLV_SNMP_WRITE_CTRL
:
5508 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_snmp_access
, tvb
,
5509 pos
, length
, ENC_NA
);
5511 case TLV_SNMP_OBJECT
:
5512 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_snmp_obj
, tvb
,
5513 pos
, length
, ENC_NA
);
5518 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_modem_addr
,
5519 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5523 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5526 case TLV_SVC_UNAVAIL
:
5529 dissect_svc_unavail(tvb
, tlv_tree
, pos
, length
);
5533 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5536 case TLV_ETHERNET_MAC
:
5539 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_cpe_ethernet
,
5540 tvb
, pos
, length
, ENC_NA
);
5544 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5547 case TLV_TEL_SETTINGS
:
5549 case TLV_BPI_CONFIG
:
5550 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_bpi
, tvb
,
5551 pos
, length
, ENC_NA
);
5556 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_max_cpe
, tvb
,
5557 pos
, length
, ENC_BIG_ENDIAN
);
5561 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5567 proto_tree_add_item (tlv_tree
,
5568 hf_docsis_tlv_tftp_server_timestamp
,
5569 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5573 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5576 case TLV_TFTP_MODEM_ADDRESS
:
5579 proto_tree_add_item (tlv_tree
,
5580 hf_docsis_tlv_tftp_prov_modem_address
,
5581 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5585 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5588 case TLV_SW_UPG_SRVR
:
5591 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_sw_upg_srvr
,
5592 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5596 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5599 case TLV_UPSTREAM_CLASSIFIER
:
5600 case TLV_DOWN_CLASSIFIER
:
5601 dissect_classifiers (tvb
, pinfo
, tlv_tree
, pos
, length
, type
);
5603 case TLV_UPSTREAM_SERVICE_FLOW
:
5604 case TLV_DOWN_SERVICE_FLOW
:
5605 dissect_sflow (tvb
, pinfo
, tlv_tree
, pos
, length
, type
);
5608 dissect_phs (tvb
, pinfo
, tlv_tree
, pos
, length
);
5610 case TLV_HMAC_DIGEST
:
5613 proto_tree_add_item (tlv_tree
,
5614 hf_docsis_tlv_hmac_digest
, tvb
,
5615 pos
, length
, ENC_NA
);
5619 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5622 case TLV_MAX_CLASSIFIERS
:
5625 proto_tree_add_item (tlv_tree
,
5626 hf_docsis_tlv_max_classifiers
, tvb
,
5627 pos
, length
, ENC_BIG_ENDIAN
);
5631 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5634 case TLV_PRIVACY_ENABLE
:
5637 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_privacy_enable
,
5638 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5642 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5645 case TLV_AUTH_BLOCK
:
5646 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_auth_block
,
5647 tvb
, pos
, length
, ENC_NA
);
5649 case TLV_KEY_SEQ_NUM
:
5652 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_key_seq_num
, tvb
,
5653 pos
, length
, ENC_NA
);
5657 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5661 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_mfgr_cvc
,
5662 tvb
, pos
, length
, ENC_NA
);
5664 case TLV_COSIGN_CVC
:
5665 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_cosign_cvc
,
5666 tvb
, pos
, length
, ENC_NA
);
5668 case TLV_SNMPV3_KICKSTART
:
5669 dissect_snmpv3_kickstart(tvb
, pinfo
, tlv_tree
, pos
, length
);
5671 case TLV_SUBS_MGMT_CTRL
:
5672 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_subs_mgmt_ctrl
,
5673 tvb
, pos
, length
, ENC_NA
);
5675 case TLV_SUBS_MGMT_CPE
:
5676 if ((length
% 4) == 0)
5678 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_subs_mgmt_ip_table
,
5679 tvb
, pos
, length
, ENC_NA
);
5680 for (x
= 0; x
< length
; x
+=4)
5682 proto_tree_add_item (tlv_tree
,
5683 hf_docsis_tlv_subs_mgmt_ip_entry
,
5684 tvb
, pos
+ x
, 4, ENC_BIG_ENDIAN
);
5689 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5692 case TLV_SUBS_MGMT_FLTR
:
5693 proto_tree_add_item (tlv_tree
,
5694 hf_docsis_tlv_subs_mgmt_filter_grps
,
5695 tvb
, pos
, length
, ENC_NA
);
5697 case TLV_SNMPV3_NTFY_RCVR
:
5698 proto_tree_add_item(tlv_tree
,
5699 hf_docsis_tlv_snmpv3_ntfy_rcvr
,
5700 tvb
, pos
, length
, ENC_NA
);
5702 case TLV_ENABLE_20_MODE
:
5705 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_enable_20_mode
,
5706 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5710 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5713 case TLV_ENABLE_TEST_MODES
:
5716 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_enable_test_modes
,
5717 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5721 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5724 case TLV_DS_CH_LIST
:
5725 dissect_ds_ch_list(tvb
, pinfo
, tlv_tree
, pos
, length
);
5727 case TLV_MC_MAC_ADDRESS
:
5730 proto_tree_add_item(tlv_tree
, hf_docsis_tlv_mc_mac_address
,
5731 tvb
, pos
, length
, ENC_NA
);
5735 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5738 case TLV_DOCSIS_EXTENSION_FIELD
:
5739 dissect_docsis_extension_field(tvb
, pinfo
, tlv_tree
, pos
, length
);
5741 case TLV_VENDOR_SPEC
:
5742 dissect_vendor_specific_capabilities(tvb
, pinfo
, tlv_tree
, pos
, length
);
5744 case TLV_DUT_FILTER
:
5745 dissect_dut_filter(tvb
, pinfo
, tlv_tree
, pos
, length
);
5748 dissect_tcc(tvb
, pinfo
, tlv_tree
, pos
, length
, &previous_channel_id
);
5751 dissect_sid_cl(tvb
, pinfo
, tlv_tree
, pos
, length
);
5754 dissect_rcp(tvb
, pinfo
, tlv_tree
, pos
, length
);
5757 dissect_rcc(tvb
, pinfo
, tlv_tree
, pos
, length
);
5760 dissect_dsid(tvb
, pinfo
, tlv_tree
, pos
, length
);
5763 dissect_sec_assoc(tvb
, pinfo
, tlv_tree
, pos
, length
);
5765 case TLV_INIT_CH_TIMEOUT
:
5768 proto_tree_add_item(tlv_tree
, hf_docsis_tlv_init_ch_timeout
,
5769 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5773 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5777 dissect_ch_asgn(tvb
, pinfo
, tlv_tree
, pos
, length
);
5779 case TLV_CM_INIT_REASON
:
5782 proto_tree_add_item(tlv_tree
, hf_docsis_tlv_cm_init_reason
,
5783 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5787 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5790 case TLV_SW_UPG_SRVR_IPV6
:
5793 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_sw_upg_srvr_ipv6
,
5794 tvb
, pos
, length
, ENC_NA
);
5798 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5801 case TLV_TFTP_PROV_CM_IPV6_ADDR
:
5804 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_tftp_prov_cm_ipv6_addr
,
5805 tvb
, pos
, length
, ENC_NA
);
5809 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5812 case TLV_US_DROP_CLFY
:
5813 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_us_drop_clfy
,
5814 tvb
, pos
, length
, ENC_NA
);
5816 case TLV_SUBS_MGMT_IPV6_LST
:
5817 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_subs_mgmt_ipv6_lst
,
5818 tvb
, pos
, length
, ENC_NA
);
5820 case TLV_US_DROP_CLFY_GROUP_ID
:
5821 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_us_drop_clfy_group_id
,
5822 tvb
, pos
, length
, ENC_NA
);
5824 case TLV_SUBS_MGMT_CTRL_MAX_CPE_IPV6
:
5827 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_subs_mgmt_ctrl_max_cpe_ipv6
,
5828 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5832 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5835 case TLV_CMTS_MC_SESS_ENC
:
5836 dissect_cmts_mc_sess_enc(tvb
, pinfo
, tlv_tree
, pos
, length
);
5838 case TLV_EM_MODE_INDICATOR
:
5841 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_em_mode_ind
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5845 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5848 case TLV_EM_ID_LIST_FOR_CM
:
5849 dissect_em_id_list_for_cm(tvb
, tlv_tree
, pos
, length
);
5851 case TLV_FDX_TG_ASSIGNMENT
:
5852 dissect_fdx_tg_assignment(tvb
, pinfo
, tlv_tree
, pos
, length
);
5857 proto_tree_add_item (tlv_tree
, hf_docsis_tlv_fdx_reset
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5861 expert_add_info_format(pinfo
, it
, &ei_docsis_tlv_tlvlen_bad
, "Wrong TLV length: %u", length
);
5867 dissect_unknown_tlv (tvb
, pinfo
, tlv_tree
, pos
- 2, length
+ 2);
5869 } /* switch(type) */
5872 } /* while (pos < total_len) */
5875 return tvb_captured_length(tvb
);
5878 /* Register the protocol with Wireshark */
5880 proto_register_docsis_tlv (void)
5882 static hf_register_info hf
[] = {
5883 {&hf_docsis_tlv_down_freq
,
5884 {"1 Downstream Frequency", "docsis_tlv.downfreq",
5885 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
5888 {&hf_docsis_tlv_upstream_chid
,
5889 {"2 Upstream Channel ID", "docsis_tlv.upchid",
5890 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
5891 "Service Identifier", HFILL
}
5893 {&hf_docsis_tlv_net_access
,
5894 {"3 Network Access", "docsis_tlv.netaccess",
5895 FT_BOOLEAN
, BASE_NONE
, TFS (&tfs_on_off
), 0x0,
5896 "Network Access TLV", HFILL
}
5899 {&hf_docsis_tlv_cos
,
5900 {"4 COS Encodings", "docsis_tlv.cos",
5901 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
5905 {&hf_docsis_tlv_cos_id
,
5906 {".1 Class ID", "docsis_tlv.cos.id",
5907 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
5910 {&hf_docsis_tlv_cos_sid
,
5911 {".2 Service ID", "docsis_tlv.cos.sid",
5912 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
5915 {&hf_docsis_tlv_cos_max_down
,
5916 {".2 Max Downstream Rate (bps)", "docsis_tlv.cos.maxdown",
5917 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
5920 {&hf_docsis_tlv_cos_max_up
,
5921 {".3 Max Upstream Rate (bps)", "docsis_tlv.cos.maxup",
5922 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
5925 {&hf_docsis_tlv_cos_up_chnl_pri
,
5926 {".4 Upstream Channel Priority", "docsis_tlv.cos.upchnlpri",
5927 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
5930 {&hf_docsis_tlv_cos_min_grntd_up
,
5931 {".5 Guaranteed Upstream Rate", "docsis_tlv.cos.mingrntdup",
5932 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
5933 "Guaranteed Minimum Upstream Data Rate", HFILL
}
5935 {&hf_docsis_tlv_cos_max_up_burst
,
5936 {".6 Maximum Upstream Burst", "docsis_tlv.cos.maxupburst",
5937 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
5940 {&hf_docsis_tlv_cos_privacy_enable
,
5941 {".7 COS Privacy Enable", "docsis_tlv.cos.privacy_enable",
5942 FT_BOOLEAN
, BASE_NONE
, TFS (&ena_dis_tfs
), 0x0,
5943 "Class of Service Privacy Enable", HFILL
}
5946 {&hf_docsis_tlv_mcap
,
5947 {"5 Modem Capabilities", "docsis_tlv.mcap",
5948 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
5952 {&hf_docsis_tlv_mcap_concat
,
5953 {".1 Concatenation Support", "docsis_tlv.mcap.concat",
5954 FT_BOOLEAN
, BASE_NONE
, TFS (&tfs_on_off
), 0x0,
5957 {&hf_docsis_tlv_mcap_docs_ver
,
5958 {".2 Docsis Version", "docsis_tlv.map.docsver",
5959 FT_UINT8
, BASE_DEC
, VALS (docs_ver_vals
), 0x0,
5962 {&hf_docsis_tlv_mcap_frag
,
5963 {".3 Fragmentation Support", "docsis_tlv.mcap.frag",
5964 FT_BOOLEAN
, BASE_NONE
, TFS (&tfs_on_off
), 0x0,
5967 {&hf_docsis_tlv_mcap_phs
,
5968 {".4 PHS Support", "docsis_tlv.mcap.phs",
5969 FT_BOOLEAN
, BASE_NONE
, TFS (&tfs_on_off
), 0x0,
5972 {&hf_docsis_tlv_mcap_igmp
,
5973 {".5 IGMP Support", "docsis_tlv.mcap.igmp",
5974 FT_BOOLEAN
, BASE_NONE
, TFS (&tfs_on_off
), 0x0,
5977 {&hf_docsis_tlv_mcap_privacy
,
5978 {".6 Privacy Support", "docsis_tlv.mcap.privacy",
5979 FT_BOOLEAN
, BASE_NONE
, TFS (&tfs_on_off
), 0x0,
5982 {&hf_docsis_tlv_mcap_down_said
,
5983 {".7 # Downstream SAIDs Supported", "docsis_tlv.mcap.downsaid",
5984 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
5985 "Downstream Said Support", HFILL
}
5987 {&hf_docsis_tlv_mcap_up_sid
,
5988 {".8 # Upstream Service Flows Supported", "docsis_tlv.mcap.upsid",
5989 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
5992 {&hf_docsis_tlv_mcap_8021P_filter
,
5993 {".9 802.1P Filtering Support", "docsis_tlv.mcap.dot1pfiltering",
5994 FT_BOOLEAN
, 8, TFS(&tfs_on_off
), 0x80,
5997 {&hf_docsis_tlv_mcap_8021Q_filter
,
5998 {".9 802.1Q Filtering Support", "docsis_tlv.mcap.dot1qfilt",
5999 FT_BOOLEAN
, 8, TFS(&tfs_on_off
), 0x40,
6002 {&hf_docsis_tlv_mcap_xmit_eq_taps_per_sym
,
6003 {".10 Xmit Equalizer Taps/Sym", "docsis_tlv.mcap.tapspersym",
6004 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6005 "Transmit Equalizer Taps per Symbol", HFILL
}
6007 {&hf_docsis_tlv_mcap_xmit_eq_taps
,
6008 {".11 # Xmit Equalizer Taps", "docsis_tlv.mcap.numtaps",
6009 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6010 "Number of Transmit Equalizer Taps", HFILL
}
6012 {&hf_docsis_tlv_mcap_dcc
,
6013 {".12 DCC Support", "docsis_tlv.mcap.dcc",
6014 FT_BOOLEAN
, BASE_NONE
, TFS (&tfs_on_off
), 0x0,
6017 {&hf_docsis_tlv_mcap_ip_filters
,
6018 {".13 IP Filters Support","docsis_tlv.mcap.ipfilters",
6019 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
6022 {&hf_docsis_tlv_mcap_llc_filters
,
6023 {".14 LLC Filters Support","docsis_tlv.mcap.llcfilters",
6024 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
6027 {&hf_docsis_tlv_mcap_exp_unicast_sid
,
6028 {".15 Expanded Unicast SID Space","docsis_tlv.mcap.exucsid",
6029 FT_BOOLEAN
, BASE_NONE
, TFS (&tfs_on_off
), 0x0,
6032 {&hf_docsis_tlv_mcap_rnghoff_cm
,
6033 {".16 Ranging Hold-Off (CM)","docsis_tlv.mcap.rnghoffcm",
6034 FT_BOOLEAN
, 32, TFS(&tfs_on_off
), 0x00000001,
6037 {&hf_docsis_tlv_mcap_rnghoff_erouter
,
6038 {".16 Ranging Hold-Off (ePS or eRouter)",
6039 "docsis_tlv.mcap.rnghofferouter",
6040 FT_BOOLEAN
, 32, TFS(&tfs_on_off
), 0x00000002,
6043 {&hf_docsis_tlv_mcap_rnghoff_emta
,
6044 {".16 Ranging Hold-Off (eMTA or EDVA)",
6045 "docsis_tlv.mcap.rnghoffemta",
6046 FT_BOOLEAN
, 32, TFS(&tfs_on_off
), 0x00000004,
6049 {&hf_docsis_tlv_mcap_rnghoff_estb
,
6050 {".16 Ranging Hold-Off (DSG/eSTB)",
6051 "docsis_tlv.mcap.rnghoffestb",
6052 FT_BOOLEAN
, 32, TFS(&tfs_on_off
), 0x00000008,
6055 {&hf_docsis_tlv_mcap_l2vpn
,
6056 {".17 L2VPN Capability","docsis_tlv.mcap.l2vpn",
6057 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6060 {&hf_docsis_tlv_mcap_l2vpn_esafe
,
6061 {".18 L2VPN eSAFE Host Capability","docsis_tlv.mcap.l2vpnesafe",
6062 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6065 {&hf_docsis_tlv_mcap_dut_filtering
,
6066 {".19 Downstream Unencrypted Traffic (DUT) Filtering",
6067 "docsis_tlv.mcap.dut",
6068 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6071 {&hf_docsis_tlv_mcap_us_freq_range
,
6072 {".20 Upstream Frequency Range Support",
6073 "docsis_tlv.mcap.usfreqrng",
6074 FT_UINT8
, BASE_DEC
, VALS (docsis_freq_rng_vals
), 0x0,
6077 {&hf_docsis_tlv_mcap_us_srate_160
,
6078 {".21 Upstream Symbol Rate 160ksps supported",
6079 "docsis_tlv.mcap.srate160",
6080 FT_BOOLEAN
, 8, TFS(&tfs_on_off
), 0x01,
6083 {&hf_docsis_tlv_mcap_us_srate_320
,
6084 {".21 Upstream Symbol Rate 320ksps supported",
6085 "docsis_tlv.mcap.srate320",
6086 FT_BOOLEAN
, 8, TFS(&tfs_on_off
), 0x02,
6089 {&hf_docsis_tlv_mcap_us_srate_640
,
6090 {".21 Upstream Symbol Rate 640ksps supported",
6091 "docsis_tlv.mcap.srate640",
6092 FT_BOOLEAN
, 8, TFS(&tfs_on_off
), 0x04,
6095 {&hf_docsis_tlv_mcap_us_srate_1280
,
6096 {".21 Upstream Symbol Rate 1280ksps supported",
6097 "docsis_tlv.mcap.srate1280",
6098 FT_BOOLEAN
, 8, TFS(&tfs_on_off
), 0x08,
6101 {&hf_docsis_tlv_mcap_us_srate_2560
,
6102 {".21 Upstream Symbol Rate 2560ksps supported",
6103 "docsis_tlv.mcap.srate2560",
6104 FT_BOOLEAN
, 8, TFS(&tfs_on_off
), 0x10,
6107 {&hf_docsis_tlv_mcap_us_srate_5120
,
6108 {".21 Upstream Symbol Rate 5120ksps supported",
6109 "docsis_tlv.mcap.srate5120",
6110 FT_BOOLEAN
, 8, TFS(&tfs_on_off
), 0x20,
6113 {&hf_docsis_tlv_mcap_sac
,
6114 {".22 Selectable Active Code Mode 2 Support","docsis_tlv.mcap.sac",
6115 FT_BOOLEAN
, BASE_NONE
, TFS (&tfs_on_off
), 0x0,
6118 {&hf_docsis_tlv_mcap_code_hop_mode2
,
6119 {".23 Code Hopping Mode 2 Support","docsis_tlv.mcap.codehopm2",
6120 FT_BOOLEAN
, BASE_NONE
, TFS (&tfs_on_off
), 0x0,
6123 {&hf_docsis_tlv_mcap_mtc
,
6124 {".24 Multiple Transmit Channel Support","docsis_tlv.mcap.mtc",
6125 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6128 {&hf_docsis_tlv_mcap_512_msps_utc
,
6129 {".25 5.12 Msps Upstream Transmit Channel Support",
6130 "docsis_tlv.mcap.512mspsutc",
6131 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6134 {&hf_docsis_tlv_mcap_256_msps_utc
,
6135 {".26 2.56 Msps Upstream Transmit Channel Support",
6136 "docsis_tlv.mcap.256mspsutc",
6137 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6140 {&hf_docsis_tlv_mcap_total_sid_cluster
,
6141 {".27 Total SID Cluster Support","docsis_tlv.mcap.totalsidcl",
6142 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6145 {&hf_docsis_tlv_mcap_sid_per_sf
,
6146 {".28 SID Clusters per Service Flow Support",
6147 "docsis_tlv.mcap.sidpersf",
6148 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6151 {&hf_docsis_tlv_mcap_mrc
,
6152 {".29 Multiple Receive Channel Support","docsis_tlv.mcap.mrc",
6153 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6156 {&hf_docsis_tlv_mcap_total_dsid
,
6157 {".30 Total Downstream Service ID (DSID) Support",
6158 "docsis_tlv.mcap.totaldsid",
6159 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6162 {&hf_docsis_tlv_mcap_reseq_dsid
,
6163 {".31 Resequencing Downstream Service ID (DSID) Support",
6164 "docsis_tlv.mcap.reseqdsid",
6165 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6168 {&hf_docsis_tlv_mcap_mc_dsid
,
6169 {".32 Multicast Downstream Service ID (DSID) Support",
6170 "docsis_tlv.mcap.mcdsid",
6171 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6174 {&hf_docsis_tlv_mcap_mc_dsid_fwd
,
6175 {".33 Multicast DSID Forwarding","docsis_tlv.mcap.mcdsidfwd",
6176 FT_UINT8
, BASE_DEC
, VALS (mc_dsid_fwd_vals
), 0x0,
6179 {&hf_docsis_tlv_mcap_fctype_fwd
,
6180 {".34 Frame Control Type Forwarding Capability",
6181 "docsis_tlv.mcap.fctypefwd",
6182 FT_UINT8
, BASE_DEC
, VALS (fctype_fwd_vals
), 0x0,
6185 {&hf_docsis_tlv_mcap_dpv_path
,
6186 {".35 DPV Capability (per Path)","docsis_tlv.mcap.dpvpath",
6187 FT_UINT8
, BASE_DEC
, NULL
, 0x1,
6190 {&hf_docsis_tlv_mcap_dpv_packet
,
6191 {".35 DPV Capability (per Packet)","docsis_tlv.mcap.dpvpacket",
6192 FT_UINT8
, BASE_DEC
, NULL
, 0x2,
6195 {&hf_docsis_tlv_mcap_ugs
,
6196 {".36 Unsolicited Grant Service Support","docsis_tlv.mcap.ugs",
6197 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6200 {&hf_docsis_tlv_mcap_map_ucd
,
6201 {".37 MAP and UCD Receipt Support","docsis_tlv.mcap.mapucd",
6202 FT_BOOLEAN
, BASE_NONE
, TFS (&tfs_on_off
), 0x0,
6205 {&hf_docsis_tlv_mcap_udc
,
6206 {".38 Upstream Drop Classifier Support","docsis_tlv.mcap.udc",
6207 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
6210 {&hf_docsis_tlv_mcap_ipv6
,
6211 {".39 IPv6 Support","docsis_tlv.mcap.ipv6",
6212 FT_BOOLEAN
, BASE_NONE
, TFS (&tfs_on_off
), 0x0,
6215 {&hf_docsis_tlv_mcap_ext_us_trans_power
,
6216 {".40 Extended Upstream Transmit Power Capability",
6217 "docsis_tlv.mcap.extustrpwr",
6218 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6221 {&hf_docsis_tlv_mcap_em
,
6222 {".44 Energy Management Capabilities", "docsis_tlv.mcap.em",
6223 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
6226 {&hf_docsis_tlv_mcap_em_1x1
,
6227 {"Energy Management 1x1 Feature",
6228 "docsis_tlv.mcap.em.1x1",
6229 FT_BOOLEAN
, 32, TFS (&sup_unsup_tfs
), 0x1,
6232 {&hf_docsis_tlv_mcap_em_light_sleep
,
6233 {"DOCSIS Light Sleep Mode",
6234 "docsis_tlv.mcap.em.light_sleep",
6235 FT_BOOLEAN
, 32, TFS (&sup_unsup_tfs
), 0x2,
6238 {&hf_docsis_tlv_mcap_cm_status_ack
,
6239 {".46 CM-STATUS_ACK",
6240 "docsis_tlv.mcap.cm_status_ack",
6241 FT_UINT8
, BASE_DEC
, VALS(sup_unsup_vals
), 0x0,
6244 {&hf_docsis_tlv_mcap_em_pref
,
6245 {".47 Energy Management Preference",
6246 "docsis_tlv.mcap.em_pref",
6247 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
6250 {&hf_docsis_tlv_mcap_em_pref_1x1
,
6251 {"Energy Management 1x1 Feature",
6252 "docsis_tlv.mcap.em_pref.1x1",
6253 FT_BOOLEAN
, 32, NULL
, 0x1,
6256 {&hf_docsis_tlv_mcap_em_pref_dls
,
6257 {"DOCSIS Light Sleep Mode",
6258 "docsis_tlv.mcap.em_pref.dls",
6259 FT_BOOLEAN
, 32, NULL
, 0x2,
6262 {&hf_docsis_tlv_mcap_ext_pkt_len_sup_cap
,
6263 {".48 Extended Packet Length Support Capability",
6264 "docsis_tlv.mcap.ext_pkt_len_sup_cap",
6265 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
6268 {&hf_docsis_tlv_mcap_ofdm_mult_recv_chan_sup
,
6269 {".49 OFDM Multiple Receive Channel Support",
6270 "docsis_tlv.mcap.ofdm_mult_recv_chan_sup",
6271 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6274 {&hf_docsis_tlv_mcap_ofdma_mult_trans_chan_sup
,
6275 {".50 OFDMA Multiple Transmit Channel Support",
6276 "docsis_tlv.mcap.ofdma_mult_trans_chan_sup",
6277 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6280 {&hf_docsis_tlv_mcap_down_ofdm_prof_sup
,
6281 {".51 Downstream OFDM Profile Support",
6282 "docsis_tlv.mcap.down_ofdm_prof_sup",
6283 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6286 {&hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup
,
6287 {".52 Downstream OFDM channel subcarrier QAM modulation support",
6288 "docsis_tlv.mcap.down_ofdm_chan_subc_qam_mod_sup",
6289 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
6292 {&hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_reserved
,
6294 "docsis_tlv.mcap.down_ofdm_chan_subc_qam_mod_sup.reserved",
6295 FT_BOOLEAN
, 16, NULL
, 0x802B,
6298 {&hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_qpsk
,
6300 "docsis_tlv.mcap.down_ofdm_chan_subc_qam_mod_sup.qpsk",
6301 FT_BOOLEAN
, 16, NULL
, 0x0004,
6304 {&hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_16qam
,
6306 "docsis_tlv.mcap.down_ofdm_chan_subc_qam_mod_sup.16qam",
6307 FT_BOOLEAN
, 16, NULL
, 0x0010,
6310 {&hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_64qam
,
6312 "docsis_tlv.mcap.down_ofdm_chan_subc_qam_mod_sup.64qam",
6313 FT_BOOLEAN
, 16, NULL
, 0x0040,
6316 {&hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_128qam
,
6318 "docsis_tlv.mcap.down_ofdm_chan_subc_qam_mod_sup.128qam",
6319 FT_BOOLEAN
, 16, NULL
, 0x0080,
6322 {&hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_256qam
,
6324 "docsis_tlv.mcap.down_ofdm_chan_subc_qam_mod_sup.256qam",
6325 FT_BOOLEAN
, 16, NULL
, 0x0100,
6328 {&hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_512qam
,
6330 "docsis_tlv.mcap.down_ofdm_chan_subc_qam_mod_sup.512qam",
6331 FT_BOOLEAN
, 16, NULL
, 0x0200,
6334 {&hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_1024qam
,
6336 "docsis_tlv.mcap.down_ofdm_chan_subc_qam_mod_sup.1024qam",
6337 FT_BOOLEAN
, 16, NULL
, 0x0400,
6340 {&hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_2048qam
,
6342 "docsis_tlv.mcap.down_ofdm_chan_subc_qam_mod_sup.2048qam",
6343 FT_BOOLEAN
, 16, NULL
, 0x0800,
6346 {&hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_4096qam
,
6348 "docsis_tlv.mcap.down_ofdm_chan_subc_qam_mod_sup.4096qam",
6349 FT_BOOLEAN
, 16, NULL
, 0x1000,
6352 {&hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_8192qam
,
6354 "docsis_tlv.mcap.down_ofdm_chan_subc_qam_mod_sup.8192qam",
6355 FT_BOOLEAN
, 16, NULL
, 0x2000,
6358 {&hf_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup_16384qam
,
6360 "docsis_tlv.mcap.down_ofdm_chan_subc_qam_mod_sup.16384qam",
6361 FT_BOOLEAN
, 16, NULL
, 0x4000,
6364 {&hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup
,
6365 {".53 Upstream OFDMA channel subcarrier QAM modulation support",
6366 "docsis_tlv.mcap.up_ofdma_chan_subc_qam_mod_sup",
6367 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
6370 {&hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_reserved
,
6372 "docsis_tlv.mcap.up_ofdma_chan_subc_qam_mod_sup.reserved",
6373 FT_BOOLEAN
, 16, NULL
, 0x8003,
6376 {&hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_qpsk
,
6378 "docsis_tlv.mcap.up_ofdma_chan_subc_qam_mod_sup.qpsk",
6379 FT_BOOLEAN
, 16, NULL
, 0x0004,
6382 {&hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_8qam
,
6384 "docsis_tlv.mcap.up_ofdma_chan_subc_qam_mod_sup.8qam",
6385 FT_BOOLEAN
, 16, NULL
, 0x0008,
6388 {&hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_16qam
,
6390 "docsis_tlv.mcap.up_ofdma_chan_subc_qam_mod_sup.16qam",
6391 FT_BOOLEAN
, 16, NULL
, 0x0010,
6394 {&hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_32qam
,
6396 "docsis_tlv.mcap.up_ofdma_chan_subc_qam_mod_sup.32qam",
6397 FT_BOOLEAN
, 16, NULL
, 0x0020,
6400 {&hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_64qam
,
6402 "docsis_tlv.mcap.up_ofdma_chan_subc_qam_mod_sup.64qam",
6403 FT_BOOLEAN
, 16, NULL
, 0x0040,
6406 {&hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_128qam
,
6408 "docsis_tlv.mcap.up_ofdma_chan_subc_qam_mod_sup.128qam",
6409 FT_BOOLEAN
, 16, NULL
, 0x0080,
6412 {&hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_256qam
,
6414 "docsis_tlv.mcap.up_ofdma_chan_subc_qam_mod_sup.256qam",
6415 FT_BOOLEAN
, 16, NULL
, 0x0100,
6418 {&hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_512qam
,
6420 "docsis_tlv.mcap.up_ofdma_chan_subc_qam_mod_sup.512qam",
6421 FT_BOOLEAN
, 16, NULL
, 0x0200,
6424 {&hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_1024qam
,
6426 "docsis_tlv.mcap.up_ofdma_chan_subc_qam_mod_sup.1024qam",
6427 FT_BOOLEAN
, 16, NULL
, 0x0400,
6430 {&hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_2048qam
,
6432 "docsis_tlv.mcap.up_ofdma_chan_subc_qam_mod_sup.2048qam",
6433 FT_BOOLEAN
, 16, NULL
, 0x0800,
6436 {&hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_4096qam
,
6438 "docsis_tlv.mcap.up_ofdma_chan_subc_qam_mod_sup.4096qam",
6439 FT_BOOLEAN
, 16, NULL
, 0x1000,
6442 {&hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_8192qam
,
6444 "docsis_tlv.mcap.up_ofdma_chan_subc_qam_mod_sup.8192qam",
6445 FT_BOOLEAN
, 16, NULL
, 0x2000,
6448 {&hf_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup_16384qam
,
6450 "docsis_tlv.mcap.up_ofdma_chan_subc_qam_mod_sup.16384qam",
6451 FT_BOOLEAN
, 16, NULL
, 0x4000,
6454 {&hf_docsis_tlv_mcap_down_lower_band_edge_conf
,
6455 {".54 Downstream Lower Band Edge Configuration",
6456 "docsis_tlv.mcap.down_lower_band_edge_conf",
6457 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
6460 {&hf_docsis_tlv_mcap_down_lower_band_edge_conf_108
,
6461 {"Downstream Frequency Range starting from 108 MHz",
6462 "docsis_tlv.mcap.down_lower_band_edge_conf.108mhz",
6463 FT_BOOLEAN
, 8, NULL
, 0x01,
6466 {&hf_docsis_tlv_mcap_down_lower_band_edge_conf_258
,
6467 {"Downstream Frequency Range starting from 258 MHz",
6468 "docsis_tlv.mcap.down_lower_band_edge_conf.258mhz",
6469 FT_BOOLEAN
, 8, NULL
, 0x02,
6472 {&hf_docsis_tlv_mcap_down_upper_band_edge_conf
,
6473 {".55 Downstream Upper Band Edge Configuration",
6474 "docsis_tlv.mcap.down_upper_band_edge_conf",
6475 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
6478 {&hf_docsis_tlv_mcap_down_upper_band_edge_conf_1218
,
6479 {"Downstream Frequency Range up to 1218 MHz",
6480 "docsis_tlv.mcap.down_upper_band_edge_conf.1218mhz",
6481 FT_BOOLEAN
, 8, NULL
, 0x01,
6484 {&hf_docsis_tlv_mcap_down_upper_band_edge_conf_1794
,
6485 {"Downstream Frequency Range up to 1794 MHz",
6486 "docsis_tlv.mcap.down_upper_band_edge_conf.1794mhz",
6487 FT_BOOLEAN
, 8, NULL
, 0x02,
6490 {&hf_docsis_tlv_mcap_down_upper_band_edge_conf_1002
,
6491 {"Downstream Frequency Range up to 1002 MHz",
6492 "docsis_tlv.mcap.down_upper_band_edge_conf.1002mhz",
6493 FT_BOOLEAN
, 8, NULL
, 0x04,
6496 {&hf_docsis_tlv_mcap_dipl_up_upper_band_edge_conf
,
6497 {".56 Diplexer Upstream Upper Band Edge Configuration",
6498 "docsis_tlv.mcap.dipl_up_upper_band_edge_conf",
6499 FT_UINT8
, BASE_DEC
, VALS(dipl_up_upper_band_edge_conf_vals
), 0x0,
6502 {&hf_docsis_tlv_mcap_docsis_time_prot_mode
,
6503 {".57 DOCSIS Time Protocol Mode",
6504 "docsis_tlv.mcap.docsis_time_prot_mode",
6505 FT_UINT8
, BASE_DEC
, VALS(docsis_time_prot_mode_vals
), 0x0,
6508 {&hf_docsis_tlv_mcap_docsis_time_prot_perf_sup
,
6509 {".58 DOCSIS Time Protocol Performance Support",
6510 "docsis_tlv.mcap.docsis_time_prot_perf_sup",
6511 FT_UINT8
, BASE_DEC
, VALS(docsis_time_prot_perf_sup_vals
), 0x0,
6514 {&hf_docsis_tlv_mcap_pmax
,
6516 "docsis_tlv.mcap.pmax",
6517 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(fourth_dbmv
), 0x0,
6520 {&hf_docsis_tlv_mcap_dipl_down_lower_band_edge
,
6521 {".60 Diplexer Downstream Lower Band Edge",
6522 "docsis_tlv.mcap.dipl_down_lower_band_edge",
6523 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
6526 {&hf_docsis_tlv_mcap_dipl_down_lower_band_edge_108
,
6527 {"Downstream Frequency Range starting from 108 MHz",
6528 "docsis_tlv.mcap.dipl_down_lower_band_edge.108mhz",
6529 FT_BOOLEAN
, 8, NULL
, 0x01,
6532 {&hf_docsis_tlv_mcap_dipl_down_lower_band_edge_258
,
6533 {"Downstream Frequency Range starting from 258 MHz",
6534 "docsis_tlv.mcap.dipl_down_lower_band_edge.258mhz",
6535 FT_BOOLEAN
, 8, NULL
, 0x02,
6538 {&hf_docsis_tlv_mcap_dipl_down_upper_band_edge
,
6539 {".61 Diplexer Downstream Upper Band Edge",
6540 "docsis_tlv.mcap.dipl_down_upper_band_edge",
6541 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
6544 {&hf_docsis_tlv_mcap_dipl_down_upper_band_edge_1218
,
6545 {"Downstream Frequency Range up to 1218 MHz",
6546 "docsis_tlv.mcap.dipl_down_upper_band_edge.1218mhz",
6547 FT_BOOLEAN
, 8, NULL
, 0x01,
6550 {&hf_docsis_tlv_mcap_dipl_down_upper_band_edge_1794
,
6551 {"Downstream Frequency Range up to 1794 MHz",
6552 "docsis_tlv.mcap.dipl_down_upper_band_edge.1794mhz",
6553 FT_BOOLEAN
, 8, NULL
, 0x02,
6556 {&hf_docsis_tlv_mcap_dipl_down_upper_band_edge_1002
,
6557 {"Downstream Frequency Range up to 1002 MHz",
6558 "docsis_tlv.mcap.dipl_down_upper_band_edge.1002mhz",
6559 FT_BOOLEAN
, 8, NULL
, 0x04,
6562 {&hf_docsis_tlv_mcap_dipl_up_upper_band_edge
,
6563 {".62 Diplexer Upstream Upper Band Edge",
6564 "docsis_tlv.mcap.dipl_up_upper_band_edge",
6565 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
6568 {&hf_docsis_tlv_mcap_dipl_up_upper_band_edge_42
,
6569 {"Upstream Frequency Range up to 42 MHz",
6570 "docsis_tlv.mcap.dipl_up_upper_band_edge.42mhz",
6571 FT_BOOLEAN
, 8, NULL
, 0x01,
6574 {&hf_docsis_tlv_mcap_dipl_up_upper_band_edge_65
,
6575 {"Upstream Frequency Range up to 65 MHz",
6576 "docsis_tlv.mcap.dipl_up_upper_band_edge.65mhz",
6577 FT_BOOLEAN
, 8, NULL
, 0x02,
6580 {&hf_docsis_tlv_mcap_dipl_up_upper_band_edge_85
,
6581 {"Upstream Frequency Range up to 85 MHz",
6582 "docsis_tlv.mcap.dipl_up_upper_band_edge.85mhz",
6583 FT_BOOLEAN
, 8, NULL
, 0x04,
6586 {&hf_docsis_tlv_mcap_dipl_up_upper_band_edge_117
,
6587 {"Upstream Frequency Range up to 117 MHz",
6588 "docsis_tlv.mcap.dipl_up_upper_band_edge.117mhz",
6589 FT_BOOLEAN
, 8, NULL
, 0x08,
6592 {&hf_docsis_tlv_mcap_dipl_up_upper_band_edge_204
,
6593 {"Upstream Frequency Range up to 204 MHz",
6594 "docsis_tlv.mcap.dipl_up_upper_band_edge.204mhz",
6595 FT_BOOLEAN
, 8, NULL
, 0x10,
6598 {&hf_docsis_tlv_mcap_advanced_band_plan
,
6599 {".63 Advanced Band Plan",
6600 "docsis_tlv.mcap.advanced_band_plan",
6601 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
6604 {&hf_docsis_tlv_mcap_advanced_band_plan_fdx_l
,
6606 "docsis_tlv.mcap.advanced_band_plan.fdx_l",
6607 FT_BOOLEAN
, 8, NULL
, 0x01,
6610 {&hf_docsis_tlv_mcap_advanced_band_plan_fdx
,
6612 "docsis_tlv.mcap.advanced_band_plan.fdx",
6613 FT_BOOLEAN
, 8, NULL
, 0x02,
6616 {&hf_docsis_tlv_mcap_advanced_band_plan_fdd
,
6618 "docsis_tlv.mcap.advanced_band_plan.fdd",
6619 FT_BOOLEAN
, 8, NULL
, 0x04,
6622 {&hf_docsis_tlv_mcap_advanced_band_plan_reserved
,
6624 "docsis_tlv.mcap.advanced_band_plan.reserved",
6625 FT_BOOLEAN
, 8, NULL
, 0xF8,
6628 {&hf_docsis_tlv_mcap_ext_sf_cluster_assign_sup
,
6629 {".74 Extended Service Flow SID Cluster Assignments Support",
6630 "docsis_tlv.mcap.ext_sf_cluster_assign_sup",
6631 FT_UINT8
, BASE_DEC
, VALS(docsis_mcap_ext_sf_cluster_assign_sup_vals
), 0x0,
6632 "The ability of CM to handle TLV 89", HFILL
}
6634 {&hf_docsis_tlv_mcap_low_latency_sup
,
6635 {".76 Low Latency Support",
6636 "docsis_tlv.mcap.low_latency_sup",
6637 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6640 {&hf_docsis_tlv_mcap_adv_down_lower_band_edge_conf
,
6641 {".79 Advanced Downstream Lower Band Edge Configuration",
6642 "docsis_tlv.mcap.adv_down_lower_band_edge_conf",
6643 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_mhz
), 0x0,
6646 {&hf_docsis_tlv_mcap_adv_down_upper_band_edge_conf
,
6647 {".80 Advanced Downstream Upper Band Edge Configuration",
6648 "docsis_tlv.mcap.adv_down_upper_band_edge_conf",
6649 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_mhz
), 0x0,
6652 {&hf_docsis_tlv_mcap_adv_up_upper_band_edge_conf
,
6653 {".81 Advanced Upstream Upper Band Edge Configuration",
6654 "docsis_tlv.mcap.adv_up_upper_band_edge_conf",
6655 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_mhz
), 0x0,
6658 {&hf_docsis_tlv_mcap_adv_down_lower_band_edge_option
,
6659 {"Advanced Diplexer Downstream Lower Band Edge Option",
6660 "docsis_tlv.mcap.adv_down_lower_band_edge_option",
6661 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_mhz
), 0x0,
6664 {&hf_docsis_tlv_mcap_adv_down_upper_band_edge_option
,
6665 {"Advanced Diplexer Downstream Upper Band Edge Option",
6666 "docsis_tlv.mcap.adv_down_upper_band_edge_option",
6667 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_mhz
), 0x0,
6670 {&hf_docsis_tlv_mcap_adv_up_upper_band_edge_option
,
6671 {"Advanced Diplexer Upstream Upper Band Edge Option",
6672 "docsis_tlv.mcap.adv_up_upper_band_edge_option",
6673 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_mhz
), 0x0,
6676 {&hf_docsis_tlv_mcap_extended_power_options
,
6677 {".85 Extended Power Options",
6678 "docsis_tlv.mcap.extended_power_options",
6679 FT_UINT8
, BASE_DEC
, VALS(extended_power_options_vals
), 0x0,
6682 {&hf_docsis_tlv_cm_mic
,
6683 {"6 CM MIC", "docsis_tlv.cmmic",
6684 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6685 "Cable Modem Message Integrity Check", HFILL
}
6687 {&hf_docsis_tlv_cmts_mic
,
6688 {"7 CMTS MIC", "docsis_tlv.cmtsmic",
6689 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6690 "CMTS Message Integrity Check", HFILL
}
6692 {&hf_docsis_tlv_vendor_id
,
6693 {"8 Vendor ID", "docsis_tlv.vendorid",
6694 FT_UINT24
, BASE_OUI
, NULL
, 0x0,
6695 "Vendor Identifier", HFILL
}
6697 {&hf_docsis_tlv_sw_file
,
6698 {"9 Software Upgrade File", "docsis_tlv.sw_upg_file",
6699 FT_STRINGZ
, BASE_NONE
, NULL
, 0x0,
6702 {&hf_docsis_tlv_snmp_access
,
6703 {"10 SNMP Write Access", "docsis_tlv.snmp_access",
6704 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6707 {&hf_docsis_tlv_snmp_obj
,
6708 {"11 SNMP Object", "docsis_tlv.snmp_obj",
6709 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6712 {&hf_docsis_tlv_modem_addr
,
6713 {"12 Modem IP Address", "docsis_tlv.modemaddr",
6714 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
6717 {&hf_docsis_tlv_svc_unavail
,
6718 {"13 Service Not Available Response", "docsis_tlv.svcunavail",
6719 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6722 {&hf_docsis_tlv_svc_unavail_classid
,
6723 {"Service Not Available: (Class ID)", "docsis_tlv.svcunavail.classid",
6724 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6727 {&hf_docsis_tlv_svc_unavail_type
,
6728 {"Service Not Available (Type)", "docsis_tlv.svcunavail.type",
6729 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6732 {&hf_docsis_tlv_svc_unavail_code
,
6733 {"Service Not Available (Code)", "docsis_tlv.svcunavail.code",
6734 FT_UINT8
, BASE_DEC
|BASE_EXT_STRING
, &docsis_conf_code_ext
, 0x0,
6737 {&hf_docsis_tlv_cpe_ethernet
,
6738 {"14 CPE Ethernet Addr", "docsis_tlv.cpe_ether",
6739 FT_ETHER
, BASE_NONE
, NULL
, 0x0,
6742 {&hf_docsis_tlv_bpi
,
6743 {"17 Baseline Privacy Encoding", "docsis_tlv.bpi",
6744 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6747 {&hf_docsis_tlv_max_cpe
,
6748 {"18 Max # of CPE's", "docsis_tlv.maxcpe",
6749 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6750 "Max Number of CPE's", HFILL
}
6752 {&hf_docsis_tlv_tftp_server_timestamp
,
6753 {"19 TFTP Server Timestamp", "docsis_tlv.tftp_time",
6754 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
6757 {&hf_docsis_tlv_tftp_prov_modem_address
,
6758 {"20 TFTP Server Provisioned Modem Addr", "docsis_tlv.tftpmodemaddr",
6759 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
6762 {&hf_docsis_tlv_sw_upg_srvr
,
6763 {"21 Software Upgrade Server", "docsis_tlv.sw_upg_srvr",
6764 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
6768 {&hf_docsis_tlv_upclsfr
,
6769 {"22 Upstream Classifier", "docsis_tlv.upclsfr",
6770 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6773 {&hf_docsis_tlv_downclsfr
,
6774 {"23 Downstream Classifier", "docsis_tlv.downclsfr",
6775 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6779 {&hf_docsis_tlv_clsfr_ref
,
6780 {".1 Classifier Ref", "docsis_tlv.clsfr.ref",
6781 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6782 "Classifier Reference", HFILL
}
6784 {&hf_docsis_tlv_clsfr_id
,
6785 {".2 Classifier ID", "docsis_tlv.clsfr.id",
6786 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
6789 {&hf_docsis_tlv_clsfr_sflow_ref
,
6790 {".3 Service Flow Ref", "docsis_tlv.clsfr.sflowref",
6791 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
6792 "Service Flow Reference", HFILL
}
6794 {&hf_docsis_tlv_clsfr_sflow_id
,
6795 {".4 Service Flow ID", "docsis_tlv.clsfr.sflowid",
6796 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
6799 {&hf_docsis_tlv_clsfr_rule_pri
,
6800 {".5 Rule Priority", "docsis_tlv.clsfr.rulepri",
6801 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6804 {&hf_docsis_tlv_clsfr_act_state
,
6805 {".6 Activation State", "docsis_tlv.clsfr.actstate",
6806 FT_BOOLEAN
, BASE_NONE
, TFS (&tfs_active_inactive
), 0x0,
6807 "Classifier Activation State", HFILL
}
6809 {&hf_docsis_tlv_clsfr_dsc_act
,
6810 {".7 DSC Action", "docsis_tlv.clsfr.dscact",
6811 FT_UINT8
, BASE_DEC
, VALS (dsc_act_vals
), 0x0,
6812 "Dynamic Service Change Action", HFILL
}
6815 {&hf_docsis_tlv_clsfr_err
,
6816 {".8 Error Encodings", "docsis_tlv.clsfr.err",
6817 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6821 {&hf_docsis_tlv_clsfr_err_param
,
6822 {"..1 Param Subtype", "docsis_tlv.clsfr.err.param",
6823 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6824 "Parameter Subtype", HFILL
}
6826 {&hf_docsis_tlv_clsfr_err_code
,
6827 {"..2 Error Code", "docsis_tlv.clsfr.err.code",
6828 FT_UINT8
, BASE_DEC
|BASE_EXT_STRING
, &docsis_conf_code_ext
, 0x0,
6831 {&hf_docsis_tlv_clsfr_err_msg
,
6832 {"..3 Error Message", "docsis_tlv.clsfr.err.msg",
6833 FT_STRINGZ
, BASE_NONE
, NULL
, 0x0,
6837 {&hf_docsis_tlv_ipclsfr
,
6838 {".9 IP Classifier Encodings", "docsis_tlv.clsfr.ip",
6839 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6843 {&hf_docsis_tlv_ipclsfr_tosmask
,
6844 {"..1 Type Of Service Mask", "docsis_tlv.clsfr.ip.tosmask",
6845 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6848 {&hf_docsis_tlv_ipclsfr_ipproto
,
6849 {"..2 IP Protocol", "docsis_tlv.clsfr.ip.ipproto",
6850 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
6853 {&hf_docsis_tlv_ipclsfr_src
,
6854 {"..3 Source Address", "docsis_tlv.clsfr.ip.src",
6855 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
6858 {&hf_docsis_tlv_ipclsfr_dst
,
6859 {"..4 Destination Address", "docsis_tlv.clsfr.ip.dst",
6860 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
6863 {&hf_docsis_tlv_ipclsfr_srcmask
,
6864 {"..5 Source Mask", "docsis_tlv.clsfr.ip.smask",
6865 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
6868 {&hf_docsis_tlv_ipclsfr_dstmask
,
6869 {"..6 Destination Mask", "docsis_tlv.clsfr.ip.dmask",
6870 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
6873 {&hf_docsis_tlv_ipclsfr_sport_start
,
6874 {"..7 Source Port Start", "docsis_tlv.clsfr.ip.sportstart",
6875 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
6876 "TCP/UDP Source Port Start", HFILL
}
6878 {&hf_docsis_tlv_ipclsfr_sport_end
,
6879 {"..8 Source Port End", "docsis_tlv.clsfr.ip.sportend",
6880 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
6881 "TCP/UDP Source Port End", HFILL
}
6883 {&hf_docsis_tlv_ipclsfr_dport_start
,
6884 {"..9 Dest Port Start", "docsis_tlv.clsfr.ip.dportstart",
6885 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
6886 "TCP/UDP Destination Port Start", HFILL
}
6888 {&hf_docsis_tlv_ipclsfr_dport_end
,
6889 {"..10 Dest Port End", "docsis_tlv.clsfr.ip.dportend",
6890 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
6891 "TCP/UDP Destination Port End", HFILL
}
6893 {&hf_docsis_tlv_ip6clsfr_tc_low
,
6894 {"tc-low", "docsis_tlv.clsfr.ip6.tc.low",
6895 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
6898 {&hf_docsis_tlv_ip6clsfr_tc_high
,
6899 {"tc-high", "docsis_tlv.clsfr.ip6.tc.high",
6900 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
6903 {&hf_docsis_tlv_ip6clsfr_tc_mask
,
6904 {"tc-mask", "docsis_tlv.clsfr.ip6.tc.mask",
6905 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
6908 {&hf_docsis_tlv_ip6clsfr_flow_label
,
6909 {"..2 Flow Label", "docsis_tlv.clsfr.ip6.flowlabel",
6910 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
6913 {&hf_docsis_tlv_ip6clsfr_next_header
,
6914 {"..3 Next Header", "docsis_tlv.clsfr.ip6.nextheader",
6915 FT_UINT16
, BASE_DEC
, VALS(next_header_vals
), 0x0,
6918 {&hf_docsis_tlv_ip6clsfr_src
,
6919 {"..4 Source Address", "docsis_tlv.clsfr.ip6.src",
6920 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
6923 {&hf_docsis_tlv_ip6clsfr_src_prefix_length
,
6924 {"..5 Source Prefix Length", "docsis_tlv.clsfr.ip6.src_prefix_length",
6925 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6928 {&hf_docsis_tlv_ip6clsfr_dst
,
6929 {"..6 Destination Address", "docsis_tlv.clsfr.ip6.dst",
6930 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
6933 {&hf_docsis_tlv_ip6clsfr_dst_prefix_length
,
6934 {"..7 Destination Prefix Length", "docsis_tlv.clsfr.ip6.dst_prefix_length",
6935 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
6939 {&hf_docsis_tlv_ethclsfr
,
6940 {".10 Ethernet Classifier Encodings", "docsis_tlv.clsfr.eth",
6941 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6945 {&hf_docsis_tlv_ethclsfr_dmac
,
6946 {"..1 Dest MAC Address", "docsis_tlv.clsfr.eth.dmac",
6947 FT_ETHER
, BASE_NONE
, NULL
, 0x0,
6948 "Destination MAC Address", HFILL
}
6950 {&hf_docsis_tlv_ethclsfr_smac
,
6951 {"..2 Source MAC Address", "docsis_tlv.clsfr.eth.smac",
6952 FT_ETHER
, BASE_NONE
, NULL
, 0x0,
6955 {&hf_docsis_tlv_ethclsfr_ethertype
,
6956 {"..3 Ethertype", "docsis_tlv.clsfr.eth.ethertype",
6957 FT_UINT24
, BASE_HEX
, NULL
, 0x0,
6961 {&hf_docsis_tlv_dot1qclsfr
,
6962 {".11 802.1Q Classifier Encodings", "docsis_tlv.clsfr.dot1q",
6963 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6967 {&hf_docsis_tlv_dot1qclsfr_user_pri
,
6968 {"..1 User Priority", "docsis_tlv.clsfr.dot1q.userpri",
6969 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
6972 {&hf_docsis_tlv_dot1qclsfr_vlanid
,
6973 {"..2 VLAN ID", "docsis_tlv.clsfr.dot1q.ethertype",
6974 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
6977 {&hf_docsis_tlv_dot1qclsfr_vendorspec
,
6978 {"..43 Vendor Specific Encodings", "docsis_tlv.clsfr.dot1q.vendorspec",
6979 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6982 {&hf_docsis_tlv_clsfr_vendor_spc
,
6983 {".43 Vendor Specific Encodings", "docsis_tlv.clsfr.vendor",
6984 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6988 {&hf_docsis_tlv_upsflow
,
6989 {"24 Upstream Service Flow", "docsis_tlv.upsflow",
6990 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6993 {&hf_docsis_tlv_downsflow
,
6994 {"25 Downstream Service Flow", "docsis_tlv.downsflow",
6995 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
6999 {&hf_docsis_tlv_sflow_ref
,
7000 {".1 Service Flow Ref", "docsis_tlv.sflow.ref",
7001 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7002 "Service Flow Reference", HFILL
}
7004 {&hf_docsis_tlv_sflow_id
,
7005 {".2 Service Flow ID", "docsis_tlv.sflow.id",
7006 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7009 {&hf_docsis_tlv_sflow_sid
,
7010 {".3 Service Identifier", "docsis_tlv.sflow.sid",
7011 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7014 {&hf_docsis_tlv_sflow_classname
,
7015 {".4 Service Class Name", "docsis_tlv.sflow.cname",
7016 FT_STRINGZ
, BASE_NONE
, NULL
, 0x0,
7020 {&hf_docsis_tlv_sflow_err
,
7021 {".5 Error Encodings", "docsis_tlv.sflow.err",
7022 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7026 {&hf_docsis_tlv_sflow_err_param
,
7027 {"..1 Param Subtype", "docsis_tlv.sflow.err.param",
7028 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7029 "Parameter Subtype", HFILL
}
7031 {&hf_docsis_tlv_sflow_err_code
,
7032 {"..2 Error Code", "docsis_tlv.sflow.err.code",
7033 FT_UINT8
, BASE_DEC
|BASE_EXT_STRING
, &docsis_conf_code_ext
, 0x0,
7036 {&hf_docsis_tlv_sflow_err_msg
,
7037 {"..3 Error Message", "docsis_tlv.sflow.err.msg",
7038 FT_STRINGZ
, BASE_NONE
, NULL
, 0x0,
7041 {&hf_docsis_tlv_sflow_qos_param
,
7042 {".6 QOS Parameter Set", "docsis_tlv.sflow.qos",
7043 FT_UINT8
, BASE_HEX
, VALS (qos_param_vals
), 0x0,
7046 {&hf_docsis_tlv_sflow_traf_pri
,
7047 {".7 Traffic Priority", "docsis_tlv.sflow.trafpri",
7048 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7051 {&hf_docsis_tlv_sflow_max_sus
,
7052 {".8 Maximum Sustained Traffic Rate (bps)", "docsis_tlv.sflow.maxtrafrate",
7053 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7056 {&hf_docsis_tlv_sflow_max_burst
,
7057 {".9 Maximum Burst (bps)", "docsis_tlv.sflow.maxburst",
7058 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7061 {&hf_docsis_tlv_sflow_min_traf
,
7062 {".10 Minimum Traffic Rate (bps)", "docsis_tlv.sflow.mintrafrate",
7063 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7066 {&hf_docsis_tlv_sflow_ass_min_pkt_size
,
7067 {".11 Assumed Min Reserved Packet Size", "docsis_tlv.sflow.assumed_min_pkt_size",
7068 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7069 "Assumed Minimum Reserved Packet Size", HFILL
}
7071 {&hf_docsis_tlv_sflow_timeout_active
,
7072 {".12 Timeout for Active Params (secs)", "docsis_tlv.sflow.act_timeout",
7073 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7076 {&hf_docsis_tlv_sflow_timeout_admitted
,
7077 {".13 Timeout for Admitted Params (secs)", "docsis_tlv.sflow.adm_timeout",
7078 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7081 {&hf_docsis_tlv_sflow_max_down_latency
,
7082 {".14 Maximum Downstream Latency (usec)", "docsis_tlv.sflow.max_down_lat",
7083 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7086 {&hf_docsis_tlv_sflow_max_concat_burst
,
7087 {".14 Max Concat Burst", "docsis_tlv.sflow.maxconcat",
7088 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7089 "Max Concatenated Burst", HFILL
}
7091 {&hf_docsis_tlv_sflow_sched_type
,
7092 {".15 Scheduling Type", "docsis_tlv.sflow.schedtype",
7093 FT_UINT32
, BASE_HEX
, VALS (sched_type_vals
), 0x0,
7096 {&hf_docsis_tlv_sflow_down_reseq
,
7097 {".17 Downstream Resequencing", "docsis_tlv.sflow.down_reseq",
7098 FT_UINT8
, BASE_DEC
, VALS(down_reseq_vals
), 0x0,
7101 {&hf_docsis_tlv_sflow_reqxmit_pol
,
7102 {".16 Request/Transmission Policy", "docsis_tlv.sflow.reqxmitpol",
7103 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
7106 {&hf_docsis_tlv_sflow_reqxmit_all_cm_broadcast
,
7107 {"Service flow use \"all CMs\" broadcast request opportunities", "docsis_tlv.sflow.reqxmitpol.all_cm_broadcast",
7108 FT_BOOLEAN
, 32, TFS(&tfs_must_not_must
), 0x00000001,
7111 {&hf_docsis_tlv_sflow_reqxmit_priority_multicast
,
7112 {"Service flow use priority multicast request opportunities", "docsis_tlv.sflow.reqxmitpol.priority_multicast",
7113 FT_BOOLEAN
, 32, TFS(&tfs_must_not_must
), 0x00000002,
7116 {&hf_docsis_tlv_sflow_reqxmit_req_data_requests
,
7117 {"Service flow use Request/Data opportunities for requests", "docsis_tlv.sflow.reqxmitpol.req_data_requests",
7118 FT_BOOLEAN
, 32, TFS(&tfs_must_not_must
), 0x00000004,
7121 {&hf_docsis_tlv_sflow_reqxmit_req_data_data
,
7122 {"Service flow use Request/Data opportunities for data", "docsis_tlv.sflow.reqxmitpol.req_data_data",
7123 FT_BOOLEAN
, 32, TFS(&tfs_must_not_must
), 0x00000008,
7126 {&hf_docsis_tlv_sflow_reqxmit_piggy_back
,
7127 {"Service flow use piggy back requests with data", "docsis_tlv.sflow.reqxmitpol.piggy_back",
7128 FT_BOOLEAN
, 32, TFS(&tfs_must_not_must
), 0x00000010,
7131 {&hf_docsis_tlv_sflow_reqxmit_concatenate_data
,
7132 {"Service flow concatenate data", "docsis_tlv.sflow.reqxmitpol.concatenate_data",
7133 FT_BOOLEAN
, 32, TFS(&tfs_must_not_must
), 0x00000020,
7136 {&hf_docsis_tlv_sflow_reqxmit_fragment
,
7137 {"Service flow fragment data", "docsis_tlv.sflow.reqxmitpol.fragment",
7138 FT_BOOLEAN
, 32, TFS(&tfs_must_not_must
), 0x00000040,
7141 {&hf_docsis_tlv_sflow_reqxmit_suppress_payload
,
7142 {"Service flow suppress payload headers", "docsis_tlv.sflow.reqxmitpol.suppress_payload",
7143 FT_BOOLEAN
, 32, TFS(&tfs_must_not_must
), 0x00000080,
7146 {&hf_docsis_tlv_sflow_reqxmit_drop_packets
,
7147 {"Service flow drop packets that do not fit in the UGS size", "docsis_tlv.sflow.reqxmitpol.drop_packets",
7148 FT_BOOLEAN
, 32, TFS(&tfs_must_must_not
), 0x00000100,
7151 {&hf_docsis_tlv_sflow_nominal_polling
,
7152 {".17 Nominal Polling Interval(usec)", "docsis_tlv.sflow.nominal_polling",
7153 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7156 {&hf_docsis_tlv_sflow_tolerated_jitter
,
7157 {".18 Tolerated Poll Jitter (usec)", "docsis_tlv.sflow.toler_jitter",
7158 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7161 {&hf_docsis_tlv_sflow_ugs_size
,
7162 {".19 Unsolicited Grant Size (bytes)", "docsis_tlv.sflow.ugs_size",
7163 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7166 {&hf_docsis_tlv_sflow_nom_grant_intvl
,
7167 {".20 Nominal Grant Interval (usec)", "docsis_tlv.sflow.nom_grant_intvl",
7168 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7171 {&hf_docsis_tlv_sflow_tol_grant_jitter
,
7172 {".21 Tolerated Grant Jitter (usec)", "docsis_tlv.sflow.tol_grant_jitter",
7173 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7176 {&hf_docsis_tlv_sflow_grants_per_intvl
,
7177 {".22 Grants Per Interval", "docsis_tlv.sflow.grnts_per_intvl",
7178 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7181 {&hf_docsis_tlv_sflow_ip_tos_overwrite
,
7182 {".23 IP TOS Overwrite", "docsis_tlv.sflow.iptos_overwrite",
7183 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
7186 {&hf_docsis_tlv_sflow_ugs_timeref
,
7187 {".24 UGS Time Reference", "docsis_tlv.sflow.ugs_timeref",
7188 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7191 {&hf_docsis_tlv_sflow_cont_req_backoff_window_mult
,
7192 {".25 Multiplier to Contention Request Backoff Window", "docsis_tlv.sflow.cont_req_backoff_window_mult",
7193 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7196 {&hf_docsis_tlv_sflow_num_of_bytes_requested_mult
,
7197 {".26 Multiplier to Number of Bytes Requested", "docsis_tlv.sflow.num_of_bytes_requested_mult",
7198 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7201 {&hf_docsis_tlv_sflow_peak_traffic_rate
,
7202 {".27 Peak Traffic Rate", "docsis_tlv.sflow.peak_traffic_rate",
7203 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7206 {&hf_docsis_tlv_sflow_req_attr_mask
,
7207 {".31 Required Attribute Mask", "docsis_tlv.sflow.req_attr_mask",
7208 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7211 {&hf_docsis_tlv_sflow_forb_attr_mask
,
7212 {".32 Forbidden Attribute Mask", "docsis_tlv.sflow.forb_attr_mask",
7213 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7216 {&hf_docsis_tlv_sflow_attr_aggr_rule_mask
,
7217 {".33 Attribute Aggregation Rule Mask", "docsis_tlv.sflow.attr_aggr_rule_mask",
7218 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7221 {&hf_docsis_tlv_sflow_vendor_spec
,
7222 {".43 Vendor Specific Encodings", "docsis_tlv.sflow.vendorspec",
7223 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7227 {&hf_docsis_tlv_phs
,
7228 {"26 PHS Rules", "docsis_tlv.phs",
7229 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7233 {&hf_docsis_tlv_phs_class_ref
,
7234 {".1 Classifier Reference", "docsis_tlv.phs.classref",
7235 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7238 {&hf_docsis_tlv_phs_class_id
,
7239 {".2 Classifier ID", "docsis_tlv.phs.classid",
7240 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7243 {&hf_docsis_tlv_phs_sflow_ref
,
7244 {".3 Service flow reference", "docsis_tlv.phs.sflowref",
7245 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7248 {&hf_docsis_tlv_phs_sflow_id
,
7249 {".4 Service flow ID", "docsis_tlv.phs.sflowid",
7250 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7253 {&hf_docsis_tlv_phs_dsc_action
,
7254 {".5 DSC Action", "docsis_tlv.phs.dscaction",
7255 FT_UINT8
, BASE_DEC
, VALS (action_vals
), 0x0,
7256 "Dynamic Service Change Action", HFILL
}
7259 {&hf_docsis_tlv_phs_err
,
7260 {".6 Error Encodings", "docsis_tlv.phs.err",
7261 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7265 {&hf_docsis_tlv_phs_err_param
,
7266 {"..1 Param Subtype", "docsis_tlv.phs.err.param",
7267 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7268 "Parameter Subtype", HFILL
}
7270 {&hf_docsis_tlv_phs_err_code
,
7271 {"..2 Error Code", "docsis_tlv.phs.err.code",
7272 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7275 {&hf_docsis_tlv_phs_err_msg
,
7276 {"..3 Error Message", "docsis_tlv.phs.err.msg",
7277 FT_STRINGZ
, BASE_NONE
, NULL
, 0x0,
7280 {&hf_docsis_tlv_phs_phsf
,
7281 {".7 PHS Field", "docsis_tlv.phs.phsf",
7282 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7285 {&hf_docsis_tlv_phs_phsi
,
7286 {".8 PHS Index", "docsis_tlv.phs.phsi",
7287 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7290 {&hf_docsis_tlv_phs_phsm
,
7291 {".9 PHS Mask", "docsis_tlv.phs.phsm",
7292 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7295 {&hf_docsis_tlv_phs_phss
,
7296 {".10 PHS Size", "docsis_tlv.phs.phss",
7297 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7300 {&hf_docsis_tlv_phs_dbc_action
,
7301 {".13 PHS Dynamic Bonding Change Action", "docsis_tlv.phs.dbc_action",
7302 FT_UINT8
, BASE_DEC
, VALS (dbc_action_vals
), 0x0,
7306 {&hf_docsis_tlv_phs_phsv
,
7307 {".11 PHS Verify", "docsis_tlv.phs.phsv",
7308 FT_BOOLEAN
, BASE_NONE
, TFS (&verify_tfs
), 0x0,
7312 {&hf_docsis_tlv_phs_vendorspec
,
7313 {".43 PHS Vendor Specific", "docsis_tlv.phs.vendorspec",
7314 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7317 {&hf_docsis_tlv_hmac_digest
,
7318 {"27 HMAC Digest", "docsis_tlv.hmac_digest",
7319 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7322 {&hf_docsis_tlv_max_classifiers
,
7323 {"28 Max # of Classifiers", "docsis_tlv.maxclass",
7324 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7327 {&hf_docsis_tlv_privacy_enable
,
7328 {"29 Privacy Enable", "docsis_tlv.bpi_en",
7329 FT_BOOLEAN
, BASE_NONE
, TFS (&ena_dis_tfs
), 0x0,
7332 {&hf_docsis_tlv_auth_block
,
7333 {"30 Auth Block", "docsis_tlv.auth_block",
7334 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7337 {&hf_docsis_tlv_key_seq_num
,
7338 {"31 Key Sequence Number", "docsis_tlv.key_seq",
7339 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7342 {&hf_docsis_tlv_mfgr_cvc
,
7343 {"32 Manufacturer CVC", "docsis_tlv.mfgr_cvc",
7344 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7347 {&hf_docsis_tlv_cosign_cvc
,
7348 {"33 Co-Signer CVC", "docsis_tlv.cosign_cvc",
7349 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7352 {&hf_docsis_tlv_snmpv3_kick
,
7353 {"34 SNMPv3 Kickstart Value", "docsis_tlv.snmpv3",
7354 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7357 {&hf_docsis_tlv_snmpv3_kick_name
,
7358 {".1 SNMPv3 Kickstart Security Name", "docsis_tlv.snmpv3.secname",
7359 FT_STRING
, BASE_NONE
, NULL
, 0x0,
7362 {&hf_docsis_tlv_snmpv3_kick_publicnum
,
7363 {".2 SNMPv3 Kickstart Manager Public Number", "docsis_tlv.snmpv3.publicnum",
7364 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7367 {&hf_docsis_tlv_subs_mgmt_ctrl
,
7368 {"35 Subscriber Management Control", "docsis_tlv.subsmgmtctrl",
7369 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7372 {&hf_docsis_tlv_subs_mgmt_ip_table
,
7373 {"36 Subscriber Management CPE IP Table", "docsis_tlv.subsiptable",
7374 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7377 {&hf_docsis_tlv_subs_mgmt_ip_entry
,
7378 {"Subscriber Management CPE IP Entry", "docsis_tlv.subsipentry",
7379 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
7382 {&hf_docsis_tlv_subs_mgmt_filter_grps
,
7383 {"37 Subscriber Management Filter Groups", "docsis_tlv.subsfltrgrps",
7384 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7387 {&hf_docsis_tlv_snmpv3_ntfy_rcvr
,
7388 {"38 SNMPv3 Notification Receiver", "docsis_tlv.snmpv3ntfy",
7389 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7392 {&hf_docsis_tlv_enable_20_mode
,
7393 {"39 Enable 2.0 Mode", "docsis_tlv.enable20mode",
7394 FT_BOOLEAN
, BASE_NONE
, TFS (&ena_dis_tfs
), 0x0,
7397 {&hf_docsis_tlv_enable_test_modes
,
7398 {"40 Enable Test Modes", "docsis_tlv.enabletestmodes",
7399 FT_BOOLEAN
, BASE_NONE
, TFS (&ena_dis_tfs
), 0x0,
7403 {&hf_docsis_tlv_ds_ch_list
,
7404 {"41 Downstream Channel List", "docsis_tlv.dschlist",
7405 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7408 {&hf_docsis_tlv_ds_ch_list_single
,
7409 {".1 Single Downstream Channel", "docsis_tlv.dschlist.single",
7410 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7414 {&hf_docsis_tlv_single_ch_timeout
,
7415 {"..1 Timeout", "docsis_tlv.dschlist.single.timeout",
7416 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7419 {&hf_docsis_tlv_single_ch_freq
,
7420 {"..2 Timeout", "docsis_tlv.dschlist.single.freq",
7421 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7425 {&hf_docsis_tlv_ds_ch_list_range
,
7426 {".2 Downstream Frequency Range", "docsis_tlv.dschlist.range",
7427 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7431 {&hf_docsis_tlv_freq_rng_timeout
,
7432 {"..1 Timeout", "docsis_tlv.dschlist.range.timeout",
7433 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7436 {&hf_docsis_tlv_freq_rng_start
,
7437 {"..2 Frequency Start", "docsis_tlv.dschlist.range.start",
7438 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7441 {&hf_docsis_tlv_freq_rng_end
,
7442 {"..3 Frequency End", "docsis_tlv.dschlist.range.end",
7443 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7446 {&hf_docsis_tlv_freq_rng_step
,
7447 {"..4 Frequency Step Size", "docsis_tlv.dschlist.range.step",
7448 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7451 {&hf_docsis_tlv_ds_ch_list_default_timeout
,
7452 {".3 Default Scanning Timeout", "docsis_tlv.dschlist.defaulttimeout",
7453 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7456 {&hf_docsis_tlv_mc_mac_address
,
7457 {"42 Static Multicast MAC Address", "docsis_tlv.mcmac",
7458 FT_ETHER
, BASE_NONE
, NULL
, 0x0,
7462 {&hf_docsis_tlv_vendor_spec
,
7463 {"43 Vendor Specific Encodings", "docsis_tlv.vendorspec",
7464 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7468 {&hf_docsis_tlv_rng_tech
,
7469 {"Ranging Technique", "docsis_tlv.rng_tech",
7470 FT_UINT8
, BASE_DEC
, VALS (rng_tech_vals
), 0x0,
7474 {&hf_docsis_tlv_dut_filter
,
7475 {"45 Downstream Unencrypted Traffic Filtering Encoding", "docsis_tlv.dut",
7476 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7480 {&hf_docsis_tlv_dut_filter_control
,
7481 {".1 DUT Control", "docsis_tlv.dut.control",
7482 FT_BOOLEAN
, BASE_NONE
, TFS (&ena_dis_tfs
), 0x0,
7485 {&hf_docsis_tlv_dut_filter_cmim
,
7486 {".2 DUT CMIM", "docsis_tlv.dut.cmim",
7487 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7491 {&hf_docsis_tlv_tcc
,
7492 {"46 Transmit Channel Configuration", "docsis_tlv.tcc",
7493 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7497 {&hf_docsis_tlv_tcc_refid
,
7498 {".1 TCC Reference ID", "docsis_tlv.tcc.refid",
7499 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7502 {&hf_docsis_tlv_tcc_us_ch_action
,
7503 {".2 Upstream Channel Action", "docsis_tlv.tcc.uschact",
7504 FT_UINT8
, BASE_DEC
, VALS (us_ch_action_vals
), 0x0,
7507 {&hf_docsis_tlv_tcc_us_ch_id
,
7508 {".3 Upstream Channel ID", "docsis_tlv.tcc.uschid",
7509 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7512 {&hf_docsis_tlv_tcc_new_us_ch_id
,
7513 {".4 New Upstream Channel ID", "docsis_tlv.tcc.newuschid",
7514 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7517 {&hf_docsis_tlv_tcc_ucd
,
7518 {".5 Upstream Channel Descriptor", "docsis_tlv.tcc.ucd",
7519 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7522 {&hf_docsis_tlv_tcc_rng_sid
,
7523 {".6 Ranging SID", "docsis_tlv.tcc.rngsid",
7524 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7527 {&hf_docsis_tlv_tcc_init_tech
,
7528 {".7 Initialization Technique", "docsis_tlv.tcc.inittech",
7529 FT_UINT8
, BASE_DEC
, VALS (init_tech_vals
), 0x0,
7533 {&hf_docsis_tlv_tcc_rng_parms
,
7534 {".8 Ranging Parameters", "docsis_tlv.tcc.rngparms",
7535 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7539 /* TODO: wrong label? */
7540 {&hf_docsis_rng_parms_us_ch_id
,
7541 {"..1 Ranging Reference Channel ID", "docsis_tlv.tcc.rngparms.uschid",
7542 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7543 "Upstream Channel ID", HFILL
}
7545 {&hf_docsis_rng_parms_time_off_int
,
7546 {"..2 Timing Offset, Integer Part", "docsis_tlv.tcc.rngparms.timeoffint",
7547 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7550 {&hf_docsis_rng_parms_time_off_frac
,
7551 {"..3 Timing Offset, Fractional Part", "docsis_tlv.tcc.rngparms.timeofffrac",
7552 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7555 {&hf_docsis_rng_parms_power_off
,
7556 {"..4 Power Offset", "docsis_tlv.tcc.rngparms.poweroff",
7557 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7560 {&hf_docsis_rng_parms_freq_off
,
7561 {"..5 Frequency Offset", "docsis_tlv.tcc.rngparms.freqoff",
7562 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7565 {&hf_docsis_tlv_tcc_dyn_rng_win
,
7566 {".9 Dynamic Range Window", "docsis_tlv.tcc.dynrngwin",
7567 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(fourth_db
), 0x0,
7570 {&hf_docsis_tlv_tcc_p_16hi
,
7571 {".10 P1.6hi", "docsis_tlv.tcc.p16hi",
7572 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(fourth_dbmv
), 0x0,
7575 {&hf_docsis_tlv_tcc_oudp_iuc
,
7576 {"OUDP IUC", "docsis_tlv.tcc.oudp_iuc",
7577 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7580 {&hf_docsis_tlv_tcc_extended_drw
,
7581 {".14 Extended Dynamic Range Window", "docsis_tlv.tcc.extended_dynrngwin",
7582 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(fourth_db
), 0x0,
7585 {&hf_docsis_tlv_tcc_extended_us_rng_pwr
,
7586 {".15 Extended US Ranging Power", "docsis_tlv.tcc.extended_us_rng_pwr",
7587 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(fourth_db
), 0x0,
7590 {&hf_docsis_tlv_tcc_oudp_sounding_sid
,
7591 {".16 OUDP Sounding SID", "docsis_tlv.tcc.oudp_sounding_sid",
7592 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7596 {&hf_docsis_tlv_tcc_err
,
7597 {".10 TCC Error Encodings", "docsis_tlv.tcc.err",
7598 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7602 {&hf_docsis_tcc_err_subtype
,
7603 {"..1 TCC Subtype", "docsis_tlv.tcc.err.subtype",
7604 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7607 {&hf_docsis_tcc_err_code
,
7608 {"..2 Error Code", "docsis_tlv.tcc.err.code",
7609 FT_UINT8
, BASE_DEC
|BASE_EXT_STRING
, &docsis_conf_code_ext
, 0x0,
7612 {&hf_docsis_tcc_err_msg
,
7613 {"..3 Error Message", "docsis_tlv.tcc.err.msg",
7614 FT_STRINGZ
, BASE_NONE
, NULL
, 0x0,
7618 {&hf_docsis_tlv_sid_cl
,
7619 {"47 Service Flow SID Cluster Assignments", "docsis_tlv.sid",
7620 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7624 {&hf_docsis_sid_cl_sf_id
,
7625 {".1 Service Flow ID", "docsis_tlv.sid.sfid",
7626 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7630 {&hf_docsis_sid_cl_enc
,
7631 {".2 SID Cluster Encodings", "docsis_tlv.sid.enc",
7632 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7636 {&hf_docsis_sid_cl_enc_id
,
7637 {"..1 SID Cluster ID", "docsis_tlv.sid.enc.id",
7638 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7642 {&hf_docsis_sid_cl_enc_map
,
7643 {"..2 SID-to-Channel Mapping", "docsis_tlv.sid.enc.map",
7644 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7648 {&hf_docsis_sid_cl_map_us_ch_id
,
7649 {"...1 Upstream Channel ID", "docsis_tlv.sid.enc.map.uschid",
7650 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7653 {&hf_docsis_sid_cl_map_sid
,
7654 {"...2 SID", "docsis_tlv.sid.enc.map.sid",
7655 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7658 {&hf_docsis_sid_cl_map_action
,
7659 {"...3 SID-to-Channel Mapping Action", "docsis_tlv.sid.enc.map.action",
7660 FT_UINT8
, BASE_DEC
, VALS (sid_ch_map_vals
), 0x0,
7664 {&hf_docsis_sid_cl_so_crit
,
7665 {".3 SID Cluster Switchover Criteria", "docsis_tlv.sid.socrit",
7666 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7670 {&hf_docsis_sid_cl_so_max_req
,
7671 {"..1 Maximum Requests per SID Cluster", "docsis_tlv.sid.socrit.maxreq",
7672 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7675 {&hf_docsis_sid_cl_so_max_out_bytes
,
7676 {"..2 Maximum Outstanding Bytes per SID Cluster", "docsis_tlv.sid.socrit.maxoutbytes",
7677 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7680 {&hf_docsis_sid_cl_so_max_req_bytes
,
7681 {"..3 Maximum Total Bytes Requested per SID Cluster", "docsis_tlv.sid.socrit.maxreqbytes",
7682 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7685 {&hf_docsis_sid_cl_so_max_time
,
7686 {"..4 Maximum Time in the SID Cluster", "docsis_tlv.sid.socrit.maxtime",
7687 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7691 {&hf_docsis_tlv_rcp
,
7692 {"48 Receive Channel Profile", "docsis_tlv.rcp",
7693 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7697 {&hf_docsis_tlv_rcp_id
,
7698 {".1 RCP-ID", "docsis_tlv.rcp.id",
7699 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7702 {&hf_docsis_tlv_rcp_name
,
7703 {".2 RCP Name", "docsis_tlv.rcp.name",
7704 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7707 {&hf_docsis_tlv_rcp_freq_spc
,
7708 {".3 RCP Center Frequency Spacing", "docsis_tlv.rcp.freq_spc",
7709 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7713 {&hf_docsis_tlv_rcp_rcv_mod_enc
,
7714 {".4 Receive Module Capability", "docsis_tlv.rcp.rcv_mod_enc",
7715 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7716 "Receive Module Encoding", HFILL
}
7719 {&hf_docsis_rcv_mod_enc_idx
,
7720 {"..1 Receive Module Index", "docsis_tlv.rcp.rcv_mod_enc.idx",
7721 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7724 {&hf_docsis_rcv_mod_enc_adj_ch
,
7725 {"..2 Adjacent Channels", "docsis_tlv.rcp.rcv_mod_enc.adj_ch",
7726 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7730 {&hf_docsis_rcv_mod_enc_ch_bl_rng
,
7731 {"..3 Channel Block Range", "docsis_tlv.rcp.rcv_mod_enc.ch_bl_rng",
7732 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7736 {&hf_docsis_rcv_mod_enc_ctr_freq_asgn
,
7737 {"..4 First Channel Center Frequency Assignment", "docsis_tlv.rcv_mod_enc.ctr_freq_asgn",
7738 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7741 {&hf_docsis_ch_bl_rng_min_ctr_freq
,
7742 {"...1 Minimum Center Frequency", "docsis_tlv.rcp.rcv_mod_enc.ch_bl_rng.min_ctr_freq",
7743 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7746 {&hf_docsis_ch_bl_rng_max_ctr_freq
,
7747 {"...2 Maximum Center Frequency", "docsis_tlv.rcp.rcv_mod_enc.ch_bl_rng.max_ctr_freq",
7748 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7751 {&hf_docsis_rcv_mod_enc_rsq_ch_subs_cap
,
7752 {"..5 Resequencing Channel Subset Capability", "docsis_tlv.rcp.rcv_mod_enc.rsq_ch_subs_cap",
7753 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7756 {&hf_docsis_rcv_mod_enc_conn
,
7757 {"..6 Receive Module Connectivity", "docsis_tlv.rcp.rcv_mod_enc.conn",
7758 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7761 {&hf_docsis_rcv_mod_enc_phy_layr_parms
,
7762 {"..7 Physical Layer Parameter", "docsis_tlv.rcp.rcv_mod_enc.phy_layr_parms",
7763 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7767 {&hf_docsis_tlv_rcp_rcv_ch
,
7768 {".5 Receive Channel", "docsis_tlv.rcp.rcv_ch",
7769 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7773 {&hf_docsis_rcv_ch_idx
,
7774 {"..1 Receive Channel Index", "docsis_tlv.rcp.rcv_ch.idx",
7775 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7778 {&hf_docsis_rcv_ch_conn
,
7779 {"..2 Receive Channel Connectivity", "docsis_tlv.rcp.rcv_ch.conn",
7780 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7783 {&hf_docsis_rcv_ch_conn_off
,
7784 {"..3 Receive Channel Connected Offset", "docsis_tlv.rcp.rcv_ch.conn_off",
7785 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7788 {&hf_docsis_rcv_ch_prim_ds_ch_ind
,
7789 {"..5 Primary Downstream Channel Indicator", "docsis_tlv.rcp.rcv_ch.prim_ds_ch_ind",
7790 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7794 {&hf_docsis_tlv_rcp_ven_spec
,
7795 {".43 Vendor Specific Encodings", "docsis_tlv.rcp.vendorspec",
7796 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7799 {&hf_docsis_tlv_rcc
,
7800 {"49 Receive Channel Configuration", "docsis_tlv.rcc",
7801 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7805 {&hf_docsis_tlv_rcc_id
,
7806 {".1 Assigned RCP-ID", "docsis_tlv.rcc.id",
7807 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7811 {&hf_docsis_tlv_rcc_rcv_mod_enc
,
7812 {".4 Receive Module Assignment", "docsis_tlv.rcc.rcv_mod_enc",
7813 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7817 {&hf_docsis_rcc_rcv_mod_enc_idx
,
7818 {"..1 Receive Module Index", "docsis_tlv.rcc.rcc_rcv_mod_enc.idx",
7819 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7822 {&hf_docsis_rcc_rcv_mod_enc_ctr_freq_asgn
,
7823 {"..4 First Channel Center Frequency Assignment", "docsis_tlv.rcc.rcv_mod_enc.ctr_freq_asgn",
7824 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7827 {&hf_docsis_rcc_rcv_mod_enc_conn
,
7828 {"..6 Receive Module Connectivity", "docsis_tlv.rcc.rcv_mod_enc.conn",
7829 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7833 {&hf_docsis_tlv_rcc_rcv_ch
,
7834 {".5 Receive Channel", "docsis_tlv.rcc.rcv_ch",
7835 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7839 {&hf_docsis_rcc_rcv_ch_idx
,
7840 {"..1 Receive Channel Index", "docsis_tlv.rcc.rcv_ch.idx",
7841 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7844 {&hf_docsis_rcc_rcv_ch_conn
,
7845 {"..2 Receive Channel Connectivity", "docsis_tlv.rcc.rcv_ch.conn",
7846 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7849 {&hf_docsis_rcc_rcv_ch_ctr_freq_asgn
,
7850 {"..4 Receive Channel Center Frequency Assignment", "docsis_tlv.rcc.rcv_ch.ctr_freq_asgn",
7851 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
7854 {&hf_docsis_rcc_rcv_ch_prim_ds_ch_ind
,
7855 {"..5 Primary Downstream Channel Indicator", "docsis_tlv.rcc.rcv_ch.prim_ds_ch_ind",
7856 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7860 {&hf_docsis_tlv_rcc_part_serv_ds_ch
,
7861 {".6 Partial Service Downstream Channels", "docsis_tlv.rcc.part_serv_ds_ch",
7862 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7865 {&hf_docsis_tlv_rcc_ven_spec
,
7866 {".43 Vendor Specific Encodings", "docsis_tlv.rcc.vendorspec",
7867 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7870 {&hf_docsis_tlv_rcc_err
,
7871 {".254 RCC Error Encodings", "docsis_tlv.rcc.err",
7872 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7876 {&hf_docsis_tlv_rcc_partial_serv_down_chan_id
,
7877 {"Downstream Channel ID", "docsis_tlv.rcc.partial_serv_down_chan.ds_ch_id",
7878 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7881 {&hf_docsis_tlv_rcc_srcc_prim_ds_chan_assign_ds_ch_id
,
7882 {"Downstream Channel ID", "docsis_tlv.rcc.srcc.prim_ds_chann_assign.ds_ch_id",
7883 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7886 {&hf_docsis_tlv_rcc_srcc_ds_chan_assign_ds_ch_id
,
7887 {"Downstream Channel ID", "docsis_tlv.rcc.srcc.ds_chann_assign.ds_ch_id",
7888 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7891 {&hf_docsis_tlv_rcc_srcc_ds_prof_assign_dcid
,
7892 {"....1 DCID", "docsis_tlv.rcc.srcc.ds_prof_assign.prof_list.dcid",
7893 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7896 {&hf_docsis_tlv_rcc_srcc_ds_prof_asssign_prof_list_prof_id
,
7897 {"Profile ID", "docsis_tlv.rcc.srcc.ds_prof_assign.prof_list.prof_id",
7898 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7901 {&hf_docsis_tlv_rcc_prim_down_chan
,
7902 {".8 Primary Downstream Channel", "docsis_tlv.rcc.prim_down_chan",
7903 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7906 {&hf_docsis_tlv_rcc_err_mod_or_ch
,
7907 {".1 Receive Modul or Receive Channel", "docsis_tlv.rcc.err.mod_or_ch",
7908 FT_UINT8
, BASE_DEC
, VALS (mod_or_ch_vals
), 0x0,
7911 {&hf_docsis_tlv_rcc_err_idx
,
7912 {".2 Receive Modul/Channel Index", "docsis_tlv.rcc.err.idx",
7913 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7916 {&hf_docsis_tlv_rcc_err_param
,
7917 {".3 Reported Parameter", "docsis_tlv.rcc.err.param",
7918 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7921 {&hf_docsis_tlv_rcc_err_code
,
7922 {".4 Error Code", "docsis_tlv.rcc.err.code",
7923 FT_UINT8
, BASE_DEC
|BASE_EXT_STRING
, &docsis_conf_code_ext
, 0x0,
7926 {&hf_docsis_tlv_rcc_err_msg
,
7927 {".5 Error Message", "docsis_tlv.rcc.err.msg",
7928 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7932 {&hf_docsis_tlv_dsid
,
7933 {"50 DSID Encodings", "docsis_tlv.dsid",
7934 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7938 {&hf_docsis_tlv_dsid_id
,
7939 {".1 Downstream Service Identifier (DSID)", "docsis_tlv.dsid.id",
7940 FT_UINT24
, BASE_DEC
, NULL
, 0x0,
7943 {&hf_docsis_tlv_dsid_action
,
7944 {".2 DSID Action", "docsis_tlv.dsid.action",
7945 FT_UINT8
, BASE_DEC
, VALS (dsid_action_vals
), 0x0,
7949 {&hf_docsis_tlv_dsid_ds_reseq
,
7950 {".3 Downstream Resequencing Encodings", "docsis_tlv.dsid.ds_reseq",
7951 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7955 {&hf_docsis_ds_reseq_dsid
,
7956 {"..1 Resequencing DSID", "docsis_tlv.dsid.ds_reseq.dsid",
7957 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7960 {&hf_docsis_ds_reseq_ch_lst
,
7961 {"..2 Downstream Resequencing Channel List", "docsis_tlv.dsid.ds_reseq.ch_lst",
7962 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7965 {&hf_docsis_ds_reseq_wait_time
,
7966 {"..3 Downstream Resequencing Wait Time", "docsis_tlv.dsid.ds_reseq.wait_time",
7967 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7970 {&hf_docsis_ds_reseq_warn_thresh
,
7971 {"..4 Resequencing Warn Threshold", "docsis_tlv.dsid.ds_reseq.warn_thresh",
7972 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
7975 {&hf_docsis_ds_reseq_ho_timer
,
7976 {"..5 CM-Status max. Event Hold-Off Timer (Out-of-Range Events)", "docsis_tlv.dsid.ds_reseq.ho_timer",
7977 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
7981 {&hf_docsis_tlv_dsid_mc
,
7982 {".4 Multicast Encodings", "docsis_tlv.dsid.mc",
7983 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7986 {&hf_docsis_tlv_dsid_mc_addr
,
7987 {"..1 Client MAC Address Encodings", "docsis_tlv.dsid.mc.addr",
7988 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
7992 {&hf_docsis_mc_addr_action
,
7993 {"...1 Client MAC Address Action", "docsis_tlv.dsid.mc.addr.action",
7994 FT_UINT8
, BASE_DEC
, VALS (add_del_vals
), 0x0,
7997 {&hf_docsis_mc_addr_addr
,
7998 {"...2 Client MAC Address", "docsis_tlv.dsid.mc.addr.addr",
7999 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8002 {&hf_docsis_tlv_dsid_mc_cmim
,
8003 {"..2 Multicast CM Interface Mask", "docsis_tlv.dsid.mc.cmim",
8004 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8007 {&hf_docsis_tlv_dsid_mc_group
,
8008 {"..3 Multicast Group MAC Addresses", "docsis_tlv.dsid.mc.group",
8009 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8013 {&hf_docsis_tlv_dsid_mc_phs
,
8014 {"..26 Payload Header Suppression Encodings", "docsis_tlv.dsid.mc.phs",
8015 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8018 {&hf_docsis_tlv_sec_assoc
,
8019 {"51 Security Association Encodings", "docsis_tlv.sec_assoc",
8020 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8024 {&hf_docsis_tlv_sec_assoc_action
,
8025 {".1 SA Action", "docsis_tlv.sec_assoc.action",
8026 FT_UINT8
, BASE_DEC
, VALS (add_del_vals
), 0x0,
8029 {&hf_docsis_tlv_sec_assoc_desc
,
8030 {".23 SA Descriptor", "docsis_tlv.sec_assoc.desc",
8031 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8034 {&hf_docsis_tlv_init_ch_timeout
,
8035 {"52 Initializing Channel Timeout", "docsis_tlv.init_ch_timeout",
8036 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
8040 {&hf_docsis_tlv_ch_asgn
,
8041 {"56 Channel Assignment Configuration Settings", "docsis_tlv.ch_asgn",
8042 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8046 {&hf_docsis_ch_asgn_us_ch_id
,
8047 {".1 Upstream Channel ID", "docsis_tlv.ch_asgn.us_ch_id",
8048 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
8051 {&hf_docsis_ch_asgn_rx_freq
,
8052 {".2 Rx Frequency", "docsis_tlv.ch_asgn.rx_freq",
8053 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
8056 {&hf_docsis_tlv_cm_init_reason
,
8057 {"57 CM Initialization Reason", "docsis_tlv.cm_init_reason",
8058 FT_UINT16
, BASE_DEC
, VALS (init_reason_vals
), 0x0,
8061 {&hf_docsis_tlv_sw_upg_srvr_ipv6
,
8062 {"58 Software Upgrade Server IPv6", "docsis_tlv.sw_upg_srvr_ipv6",
8063 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
8066 {&hf_docsis_tlv_tftp_prov_cm_ipv6_addr
,
8067 {"59 TFTP Server Provisioned Modem IPv6 Address", "docsis_tlv.tftp_prov_cm_ipv6_addr",
8068 FT_IPv6
, BASE_NONE
, NULL
, 0x0,
8071 {&hf_docsis_tlv_us_drop_clfy
,
8072 {"60 Upstream Drop Packet Classification Encoding", "docsis_tlv.us_drop_clfy",
8073 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8076 {&hf_docsis_tlv_subs_mgmt_ipv6_lst
,
8077 {"61 Subscriber Management CPE IPv6 Prefix List", "docsis_tlv.subs_mgmt_ipv6_lst",
8078 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8081 {&hf_docsis_tlv_us_drop_clfy_group_id
,
8082 {"62 Upstream Drop Classifier Group ID", "docsis_tlv.us_drop_clfy_group_id",
8083 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8086 {&hf_docsis_tlv_subs_mgmt_ctrl_max_cpe_ipv6
,
8087 {"63 Subscriber Management Control Max CPE IPv6 Prefix", "docsis_tlv.subs_mgmt_ctrl_max_cpe_ipv6",
8088 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
8092 {&hf_docsis_tlv_cmts_mc_sess_enc
,
8093 {"64 CMTS Static Multicast Session Encoding", "docsis_tlv.cmts_mc_sess_enc",
8094 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8098 {&hf_docsis_cmts_mc_sess_enc_grp
,
8099 {".1 Multicast Group Address", "docsis_tlv.cmts_mc_sess_enc.grp",
8100 FT_IPXNET
, BASE_NONE
, NULL
, 0x0,
8103 {&hf_docsis_cmts_mc_sess_enc_src
,
8104 {".2 Source IP Address", "docsis_tlv.cmts_mc_sess_enc.src",
8105 FT_IPXNET
, BASE_NONE
, NULL
, 0x0,
8108 {&hf_docsis_cmts_mc_sess_enc_cmim
,
8109 {".3 CMIM", "docsis_tlv.cmts_mc_sess_enc.cmim",
8110 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8113 {&hf_docsis_tlv_em_mode_ind
,
8114 {"75 Energy Management Mode Indicator", "docsis_tlv.em_mode_ind",
8115 FT_UINT8
, BASE_DEC
, VALS(em_mode_ind_vals
), 0x0,
8118 {&hf_docsis_tlv_em_id_list_for_cm_em_id
,
8119 {"Energy Management Identifier", "docsis_tlv.em_id_list_for_cm.em_id",
8120 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
8123 {&hf_docsis_tlv_fdx_tg_assignment_tg_id
,
8124 {"Transmission Group ID", "docsis_tlv.fdx_tg_assignment_tg_id",
8125 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
8128 {&hf_docsis_tlv_fdx_tg_assignment_rba_type
,
8129 {"RBA Type", "docsis_tlv.fdx_tg_assignment_rba_type",
8130 FT_UINT8
, BASE_DEC
, VALS (rba_type_vals
), 0x0,
8133 {&hf_docsis_tlv_fdx_reset
,
8134 {"86 FDX Reset", "docsis_tlv.fdx_reset",
8135 FT_UINT8
, BASE_DEC
, VALS (fdx_reset_vals
), 0x0,
8138 {&hf_docsis_tlv_unknown
,
8139 {"Unknown TLV", "docsis_tlv.unknown",
8140 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8143 {&hf_docsis_tlv_unknown_type
,
8144 {"Type", "docsis_tlv.unknown.type",
8145 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
8148 {&hf_docsis_tlv_unknown_length
,
8149 {"Length", "docsis_tlv.unknown.length",
8150 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
8153 {&hf_docsis_tlv_unknown_value
,
8154 {"Value", "docsis_tlv.unknown.value",
8155 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8158 { &hf_docsis_ucd_fragment_overlap
,
8159 { "Fragment overlap", "docsis_tlv.ucd.fragment.overlap",
8160 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
8161 "Fragment overlaps with other fragments", HFILL
}
8163 { &hf_docsis_ucd_fragment_overlap_conflict
,
8164 { "Conflicting data in fragment overlap", "docsis_tlv.ucd.fragment.overlap.conflict",
8165 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
8166 "Overlapping fragments contained conflicting data", HFILL
}
8168 { &hf_docsis_ucd_fragment_multiple_tails
,
8169 { "Multiple tail fragments found", "docsis_tlv.ucd.fragment.multipletails",
8170 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
8171 "Several tails were found when defragmenting the packet", HFILL
}
8173 { &hf_docsis_ucd_fragment_too_long_fragment
,
8174 { "Fragment too long", "docsis_tlv.ucd.fragment.toolongfragment",
8175 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
8176 "Fragment contained data past end of packet", HFILL
}
8178 { &hf_docsis_ucd_fragment_error
,
8179 { "Defragmentation error", "docsis_tlv.ucd.fragment.error",
8180 FT_FRAMENUM
, BASE_NONE
, NULL
, 0x0,
8181 "Defragmentation error due to illegal fragments", HFILL
}
8183 { &hf_docsis_ucd_fragment_count
,
8184 { "Fragment count", "docsis_tlv.ucd.fragment.count",
8185 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
8188 { &hf_docsis_ucd_fragment
,
8189 { "UCD Fragment", "docsis_tlv.ucd.fragment",
8190 FT_FRAMENUM
, BASE_NONE
, NULL
, 0x0,
8193 { &hf_docsis_ucd_fragments
,
8194 { "UCD Fragments", "docsis_tlv.ucd.fragments",
8195 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8198 { &hf_docsis_ucd_reassembled_in
,
8199 { "Reassembled UCD in frame", "docsis_tlv.ucd.reassembled_in",
8200 FT_FRAMENUM
, BASE_NONE
, NULL
, 0x0,
8201 "This UCD packet is reassembled in this frame", HFILL
}
8203 { &hf_docsis_ucd_reassembled_length
,
8204 { "Reassembled UCD length", "docsis_tlv.ucd.reassembled.length",
8205 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
8206 "The total length of the reassembled payload", HFILL
}
8208 { &hf_docsis_ucd_reassembled_data
,
8209 { "Reassembled UCD data", "docsis_tlv.ucd.reassembled.data",
8210 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8211 "The reassembled payload", HFILL
}
8213 { &hf_docsis_ucd_reassembled
,
8214 { ".5 Reassembled UCD", "docsis_tlv.ucd.reassembled",
8215 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
8216 "The reassembled UCD", HFILL
}
8221 static int *ett
[] = {
8223 &ett_docsis_tlv_cos
,
8224 &ett_docsis_tlv_mcap
,
8225 &ett_docsis_tlv_mcap_em
,
8226 &ett_docsis_tlv_mcap_em_pref
,
8227 &ett_docsis_tlv_mcap_ofdm_chan_subc_qam_mod_sup
,
8228 &ett_docsis_tlv_mcap_ofdma_chan_subc_qam_mod_sup
,
8229 &ett_docsis_tlv_mcap_down_lower_band_edge_conf
,
8230 &ett_docsis_tlv_mcap_down_upper_band_edge_conf
,
8231 &ett_docsis_tlv_mcap_dipl_down_lower_band_edge
,
8232 &ett_docsis_tlv_mcap_dipl_down_upper_band_edge
,
8233 &ett_docsis_tlv_mcap_dipl_up_upper_band_edge
,
8234 &ett_docsis_tlv_mcap_advanced_band_plan
,
8235 &ett_docsis_tlv_mcap_dipl_down_lower_band_edge_options_list
,
8236 &ett_docsis_tlv_mcap_dipl_down_upper_band_edge_options_list
,
8237 &ett_docsis_tlv_mcap_dipl_up_upper_band_edge_options_list
,
8238 &ett_docsis_tlv_clsfr
,
8239 &ett_docsis_tlv_clsfr_ip
,
8240 &ett_docsis_tlv_clsfr_ip6
,
8241 &ett_docsis_tlv_clsfr_ip6_tc
,
8242 &ett_docsis_tlv_clsfr_eth
,
8243 &ett_docsis_tlv_clsfr_err
,
8244 &ett_docsis_tlv_clsfr_dot1q
,
8245 &ett_docsis_tlv_reqxmitpol
,
8246 &ett_docsis_tlv_sflow_err
,
8247 &ett_docsis_tlv_phs
,
8248 &ett_docsis_tlv_phs_err
,
8249 &ett_docsis_tlv_svc_unavail
,
8250 &ett_docsis_tlv_snmpv3_kick
,
8251 &ett_docsis_tlv_ds_ch_list
,
8252 &ett_docsis_tlv_ds_ch_list_single
,
8253 &ett_docsis_tlv_ds_ch_list_range
,
8254 &ett_docsis_tlv_ext_field
,
8255 &ett_docsis_tlv_vendor_specific_cap
,
8256 &ett_docsis_tlv_dut_filter
,
8257 &ett_docsis_tlv_tcc
,
8258 &ett_docsis_tlv_tcc_ucd
,
8259 &ett_docsis_tlv_tcc_rng_parms
,
8260 &ett_docsis_tlv_tcc_oudp
,
8261 &ett_docsis_tlv_tcc_err
,
8262 &ett_docsis_tlv_sid_cl
,
8263 &ett_docsis_tlv_sid_cl_enc
,
8264 &ett_docsis_tlv_sid_cl_enc_map
,
8265 &ett_docsis_tlv_sid_cl_so
,
8266 &ett_docsis_tlv_rcp
,
8267 &ett_docsis_tlv_rcp_rcv_mod_enc
,
8268 &ett_docsis_tlv_rcp_ch_bl_rng
,
8269 &ett_docsis_tlv_rcp_rcv_ch
,
8270 &ett_docsis_tlv_rcc
,
8271 &ett_docsis_tlv_rcc_rcv_mod_enc
,
8272 &ett_docsis_tlv_rcc_rcv_ch
,
8273 &ett_docsis_tlv_rcc_partial_serv_down_chan
,
8274 &ett_docsis_tlv_rcc_srcc
,
8275 &ett_docsis_tlv_rcc_srcc_prim_ds_assign
,
8276 &ett_docsis_tlv_rcc_srcc_ds_assign
,
8277 &ett_docsis_tlv_rcc_srcc_ds_prof_assign
,
8278 &ett_docsis_tlv_rcc_srcc_ds_prof_assign_prof_list
,
8279 &ett_docsis_tlv_rcc_err
,
8280 &ett_docsis_tlv_dsid
,
8281 &ett_docsis_tlv_dsid_ds_reseq
,
8282 &ett_docsis_tlv_dsid_mc
,
8283 &ett_docsis_tlv_dsid_mc_addr
,
8284 &ett_docsis_tlv_sec_assoc
,
8285 &ett_docsis_tlv_ch_asgn
,
8286 &ett_docsis_cmts_mc_sess_enc
,
8287 &ett_docsis_em_id_list_for_cm
,
8288 &ett_docsis_tlv_tg_assignment
,
8289 &ett_docsis_tlv_unknown
,
8290 &ett_docsis_ucd_fragment
,
8291 &ett_docsis_ucd_fragments
,
8292 &ett_docsis_ucd_reassembled
,
8295 static ei_register_info ei
[] = {
8296 {&ei_docsis_tlv_tlvlen_bad
, { "docsis_tlv.tlvlenbad", PI_MALFORMED
, PI_ERROR
, "Bad TLV length", EXPFILL
}},
8297 {&ei_docsis_tlv_tlvval_bad
, { "docsis_tlv.tlvvalbad", PI_PROTOCOL
, PI_WARN
, "Wrong TLV value", EXPFILL
}},
8300 expert_module_t
* expert_docsis_tlv
;
8302 proto_docsis_tlv
= proto_register_protocol ("DOCSIS Appendix C TLVs", "DOCSIS TLVs", "docsis_tlv");
8304 proto_register_field_array (proto_docsis_tlv
, hf
, array_length (hf
));
8305 proto_register_subtree_array (ett
, array_length (ett
));
8306 expert_docsis_tlv
= expert_register_protocol(proto_docsis_tlv
);
8307 expert_register_field_array(expert_docsis_tlv
, ei
, array_length(ei
));
8309 register_dissector ("docsis_tlv", dissect_docsis_tlv
, proto_docsis_tlv
);
8313 proto_reg_handoff_docsis_tlv (void)
8316 dissector_handle_t docsis_tlv_handle
;
8318 docsis_tlv_handle
= find_dissector ("docsis_tlv");
8319 dissector_add_uint ("docsis", 0xFF, docsis_tlv_handle
);
8322 docsis_vsif_handle
= find_dissector("docsis_vsif");
8323 docsis_ucd_handle
= find_dissector("docsis_ucd");
8324 docsis_rba_handle
= find_dissector("docsis_rba");
8326 reassembly_table_register(&ucd_reassembly_table
,
8327 &addresses_reassembly_table_functions
);
8333 * Editor modelines - https://www.wireshark.org/tools/modelines.html
8338 * indent-tabs-mode: nil
8341 * ex: set shiftwidth=2 tabstop=8 expandtab:
8342 * :indentSize=2:tabSize=8:noTabs=true: