2 * Routines to Dissect Appendix C TLV's
3 * Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
7 * Wireshark - Network traffic analyzer
8 * By Gerald Combs <gerald@wireshark.org>
9 * Copyright 1998 Gerald Combs
11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License
13 * as published by the Free Software Foundation; either version 2
14 * of the License, or (at your option) any later version.
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
30 #include <epan/packet.h>
31 #include "packet-tlv.h"
33 /* This module will dissect the Appendix C TLV's. Please see:
34 * http://www.cablemodem.com/specifications/specifications.html
36 * The main dissector is dissect_tlv. This routine will dissect
37 * top level TLV's and call sub-dissectors for the sub-TLV's.
40 /* Initialize the protocol and registered fields */
41 static dissector_handle_t docsis_vsif_handle;
42 static dissector_handle_t docsis_ucd_handle;
45 static int proto_docsis_tlv = -1;
46 static int hf_docsis_tlv_down_freq = -1;
47 static int hf_docsis_tlv_upstream_chid = -1;
48 static int hf_docsis_tlv_net_access = -1;
49 static int hf_docsis_tlv_cos = -1;
50 static int hf_docsis_tlv_mcap = -1;
51 static int hf_docsis_tlv_privacy_enable = -1;
52 static int hf_docsis_tlv_max_cpe = -1;
53 static int hf_docsis_tlv_max_classifiers = -1;
54 static int hf_docsis_tlv_snmp_access = -1;
55 static int hf_docsis_tlv_snmp_obj = -1;
56 static int hf_docsis_tlv_svc_unavail = -1;
57 static int hf_docsis_tlv_svc_unavail_classid = -1;
58 static int hf_docsis_tlv_svc_unavail_type = -1;
59 static int hf_docsis_tlv_svc_unavail_code = -1;
60 static int hf_docsis_tlv_bpi = -1;
61 static int hf_docsis_tlv_phs = -1;
62 static int hf_docsis_tlv_hmac_digest = -1;
63 static int hf_docsis_tlv_tftp_server_timestamp = -1;
64 static int hf_docsis_tlv_tftp_prov_modem_address = -1;
65 static int hf_docsis_tlv_upclsfr = -1;
66 static int hf_docsis_tlv_downclsfr = -1;
67 static int hf_docsis_tlv_upsflow = -1;
68 static int hf_docsis_tlv_downsflow = -1;
69 static int hf_docsis_tlv_vendor_spec = -1;
70 static int hf_docsis_tlv_cm_mic = -1;
71 static int hf_docsis_tlv_cmts_mic = -1;
72 static int hf_docsis_tlv_auth_block = -1;
73 static int hf_docsis_tlv_key_seq_num = -1;
74 static int hf_docsis_tlv_snmpv3_kick = -1;
75 static int hf_docsis_tlv_snmpv3_kick_name = -1;
76 static int hf_docsis_tlv_snmpv3_kick_publicnum = -1;
77 static int hf_docsis_tlv_mfgr_cvc = -1;
78 static int hf_docsis_tlv_cosign_cvc = -1;
79 static int hf_docsis_tlv_vendor_id = -1;
80 static int hf_docsis_tlv_sw_file = -1;
81 static int hf_docsis_tlv_sw_upg_srvr = -1;
82 static int hf_docsis_tlv_cpe_ethernet = -1;
83 static int hf_docsis_tlv_modem_addr = -1;
84 static int hf_docsis_tlv_rng_tech = -1;
85 static int hf_docsis_tlv_subs_mgmt_ctrl = -1;
86 static int hf_docsis_tlv_subs_mgmt_ip_table = -1;
87 static int hf_docsis_tlv_subs_mgmt_ip_entry = -1;
88 static int hf_docsis_tlv_subs_mgmt_filter_grps = -1;
89 static int hf_docsis_tlv_snmpv3_ntfy_rcvr = -1;
90 static int hf_docsis_tlv_enable_20_mode = -1;
91 static int hf_docsis_tlv_enable_test_modes = -1;
92 static int hf_docsis_tlv_ds_ch_list = -1;
93 static int hf_docsis_tlv_mc_mac_address = -1;
94 static int hf_docsis_tlv_dut_filter = -1;
95 static int hf_docsis_tlv_tcc = -1;
96 static int hf_docsis_tlv_sid_cl = -1;
97 static int hf_docsis_tlv_rcp = -1;
98 static int hf_docsis_tlv_rcc = -1;
99 static int hf_docsis_tlv_dsid = -1;
100 static int hf_docsis_tlv_sec_assoc = -1;
101 static int hf_docsis_tlv_init_ch_timeout = -1;
102 static int hf_docsis_tlv_ch_asgn = -1;
103 static int hf_docsis_tlv_cm_init_reason = -1;
104 static int hf_docsis_tlv_sw_upg_srvr_ipv6 = -1;
105 static int hf_docsis_tlv_tftp_prov_cm_ipv6_addr = -1;
106 static int hf_docsis_tlv_us_drop_clfy = -1;
107 static int hf_docsis_tlv_subs_mgmt_ipv6_lst = -1;
108 static int hf_docsis_tlv_us_drop_clfy_group_id = -1;
109 static int hf_docsis_tlv_subs_mgmt_ctrl_max_cpe_ipv6 = -1;
110 static int hf_docsis_tlv_cmts_mc_sess_enc = -1;
112 static int hf_docsis_tlv_cos_id = -1;
113 static int hf_docsis_tlv_cos_sid = -1;
114 static int hf_docsis_tlv_cos_max_down = -1;
115 static int hf_docsis_tlv_cos_max_up = -1;
116 static int hf_docsis_tlv_cos_up_chnl_pri = -1;
117 static int hf_docsis_tlv_cos_min_grntd_up = -1;
118 static int hf_docsis_tlv_cos_max_up_burst = -1;
119 static int hf_docsis_tlv_cos_privacy_enable = -1;
121 static int hf_docsis_tlv_mcap_concat = -1;
122 static int hf_docsis_tlv_mcap_docs_ver = -1;
123 static int hf_docsis_tlv_mcap_frag = -1;
124 static int hf_docsis_tlv_mcap_phs = -1;
125 static int hf_docsis_tlv_mcap_igmp = -1;
126 static int hf_docsis_tlv_mcap_down_said = -1;
127 static int hf_docsis_tlv_mcap_up_sid = -1;
128 static int hf_docsis_tlv_mcap_privacy = -1;
129 static int hf_docsis_tlv_mcap_8021P_filter = -1;
130 static int hf_docsis_tlv_mcap_8021Q_filter = -1;
131 static int hf_docsis_tlv_mcap_xmit_eq_taps_per_sym = -1;
132 static int hf_docsis_tlv_mcap_xmit_eq_taps = -1;
133 static int hf_docsis_tlv_mcap_dcc = -1;
134 static int hf_docsis_tlv_mcap_ip_filters = -1;
135 static int hf_docsis_tlv_mcap_llc_filters = -1;
136 static int hf_docsis_tlv_mcap_exp_unicast_sid = -1;
137 static int hf_docsis_tlv_mcap_rnghoff_cm = -1;
138 static int hf_docsis_tlv_mcap_rnghoff_erouter = -1;
139 static int hf_docsis_tlv_mcap_rnghoff_emta = -1;
140 static int hf_docsis_tlv_mcap_rnghoff_estb = -1;
141 static int hf_docsis_tlv_mcap_l2vpn = -1;
142 static int hf_docsis_tlv_mcap_l2vpn_esafe = -1;
143 static int hf_docsis_tlv_mcap_dut_filtering = -1;
144 static int hf_docsis_tlv_mcap_us_freq_range = -1;
145 static int hf_docsis_tlv_mcap_us_srate_160 = -1;
146 static int hf_docsis_tlv_mcap_us_srate_320 = -1;
147 static int hf_docsis_tlv_mcap_us_srate_640 = -1;
148 static int hf_docsis_tlv_mcap_us_srate_1280 = -1;
149 static int hf_docsis_tlv_mcap_us_srate_2560 = -1;
150 static int hf_docsis_tlv_mcap_us_srate_5120 = -1;
151 static int hf_docsis_tlv_mcap_sac = -1;
152 static int hf_docsis_tlv_mcap_code_hop_mode2 = -1;
153 static int hf_docsis_tlv_mcap_mtc = -1;
154 static int hf_docsis_tlv_mcap_512_msps_utc = -1;
155 static int hf_docsis_tlv_mcap_256_msps_utc = -1;
156 static int hf_docsis_tlv_mcap_total_sid_cluster = -1;
157 static int hf_docsis_tlv_mcap_sid_per_sf = -1;
158 static int hf_docsis_tlv_mcap_mrc = -1;
159 static int hf_docsis_tlv_mcap_total_dsid = -1;
160 static int hf_docsis_tlv_mcap_reseq_dsid = -1;
161 static int hf_docsis_tlv_mcap_mc_dsid = -1;
162 static int hf_docsis_tlv_mcap_mc_dsid_fwd = -1;
163 static int hf_docsis_tlv_mcap_fctype_fwd = -1;
164 static int hf_docsis_tlv_mcap_dpv_path = -1;
165 static int hf_docsis_tlv_mcap_dpv_packet = -1;
166 static int hf_docsis_tlv_mcap_ugs = -1;
167 static int hf_docsis_tlv_mcap_map_ucd = -1;
168 static int hf_docsis_tlv_mcap_udc = -1;
169 static int hf_docsis_tlv_mcap_ipv6 = -1;
170 static int hf_docsis_tlv_mcap_ext_us_trans_power = -1;
173 static int hf_docsis_tlv_clsfr_ref = -1;
174 static int hf_docsis_tlv_clsfr_id = -1;
175 static int hf_docsis_tlv_clsfr_sflow_ref = -1;
176 static int hf_docsis_tlv_clsfr_sflow_id = -1;
177 static int hf_docsis_tlv_clsfr_rule_pri = -1;
178 static int hf_docsis_tlv_clsfr_act_state = -1;
179 static int hf_docsis_tlv_clsfr_dsc_act = -1;
180 static int hf_docsis_tlv_clsfr_err = -1;
181 static int hf_docsis_tlv_ipclsfr = -1;
182 static int hf_docsis_tlv_ethclsfr = -1;
183 static int hf_docsis_tlv_dot1qclsfr = -1;
185 static int hf_docsis_tlv_clsfr_vendor_spc = -1;
187 static int hf_docsis_tlv_clsfr_err_param = -1;
188 static int hf_docsis_tlv_clsfr_err_code = -1;
189 static int hf_docsis_tlv_clsfr_err_msg = -1;
191 static int hf_docsis_tlv_ipclsfr_tosmask = -1;
192 static int hf_docsis_tlv_ipclsfr_ipproto = -1;
193 static int hf_docsis_tlv_ipclsfr_src = -1;
194 static int hf_docsis_tlv_ipclsfr_dst = -1;
195 static int hf_docsis_tlv_ipclsfr_srcmask = -1;
196 static int hf_docsis_tlv_ipclsfr_dstmask = -1;
197 static int hf_docsis_tlv_ipclsfr_sport_start = -1;
198 static int hf_docsis_tlv_ipclsfr_sport_end = -1;
199 static int hf_docsis_tlv_ipclsfr_dport_start = -1;
200 static int hf_docsis_tlv_ipclsfr_dport_end = -1;
202 static int hf_docsis_tlv_ethclsfr_dmac = -1;
203 static int hf_docsis_tlv_ethclsfr_smac = -1;
204 static int hf_docsis_tlv_ethclsfr_ethertype = -1;
206 static int hf_docsis_tlv_dot1qclsfr_user_pri = -1;
207 static int hf_docsis_tlv_dot1qclsfr_vlanid = -1;
208 static int hf_docsis_tlv_dot1qclsfr_vendorspec = -1;
210 static int hf_docsis_tlv_sflow_ref = -1;
211 static int hf_docsis_tlv_sflow_id = -1;
212 static int hf_docsis_tlv_sflow_sid = -1;
213 static int hf_docsis_tlv_sflow_classname = -1;
214 static int hf_docsis_tlv_sflow_qos_param = -1;
215 static int hf_docsis_tlv_sflow_err = -1;
216 static int hf_docsis_tlv_sflow_traf_pri = -1;
217 static int hf_docsis_tlv_sflow_max_sus = -1;
218 static int hf_docsis_tlv_sflow_max_burst = -1;
219 static int hf_docsis_tlv_sflow_min_traf = -1;
220 static int hf_docsis_tlv_sflow_ass_min_pkt_size = -1;
221 static int hf_docsis_tlv_sflow_timeout_active = -1;
222 static int hf_docsis_tlv_sflow_timeout_admitted = -1;
223 static int hf_docsis_tlv_sflow_vendor_spec = -1;
224 static int hf_docsis_tlv_sflow_max_concat_burst = -1;
225 static int hf_docsis_tlv_sflow_sched_type = -1;
226 static int hf_docsis_tlv_sflow_reqxmit_pol = -1;
227 static int hf_docsis_tlv_sflow_nominal_polling = -1;
228 static int hf_docsis_tlv_sflow_tolerated_jitter = -1;
229 static int hf_docsis_tlv_sflow_ugs_size = -1;
230 static int hf_docsis_tlv_sflow_nom_grant_intvl = -1;
231 static int hf_docsis_tlv_sflow_tol_grant_jitter = -1;
232 static int hf_docsis_tlv_sflow_grants_per_intvl = -1;
233 static int hf_docsis_tlv_sflow_ip_tos_overwrite = -1;
234 static int hf_docsis_tlv_sflow_ugs_timeref = -1;
235 static int hf_docsis_tlv_sflow_max_down_latency = -1;
237 static int hf_docsis_tlv_sflow_err_param = -1;
238 static int hf_docsis_tlv_sflow_err_code = -1;
239 static int hf_docsis_tlv_sflow_err_msg = -1;
241 static int hf_docsis_tlv_phs_class_ref = -1;
242 static int hf_docsis_tlv_phs_class_id = -1;
243 static int hf_docsis_tlv_phs_sflow_ref = -1;
244 static int hf_docsis_tlv_phs_sflow_id = -1;
245 static int hf_docsis_tlv_phs_dsc_action = -1;
246 static int hf_docsis_tlv_phs_err = -1;
247 static int hf_docsis_tlv_phs_phsf = -1;
248 static int hf_docsis_tlv_phs_phsm = -1;
249 static int hf_docsis_tlv_phs_phsv = -1;
250 static int hf_docsis_tlv_phs_phsi = -1;
251 static int hf_docsis_tlv_phs_phss = -1;
252 static int hf_docsis_tlv_phs_vendorspec = -1;
254 static int hf_docsis_tlv_phs_err_param = -1;
255 static int hf_docsis_tlv_phs_err_code = -1;
256 static int hf_docsis_tlv_phs_err_msg = -1;
258 static int hf_docsis_tlv_ds_ch_list_single = -1;
259 static int hf_docsis_tlv_ds_ch_list_range = -1;
260 static int hf_docsis_tlv_ds_ch_list_default_timeout = -1;
262 static int hf_docsis_tlv_single_ch_timeout = -1;
263 static int hf_docsis_tlv_single_ch_freq = -1;
265 static int hf_docsis_tlv_freq_rng_timeout = -1;
266 static int hf_docsis_tlv_freq_rng_start = -1;
267 static int hf_docsis_tlv_freq_rng_end = -1;
268 static int hf_docsis_tlv_freq_rng_step = -1;
270 static int hf_docsis_tlv_dut_filter_control = -1;
271 static int hf_docsis_tlv_dut_filter_cmim = -1;
273 static int hf_docsis_tlv_tcc_refid = -1;
274 static int hf_docsis_tlv_tcc_us_ch_action= -1;
275 static int hf_docsis_tlv_tcc_us_ch_id= -1;
276 static int hf_docsis_tlv_tcc_new_us_ch_id= -1;
277 static int hf_docsis_tlv_tcc_ucd = -1;
278 static int hf_docsis_tlv_tcc_rng_sid= -1;
279 static int hf_docsis_tlv_tcc_init_tech= -1;
280 static int hf_docsis_tlv_tcc_rng_parms= -1;
281 static int hf_docsis_tlv_tcc_dyn_rng_win= -1;
282 static int hf_docsis_tlv_tcc_err = -1;
284 static int hf_docsis_rng_parms_us_ch_id = -1;
285 static int hf_docsis_rng_parms_time_off_int = -1;
286 static int hf_docsis_rng_parms_time_off_frac = -1;
287 static int hf_docsis_rng_parms_power_off = -1;
288 static int hf_docsis_rng_parms_freq_off = -1;
290 static int hf_docsis_tcc_err_subtype = -1;
291 static int hf_docsis_tcc_err_code = -1;
292 static int hf_docsis_tcc_err_msg = -1;
294 static int hf_docsis_sid_cl_sf_id = -1;
295 static int hf_docsis_sid_cl_enc = -1;
296 static int hf_docsis_sid_cl_so_crit = -1;
298 static int hf_docsis_sid_cl_enc_id = -1;
299 static int hf_docsis_sid_cl_enc_map = -1;
301 static int hf_docsis_sid_cl_map_us_ch_id = -1;
302 static int hf_docsis_sid_cl_map_sid = -1;
303 static int hf_docsis_sid_cl_map_action = -1;
305 static int hf_docsis_sid_cl_so_max_req = -1;
306 static int hf_docsis_sid_cl_so_max_out_bytes = -1;
307 static int hf_docsis_sid_cl_so_max_req_bytes = -1;
308 static int hf_docsis_sid_cl_so_max_time = -1;
310 static int hf_docsis_tlv_rcp_id = -1;
311 static int hf_docsis_tlv_rcp_name = -1;
312 static int hf_docsis_tlv_rcp_freq_spc = -1;
313 static int hf_docsis_tlv_rcp_rcv_mod_enc = -1;
314 static int hf_docsis_tlv_rcp_rcv_ch = -1;
315 static int hf_docsis_tlv_rcp_ven_spec = -1;
317 static int hf_docsis_rcv_mod_enc_idx = -1;
318 static int hf_docsis_rcv_mod_enc_adj_ch = -1;
319 static int hf_docsis_rcv_mod_enc_ch_bl_rng = -1;
320 static int hf_docsis_rcv_mod_enc_ctr_freq_asgn = -1;
321 static int hf_docsis_rcv_mod_enc_rsq_ch_subs_cap = -1;
322 static int hf_docsis_rcv_mod_enc_conn = -1;
323 static int hf_docsis_rcv_mod_enc_phy_layr_parms = -1;
325 static int hf_docsis_rcc_rcv_mod_enc_idx = -1;
326 static int hf_docsis_rcc_rcv_mod_enc_ctr_freq_asgn = -1;
327 static int hf_docsis_rcc_rcv_mod_enc_conn = -1;
329 static int hf_docsis_ch_bl_rng_min_ctr_freq = -1;
330 static int hf_docsis_ch_bl_rng_max_ctr_freq = -1;
332 static int hf_docsis_rcv_ch_idx = -1;
333 static int hf_docsis_rcv_ch_conn = -1;
334 static int hf_docsis_rcv_ch_conn_off = -1;
335 static int hf_docsis_rcv_ch_prim_ds_ch_ind = -1;
337 static int hf_docsis_rcc_rcv_ch_idx = -1;
338 static int hf_docsis_rcc_rcv_ch_conn = -1;
339 static int hf_docsis_rcc_rcv_ch_ctr_freq_asgn = -1;
340 static int hf_docsis_rcc_rcv_ch_prim_ds_ch_ind = -1;
342 static int hf_docsis_tlv_rcc_id = -1;
343 static int hf_docsis_tlv_rcc_rcv_mod_enc = -1;
344 static int hf_docsis_tlv_rcc_rcv_ch = -1;
345 static int hf_docsis_tlv_rcc_part_serv_ds_ch = -1;
346 static int hf_docsis_tlv_rcc_ven_spec = -1;
347 static int hf_docsis_tlv_rcc_err = -1;
349 static int hf_docsis_tlv_rcc_err_mod_or_ch = -1;
350 static int hf_docsis_tlv_rcc_err_idx = -1;
351 static int hf_docsis_tlv_rcc_err_param = -1;
352 static int hf_docsis_tlv_rcc_err_code = -1;
353 static int hf_docsis_tlv_rcc_err_msg = -1;
355 static int hf_docsis_tlv_dsid_id = -1;
356 static int hf_docsis_tlv_dsid_action = -1;
357 static int hf_docsis_tlv_dsid_ds_reseq = -1;
358 static int hf_docsis_tlv_dsid_mc = -1;
360 static int hf_docsis_ds_reseq_dsid = -1;
361 static int hf_docsis_ds_reseq_ch_lst = -1;
362 static int hf_docsis_ds_reseq_wait_time = -1;
363 static int hf_docsis_ds_reseq_warn_thresh = -1;
364 static int hf_docsis_ds_reseq_ho_timer = -1;
366 static int hf_docsis_tlv_dsid_mc_addr = -1;
367 static int hf_docsis_tlv_dsid_mc_cmim = -1;
368 static int hf_docsis_tlv_dsid_mc_group = -1;
369 static int hf_docsis_tlv_dsid_mc_phs = -1;
371 static int hf_docsis_mc_addr_action = -1;
372 static int hf_docsis_mc_addr_addr = -1;
374 static int hf_docsis_tlv_sec_assoc_action = -1;
375 static int hf_docsis_tlv_sec_assoc_desc = -1;
377 static int hf_docsis_ch_asgn_us_ch_id = -1;
378 static int hf_docsis_ch_asgn_rx_freq = -1;
380 static int hf_docsis_cmts_mc_sess_enc_grp = -1;
381 static int hf_docsis_cmts_mc_sess_enc_src = -1;
383 /* Initialize the subtree pointers */
384 static gint ett_docsis_tlv = -1;
385 static gint ett_docsis_tlv_cos = -1;
386 static gint ett_docsis_tlv_mcap = -1;
387 static gint ett_docsis_tlv_clsfr = -1;
388 static gint ett_docsis_tlv_clsfr_ip = -1;
389 static gint ett_docsis_tlv_clsfr_eth = -1;
390 static gint ett_docsis_tlv_clsfr_err = -1;
391 static gint ett_docsis_tlv_phs = -1;
392 static gint ett_docsis_tlv_phs_err = -1;
393 static gint ett_docsis_tlv_clsfr_dot1q = -1;
394 static gint ett_docsis_tlv_reqxmitpol = -1;
395 static gint ett_docsis_tlv_sflow_err = -1;
396 static gint ett_docsis_tlv_svc_unavail = -1;
397 static gint ett_docsis_tlv_snmpv3_kick = -1;
398 static gint ett_docsis_tlv_ds_ch_list = -1;
399 static gint ett_docsis_tlv_ds_ch_list_single = -1;
400 static gint ett_docsis_tlv_ds_ch_list_range = -1;
401 static gint ett_docsis_tlv_dut_filter = -1;
402 static gint ett_docsis_tlv_tcc = -1;
403 static gint ett_docsis_tlv_tcc_ucd = -1;
404 static gint ett_docsis_tlv_tcc_rng_parms = -1;
405 static gint ett_docsis_tlv_tcc_err = -1;
406 static gint ett_docsis_tlv_sid_cl = -1;
407 static gint ett_docsis_tlv_sid_cl_enc = -1;
408 static gint ett_docsis_tlv_sid_cl_enc_map = -1;
409 static gint ett_docsis_tlv_sid_cl_so = -1;
410 static gint ett_docsis_tlv_rcp = -1;
411 static gint ett_docsis_tlv_rcp_rcv_mod_enc = -1;
412 static gint ett_docsis_tlv_rcp_ch_bl_rng = -1;
413 static gint ett_docsis_tlv_rcp_rcv_ch = -1;
414 static gint ett_docsis_tlv_rcc = -1;
415 static gint ett_docsis_tlv_rcc_rcv_mod_enc = -1;
416 static gint ett_docsis_tlv_rcc_rcv_ch = -1;
417 static gint ett_docsis_tlv_rcc_err = -1;
418 static gint ett_docsis_tlv_dsid = -1;
419 static gint ett_docsis_tlv_dsid_ds_reseq = -1;
420 static gint ett_docsis_tlv_dsid_mc = -1;
421 static gint ett_docsis_tlv_dsid_mc_addr = -1;
422 static gint ett_docsis_tlv_sec_assoc = -1;
423 static gint ett_docsis_tlv_ch_asgn = -1;
424 static gint ett_docsis_cmts_mc_sess_enc = -1;
426 static const true_false_string on_off_tfs = {
431 static const value_string on_off_vals[] = {
437 static const true_false_string ena_dis_tfs = {
442 static const value_string docs_ver_vals[] = {
448 static const true_false_string activation_tfs = {
453 static const value_string dsc_act_vals[] = {
454 {0, "DSC Add Classifier"},
455 {1, "DSC Replace Classifier"},
456 {2, "DSC Delete Classifier"},
460 static const value_string qos_param_vals[] = {
461 {0x01, "Apply to provisioned set only"},
462 {0x02, "Perform admission control add apply to admitted set"},
463 {0x03, "Apply to provisioned and admitted set; Perform admission control"},
464 {0x04, "Perform admission control if needed and apply to active set"},
466 "Apply to provisioned and active sets; Admission control on admitted set in separate service flow, and activate service flow"},
468 "Perform admission control and activate; Apply to admitted and active sets"},
470 "Apply to Provisioned, Active and Admitted Sets; Admission Control and Activate Service Flow"},
474 static const value_string sched_type_vals[] = {
476 {1, "Undefined (CMTS Dependent)"},
477 {2, "Best Effort Service"},
478 {3, "Non-Real-Time Polling Service"},
479 {4, "Real-Time Polling Service"},
480 {5, "Unsolicited Grant Service w/Activity Detection"},
481 {6, "Unsolicited Grant Service"},
485 static const value_string action_vals[] = {
488 {2, "Delete PHS Rule"},
489 {3, "Delete all PHS Rules"},
493 static const true_false_string verify_tfs = {
498 static const value_string rng_tech_vals[] = {
499 {0, "Perform initial maintenance on new channel"},
500 {1, "Perform only station maintenance on new channel"},
501 {2, "Perform either initial maintenance or station maintenance on new channel"},
502 {3, "Use the new channel directly without performing initial or station maintenance"},
507 const value_string docsis_conf_code[] = {
509 {1, "Reject: Other/Auth failure (1.0)"},
510 {2, "Reject: Unrecognized configuration setting/COS failure (1.0)"},
511 {3, "Reject: Temporary/Reject resource"},
512 {4, "Reject: Permanent/Reject admin"},
513 {5, "Reject: Not owner"},
514 {6, "Reject: Service flow not found"},
515 {7, "Reject: Service flow exists"},
516 {8, "Reject: Required parameter not present"},
517 {9, "Reject: Header suppression"},
518 {10, "Reject: Unknown transaction id"},
519 {11, "Reject: Authentication failure"},
520 {12, "Reject: Add aborted"},
521 {13, "Reject: Multiple errors"},
522 {14, "Reject: Classifier not found"},
523 {15, "Reject: Classifier exists"},
524 {16, "Reject: PHS rule not found"},
525 {17, "Reject: PHS rule exists"},
526 {18, "Reject: Duplicate reference ID or index in message"},
527 {19, "Reject: Multiple upstream service flows"},
528 {20, "Reject: Multiple downstream service flows"},
529 {21, "Reject: Classifier for another service flow "},
530 {22, "Reject: PHS for another service flow "},
531 {23, "Reject: Parameter invalid for context"},
532 {24, "Reject: Authorization failure"},
533 {25, "Reject: Temporary DCC"},
536 {182, "Reject: Already There"},
537 {200, "Reject: Major Service Flow Error"},
538 {201, "Reject: Major Classifier Error"},
539 {202, "Reject: Major PHS Rule Error"},
540 {203, "Reject: Multiple Major Errors"},
541 {204, "Reject: Message Syntax Error"},
542 {205, "Reject: Primary Service Flow Error"},
543 {206, "Reject: Message Too Big"},
544 {207, "Reject: Invalid Modem Capabilities"},
548 static const value_string us_ch_action_vals[] = {
558 static const value_string init_tech_vals[] = {
560 {1, "Perform broadcast initial ranging before normal ops"},
561 {2, "Perform unicast ranging before normal ops"},
562 {3, "Perform either broadcast or unicast ranging before normal ops"},
563 {4, "Use new channel directly without reinitializing or ranging"},
567 static const value_string sid_ch_map_vals[] = {
574 static const value_string mod_or_ch_vals[] = {
579 {4, "Receive Module"},
580 {5, "Receive Channel"},
584 static const value_string dsid_action_vals[] = {
591 static const value_string add_del_vals[] = {
597 static const value_string init_reason_vals[] = {
600 {2, "T17 Lost Sync"},
601 {3, "All Upstream Failed"},
603 {5, "Link Local Address in use"},
605 {7, "REG-RSP not ok"},
607 {9, "Failed Primary Downstream"},
608 {10, "TCS failed on all upstreams"},
615 {17, "No Primary SF on US Channel"},
616 {18, "CM Control Init"},
617 {19, "Dynamic Range Window Violation"},
621 static const value_string docsis_freq_rng_vals[] = {
622 {0, "Standard Upstream Frequency Range"},
623 {1, "Standard and Extended Upstream Frequency Range"},
627 static const value_string mc_dsid_fwd_vals[] = {
628 {0, "Support for GMAC explicit multicast DCID Forwarding"},
629 {1, "Support for GMAC promiscuous multicast DCID Forwarding"},
633 static const value_string fctype_fwd_vals[] = {
634 {0, "Isolation Packet PDU Header (FC_Type of 10) is not forwarded"},
635 {1, "Isolation Packet PDU Header (FC_Type of 10) is forwarded"},
639 /* Code to actually dissect the packets */
641 dissect_phs_err (tvbuff_t * tvb, proto_tree * tree, int start,
646 proto_tree *err_tree;
649 proto_tree_add_text (tree, tvb, start, len,
650 "5 Service Flow Error Encodings (Length = %u)", len);
651 err_tree = proto_item_add_subtree (it, ett_docsis_tlv_sflow_err);
653 while (pos < (start + len))
655 type = tvb_get_guint8 (tvb, pos++);
656 length = tvb_get_guint8 (tvb, pos++);
662 proto_tree_add_item (err_tree, hf_docsis_tlv_phs_err_param, tvb,
663 pos, length, ENC_BIG_ENDIAN);
667 THROW (ReportedBoundsError);
673 proto_tree_add_item (err_tree, hf_docsis_tlv_phs_err_code, tvb,
674 pos, length, ENC_BIG_ENDIAN);
678 THROW (ReportedBoundsError);
682 proto_tree_add_item (err_tree, hf_docsis_tlv_phs_err_msg, tvb, pos,
692 dissect_phs (tvbuff_t * tvb, proto_tree * tree, int start, guint16 len)
696 proto_tree *phs_tree;
699 proto_tree_add_text (tree, tvb, start, len,
700 "26 PHS Encodings (Length = %u)", len);
701 phs_tree = proto_item_add_subtree (it, ett_docsis_tlv_phs);
703 while (pos < (start + len))
705 type = tvb_get_guint8 (tvb, pos++);
706 length = tvb_get_guint8 (tvb, pos++);
712 proto_tree_add_item (phs_tree, hf_docsis_tlv_phs_class_ref, tvb,
713 pos, length, ENC_BIG_ENDIAN);
717 THROW (ReportedBoundsError);
723 proto_tree_add_item (phs_tree, hf_docsis_tlv_phs_class_id, tvb,
724 pos, length, ENC_BIG_ENDIAN);
728 THROW (ReportedBoundsError);
734 proto_tree_add_item (phs_tree, hf_docsis_tlv_phs_sflow_ref, tvb,
735 pos, length, ENC_BIG_ENDIAN);
739 THROW (ReportedBoundsError);
745 proto_tree_add_item (phs_tree, hf_docsis_tlv_phs_sflow_id, tvb,
746 pos, length, ENC_BIG_ENDIAN);
750 THROW (ReportedBoundsError);
756 proto_tree_add_item (phs_tree, hf_docsis_tlv_phs_dsc_action,
757 tvb, pos, length, ENC_BIG_ENDIAN);
761 THROW (ReportedBoundsError);
765 dissect_phs_err (tvb, phs_tree, pos, length);
767 proto_tree_add_item (phs_tree, hf_docsis_tlv_phs_phsf, tvb, pos,
773 proto_tree_add_item (phs_tree, hf_docsis_tlv_phs_phsi, tvb, pos,
774 length, ENC_BIG_ENDIAN);
778 THROW (ReportedBoundsError);
782 proto_tree_add_item (phs_tree, hf_docsis_tlv_phs_phsm, tvb, pos,
788 proto_tree_add_item (phs_tree, hf_docsis_tlv_phs_phss, tvb, pos,
789 length, ENC_BIG_ENDIAN);
793 THROW (ReportedBoundsError);
796 case PHS_VERIFICATION:
799 proto_tree_add_item (phs_tree, hf_docsis_tlv_phs_phsf, tvb, pos,
804 THROW (ReportedBoundsError);
807 case PHS_VENDOR_SPEC:
808 proto_tree_add_item (phs_tree, hf_docsis_tlv_phs_vendorspec, tvb,
809 pos, length, ENC_NA);
819 dissect_reqxmit_policy (tvbuff_t * tvb, proto_tree * tree, int start)
823 proto_tree *pol_tree;
825 value = tvb_get_ntohl (tvb, start);
827 proto_tree_add_item (tree, hf_docsis_tlv_sflow_reqxmit_pol, tvb, start, 4,
829 pol_tree = proto_item_add_subtree (it, ett_docsis_tlv_reqxmitpol);
832 proto_tree_add_text (pol_tree, tvb, start, 4,
833 "Service flow MUST NOT use \"all CMs\" broadcast request opportunities");
835 proto_tree_add_text (pol_tree, tvb, start, 4,
836 "Service flow MUST NOT use priority multicast request opportunities");
838 proto_tree_add_text (pol_tree, tvb, start, 4,
839 "Service flow MUST NOT use Request/Data opportunities for requests");
841 proto_tree_add_text (pol_tree, tvb, start, 4,
842 "Service flow MUST NOT use Request/Data opportunities for data");
844 proto_tree_add_text (pol_tree, tvb, start, 4,
845 "Service flow MUST NOT use piggy back requests with data");
847 proto_tree_add_text (pol_tree, tvb, start, 4,
848 "Service flow MUST NOT concatenate data");
850 proto_tree_add_text (pol_tree, tvb, start, 4,
851 "Service flow MUST NOT fragment data");
853 proto_tree_add_text (pol_tree, tvb, start, 4,
854 "Service flow MUST NOT suppress payload headers");
856 proto_tree_add_text (pol_tree, tvb, start, 4,
857 "Service flow MUST drop packets that do not fit in the UGS size");
861 dissect_sflow_err (tvbuff_t * tvb, proto_tree * tree, int start,
866 proto_tree *err_tree;
869 proto_tree_add_text (tree, tvb, start, len,
870 "5 Service Flow Error Encodings (Length = %u)", len);
871 err_tree = proto_item_add_subtree (it, ett_docsis_tlv_sflow_err);
873 while (pos < (start + len))
875 type = tvb_get_guint8 (tvb, pos++);
876 length = tvb_get_guint8 (tvb, pos++);
882 proto_tree_add_item (err_tree, hf_docsis_tlv_sflow_err_param,
883 tvb, pos, length, ENC_BIG_ENDIAN);
887 THROW (ReportedBoundsError);
893 proto_tree_add_item (err_tree, hf_docsis_tlv_sflow_err_code,
894 tvb, pos, length, ENC_BIG_ENDIAN);
898 THROW (ReportedBoundsError);
902 proto_tree_add_item (err_tree, hf_docsis_tlv_sflow_err_msg, tvb,
912 dissect_downstream_sflow (tvbuff_t * tvb, proto_tree * sflow_tree,
913 int start, guint16 len)
917 while (pos < (start + len))
919 type = tvb_get_guint8 (tvb, pos++);
920 length = tvb_get_guint8 (tvb, pos++);
923 case SFW_MAX_DOWN_LAT:
926 proto_tree_add_item (sflow_tree,
927 hf_docsis_tlv_sflow_max_down_latency, tvb,
928 pos, length, ENC_BIG_ENDIAN);
932 THROW (ReportedBoundsError);
943 dissect_upstream_sflow (tvbuff_t * tvb, proto_tree * sflow_tree,
944 int start, guint16 len)
948 while (pos < (start + len))
950 type = tvb_get_guint8 (tvb, pos++);
951 length = tvb_get_guint8 (tvb, pos++);
954 case SFW_MAX_CONCAT_BURST:
957 proto_tree_add_item (sflow_tree,
958 hf_docsis_tlv_sflow_max_concat_burst, tvb,
959 pos, length, ENC_BIG_ENDIAN);
963 THROW (ReportedBoundsError);
967 case SFW_SCHEDULING_TYPE:
970 proto_tree_add_item (sflow_tree, hf_docsis_tlv_sflow_sched_type,
971 tvb, pos, length, ENC_BIG_ENDIAN);
975 THROW (ReportedBoundsError);
978 case SFW_REQ_XMIT_POL:
979 dissect_reqxmit_policy (tvb, sflow_tree, pos);
981 case SFW_NOM_POLL_INT:
984 proto_tree_add_item (sflow_tree,
985 hf_docsis_tlv_sflow_nominal_polling, tvb,
986 pos, length, ENC_BIG_ENDIAN);
990 THROW (ReportedBoundsError);
993 case SFW_POLL_JTTR_TOL:
996 proto_tree_add_item (sflow_tree,
997 hf_docsis_tlv_sflow_tolerated_jitter, tvb,
998 pos, length, ENC_BIG_ENDIAN);
1002 THROW (ReportedBoundsError);
1008 proto_tree_add_item (sflow_tree, hf_docsis_tlv_sflow_ugs_size,
1009 tvb, pos, length, ENC_BIG_ENDIAN);
1013 THROW (ReportedBoundsError);
1016 case SFW_NOM_GRNT_INTV:
1019 proto_tree_add_item (sflow_tree,
1020 hf_docsis_tlv_sflow_nom_grant_intvl, tvb,
1021 pos, length, ENC_BIG_ENDIAN);
1025 THROW (ReportedBoundsError);
1028 case SFW_GRNT_JTTR_TOL:
1031 proto_tree_add_item (sflow_tree,
1032 hf_docsis_tlv_sflow_tol_grant_jitter, tvb,
1033 pos, length, ENC_BIG_ENDIAN);
1037 THROW (ReportedBoundsError);
1040 case SFW_GRNTS_PER_INTV:
1043 proto_tree_add_item (sflow_tree,
1044 hf_docsis_tlv_sflow_grants_per_intvl, tvb,
1045 pos, length, ENC_BIG_ENDIAN);
1049 THROW (ReportedBoundsError);
1052 case SFW_IP_TOS_OVERWRITE:
1055 proto_tree_add_item (sflow_tree,
1056 hf_docsis_tlv_sflow_ip_tos_overwrite, tvb,
1057 pos, length, ENC_BIG_ENDIAN);
1061 THROW (ReportedBoundsError);
1064 case SFW_UG_TIME_REF:
1067 proto_tree_add_item (sflow_tree,
1068 hf_docsis_tlv_sflow_ugs_timeref, tvb, pos,
1069 length, ENC_BIG_ENDIAN);
1073 THROW (ReportedBoundsError);
1084 dissect_sflow (tvbuff_t * tvb, proto_tree * tree, int start, guint16 len,
1087 guint8 type, length;
1089 proto_tree *sflow_tree;
1091 if (direction == 24)
1093 proto_tree_add_text (tree, tvb, start, len,
1094 "24 Upstream Service Flow (Length = %u)", len);
1095 else if (direction == 25)
1097 proto_tree_add_text (tree, tvb, start, len,
1098 "25 Downstream Service Flow (Length = %u)", len);
1101 sflow_tree = proto_item_add_subtree (it, ett_docsis_tlv_clsfr);
1103 while (pos < (start + len))
1105 type = tvb_get_guint8 (tvb, pos++);
1106 length = tvb_get_guint8 (tvb, pos++);
1112 proto_tree_add_item (sflow_tree, hf_docsis_tlv_sflow_ref, tvb,
1113 pos, length, ENC_BIG_ENDIAN);
1117 THROW (ReportedBoundsError);
1123 proto_tree_add_item (sflow_tree, hf_docsis_tlv_sflow_id, tvb,
1124 pos, length, ENC_BIG_ENDIAN);
1128 THROW (ReportedBoundsError);
1134 proto_tree_add_item (sflow_tree, hf_docsis_tlv_sflow_sid, tvb,
1135 pos, length, ENC_BIG_ENDIAN);
1139 THROW (ReportedBoundsError);
1142 case SFW_SERVICE_CLASS_NAME:
1143 proto_tree_add_item (sflow_tree, hf_docsis_tlv_sflow_classname, tvb,
1144 pos, length, FALSE);
1147 dissect_sflow_err (tvb, sflow_tree, pos, length);
1149 case SFW_QOS_SET_TYPE:
1152 proto_tree_add_item (sflow_tree, hf_docsis_tlv_sflow_qos_param,
1153 tvb, pos, length, ENC_BIG_ENDIAN);
1157 THROW (ReportedBoundsError);
1163 proto_tree_add_item (sflow_tree, hf_docsis_tlv_sflow_traf_pri,
1164 tvb, pos, length, ENC_BIG_ENDIAN);
1168 THROW (ReportedBoundsError);
1171 case SFW_MAX_SUSTAINED:
1174 proto_tree_add_item (sflow_tree, hf_docsis_tlv_sflow_max_sus,
1175 tvb, pos, length, ENC_BIG_ENDIAN);
1179 THROW (ReportedBoundsError);
1185 proto_tree_add_item (sflow_tree, hf_docsis_tlv_sflow_max_burst,
1186 tvb, pos, length, ENC_BIG_ENDIAN);
1190 THROW (ReportedBoundsError);
1193 case SFW_MIN_RSVD_TRAF:
1196 proto_tree_add_item (sflow_tree, hf_docsis_tlv_sflow_min_traf,
1197 tvb, pos, length, ENC_BIG_ENDIAN);
1201 THROW (ReportedBoundsError);
1204 case SFW_MIN_RSVD_PACKETSIZE:
1207 proto_tree_add_item (sflow_tree,
1208 hf_docsis_tlv_sflow_ass_min_pkt_size, tvb,
1209 pos, length, ENC_BIG_ENDIAN);
1213 THROW (ReportedBoundsError);
1216 case SFW_ACTIVE_QOS_TIMEOUT:
1219 proto_tree_add_item (sflow_tree,
1220 hf_docsis_tlv_sflow_timeout_active, tvb,
1221 pos, length, ENC_BIG_ENDIAN);
1225 THROW (ReportedBoundsError);
1228 case SFW_ADMITT_QOS_TIMEOUT:
1231 proto_tree_add_item (sflow_tree,
1232 hf_docsis_tlv_sflow_timeout_admitted, tvb,
1233 pos, length, ENC_BIG_ENDIAN);
1237 THROW (ReportedBoundsError);
1240 case SFW_VENDOR_SPEC:
1241 proto_tree_add_item (sflow_tree, hf_docsis_tlv_sflow_vendor_spec,
1242 tvb, pos, length, ENC_NA);
1245 if (direction == 24)
1246 dissect_upstream_sflow (tvb, sflow_tree, pos - 2, length);
1248 dissect_downstream_sflow (tvb, sflow_tree, pos - 2, length);
1251 } /* switch (type) */
1253 } /* while(pos < start + len) */
1258 dissect_dot1q_clsfr (tvbuff_t * tvb, proto_tree * tree, int start,
1261 guint8 type, length;
1263 proto_tree *dot1qclsfr_tree;
1266 proto_tree_add_text (tree, tvb, start, len,
1267 "11 801.1P/Q Classifiers (Length = %u)", len);
1268 dot1qclsfr_tree = proto_item_add_subtree (it, ett_docsis_tlv_cos);
1270 while (pos < (start + len))
1272 type = tvb_get_guint8 (tvb, pos++);
1273 length = tvb_get_guint8 (tvb, pos++);
1276 case CFR_D1Q_USER_PRI:
1279 proto_tree_add_item (dot1qclsfr_tree,
1280 hf_docsis_tlv_dot1qclsfr_user_pri, tvb,
1281 pos, length, ENC_BIG_ENDIAN);
1285 THROW (ReportedBoundsError);
1288 case CFR_D1Q_VLAN_ID:
1291 proto_tree_add_item (dot1qclsfr_tree,
1292 hf_docsis_tlv_dot1qclsfr_vlanid, tvb, pos,
1293 length, ENC_BIG_ENDIAN);
1297 THROW (ReportedBoundsError);
1300 case CFR_D1Q_VENDOR_SPEC:
1301 proto_tree_add_item (dot1qclsfr_tree,
1302 hf_docsis_tlv_dot1qclsfr_vendorspec, tvb, pos,
1312 dissect_eth_clsfr (tvbuff_t * tvb, proto_tree * tree, int start,
1315 guint8 type, length;
1317 proto_tree *ethclsfr_tree;
1320 proto_tree_add_text (tree, tvb, start, len,
1321 "10 Ethernet Classifiers (Length = %u)", len);
1322 ethclsfr_tree = proto_item_add_subtree (it, ett_docsis_tlv_clsfr_eth);
1324 while (pos < (start + len))
1326 type = tvb_get_guint8 (tvb, pos++);
1327 length = tvb_get_guint8 (tvb, pos++);
1330 case CFR_ETH_DST_MAC:
1333 proto_tree_add_item (ethclsfr_tree, hf_docsis_tlv_ethclsfr_dmac,
1334 tvb, pos, length, FALSE);
1338 THROW (ReportedBoundsError);
1341 case CFR_ETH_SRC_MAC:
1344 proto_tree_add_item (ethclsfr_tree, hf_docsis_tlv_ethclsfr_smac,
1345 tvb, pos, length, FALSE);
1349 THROW (ReportedBoundsError);
1355 proto_tree_add_item (ethclsfr_tree,
1356 hf_docsis_tlv_ethclsfr_ethertype, tvb, pos,
1357 length, ENC_BIG_ENDIAN);
1361 THROW (ReportedBoundsError);
1374 dissect_clsfr_err (tvbuff_t * tvb, proto_tree * tree, int start,
1377 guint8 type, length;
1379 proto_tree *err_tree;
1382 proto_tree_add_text (tree, tvb, start, len,
1383 "8 Classifier Error Encodings (Length = %u)", len);
1384 err_tree = proto_item_add_subtree (it, ett_docsis_tlv_clsfr_err);
1386 while (pos < (start + len))
1388 type = tvb_get_guint8 (tvb, pos++);
1389 length = tvb_get_guint8 (tvb, pos++);
1394 proto_tree_add_item (err_tree, hf_docsis_tlv_clsfr_err_param, tvb,
1395 pos, length, ENC_BIG_ENDIAN);
1396 else if (length == 2)
1398 proto_tree_add_item (err_tree, hf_docsis_tlv_clsfr_err_param,
1399 tvb, pos, 1, ENC_BIG_ENDIAN);
1400 proto_tree_add_item (err_tree, hf_docsis_tlv_clsfr_err_param,
1401 tvb, pos + 1, 1, ENC_BIG_ENDIAN);
1405 THROW (ReportedBoundsError);
1411 proto_tree_add_item (err_tree, hf_docsis_tlv_clsfr_err_code,
1412 tvb, pos, length, ENC_BIG_ENDIAN);
1416 THROW (ReportedBoundsError);
1420 proto_tree_add_item (err_tree, hf_docsis_tlv_clsfr_err_msg, tvb,
1421 pos, length, FALSE);
1433 dissect_ip_classifier (tvbuff_t * tvb, proto_tree * tree, int start,
1436 guint8 type, length;
1438 proto_tree *ipclsfr_tree;
1441 proto_tree_add_text (tree, tvb, start, len,
1442 "9 IP Classifier (Length = %u)", len);
1443 ipclsfr_tree = proto_item_add_subtree (it, ett_docsis_tlv_clsfr_ip);
1445 while (pos < (start + len))
1447 type = tvb_get_guint8 (tvb, pos++);
1448 length = tvb_get_guint8 (tvb, pos++);
1451 case CFR_IP_TOS_RANGE_MASK:
1454 proto_tree_add_item (ipclsfr_tree,
1455 hf_docsis_tlv_ipclsfr_tosmask, tvb, pos,
1460 THROW (ReportedBoundsError);
1466 proto_tree_add_item (ipclsfr_tree,
1467 hf_docsis_tlv_ipclsfr_ipproto, tvb, pos,
1468 length, ENC_BIG_ENDIAN);
1472 THROW (ReportedBoundsError);
1475 case CFR_IP_SOURCE_ADDR:
1478 proto_tree_add_item (ipclsfr_tree, hf_docsis_tlv_ipclsfr_src,
1479 tvb, pos, length, ENC_BIG_ENDIAN);
1483 THROW (ReportedBoundsError);
1486 case CFR_IP_SOURCE_MASK:
1489 proto_tree_add_item (ipclsfr_tree,
1490 hf_docsis_tlv_ipclsfr_srcmask, tvb, pos,
1491 length, ENC_BIG_ENDIAN);
1495 THROW (ReportedBoundsError);
1498 case CFR_IP_DEST_ADDR:
1501 proto_tree_add_item (ipclsfr_tree, hf_docsis_tlv_ipclsfr_dst,
1502 tvb, pos, length, ENC_BIG_ENDIAN);
1506 THROW (ReportedBoundsError);
1509 case CFR_IP_DEST_MASK:
1512 proto_tree_add_item (ipclsfr_tree,
1513 hf_docsis_tlv_ipclsfr_dstmask, tvb, pos,
1514 length, ENC_BIG_ENDIAN);
1518 THROW (ReportedBoundsError);
1521 case CFR_IP_SRCPORT_START:
1524 proto_tree_add_item (ipclsfr_tree,
1525 hf_docsis_tlv_ipclsfr_sport_start, tvb,
1526 pos, length, ENC_BIG_ENDIAN);
1530 THROW (ReportedBoundsError);
1533 case CFR_IP_SRCPORT_END:
1536 proto_tree_add_item (ipclsfr_tree,
1537 hf_docsis_tlv_ipclsfr_sport_end, tvb, pos,
1538 length, ENC_BIG_ENDIAN);
1542 THROW (ReportedBoundsError);
1545 case CFR_IP_DSTPORT_START:
1548 proto_tree_add_item (ipclsfr_tree,
1549 hf_docsis_tlv_ipclsfr_dport_start, tvb,
1550 pos, length, ENC_BIG_ENDIAN);
1554 THROW (ReportedBoundsError);
1557 case CFR_IP_DSTPORT_END:
1560 proto_tree_add_item (ipclsfr_tree,
1561 hf_docsis_tlv_ipclsfr_dport_end, tvb, pos,
1562 length, ENC_BIG_ENDIAN);
1566 THROW (ReportedBoundsError);
1576 dissect_classifiers (tvbuff_t * tvb, proto_tree * tree, int start,
1577 guint16 len, guint8 direction)
1579 guint8 type, length;
1581 proto_tree *clsfr_tree;
1583 if (direction == 22)
1585 proto_tree_add_text (tree, tvb, start, len,
1586 "22 Upstream Packet Classifier (Length = %u)",
1588 else if (direction == 23)
1590 proto_tree_add_text (tree, tvb, start, len,
1591 "23 Downstream Packet Classifier (Length = %u)",
1595 clsfr_tree = proto_item_add_subtree (it, ett_docsis_tlv_clsfr);
1597 while (pos < (start + len))
1599 type = tvb_get_guint8 (tvb, pos++);
1600 length = tvb_get_guint8 (tvb, pos++);
1606 proto_tree_add_item (clsfr_tree, hf_docsis_tlv_clsfr_ref, tvb,
1607 pos, length, ENC_BIG_ENDIAN);
1611 THROW (ReportedBoundsError);
1617 proto_tree_add_item (clsfr_tree, hf_docsis_tlv_clsfr_id, tvb,
1618 pos, length, ENC_BIG_ENDIAN);
1622 THROW (ReportedBoundsError);
1628 proto_tree_add_item (clsfr_tree, hf_docsis_tlv_clsfr_sflow_ref,
1629 tvb, pos, length, ENC_BIG_ENDIAN);
1633 THROW (ReportedBoundsError);
1639 proto_tree_add_item (clsfr_tree, hf_docsis_tlv_clsfr_sflow_id,
1640 tvb, pos, length, ENC_BIG_ENDIAN);
1644 THROW (ReportedBoundsError);
1650 proto_tree_add_item (clsfr_tree, hf_docsis_tlv_clsfr_rule_pri,
1651 tvb, pos, length, ENC_BIG_ENDIAN);
1655 THROW (ReportedBoundsError);
1661 proto_tree_add_item (clsfr_tree, hf_docsis_tlv_clsfr_act_state,
1662 tvb, pos, length, ENC_BIG_ENDIAN);
1666 THROW (ReportedBoundsError);
1669 case CFR_DSA_ACTION:
1672 proto_tree_add_item (clsfr_tree, hf_docsis_tlv_clsfr_dsc_act,
1673 tvb, pos, length, ENC_BIG_ENDIAN);
1677 THROW (ReportedBoundsError);
1681 dissect_clsfr_err (tvb, clsfr_tree, pos, length);
1683 case CFR_IP_CLASSIFIER:
1684 dissect_ip_classifier (tvb, clsfr_tree, pos, length);
1686 case CFR_ETH_CLASSIFIER:
1687 dissect_eth_clsfr (tvb, clsfr_tree, pos, length);
1689 case CFR_8021Q_CLASSIFIER:
1690 dissect_dot1q_clsfr (tvb, clsfr_tree, pos, length);
1692 case CFR_VENDOR_SPEC:
1693 proto_tree_add_item (clsfr_tree, hf_docsis_tlv_clsfr_vendor_spc,
1694 tvb, pos, length, ENC_NA);
1706 dissect_doc10cos (tvbuff_t * tvb, proto_tree * tree, int start,
1709 guint8 type, length;
1711 proto_tree *doc10cos_tree;
1714 proto_tree_add_text (tree, tvb, start, len,
1715 "1 Docsis 1.0 Class of Service (Length = %u)", len);
1716 doc10cos_tree = proto_item_add_subtree (it, ett_docsis_tlv_cos);
1718 while (pos < (start + len))
1720 type = tvb_get_guint8 (tvb, pos++);
1721 length = tvb_get_guint8 (tvb, pos++);
1727 proto_tree_add_item (doc10cos_tree, hf_docsis_tlv_cos_id, tvb,
1728 pos, length, ENC_BIG_ENDIAN);
1732 THROW (ReportedBoundsError);
1738 proto_tree_add_item (doc10cos_tree, hf_docsis_tlv_cos_sid, tvb,
1739 pos, length, ENC_BIG_ENDIAN);
1743 THROW (ReportedBoundsError);
1753 dissect_modemcap (tvbuff_t * tvb, proto_tree * tree, int start,
1756 guint8 type, length;
1758 proto_tree *mcap_tree;
1762 proto_tree_add_text (tree, tvb, start, len,
1763 "5 Modem Capabilities Type (Length = %u)", len);
1765 mcap_tree = proto_item_add_subtree (it, ett_docsis_tlv_mcap);
1766 while (pos < (start + len))
1768 type = tvb_get_guint8 (tvb, pos++);
1769 length = tvb_get_guint8 (tvb, pos++);
1775 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_concat, tvb,
1776 pos, length, ENC_BIG_ENDIAN);
1780 THROW (ReportedBoundsError);
1783 case CAP_DOCSIS_VER:
1786 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_docs_ver,
1787 tvb, pos, length, ENC_BIG_ENDIAN);
1791 THROW (ReportedBoundsError);
1797 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_frag, tvb,
1798 pos, length, ENC_BIG_ENDIAN);
1802 THROW (ReportedBoundsError);
1808 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_phs, tvb,
1809 pos, length, ENC_BIG_ENDIAN);
1813 THROW (ReportedBoundsError);
1819 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_igmp, tvb,
1820 pos, length, ENC_BIG_ENDIAN);
1824 THROW (ReportedBoundsError);
1830 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_privacy, tvb,
1831 pos, length, ENC_BIG_ENDIAN);
1835 THROW (ReportedBoundsError);
1841 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_down_said,
1842 tvb, pos, length, FALSE);
1846 THROW (ReportedBoundsError);
1852 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_up_sid, tvb,
1853 pos, length, FALSE);
1857 THROW (ReportedBoundsError);
1863 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_8021P_filter,
1864 tvb, pos, length, ENC_BIG_ENDIAN);
1865 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_8021Q_filter,
1866 tvb, pos, length, ENC_BIG_ENDIAN);
1870 THROW (ReportedBoundsError);
1873 case CAP_XMIT_EQPERSYM:
1876 proto_tree_add_item (mcap_tree,
1877 hf_docsis_tlv_mcap_xmit_eq_taps_per_sym,
1878 tvb, pos, length, ENC_BIG_ENDIAN);
1882 THROW (ReportedBoundsError);
1885 case CAP_NUM_XMIT_EQ_TAPS:
1888 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_xmit_eq_taps,
1889 tvb, pos, length, FALSE);
1893 THROW (ReportedBoundsError);
1899 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_dcc, tvb,
1900 pos, length, ENC_BIG_ENDIAN);
1904 THROW (ReportedBoundsError);
1907 case CAP_IP_FILTERS:
1910 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_ip_filters, tvb,
1911 pos, length, ENC_BIG_ENDIAN);
1915 THROW (ReportedBoundsError);
1918 case CAP_LLC_FILTERS:
1921 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_llc_filters, tvb,
1922 pos, length, ENC_BIG_ENDIAN);
1926 THROW (ReportedBoundsError);
1929 case CAP_EXP_UNICAST_SID:
1932 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_exp_unicast_sid, tvb,
1933 pos, length, ENC_BIG_ENDIAN);
1937 THROW (ReportedBoundsError);
1943 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_rnghoff_cm, tvb,
1944 pos, length, ENC_BIG_ENDIAN);
1945 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_rnghoff_erouter, tvb,
1946 pos, length, ENC_BIG_ENDIAN);
1947 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_rnghoff_emta, tvb,
1948 pos, length, ENC_BIG_ENDIAN);
1949 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_rnghoff_estb, tvb,
1950 pos, length, ENC_BIG_ENDIAN);
1954 THROW (ReportedBoundsError);
1958 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_l2vpn, tvb,
1959 pos, length, ENC_NA);
1961 case CAP_L2VPN_ESAFE:
1962 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_l2vpn_esafe, tvb,
1963 pos, length, ENC_NA);
1965 case CAP_DUT_FILTERING:
1966 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_dut_filtering, tvb,
1967 pos, length, ENC_NA);
1969 case CAP_US_FREQ_RNG:
1972 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_us_freq_range, tvb,
1973 pos, length, ENC_BIG_ENDIAN);
1977 THROW (ReportedBoundsError);
1983 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_us_srate_160, tvb,
1984 pos, length, ENC_BIG_ENDIAN);
1985 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_us_srate_320, tvb,
1986 pos, length, ENC_BIG_ENDIAN);
1987 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_us_srate_640, tvb,
1988 pos, length, ENC_BIG_ENDIAN);
1989 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_us_srate_1280, tvb,
1990 pos, length, ENC_BIG_ENDIAN);
1991 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_us_srate_2560, tvb,
1992 pos, length, ENC_BIG_ENDIAN);
1993 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_us_srate_5120, tvb,
1994 pos, length, ENC_BIG_ENDIAN);
1998 THROW (ReportedBoundsError);
2004 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_sac, tvb,
2005 pos, length, ENC_BIG_ENDIAN);
2009 THROW (ReportedBoundsError);
2012 case CAP_CODE_HOP_M2:
2015 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_code_hop_mode2, tvb,
2016 pos, length, ENC_BIG_ENDIAN);
2020 THROW (ReportedBoundsError);
2026 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_mtc, tvb,
2027 pos, length, ENC_BIG_ENDIAN);
2031 THROW (ReportedBoundsError);
2034 case CAP_512_MSPS_UTC:
2037 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_512_msps_utc, tvb,
2038 pos, length, ENC_BIG_ENDIAN);
2042 THROW (ReportedBoundsError);
2045 case CAP_256_MSPS_UTC:
2048 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_256_msps_utc, tvb,
2049 pos, length, ENC_BIG_ENDIAN);
2053 THROW (ReportedBoundsError);
2056 case CAP_TOTAL_SID_CLUST:
2059 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_total_sid_cluster, tvb,
2060 pos, length, ENC_BIG_ENDIAN);
2064 THROW (ReportedBoundsError);
2067 case CAP_SID_PER_SF:
2070 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_sid_per_sf, tvb,
2071 pos, length, ENC_BIG_ENDIAN);
2075 THROW (ReportedBoundsError);
2081 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_mrc, tvb,
2082 pos, length, ENC_BIG_ENDIAN);
2086 THROW (ReportedBoundsError);
2089 case CAP_TOTAL_DSID:
2092 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_total_dsid, tvb,
2093 pos, length, ENC_BIG_ENDIAN);
2097 THROW (ReportedBoundsError);
2100 case CAP_RESEQ_DSID:
2103 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_reseq_dsid, tvb,
2104 pos, length, ENC_BIG_ENDIAN);
2108 THROW (ReportedBoundsError);
2114 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_mc_dsid, tvb,
2115 pos, length, ENC_BIG_ENDIAN);
2119 THROW (ReportedBoundsError);
2122 case CAP_MC_DSID_FWD:
2125 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_mc_dsid_fwd, tvb,
2126 pos, length, ENC_BIG_ENDIAN);
2130 THROW (ReportedBoundsError);
2133 case CAP_FCTYPE_FWD:
2136 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_fctype_fwd, tvb,
2137 pos, length, ENC_BIG_ENDIAN);
2141 THROW (ReportedBoundsError);
2147 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_dpv_path, tvb,
2148 pos, length, ENC_BIG_ENDIAN);
2149 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_dpv_packet, tvb,
2150 pos, length, ENC_BIG_ENDIAN);
2154 THROW (ReportedBoundsError);
2160 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_ugs, tvb,
2161 pos, length, ENC_BIG_ENDIAN);
2165 THROW (ReportedBoundsError);
2171 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_map_ucd, tvb,
2172 pos, length, ENC_BIG_ENDIAN);
2176 THROW (ReportedBoundsError);
2182 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_udc, tvb,
2183 pos, length, ENC_BIG_ENDIAN);
2187 THROW (ReportedBoundsError);
2193 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_ipv6, tvb,
2194 pos, length, ENC_BIG_ENDIAN);
2198 THROW (ReportedBoundsError);
2201 case CAP_EXT_US_TRNS_PWR:
2204 proto_tree_add_item (mcap_tree, hf_docsis_tlv_mcap_ext_us_trans_power, tvb,
2205 pos, length, ENC_BIG_ENDIAN);
2209 THROW (ReportedBoundsError);
2212 } /* switch (type) */
2214 } /* while (pos < pos+len) */
2219 dissect_cos (tvbuff_t * tvb, proto_tree * tree, int start, guint16 len)
2221 guint8 type, length;
2223 proto_tree *cos_tree;
2227 proto_tree_add_text (tree, tvb, start, len,
2228 "4 Class of Service Type (Length = %u)", len);
2229 cos_tree = proto_item_add_subtree (it, ett_docsis_tlv_cos);
2231 while (pos < (start + len))
2233 type = tvb_get_guint8 (tvb, pos++);
2234 length = tvb_get_guint8 (tvb, pos++);
2240 proto_tree_add_item (cos_tree, hf_docsis_tlv_cos_id, tvb, pos,
2241 length, ENC_BIG_ENDIAN);
2245 THROW (ReportedBoundsError);
2251 proto_tree_add_item (cos_tree, hf_docsis_tlv_cos_max_down, tvb,
2252 pos, length, ENC_BIG_ENDIAN);
2256 THROW (ReportedBoundsError);
2262 proto_tree_add_item (cos_tree, hf_docsis_tlv_cos_max_up, tvb,
2263 pos, length, ENC_BIG_ENDIAN);
2267 THROW (ReportedBoundsError);
2270 case COS_UP_CH_PRIO:
2273 proto_tree_add_item (cos_tree, hf_docsis_tlv_cos_up_chnl_pri,
2274 tvb, pos, length, ENC_BIG_ENDIAN);
2278 THROW (ReportedBoundsError);
2281 case COS_MIN_UP_RATE:
2284 proto_tree_add_item (cos_tree, hf_docsis_tlv_cos_min_grntd_up,
2285 tvb, pos, length, ENC_BIG_ENDIAN);
2289 THROW (ReportedBoundsError);
2292 case COS_MAX_UP_BURST:
2295 proto_tree_add_item (cos_tree, hf_docsis_tlv_cos_max_up_burst,
2296 tvb, pos, length, ENC_BIG_ENDIAN);
2300 THROW (ReportedBoundsError);
2306 proto_tree_add_item (cos_tree, hf_docsis_tlv_cos_privacy_enable,
2307 tvb, pos, length, ENC_BIG_ENDIAN);
2311 THROW (ReportedBoundsError);
2315 } /* switch (type) */
2317 } /* while (pos < pos+len) */
2322 dissect_svc_unavail(tvbuff_t * tvb, proto_tree * tree, int pos, guint16 length) {
2324 proto_item *svc_unavail_it;
2325 proto_tree *svc_unavail_tree;
2326 svc_unavail_it = proto_tree_add_item (tree,
2327 hf_docsis_tlv_svc_unavail,
2328 tvb, pos, length, ENC_NA);
2329 svc_unavail_tree = proto_item_add_subtree(svc_unavail_it, ett_docsis_tlv_svc_unavail );
2330 proto_tree_add_item (svc_unavail_tree,
2331 hf_docsis_tlv_svc_unavail_classid, tvb,
2332 pos, 1, ENC_BIG_ENDIAN);
2333 proto_tree_add_item (svc_unavail_tree,
2334 hf_docsis_tlv_svc_unavail_type, tvb,
2335 pos+1, 1, ENC_BIG_ENDIAN);
2336 proto_tree_add_item (svc_unavail_tree,
2337 hf_docsis_tlv_svc_unavail_code, tvb,
2338 pos+2, 1, ENC_BIG_ENDIAN);
2343 dissect_snmpv3_kickstart(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len) {
2344 proto_item *snmpv3_it;
2345 proto_tree *snmpv3_tree;
2346 guint8 type, length;
2349 snmpv3_it = proto_tree_add_item (tree,
2350 hf_docsis_tlv_snmpv3_kick,
2351 tvb, start, len, ENC_NA);
2352 snmpv3_tree = proto_item_add_subtree(snmpv3_it, ett_docsis_tlv_snmpv3_kick);
2354 while (pos < (start + len))
2356 type = tvb_get_guint8 (tvb, pos++);
2357 length = tvb_get_guint8 (tvb, pos++);
2360 case SNMPV3_SEC_NAME:
2361 proto_tree_add_item (snmpv3_tree,
2362 hf_docsis_tlv_snmpv3_kick_name, tvb,
2363 pos, length, FALSE);
2365 case SNMPV3_MGR_PUB_NUM:
2366 proto_tree_add_item (snmpv3_tree,
2367 hf_docsis_tlv_snmpv3_kick_publicnum, tvb,
2368 pos, length, ENC_NA);
2376 dissect_ds_ch_list_single (tvbuff_t * tvb, proto_tree * tree,
2377 int start, guint16 len)
2379 guint8 type, length;
2381 proto_tree *single_tree;
2384 proto_tree_add_text (tree, tvb, start, len,
2385 "1 Single Downstream Channel (Length = %u)", len);
2386 single_tree = proto_item_add_subtree (it, ett_docsis_tlv_ds_ch_list_single);
2388 while (pos < (start + len))
2390 type = tvb_get_guint8 (tvb, pos++);
2391 length = tvb_get_guint8 (tvb, pos++);
2394 case SINGLE_CH_TIMEOUT:
2397 proto_tree_add_item (single_tree, hf_docsis_tlv_single_ch_timeout, tvb,
2398 pos, length, ENC_BIG_ENDIAN);
2402 THROW (ReportedBoundsError);
2405 case SINGLE_CH_FREQ:
2408 proto_tree_add_item (single_tree, hf_docsis_tlv_single_ch_freq, tvb,
2409 pos, length, ENC_BIG_ENDIAN);
2413 THROW (ReportedBoundsError);
2422 dissect_ds_ch_list_range (tvbuff_t * tvb, proto_tree * tree,
2423 int start, guint16 len)
2425 guint8 type, length;
2427 proto_tree *range_tree;
2430 proto_tree_add_text (tree, tvb, start, len,
2431 "2 Downstream Frequency Range (Length = %u)", len);
2432 range_tree = proto_item_add_subtree (it, ett_docsis_tlv_ds_ch_list_range);
2434 while (pos < (start + len))
2436 type = tvb_get_guint8 (tvb, pos++);
2437 length = tvb_get_guint8 (tvb, pos++);
2440 case FREQ_RNG_TIMEOUT:
2443 proto_tree_add_item (range_tree, hf_docsis_tlv_freq_rng_timeout, tvb,
2444 pos, length, ENC_BIG_ENDIAN);
2448 THROW (ReportedBoundsError);
2451 case FREQ_RNG_START:
2454 proto_tree_add_item (range_tree, hf_docsis_tlv_freq_rng_start, tvb,
2455 pos, length, ENC_BIG_ENDIAN);
2459 THROW (ReportedBoundsError);
2465 proto_tree_add_item (range_tree, hf_docsis_tlv_freq_rng_end, tvb,
2466 pos, length, ENC_BIG_ENDIAN);
2470 THROW (ReportedBoundsError);
2476 proto_tree_add_item (range_tree, hf_docsis_tlv_freq_rng_step, tvb,
2477 pos, length, ENC_BIG_ENDIAN);
2481 THROW (ReportedBoundsError);
2490 dissect_dut_filter (tvbuff_t * tvb, proto_tree * tree,
2491 int start, guint16 len)
2493 guint8 type, length;
2495 proto_tree *dut_tree;
2498 proto_tree_add_text (tree, tvb, start, len,
2499 "Downstream Unencrypted Traffic (Length = %u)", len);
2500 dut_tree = proto_item_add_subtree (it, ett_docsis_tlv_dut_filter);
2502 while (pos < (start + len))
2504 type = tvb_get_guint8 (tvb, pos++);
2505 length = tvb_get_guint8 (tvb, pos++);
2511 proto_tree_add_item (dut_tree, hf_docsis_tlv_dut_filter_control, tvb,
2512 pos, length, ENC_BIG_ENDIAN);
2516 THROW (ReportedBoundsError);
2520 proto_tree_add_item (dut_tree, hf_docsis_tlv_dut_filter_cmim, tvb,
2521 pos, length, ENC_NA);
2529 dissect_ds_ch_list(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len)
2531 guint8 type, length;
2533 proto_tree *dschlst_tree;
2536 proto_tree_add_text (tree, tvb, start, len,
2537 "41 Downstream Channel List (Length = %u)", len);
2538 dschlst_tree = proto_item_add_subtree (it, ett_docsis_tlv_ds_ch_list);
2540 while (pos < (start + len))
2542 type = tvb_get_guint8 (tvb, pos++);
2543 length = tvb_get_guint8 (tvb, pos++);
2546 case DS_CH_LIST_SINGLE:
2547 dissect_ds_ch_list_single(tvb, dschlst_tree, pos, length);
2549 case DS_CH_LIST_RANGE:
2550 dissect_ds_ch_list_range(tvb, dschlst_tree, pos, length);
2552 case DS_CH_LIST_DEFAULT_TIMEOUT:
2555 proto_tree_add_item (dschlst_tree,
2556 hf_docsis_tlv_ds_ch_list_default_timeout, tvb, pos,
2557 length, ENC_BIG_ENDIAN);
2561 THROW (ReportedBoundsError);
2570 dissect_tcc_err(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len)
2572 guint8 type, length;
2574 proto_tree *tccerr_tree;
2577 proto_tree_add_text (tree, tvb, start, len,
2578 "TCC Error Encodings (Length = %u)", len);
2579 tccerr_tree = proto_item_add_subtree (it, ett_docsis_tlv_tcc_err);
2581 while (pos < (start + len))
2583 type = tvb_get_guint8 (tvb, pos++);
2584 length = tvb_get_guint8 (tvb, pos++);
2587 case TCC_ERR_SUBTYPE:
2588 proto_tree_add_item (tccerr_tree,
2589 hf_docsis_tcc_err_subtype, tvb,
2590 pos, length, ENC_NA);
2595 proto_tree_add_item (tccerr_tree,
2596 hf_docsis_tcc_err_code, tvb, pos,
2597 length, ENC_BIG_ENDIAN);
2601 THROW (ReportedBoundsError);
2605 proto_tree_add_item (tccerr_tree,
2606 hf_docsis_tcc_err_msg, tvb,
2607 pos, length, FALSE);
2615 dissect_tcc_rng_parms(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len)
2617 guint8 type, length;
2619 proto_tree *rngparm_tree;
2622 proto_tree_add_text (tree, tvb, start, len,
2623 "Ranging Parameters (Length = %u)", len);
2624 rngparm_tree = proto_item_add_subtree (it, ett_docsis_tlv_tcc_rng_parms);
2626 while (pos < (start + len))
2628 type = tvb_get_guint8 (tvb, pos++);
2629 length = tvb_get_guint8 (tvb, pos++);
2632 case RNG_PARMS_US_CH_ID:
2635 proto_tree_add_item (rngparm_tree,
2636 hf_docsis_rng_parms_us_ch_id, tvb, pos,
2637 length, ENC_BIG_ENDIAN);
2641 THROW (ReportedBoundsError);
2644 case RNG_PARMS_TIME_OFF_INT:
2647 proto_tree_add_item (rngparm_tree,
2648 hf_docsis_rng_parms_time_off_int, tvb, pos,
2653 THROW (ReportedBoundsError);
2656 case RNG_PARMS_TIME_OFF_FRAC:
2659 proto_tree_add_item (rngparm_tree,
2660 hf_docsis_rng_parms_time_off_frac, tvb, pos,
2665 THROW (ReportedBoundsError);
2668 case RNG_PARMS_POWER_OFF:
2671 proto_tree_add_item (rngparm_tree,
2672 hf_docsis_rng_parms_power_off, tvb, pos,
2673 length, ENC_BIG_ENDIAN);
2677 THROW (ReportedBoundsError);
2680 case RNG_PARMS_FREQ_OFF:
2683 proto_tree_add_item (rngparm_tree,
2684 hf_docsis_rng_parms_freq_off, tvb, pos,
2685 length, ENC_BIG_ENDIAN);
2689 THROW (ReportedBoundsError);
2698 dissect_sid_cl_so_crit(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len)
2700 guint8 type, length;
2702 proto_tree *crit_tree;
2705 proto_tree_add_text (tree, tvb, start, len,
2706 "SID Cluster Switchover Criteria (Length = %u)", len);
2707 crit_tree = proto_item_add_subtree (it, ett_docsis_tlv_sid_cl_so);
2709 while (pos < (start + len))
2711 type = tvb_get_guint8 (tvb, pos++);
2712 length = tvb_get_guint8 (tvb, pos++);
2715 case SID_CL_SO_MAX_REQ:
2718 proto_tree_add_item (crit_tree,
2719 hf_docsis_sid_cl_so_max_req, tvb, pos,
2720 length, ENC_BIG_ENDIAN);
2724 THROW (ReportedBoundsError);
2727 case SID_CL_SO_MAX_OUT_BYTES:
2730 proto_tree_add_item (crit_tree,
2731 hf_docsis_sid_cl_so_max_out_bytes, tvb, pos,
2732 length, ENC_BIG_ENDIAN);
2736 THROW (ReportedBoundsError);
2739 case SID_CL_SO_MAX_REQ_BYTES:
2742 proto_tree_add_item (crit_tree,
2743 hf_docsis_sid_cl_so_max_req_bytes, tvb, pos,
2744 length, ENC_BIG_ENDIAN);
2748 THROW (ReportedBoundsError);
2751 case SID_CL_SO_MAX_TIME:
2754 proto_tree_add_item (crit_tree,
2755 hf_docsis_sid_cl_so_max_time, tvb, pos,
2756 length, ENC_BIG_ENDIAN);
2760 THROW (ReportedBoundsError);
2769 dissect_sid_cl_enc_map(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len)
2771 guint8 type, length;
2773 proto_tree *map_tree;
2776 proto_tree_add_text (tree, tvb, start, len,
2777 "SID-to-Channel Mapping (Length = %u)", len);
2778 map_tree = proto_item_add_subtree (it, ett_docsis_tlv_sid_cl_enc_map);
2780 while (pos < (start + len))
2782 type = tvb_get_guint8 (tvb, pos++);
2783 length = tvb_get_guint8 (tvb, pos++);
2786 case SID_CL_MAP_US_CH_ID:
2789 proto_tree_add_item (map_tree,
2790 hf_docsis_sid_cl_map_us_ch_id, tvb, pos,
2791 length, ENC_BIG_ENDIAN);
2795 THROW (ReportedBoundsError);
2798 case SID_CL_MAP_SID:
2801 proto_tree_add_item (map_tree,
2802 hf_docsis_sid_cl_map_sid, tvb, pos,
2803 length, ENC_BIG_ENDIAN);
2807 THROW (ReportedBoundsError);
2810 case SID_CL_MAP_ACTION:
2813 proto_tree_add_item (map_tree,
2814 hf_docsis_sid_cl_map_action, tvb, pos,
2815 length, ENC_BIG_ENDIAN);
2819 THROW (ReportedBoundsError);
2828 dissect_sid_cl_enc(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len)
2830 guint8 type, length;
2832 proto_tree *enc_tree;
2835 proto_tree_add_text (tree, tvb, start, len,
2836 "SID Cluster Encoding (Length = %u)", len);
2837 enc_tree = proto_item_add_subtree (it, ett_docsis_tlv_sid_cl_enc);
2839 while (pos < (start + len))
2841 type = tvb_get_guint8 (tvb, pos++);
2842 length = tvb_get_guint8 (tvb, pos++);
2848 proto_tree_add_item (enc_tree,
2849 hf_docsis_sid_cl_enc_id, tvb, pos,
2850 length, ENC_BIG_ENDIAN);
2854 THROW (ReportedBoundsError);
2857 case SID_CL_ENC_MAP:
2859 dissect_sid_cl_enc_map(tvb, enc_tree, pos, length);
2861 THROW (ReportedBoundsError);
2869 dissect_sid_cl(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len)
2871 guint8 type, length;
2873 proto_tree *sid_tree;
2876 proto_tree_add_text (tree, tvb, start, len,
2877 "47 Service Flow SID Cluster Assignments (Length = %u)", len);
2878 sid_tree = proto_item_add_subtree (it, ett_docsis_tlv_sid_cl);
2880 while (pos < (start + len))
2882 type = tvb_get_guint8 (tvb, pos++);
2883 length = tvb_get_guint8 (tvb, pos++);
2889 proto_tree_add_item (sid_tree,
2890 hf_docsis_sid_cl_sf_id, tvb, pos,
2891 length, ENC_BIG_ENDIAN);
2895 THROW (ReportedBoundsError);
2899 dissect_sid_cl_enc(tvb, sid_tree, pos, length);
2901 case SID_CL_SO_CRIT:
2902 dissect_sid_cl_so_crit(tvb, sid_tree, pos, length);
2910 dissect_tcc(tvbuff_t * tvb, packet_info * pinfo _U_,
2911 proto_tree *tree, int start, guint16 len)
2913 guint8 type, length;
2915 proto_tree *tcc_tree;
2920 proto_tree_add_text (tree, tvb, start, len,
2921 "46 Transmit Channel Configuration (Length = %u)", len);
2922 tcc_tree = proto_item_add_subtree (it, ett_docsis_tlv_tcc);
2924 while (pos < (start + len))
2926 type = tvb_get_guint8 (tvb, pos++);
2927 length = tvb_get_guint8 (tvb, pos++);
2933 proto_tree_add_item (tcc_tree,
2934 hf_docsis_tlv_tcc_refid, tvb, pos,
2935 length, ENC_BIG_ENDIAN);
2939 THROW (ReportedBoundsError);
2942 case TLV_TCC_US_CH_ACTION:
2945 proto_tree_add_item (tcc_tree,
2946 hf_docsis_tlv_tcc_us_ch_action, tvb, pos,
2947 length, ENC_BIG_ENDIAN);
2951 THROW (ReportedBoundsError);
2954 case TLV_TCC_US_CH_ID:
2957 proto_tree_add_item (tcc_tree,
2958 hf_docsis_tlv_tcc_us_ch_id, tvb, pos,
2959 length, ENC_BIG_ENDIAN);
2963 THROW (ReportedBoundsError);
2966 case TLV_TCC_NEW_US_CH_ID:
2969 proto_tree_add_item (tcc_tree,
2970 hf_docsis_tlv_tcc_new_us_ch_id, tvb, pos,
2971 length, ENC_BIG_ENDIAN);
2975 THROW (ReportedBoundsError);
2979 ucd_tvb = tvb_new_subset (tvb, pos, length, length);
2980 call_dissector (docsis_ucd_handle, ucd_tvb, pinfo, tcc_tree);
2982 case TLV_TCC_RNG_SID:
2985 proto_tree_add_item (tcc_tree,
2986 hf_docsis_tlv_tcc_rng_sid, tvb, pos,
2987 length, ENC_BIG_ENDIAN);
2991 THROW (ReportedBoundsError);
2994 case TLV_TCC_INIT_TECH:
2997 proto_tree_add_item (tcc_tree,
2998 hf_docsis_tlv_tcc_init_tech, tvb, pos,
2999 length, ENC_BIG_ENDIAN);
3003 THROW (ReportedBoundsError);
3006 case TLV_TCC_RNG_PARMS:
3007 dissect_tcc_rng_parms(tvb, tcc_tree, pos, length);
3009 case TLV_TCC_DYN_RNG_WIN:
3012 proto_tree_add_item (tcc_tree,
3013 hf_docsis_tlv_tcc_dyn_rng_win, tvb, pos,
3014 length, ENC_BIG_ENDIAN);
3018 THROW (ReportedBoundsError);
3022 dissect_tcc_err(tvb, tcc_tree, pos, length);
3030 dissect_ch_bl_rng(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len)
3032 guint8 type, length;
3034 proto_tree *chblrng_tree;
3037 proto_tree_add_text (tree, tvb, start, len,
3038 "Receive Module Channel Block Range (Length = %u)", len);
3039 chblrng_tree = proto_item_add_subtree (it, ett_docsis_tlv_rcp_ch_bl_rng);
3041 while (pos < (start + len))
3043 type = tvb_get_guint8 (tvb, pos++);
3044 length = tvb_get_guint8 (tvb, pos++);
3047 case CH_BL_RNG_MIN_CTR_FREQ:
3050 proto_tree_add_item (chblrng_tree,
3051 hf_docsis_ch_bl_rng_min_ctr_freq, tvb, pos,
3052 length, ENC_BIG_ENDIAN);
3056 THROW (ReportedBoundsError);
3059 case CH_BL_RNG_MAX_CTR_FREQ:
3062 proto_tree_add_item (chblrng_tree,
3063 hf_docsis_ch_bl_rng_max_ctr_freq, tvb, pos,
3064 length, ENC_BIG_ENDIAN);
3068 THROW (ReportedBoundsError);
3077 dissect_rcp_rcv_mod(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len)
3079 guint8 type, length;
3081 proto_tree *rcvmod_tree;
3084 proto_tree_add_text (tree, tvb, start, len,
3085 "Receive Module Capability (Length = %u)", len);
3086 rcvmod_tree = proto_item_add_subtree (it, ett_docsis_tlv_rcp_rcv_mod_enc);
3088 while (pos < (start + len))
3090 type = tvb_get_guint8 (tvb, pos++);
3091 length = tvb_get_guint8 (tvb, pos++);
3094 case RCV_MOD_ENC_IDX:
3097 proto_tree_add_item (rcvmod_tree,
3098 hf_docsis_rcv_mod_enc_idx, tvb, pos,
3099 length, ENC_BIG_ENDIAN);
3103 THROW (ReportedBoundsError);
3106 case RCV_MOD_ENC_CH_BL_RNG:
3107 dissect_ch_bl_rng(tvb, rcvmod_tree, pos, length);
3109 case RCV_MOD_ENC_CTR_FREQ_ASGN:
3112 proto_tree_add_item (rcvmod_tree,
3113 hf_docsis_rcv_mod_enc_ctr_freq_asgn, tvb, pos,
3118 THROW (ReportedBoundsError);
3121 case RCV_MOD_ENC_RSQ_CH_SUBS_CAP:
3122 proto_tree_add_item (rcvmod_tree,
3123 hf_docsis_rcv_mod_enc_rsq_ch_subs_cap, tvb, pos,
3126 case RCV_MOD_ENC_CONN:
3127 proto_tree_add_item (rcvmod_tree,
3128 hf_docsis_rcv_mod_enc_conn, tvb, pos,
3131 case RCV_MOD_ENC_PHY_LAYR_PARMS:
3132 proto_tree_add_item (rcvmod_tree,
3133 hf_docsis_rcv_mod_enc_phy_layr_parms, tvb, pos,
3142 dissect_rcp_rcv_ch(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len)
3144 guint8 type, length;
3146 proto_tree *rcvch_tree;
3149 proto_tree_add_text (tree, tvb, start, len,
3150 "Receive Channels (Length = %u)", len);
3151 rcvch_tree = proto_item_add_subtree (it, ett_docsis_tlv_rcp_rcv_ch);
3153 while (pos < (start + len))
3155 type = tvb_get_guint8 (tvb, pos++);
3156 length = tvb_get_guint8 (tvb, pos++);
3162 proto_tree_add_item (rcvch_tree,
3163 hf_docsis_rcv_ch_idx, tvb, pos,
3164 length, ENC_BIG_ENDIAN);
3168 THROW (ReportedBoundsError);
3172 proto_tree_add_item (rcvch_tree,
3173 hf_docsis_rcv_ch_conn, tvb, pos,
3176 case RCV_CH_CONN_OFF:
3179 proto_tree_add_item (rcvch_tree,
3180 hf_docsis_rcv_ch_conn_off, tvb, pos,
3181 length, ENC_BIG_ENDIAN);
3185 THROW (ReportedBoundsError);
3188 case RCV_CH_PRIM_DS_CH_IND:
3191 proto_tree_add_item (rcvch_tree,
3192 hf_docsis_rcv_ch_prim_ds_ch_ind, tvb, pos,
3193 length, ENC_BIG_ENDIAN);
3197 THROW (ReportedBoundsError);
3207 dissect_rcp(tvbuff_t * tvb, packet_info * pinfo _U_,
3208 proto_tree *tree, int start, guint16 len)
3210 guint8 type, length;
3212 proto_tree *rcp_tree;
3217 proto_tree_add_text (tree, tvb, start, len,
3218 "48 Receive Channel Profile (Length = %u)", len);
3219 rcp_tree = proto_item_add_subtree (it, ett_docsis_tlv_rcp);
3221 while (pos < (start + len))
3223 type = tvb_get_guint8 (tvb, pos++);
3224 length = tvb_get_guint8 (tvb, pos++);
3230 proto_tree_add_item (rcp_tree,
3231 hf_docsis_tlv_rcp_id, tvb, pos,
3236 THROW (ReportedBoundsError);
3242 proto_tree_add_item (rcp_tree,
3243 hf_docsis_tlv_rcp_name, tvb, pos,
3248 THROW (ReportedBoundsError);
3251 case TLV_RCP_FREQ_SPC:
3254 proto_tree_add_item (rcp_tree,
3255 hf_docsis_tlv_rcp_freq_spc, tvb, pos,
3256 length, ENC_BIG_ENDIAN);
3260 THROW (ReportedBoundsError);
3263 case TLV_RCP_RCV_MOD_ENC:
3264 dissect_rcp_rcv_mod(tvb, rcp_tree, pos, length);
3266 case TLV_RCP_RCV_CH:
3267 dissect_rcp_rcv_ch(tvb, rcp_tree, pos, length);
3269 case TLV_RCP_VEN_SPEC:
3270 vsif_tvb = tvb_new_subset (tvb, pos, length, length);
3271 call_dissector (docsis_vsif_handle, vsif_tvb, pinfo, rcp_tree);
3279 dissect_rcc_rcv_mod(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len)
3281 guint8 type, length;
3283 proto_tree *rcvmod_tree;
3286 proto_tree_add_text (tree, tvb, start, len,
3287 "Receive Module Assignment (Length = %u)", len);
3288 rcvmod_tree = proto_item_add_subtree (it, ett_docsis_tlv_rcc_rcv_mod_enc);
3290 while (pos < (start + len))
3292 type = tvb_get_guint8 (tvb, pos++);
3293 length = tvb_get_guint8 (tvb, pos++);
3296 case RCV_MOD_ENC_IDX:
3299 proto_tree_add_item (rcvmod_tree,
3300 hf_docsis_rcc_rcv_mod_enc_idx, tvb, pos,
3301 length, ENC_BIG_ENDIAN);
3305 THROW (ReportedBoundsError);
3308 case RCV_MOD_ENC_CTR_FREQ_ASGN:
3311 proto_tree_add_item (rcvmod_tree,
3312 hf_docsis_rcc_rcv_mod_enc_ctr_freq_asgn, tvb, pos,
3313 length, ENC_BIG_ENDIAN);
3317 THROW (ReportedBoundsError);
3320 case RCV_MOD_ENC_CONN:
3321 proto_tree_add_item (rcvmod_tree,
3322 hf_docsis_rcc_rcv_mod_enc_conn, tvb, pos,
3331 dissect_rcc_rcv_ch(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len)
3333 guint8 type, length;
3335 proto_tree *rcvch_tree;
3338 proto_tree_add_text (tree, tvb, start, len,
3339 "Receive Channels (Length = %u)", len);
3340 rcvch_tree = proto_item_add_subtree (it, ett_docsis_tlv_rcc_rcv_ch);
3342 while (pos < (start + len))
3344 type = tvb_get_guint8 (tvb, pos++);
3345 length = tvb_get_guint8 (tvb, pos++);
3351 proto_tree_add_item (rcvch_tree,
3352 hf_docsis_rcc_rcv_ch_idx, tvb, pos,
3353 length, ENC_BIG_ENDIAN);
3357 THROW (ReportedBoundsError);
3361 proto_tree_add_item (rcvch_tree,
3362 hf_docsis_rcc_rcv_ch_conn, tvb, pos,
3365 case RCV_CH_CTR_FREQ_ASGN:
3368 proto_tree_add_item (rcvch_tree,
3369 hf_docsis_rcc_rcv_ch_ctr_freq_asgn, tvb, pos,
3370 length, ENC_BIG_ENDIAN);
3374 THROW (ReportedBoundsError);
3377 case RCV_CH_PRIM_DS_CH_IND:
3380 proto_tree_add_item (rcvch_tree,
3381 hf_docsis_rcc_rcv_ch_prim_ds_ch_ind, tvb, pos,
3382 length, ENC_BIG_ENDIAN);
3386 THROW (ReportedBoundsError);
3395 dissect_rcc_err(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len)
3397 guint8 type, length;
3399 proto_tree *err_tree;
3402 proto_tree_add_text (tree, tvb, start, len,
3403 "RCC Error Encodings (Length = %u)", len);
3404 err_tree = proto_item_add_subtree (it, ett_docsis_tlv_rcc_rcv_ch);
3406 while (pos < (start + len))
3408 type = tvb_get_guint8 (tvb, pos++);
3409 length = tvb_get_guint8 (tvb, pos++);
3412 case RCC_ERR_MOD_OR_CH:
3415 proto_tree_add_item (err_tree,
3416 hf_docsis_tlv_rcc_err_mod_or_ch, tvb, pos,
3417 length, ENC_BIG_ENDIAN);
3421 THROW (ReportedBoundsError);
3427 proto_tree_add_item (err_tree,
3428 hf_docsis_tlv_rcc_err_idx, tvb, pos,
3429 length, ENC_BIG_ENDIAN);
3433 THROW (ReportedBoundsError);
3439 proto_tree_add_item (err_tree,
3440 hf_docsis_tlv_rcc_err_param, tvb, pos,
3441 length, ENC_BIG_ENDIAN);
3445 THROW (ReportedBoundsError);
3451 proto_tree_add_item (err_tree,
3452 hf_docsis_tlv_rcc_err_code, tvb, pos,
3453 length, ENC_BIG_ENDIAN);
3457 THROW (ReportedBoundsError);
3461 proto_tree_add_item (err_tree,
3462 hf_docsis_tlv_rcc_err_msg, tvb, pos,
3471 dissect_rcc(tvbuff_t * tvb, packet_info * pinfo _U_,
3472 proto_tree *tree, int start, guint16 len)
3474 guint8 type, length;
3476 proto_tree *rcc_tree;
3481 proto_tree_add_text (tree, tvb, start, len,
3482 "49 Receive Channel Configuration (Length = %u)", len);
3483 rcc_tree = proto_item_add_subtree (it, ett_docsis_tlv_rcc);
3485 while (pos < (start + len))
3487 type = tvb_get_guint8 (tvb, pos++);
3488 length = tvb_get_guint8 (tvb, pos++);
3494 proto_tree_add_item (rcc_tree,
3495 hf_docsis_tlv_rcc_id, tvb, pos,
3500 THROW (ReportedBoundsError);
3503 case TLV_RCP_RCV_MOD_ENC:
3504 dissect_rcc_rcv_mod(tvb, rcc_tree, pos, length);
3506 case TLV_RCP_RCV_CH:
3507 dissect_rcc_rcv_ch(tvb, rcc_tree, pos, length);
3509 case TLV_RCP_VEN_SPEC:
3510 vsif_tvb = tvb_new_subset (tvb, pos, length, length);
3511 call_dissector (docsis_vsif_handle, vsif_tvb, pinfo, rcc_tree);
3514 dissect_rcc_err(tvb, rcc_tree, pos, length);
3522 dissect_dsid_ds_reseq(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len)
3524 guint8 type, length;
3526 proto_tree *dsid_tree;
3529 proto_tree_add_text (tree, tvb, start, len,
3530 "Resequencing DSID (Length = %u)", len);
3531 dsid_tree = proto_item_add_subtree (it, ett_docsis_tlv_dsid_ds_reseq);
3533 while (pos < (start + len))
3535 type = tvb_get_guint8 (tvb, pos++);
3536 length = tvb_get_guint8 (tvb, pos++);
3542 proto_tree_add_item (dsid_tree,
3543 hf_docsis_ds_reseq_dsid, tvb, pos,
3544 length, ENC_BIG_ENDIAN);
3548 THROW (ReportedBoundsError);
3551 case DS_RESEQ_CH_LST:
3552 proto_tree_add_item (dsid_tree,
3553 hf_docsis_ds_reseq_ch_lst, tvb, pos,
3556 case DS_RESEQ_WAIT_TIME:
3559 proto_tree_add_item (dsid_tree,
3560 hf_docsis_ds_reseq_wait_time, tvb, pos,
3561 length, ENC_BIG_ENDIAN);
3565 THROW (ReportedBoundsError);
3568 case DS_RESEQ_WARN_THRESH:
3571 proto_tree_add_item (dsid_tree,
3572 hf_docsis_ds_reseq_warn_thresh, tvb, pos,
3573 length, ENC_BIG_ENDIAN);
3577 THROW (ReportedBoundsError);
3580 case DS_RESEQ_HO_TIMER:
3583 proto_tree_add_item (dsid_tree,
3584 hf_docsis_ds_reseq_ho_timer, tvb, pos,
3585 length, ENC_BIG_ENDIAN);
3589 THROW (ReportedBoundsError);
3598 dissect_dsid_mc_addr(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len)
3600 guint8 type, length;
3602 proto_tree *dsid_tree;
3605 proto_tree_add_text (tree, tvb, start, len,
3606 "Client MAC Address Encodings (Length = %u)", len);
3607 dsid_tree = proto_item_add_subtree (it, ett_docsis_tlv_dsid_mc_addr);
3609 while (pos < (start + len))
3611 type = tvb_get_guint8 (tvb, pos++);
3612 length = tvb_get_guint8 (tvb, pos++);
3615 case MC_ADDR_ACTION:
3618 proto_tree_add_item (dsid_tree,
3619 hf_docsis_mc_addr_action, tvb, pos,
3620 length, ENC_BIG_ENDIAN);
3624 THROW (ReportedBoundsError);
3630 proto_tree_add_item (dsid_tree,
3631 hf_docsis_mc_addr_addr, tvb, pos,
3636 THROW (ReportedBoundsError);
3645 dissect_dsid_mc(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len)
3647 guint8 type, length;
3649 proto_tree *dsid_tree;
3652 proto_tree_add_text (tree, tvb, start, len,
3653 "Multicast Encodings (Length = %u)", len);
3654 dsid_tree = proto_item_add_subtree (it, ett_docsis_tlv_dsid_mc);
3656 while (pos < (start + len))
3658 type = tvb_get_guint8 (tvb, pos++);
3659 length = tvb_get_guint8 (tvb, pos++);
3662 case TLV_DSID_MC_ADDR:
3663 dissect_dsid_mc_addr(tvb, dsid_tree, pos, length);
3665 case TLV_DSID_MC_CMIM:
3666 proto_tree_add_item (dsid_tree,
3667 hf_docsis_tlv_dsid_mc_cmim, tvb, pos,
3670 case TLV_DSID_MC_GROUP:
3671 proto_tree_add_item (dsid_tree,
3672 hf_docsis_tlv_dsid_mc_group, tvb, pos,
3675 case TLV_DSID_MC_PHS:
3676 dissect_phs(tvb, dsid_tree, pos, length);
3684 dissect_dsid(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len)
3686 guint8 type, length;
3688 proto_tree *dsid_tree;
3691 proto_tree_add_text (tree, tvb, start, len,
3692 "50 DSID Encodings (Length = %u)", len);
3693 dsid_tree = proto_item_add_subtree (it, ett_docsis_tlv_dsid);
3695 while (pos < (start + len))
3697 type = tvb_get_guint8 (tvb, pos++);
3698 length = tvb_get_guint8 (tvb, pos++);
3704 proto_tree_add_item (dsid_tree,
3705 hf_docsis_tlv_dsid_id, tvb, pos,
3706 length, ENC_BIG_ENDIAN);
3710 THROW (ReportedBoundsError);
3713 case TLV_DSID_ACTION:
3716 proto_tree_add_item (dsid_tree,
3717 hf_docsis_tlv_dsid_action, tvb, pos,
3718 length, ENC_BIG_ENDIAN);
3722 THROW (ReportedBoundsError);
3725 case TLV_DSID_DS_RESEQ:
3726 dissect_dsid_ds_reseq(tvb, dsid_tree, pos, length);
3729 dissect_dsid_mc(tvb, dsid_tree, pos, length);
3737 dissect_sec_assoc(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len)
3739 guint8 type, length;
3741 proto_tree *sec_tree;
3744 proto_tree_add_text (tree, tvb, start, len,
3745 "51 Security Association Encodings (Length = %u)", len);
3746 sec_tree = proto_item_add_subtree (it, ett_docsis_tlv_dsid);
3748 while (pos < (start + len))
3750 type = tvb_get_guint8 (tvb, pos++);
3751 length = tvb_get_guint8 (tvb, pos++);
3754 case TLV_SEC_ASSOC_ACTION:
3757 proto_tree_add_item (sec_tree,
3758 hf_docsis_tlv_sec_assoc_action, tvb, pos,
3759 length, ENC_BIG_ENDIAN);
3763 THROW (ReportedBoundsError);
3766 case TLV_SEC_ASSOC_DESC:
3769 proto_tree_add_item (sec_tree,
3770 hf_docsis_tlv_sec_assoc_desc, tvb, pos,
3775 THROW (ReportedBoundsError);
3784 dissect_ch_asgn(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len)
3786 guint8 type, length;
3788 proto_tree *asgn_tree;
3791 proto_tree_add_text (tree, tvb, start, len,
3792 "56 Channel Assignment Configuration Settings (Length = %u)", len);
3793 asgn_tree = proto_item_add_subtree (it, ett_docsis_tlv_ch_asgn);
3795 while (pos < (start + len))
3797 type = tvb_get_guint8 (tvb, pos++);
3798 length = tvb_get_guint8 (tvb, pos++);
3801 case TLV_CH_ASGN_US_CH_ID:
3804 proto_tree_add_item (asgn_tree,
3805 hf_docsis_ch_asgn_us_ch_id, tvb, pos,
3806 length, ENC_BIG_ENDIAN);
3810 THROW (ReportedBoundsError);
3813 case TLV_CH_ASGN_RX_FREQ:
3816 proto_tree_add_item (asgn_tree,
3817 hf_docsis_ch_asgn_rx_freq, tvb, pos,
3818 length, ENC_BIG_ENDIAN);
3822 THROW (ReportedBoundsError);
3831 dissect_cmts_mc_sess_enc(tvbuff_t * tvb, proto_tree *tree, int start, guint16 len)
3833 guint8 type, length;
3835 proto_tree *mc_tree;
3838 proto_tree_add_text (tree, tvb, start, len,
3839 "64 CMTS Static Multicast Session Encoding (Length = %u)", len);
3840 mc_tree = proto_item_add_subtree (it, ett_docsis_cmts_mc_sess_enc);
3842 while (pos < (start + len))
3844 type = tvb_get_guint8 (tvb, pos++);
3845 length = tvb_get_guint8 (tvb, pos++);
3848 case CMTS_MC_SESS_ENC_GRP:
3849 if (length == 4 || length == 16)
3851 proto_tree_add_item (mc_tree,
3852 hf_docsis_cmts_mc_sess_enc_grp, tvb, pos,
3857 THROW (ReportedBoundsError);
3860 case CMTS_MC_SESS_ENC_SRC:
3861 if (length == 4 || length == 16)
3863 proto_tree_add_item (mc_tree,
3864 hf_docsis_cmts_mc_sess_enc_src, tvb, pos,
3869 THROW (ReportedBoundsError);
3879 dissect_tlv (tvbuff_t * tvb, packet_info * pinfo _U_, proto_tree * tree)
3883 proto_tree *tlv_tree;
3886 guint8 type, length;
3890 total_len = tvb_reported_length_remaining (tvb, 0);
3894 proto_tree_add_protocol_format (tree, proto_docsis_tlv, tvb, 0,
3895 total_len, "TLV Data");
3896 tlv_tree = proto_item_add_subtree (it, ett_docsis_tlv);
3897 while (pos < total_len)
3899 type = tvb_get_guint8 (tvb, pos++);
3900 length = tvb_get_guint8 (tvb, pos++);
3904 /* This is ugly. There are multiple type 1 TLV's that may appear
3905 * in the TLV data, the problem is that they are dependent on
3908 proto_tree_add_item (tlv_tree, hf_docsis_tlv_down_freq, tvb,
3909 pos, length, ENC_BIG_ENDIAN);
3910 else if (length == 1)
3911 proto_tree_add_item (tlv_tree, hf_docsis_tlv_rng_tech, tvb,
3912 pos, length, ENC_BIG_ENDIAN);
3914 dissect_doc10cos (tvb, tlv_tree, pos, length);
3919 proto_tree_add_item (tlv_tree, hf_docsis_tlv_upstream_chid,
3920 tvb, pos, length, ENC_BIG_ENDIAN);
3924 THROW (ReportedBoundsError);
3927 case TLV_NET_ACCESS:
3930 proto_tree_add_item (tlv_tree, hf_docsis_tlv_net_access,
3931 tvb, pos, length, ENC_BIG_ENDIAN);
3935 THROW (ReportedBoundsError);
3939 dissect_cos (tvb, tlv_tree, pos, length);
3942 dissect_modemcap (tvb, tlv_tree, pos, length);
3947 proto_tree_add_item (tlv_tree, hf_docsis_tlv_cm_mic, tvb,
3948 pos, length, ENC_NA);
3952 THROW (ReportedBoundsError);
3958 proto_tree_add_item (tlv_tree, hf_docsis_tlv_cmts_mic, tvb,
3959 pos, length, ENC_NA);
3963 THROW (ReportedBoundsError);
3969 proto_tree_add_item (tlv_tree, hf_docsis_tlv_vendor_id, tvb,
3970 pos, length, ENC_NA);
3974 THROW (ReportedBoundsError);
3977 case TLV_SW_UPG_FILE:
3978 proto_tree_add_item (tlv_tree, hf_docsis_tlv_sw_file, tvb, pos,
3981 case TLV_SNMP_WRITE_CTRL:
3982 proto_tree_add_item (tlv_tree, hf_docsis_tlv_snmp_access, tvb,
3983 pos, length, ENC_NA);
3985 case TLV_SNMP_OBJECT:
3986 proto_tree_add_item (tlv_tree, hf_docsis_tlv_snmp_obj, tvb,
3987 pos, length, ENC_NA);
3992 proto_tree_add_item (tlv_tree, hf_docsis_tlv_modem_addr,
3993 tvb, pos, length, ENC_BIG_ENDIAN);
3997 THROW (ReportedBoundsError);
4000 case TLV_SVC_UNAVAIL:
4003 dissect_svc_unavail(tvb, tlv_tree, pos, length);
4007 THROW (ReportedBoundsError);
4010 case TLV_ETHERNET_MAC:
4013 proto_tree_add_item (tlv_tree, hf_docsis_tlv_cpe_ethernet,
4014 tvb, pos, length, FALSE);
4018 THROW (ReportedBoundsError);
4021 case TLV_TEL_SETTINGS:
4023 case TLV_BPI_CONFIG:
4024 proto_tree_add_item (tlv_tree, hf_docsis_tlv_bpi, tvb,
4025 pos, length, ENC_NA);
4030 proto_tree_add_item (tlv_tree, hf_docsis_tlv_max_cpe, tvb,
4031 pos, length, FALSE);
4035 THROW (ReportedBoundsError);
4041 proto_tree_add_item (tlv_tree,
4042 hf_docsis_tlv_tftp_server_timestamp,
4043 tvb, pos, length, ENC_BIG_ENDIAN);
4047 THROW (ReportedBoundsError);
4050 case TLV_TFTP_MODEM_ADDRESS:
4053 proto_tree_add_item (tlv_tree,
4054 hf_docsis_tlv_tftp_prov_modem_address,
4055 tvb, pos, length, ENC_BIG_ENDIAN);
4059 THROW (ReportedBoundsError);
4062 case TLV_SW_UPG_SRVR:
4065 proto_tree_add_item (tlv_tree, hf_docsis_tlv_sw_upg_srvr,
4066 tvb, pos, length, ENC_BIG_ENDIAN);
4070 THROW (ReportedBoundsError);
4073 case TLV_UPSTREAM_CLASSIFIER:
4074 case TLV_DOWN_CLASSIFIER:
4075 dissect_classifiers (tvb, tlv_tree, pos, length, type);
4077 case TLV_UPSTREAM_SERVICE_FLOW:
4078 case TLV_DOWN_SERVICE_FLOW:
4079 dissect_sflow (tvb, tlv_tree, pos, length, type);
4082 dissect_phs (tvb, tlv_tree, pos, length);
4084 case TLV_HMAC_DIGEST:
4087 proto_tree_add_item (tlv_tree,
4088 hf_docsis_tlv_hmac_digest, tvb,
4089 pos, length, ENC_NA);
4093 THROW (ReportedBoundsError);
4096 case TLV_MAX_CLASSIFIERS:
4099 proto_tree_add_item (tlv_tree,
4100 hf_docsis_tlv_max_classifiers, tvb,
4101 pos, length, FALSE);
4105 THROW (ReportedBoundsError);
4108 case TLV_PRIVACY_ENABLE:
4111 proto_tree_add_item (tlv_tree, hf_docsis_tlv_privacy_enable,
4112 tvb, pos, length, ENC_BIG_ENDIAN);
4116 THROW (ReportedBoundsError);
4119 case TLV_AUTH_BLOCK:
4120 proto_tree_add_item (tlv_tree, hf_docsis_tlv_auth_block,
4121 tvb, pos, length, ENC_NA);
4123 case TLV_KEY_SEQ_NUM:
4126 proto_tree_add_item (tlv_tree, hf_docsis_tlv_key_seq_num, tvb,
4127 pos, length, ENC_NA);
4131 THROW (ReportedBoundsError);
4135 proto_tree_add_item (tlv_tree, hf_docsis_tlv_mfgr_cvc,
4136 tvb, pos, length, ENC_NA);
4138 case TLV_COSIGN_CVC:
4139 proto_tree_add_item (tlv_tree, hf_docsis_tlv_cosign_cvc,
4140 tvb, pos, length, ENC_NA);
4142 case TLV_SNMPV3_KICKSTART:
4143 dissect_snmpv3_kickstart(tvb, tlv_tree, pos, length);
4145 case TLV_SUBS_MGMT_CTRL:
4146 proto_tree_add_item (tlv_tree, hf_docsis_tlv_subs_mgmt_ctrl,
4147 tvb, pos, length, ENC_NA);
4149 case TLV_SUBS_MGMT_CPE:
4150 if ((length % 4) == 0)
4152 proto_tree_add_item (tlv_tree, hf_docsis_tlv_subs_mgmt_ip_table,
4153 tvb, pos, length, ENC_NA);
4154 for (x = 0; x < length; x+=4)
4156 proto_tree_add_item (tlv_tree,
4157 hf_docsis_tlv_subs_mgmt_ip_entry,
4158 tvb, pos + x, 4, ENC_BIG_ENDIAN);
4163 THROW (ReportedBoundsError);
4166 case TLV_SUBS_MGMT_FLTR:
4167 proto_tree_add_item (tlv_tree,
4168 hf_docsis_tlv_subs_mgmt_filter_grps,
4169 tvb, pos, length, ENC_NA);
4171 case TLV_SNMPV3_NTFY_RCVR:
4172 proto_tree_add_item(tlv_tree,
4173 hf_docsis_tlv_snmpv3_ntfy_rcvr,
4174 tvb, pos, length, ENC_NA);
4176 case TLV_ENABLE_20_MODE:
4179 proto_tree_add_item (tlv_tree, hf_docsis_tlv_enable_20_mode,
4180 tvb, pos, length, ENC_BIG_ENDIAN);
4184 THROW (ReportedBoundsError);
4187 case TLV_ENABLE_TEST_MODES:
4190 proto_tree_add_item (tlv_tree, hf_docsis_tlv_enable_test_modes,
4191 tvb, pos, length, ENC_BIG_ENDIAN);
4195 THROW (ReportedBoundsError);
4198 case TLV_DS_CH_LIST:
4199 dissect_ds_ch_list(tvb, tlv_tree, pos, length);
4201 case TLV_MC_MAC_ADDRESS:
4204 proto_tree_add_item(tlv_tree, hf_docsis_tlv_mc_mac_address,
4205 tvb, pos, length, FALSE);
4209 THROW (ReportedBoundsError);
4212 case TLV_VENDOR_SPEC:
4213 vsif_tvb = tvb_new_subset (tvb, pos, length, length);
4214 call_dissector (docsis_vsif_handle, vsif_tvb, pinfo, tlv_tree);
4216 case TLV_DUT_FILTER:
4217 dissect_dut_filter(tvb, tlv_tree, pos, length);
4220 dissect_tcc(tvb, pinfo, tlv_tree, pos, length);
4223 dissect_sid_cl(tvb, tlv_tree, pos, length);
4226 dissect_rcp(tvb, pinfo, tlv_tree, pos, length);
4229 dissect_rcc(tvb, pinfo, tlv_tree, pos, length);
4232 dissect_dsid(tvb, tlv_tree, pos, length);
4235 dissect_sec_assoc(tvb, tlv_tree, pos, length);
4237 case TLV_INIT_CH_TIMEOUT:
4240 proto_tree_add_item(tlv_tree, hf_docsis_tlv_init_ch_timeout,
4241 tvb, pos, length, ENC_BIG_ENDIAN);
4245 THROW (ReportedBoundsError);
4249 dissect_ch_asgn(tvb, tlv_tree, pos, length);
4251 case TLV_CM_INIT_REASON:
4254 proto_tree_add_item(tlv_tree, hf_docsis_tlv_cm_init_reason,
4255 tvb, pos, length, ENC_BIG_ENDIAN);
4259 THROW (ReportedBoundsError);
4262 case TLV_SW_UPG_SRVR_IPV6:
4265 proto_tree_add_item (tlv_tree, hf_docsis_tlv_sw_upg_srvr_ipv6,
4266 tvb, pos, length, ENC_NA);
4270 THROW (ReportedBoundsError);
4273 case TLV_TFTP_PROV_CM_IPV6_ADDR:
4276 proto_tree_add_item (tlv_tree, hf_docsis_tlv_tftp_prov_cm_ipv6_addr,
4277 tvb, pos, length, ENC_NA);
4281 THROW (ReportedBoundsError);
4284 case TLV_US_DROP_CLFY:
4285 proto_tree_add_item (tlv_tree, hf_docsis_tlv_us_drop_clfy,
4286 tvb, pos, length, ENC_NA);
4288 case TLV_SUBS_MGMT_IPV6_LST:
4289 proto_tree_add_item (tlv_tree, hf_docsis_tlv_subs_mgmt_ipv6_lst,
4290 tvb, pos, length, ENC_NA);
4292 case TLV_US_DROP_CLFY_GROUP_ID:
4293 proto_tree_add_item (tlv_tree, hf_docsis_tlv_us_drop_clfy_group_id,
4294 tvb, pos, length, ENC_NA);
4296 case TLV_SUBS_MGMT_CTRL_MAX_CPE_IPV6:
4299 proto_tree_add_item (tlv_tree, hf_docsis_tlv_subs_mgmt_ctrl_max_cpe_ipv6,
4300 tvb, pos, length, ENC_BIG_ENDIAN);
4304 THROW (ReportedBoundsError);
4307 case TLV_CMTS_MC_SESS_ENC:
4308 dissect_cmts_mc_sess_enc(tvb, tlv_tree, pos, length);
4312 } /* switch(type) */
4315 } /* while (pos < total_len) */
4323 /* Register the protocol with Wireshark */
4325 /* this format is require because a script is used to build the C function
4326 that calls all the protocol registration.
4331 proto_register_docsis_tlv (void)
4334 /* Setup list of header fields See Section 1.6.1 for details*/
4335 static hf_register_info hf[] = {
4336 {&hf_docsis_tlv_down_freq,
4337 {"1 Downstream Frequency", "docsis_tlv.downfreq",
4338 FT_UINT32, BASE_DEC, NULL, 0x0,
4339 "Downstream Frequency", HFILL}
4341 {&hf_docsis_tlv_upstream_chid,
4342 {"2 Upstream Channel ID", "docsis_tlv.upchid",
4343 FT_UINT8, BASE_DEC, NULL, 0x0,
4344 "Service Identifier", HFILL}
4346 {&hf_docsis_tlv_net_access,
4347 {"3 Network Access", "docsis_tlv.netaccess",
4348 FT_BOOLEAN, BASE_NONE, TFS (&on_off_tfs), 0x0,
4349 "Network Access TLV", HFILL}
4351 {&hf_docsis_tlv_cos,
4352 {"4 COS Encodings", "docsis_tlv.cos",
4353 FT_BYTES, BASE_NONE, NULL, 0x0,
4356 {&hf_docsis_tlv_cos_id,
4357 {".1 Class ID", "docsis_tlv.cos.id",
4358 FT_UINT8, BASE_DEC, NULL, 0x0,
4361 {&hf_docsis_tlv_cos_sid,
4362 {".2 Service ID", "docsis_tlv.cos.sid",
4363 FT_UINT16, BASE_DEC, NULL, 0x0,
4364 "Service ID", HFILL}
4366 {&hf_docsis_tlv_cos_max_down,
4367 {".2 Max Downstream Rate (bps)", "docsis_tlv.cos.maxdown",
4368 FT_UINT32, BASE_DEC, NULL, 0x0,
4369 "Max Downstream Rate", HFILL}
4371 {&hf_docsis_tlv_cos_max_up,
4372 {".3 Max Upstream Rate (bps)", "docsis_tlv.cos.maxup",
4373 FT_UINT32, BASE_DEC, NULL, 0x0,
4374 "Max Upstream Rate", HFILL}
4376 {&hf_docsis_tlv_cos_up_chnl_pri,
4377 {".4 Upstream Channel Priority", "docsis_tlv.cos.upchnlpri",
4378 FT_UINT8, BASE_DEC, NULL, 0x0,
4379 "Upstream Channel Priority", HFILL}
4381 {&hf_docsis_tlv_cos_min_grntd_up,
4382 {".5 Guaranteed Upstream Rate", "docsis_tlv.cos.mingrntdup",
4383 FT_UINT32, BASE_DEC, NULL, 0x0,
4384 "Guaranteed Minimum Upstream Data Rate", HFILL}
4386 {&hf_docsis_tlv_cos_max_up_burst,
4387 {".6 Maximum Upstream Burst", "docsis_tlv.cos.maxupburst",
4388 FT_UINT16, BASE_DEC, NULL, 0x0,
4389 "Maximum Upstream Burst", HFILL}
4391 {&hf_docsis_tlv_cos_privacy_enable,
4392 {".7 COS Privacy Enable", "docsis_tlv.cos.privacy_enable",
4393 FT_BOOLEAN, BASE_NONE, TFS (&ena_dis_tfs), 0x0,
4394 "Class of Service Privacy Enable", HFILL}
4396 {&hf_docsis_tlv_mcap,
4397 {"5 Modem Capabilities", "docsis_tlv.mcap",
4398 FT_BYTES, BASE_NONE, NULL, 0x0,
4399 "Modem Capabilities", HFILL}
4401 {&hf_docsis_tlv_mcap_concat,
4402 {".1 Concatenation Support", "docsis_tlv.mcap.concat",
4403 FT_BOOLEAN, BASE_NONE, TFS (&on_off_tfs), 0x0,
4404 "Concatenation Support", HFILL}
4406 {&hf_docsis_tlv_mcap_docs_ver,
4407 {".2 Docsis Version", "docsis_tlv.map.docsver",
4408 FT_UINT8, BASE_DEC, VALS (docs_ver_vals), 0x0,
4409 "DOCSIS Version", HFILL}
4411 {&hf_docsis_tlv_mcap_frag,
4412 {".3 Fragmentation Support", "docsis_tlv.mcap.frag",
4413 FT_BOOLEAN, BASE_NONE, TFS (&on_off_tfs), 0x0,
4414 "Fragmentation Support", HFILL}
4416 {&hf_docsis_tlv_mcap_phs,
4417 {".4 PHS Support", "docsis_tlv.mcap.phs",
4418 FT_BOOLEAN, BASE_NONE, TFS (&on_off_tfs), 0x0,
4419 "PHS Support", HFILL}
4421 {&hf_docsis_tlv_mcap_igmp,
4422 {".5 IGMP Support", "docsis_tlv.mcap.igmp",
4423 FT_BOOLEAN, BASE_NONE, TFS (&on_off_tfs), 0x0,
4424 "IGMP Support", HFILL}
4426 {&hf_docsis_tlv_mcap_privacy,
4427 {".6 Privacy Support", "docsis_tlv.mcap.privacy",
4428 FT_BOOLEAN, BASE_NONE, TFS (&on_off_tfs), 0x0,
4429 "Privacy Support", HFILL}
4431 {&hf_docsis_tlv_mcap_down_said,
4432 {".7 # Downstream SAIDs Supported", "docsis_tlv.mcap.downsaid",
4433 FT_UINT8, BASE_DEC, NULL, 0x0,
4434 "Downstream Said Support", HFILL}
4436 {&hf_docsis_tlv_mcap_up_sid,
4437 {".8 # Upstream SAIDs Supported", "docsis_tlv.mcap.upsid",
4438 FT_UINT8, BASE_DEC, NULL, 0x0,
4439 "Upstream SID Support", HFILL}
4441 {&hf_docsis_tlv_mcap_8021P_filter,
4442 {".9 802.1P Filtering Support", "docsis_tlv.mcap.dot1pfiltering",
4443 FT_UINT8, BASE_DEC, VALS (on_off_vals), 0x80,
4444 "802.1P Filtering Support", HFILL}
4446 {&hf_docsis_tlv_mcap_8021Q_filter,
4447 {".9 802.1Q Filtering Support", "docsis_tlv.mcap.dot1qfilt",
4448 FT_UINT8, BASE_DEC, VALS (on_off_vals), 0x40,
4449 "802.1Q Filtering Support", HFILL}
4451 {&hf_docsis_tlv_mcap_xmit_eq_taps_per_sym,
4452 {".10 Xmit Equalizer Taps/Sym", "docsis_tlv.mcap.tapspersym",
4453 FT_UINT8, BASE_DEC, NULL, 0x0,
4454 "Transmit Equalizer Taps per Symbol", HFILL}
4456 {&hf_docsis_tlv_mcap_xmit_eq_taps,
4457 {".11 # Xmit Equalizer Taps", "docsis_tlv.mcap.numtaps",
4458 FT_UINT8, BASE_DEC, NULL, 0x0,
4459 "Number of Transmit Equalizer Taps", HFILL}
4461 {&hf_docsis_tlv_mcap_dcc,
4462 {".12 DCC Support", "docsis_tlv.mcap.dcc",
4463 FT_BOOLEAN, BASE_NONE, TFS (&on_off_tfs), 0x0,
4464 "DCC Support", HFILL}
4466 {&hf_docsis_tlv_mcap_ip_filters,
4467 {".13 IP Filters Support","docsis_tlv.mcap.ipfilters",
4468 FT_UINT16, BASE_DEC, NULL, 0x0,
4469 "IP Filters Support", HFILL}
4471 {&hf_docsis_tlv_mcap_llc_filters,
4472 {".14 LLC Filters Support","docsis_tlv.mcap.llcfilters",
4473 FT_UINT16, BASE_DEC, NULL, 0x0,
4474 "LLC Filters Support", HFILL}
4476 {&hf_docsis_tlv_mcap_exp_unicast_sid,
4477 {".15 Expanded Unicast SID Space","docsis_tlv.mcap.exucsid",
4478 FT_BOOLEAN, BASE_NONE, TFS (&on_off_tfs), 0x0,
4479 "Expanded Unicast SID Space", HFILL}
4481 {&hf_docsis_tlv_mcap_rnghoff_cm,
4482 {".16 Ranging Hold-Off (CM)","docsis_tlv.mcap.rnghoffcm",
4483 FT_UINT32, BASE_DEC, VALS (on_off_vals), 0x1,
4484 "Ranging Hold-Off (CM)", HFILL}
4486 {&hf_docsis_tlv_mcap_rnghoff_erouter,
4487 {".16 Ranging Hold-Off (ePS or eRouter)",
4488 "docsis_tlv.mcap.rnghofferouter",
4489 FT_UINT32, BASE_DEC, VALS (on_off_vals), 0x2,
4490 "Ranging Hold-Off (ePS or eRouter)", HFILL}
4492 {&hf_docsis_tlv_mcap_rnghoff_emta,
4493 {".16 Ranging Hold-Off (eMTA or EDVA)",
4494 "docsis_tlv.mcap.rnghoffemta",
4495 FT_UINT32, BASE_DEC, VALS (on_off_vals), 0x4,
4496 "Ranging Hold-Off (eMTA or EDVA)", HFILL}
4498 {&hf_docsis_tlv_mcap_rnghoff_estb,
4499 {".16 Ranging Hold-Off (DSG/eSTB)",
4500 "docsis_tlv.mcap.rnghoffestb",
4501 FT_UINT32, BASE_DEC, VALS (on_off_vals), 0x8,
4502 "Ranging Hold-Off (DSG/eSTB)", HFILL}
4504 {&hf_docsis_tlv_mcap_l2vpn,
4505 {".17 L2VPN Capability","docsis_tlv.mcap.l2vpn",
4506 FT_BYTES, BASE_NONE, NULL, 0x0,
4507 "L2VPN Capability", HFILL}
4509 {&hf_docsis_tlv_mcap_l2vpn_esafe,
4510 {".18 L2VPN eSAFE Host Capability","docsis_tlv.mcap.l2vpnesafe",
4511 FT_BYTES, BASE_NONE, NULL, 0x0,
4512 "L2VPN eSAFE Host Capability", HFILL}
4514 {&hf_docsis_tlv_mcap_dut_filtering,
4515 {".19 Downstream Unencrypted Traffic (DUT) Filtering",
4516 "docsis_tlv.mcap.dut",
4517 FT_BYTES, BASE_NONE, NULL, 0x0,
4518 "Downstream Unencrypted Traffic (DUT) Filtering", HFILL}
4520 {&hf_docsis_tlv_mcap_us_freq_range,
4521 {".20 Upstream Frequency Range Support",
4522 "docsis_tlv.mcap.usfreqrng",
4523 FT_UINT8, BASE_DEC, VALS (docsis_freq_rng_vals), 0x0,
4524 "Upstream Frequency Range Support", HFILL}
4526 {&hf_docsis_tlv_mcap_us_srate_160,
4527 {".21 Upstream Symbol Rate 160ksps supported",
4528 "docsis_tlv.mcap.srate160",
4529 FT_UINT8, BASE_DEC, VALS (on_off_vals), 0x1,
4530 "Upstream Symbol Rate 160ksps supported", HFILL}
4532 {&hf_docsis_tlv_mcap_us_srate_320,
4533 {".21 Upstream Symbol Rate 320ksps supported",
4534 "docsis_tlv.mcap.srate320",
4535 FT_UINT8, BASE_DEC, VALS (on_off_vals), 0x2,
4536 "Upstream Symbol Rate 320ksps supported", HFILL}
4538 {&hf_docsis_tlv_mcap_us_srate_640,
4539 {".21 Upstream Symbol Rate 640ksps supported",
4540 "docsis_tlv.mcap.srate640",
4541 FT_UINT8, BASE_DEC, VALS (on_off_vals), 0x4,
4542 "Upstream Symbol Rate 640ksps supported", HFILL}
4544 {&hf_docsis_tlv_mcap_us_srate_1280,
4545 {".21 Upstream Symbol Rate 1280ksps supported",
4546 "docsis_tlv.mcap.srate1280",
4547 FT_UINT8, BASE_DEC, VALS (on_off_vals), 0x8,
4548 "Upstream Symbol Rate 1280ksps supported", HFILL}
4550 {&hf_docsis_tlv_mcap_us_srate_2560,
4551 {".21 Upstream Symbol Rate 2560ksps supported",
4552 "docsis_tlv.mcap.srate2560",
4553 FT_UINT8, BASE_DEC, VALS (on_off_vals), 0x10,
4554 "Upstream Symbol Rate 2560ksps supported", HFILL}
4556 {&hf_docsis_tlv_mcap_us_srate_5120,
4557 {".21 Upstream Symbol Rate 5120ksps supported",
4558 "docsis_tlv.mcap.srate5120",
4559 FT_UINT8, BASE_DEC, VALS (on_off_vals), 0x20,
4560 "Upstream Symbol Rate 5120ksps supported", HFILL}
4562 {&hf_docsis_tlv_mcap_sac,
4563 {".22 Selectable Active Code Mode 2 Support","docsis_tlv.mcap.sac",
4564 FT_BOOLEAN, BASE_NONE, TFS (&on_off_tfs), 0x0,
4565 "Selectable Active Code Mode 2 Support", HFILL}
4567 {&hf_docsis_tlv_mcap_code_hop_mode2,
4568 {".23 Code Hopping Mode 2 Support","docsis_tlv.mcap.codehopm2",
4569 FT_BOOLEAN, BASE_NONE, TFS (&on_off_tfs), 0x0,
4570 "Code Hopping Mode 2 Support", HFILL}
4572 {&hf_docsis_tlv_mcap_mtc,
4573 {".24 Multiple Transmit Channel Support","docsis_tlv.mcap.mtc",
4574 FT_UINT8, BASE_DEC, NULL, 0x0,
4575 "Multiple Transmit Channel Support", HFILL}
4577 {&hf_docsis_tlv_mcap_512_msps_utc,
4578 {".25 5.12 Msps Upstream Transmit Channel Support",
4579 "docsis_tlv.mcap.512mspsutc",
4580 FT_UINT8, BASE_DEC, NULL, 0x0,
4581 "5.12 Msps Upstream Transmit Channel Support", HFILL}
4583 {&hf_docsis_tlv_mcap_256_msps_utc,
4584 {".26 2.56 Msps Upstream Transmit Channel Support",
4585 "docsis_tlv.mcap.256mspsutc",
4586 FT_UINT8, BASE_DEC, NULL, 0x0,
4587 "2.56 Msps Upstream Transmit Channel Support", HFILL}
4589 {&hf_docsis_tlv_mcap_total_sid_cluster,
4590 {".27 Total SID Cluster Support","docsis_tlv.mcap.totalsidcl",
4591 FT_UINT8, BASE_DEC, NULL, 0x0,
4592 "Total SID Cluster Support", HFILL}
4594 {&hf_docsis_tlv_mcap_sid_per_sf,
4595 {".28 SID Clusters per Service Flow Support",
4596 "docsis_tlv.mcap.sidpersf",
4597 FT_UINT8, BASE_DEC, NULL, 0x0,
4598 "SID Clusters per Service Flow Support", HFILL}
4600 {&hf_docsis_tlv_mcap_mrc,
4601 {".29 Multiple Receive Channel Support","docsis_tlv.mcap.mrc",
4602 FT_UINT8, BASE_DEC, NULL, 0x0,
4603 "Multiple Receive Channel Support", HFILL}
4605 {&hf_docsis_tlv_mcap_total_dsid,
4606 {".30 Total Downstream Service ID (DSID) Support",
4607 "docsis_tlv.mcap.totaldsid",
4608 FT_UINT8, BASE_DEC, NULL, 0x0,
4609 "Total Downstream Service ID (DSID) Support", HFILL}
4611 {&hf_docsis_tlv_mcap_reseq_dsid,
4612 {".31 Resequencing Downstream Service ID (DSID) Support",
4613 "docsis_tlv.mcap.reseqdsid",
4614 FT_UINT8, BASE_DEC, NULL, 0x0,
4615 "Resequencing Downstream Service ID (DSID) Support", HFILL}
4617 {&hf_docsis_tlv_mcap_mc_dsid,
4618 {".32 Multicast Downstream Service ID (DSID) Support",
4619 "docsis_tlv.mcap.mcdsid",
4620 FT_UINT8, BASE_DEC, NULL, 0x0,
4621 "Multicast Downstream Service ID (DSID) Support", HFILL}
4623 {&hf_docsis_tlv_mcap_mc_dsid_fwd,
4624 {".33 Mulitcast DSID Forwarding","docsis_tlv.mcap.mcdsidfwd",
4625 FT_UINT8, BASE_DEC, VALS (mc_dsid_fwd_vals), 0x0,
4626 "Mulitcast DSID Forwarding", HFILL}
4628 {&hf_docsis_tlv_mcap_fctype_fwd,
4629 {".34 Frame Control Type Forwarding Capability",
4630 "docsis_tlv.mcap.fctypefwd",
4631 FT_UINT8, BASE_DEC, VALS (fctype_fwd_vals), 0x0,
4632 "Frame Control Type Forwarding Capability", HFILL}
4634 {&hf_docsis_tlv_mcap_dpv_path,
4635 {".35 DPV Capability (per Path)","docsis_tlv.mcap.dpvpath",
4636 FT_UINT8, BASE_DEC, NULL, 0x1,
4637 "DPV Capability (per Path)", HFILL}
4639 {&hf_docsis_tlv_mcap_dpv_packet,
4640 {".35 DPV Capability (per Packet)","docsis_tlv.mcap.dpvpacket",
4641 FT_UINT8, BASE_DEC, NULL, 0x2,
4642 "DPV Capability (per Packet)", HFILL}
4644 {&hf_docsis_tlv_mcap_ugs,
4645 {".36 Unsolicited Grant Service Support","docsis_tlv.mcap.ugs",
4646 FT_UINT8, BASE_DEC, NULL, 0x0,
4647 "Unsolicited Grant Service Support", HFILL}
4649 {&hf_docsis_tlv_mcap_map_ucd,
4650 {".37 MAP and UCD Receipt Support","docsis_tlv.mcap.mapucd",
4651 FT_BOOLEAN, BASE_NONE, TFS (&on_off_tfs), 0x0,
4652 "MAP and UCD Receipt Support", HFILL}
4654 {&hf_docsis_tlv_mcap_udc,
4655 {".38 Upstream Drop Classifier Support","docsis_tlv.mcap.udc",
4656 FT_UINT16, BASE_DEC, NULL, 0x0,
4657 "Upstream Drop Classifier Support", HFILL}
4659 {&hf_docsis_tlv_mcap_ipv6,
4660 {".39 IPv6 Support","docsis_tlv.mcap.ipv6",
4661 FT_BOOLEAN, BASE_NONE, TFS (&on_off_tfs), 0x0,
4662 "IPv6 Support", HFILL}
4664 {&hf_docsis_tlv_mcap_ext_us_trans_power,
4665 {".40 Extended Upstream Transmit Power Capability",
4666 "docsis_tlv.mcap.extustrpwr",
4667 FT_UINT8, BASE_DEC, NULL, 0x0,
4668 "Extended Upstream Transmit Power Capability", HFILL}
4670 {&hf_docsis_tlv_cm_mic,
4671 {"6 CM MIC", "docsis_tlv.cmmic",
4672 FT_BYTES, BASE_NONE, NULL, 0x0,
4673 "Cable Modem Message Integrity Check", HFILL}
4675 {&hf_docsis_tlv_cmts_mic,
4676 {"7 CMTS MIC", "docsis_tlv.cmtsmic",
4677 FT_BYTES, BASE_NONE, NULL, 0x0,
4678 "CMTS Message Integrity Check", HFILL}
4680 {&hf_docsis_tlv_vendor_id,
4681 {"8 Vendor ID", "docsis_tlv.vendorid",
4682 FT_BYTES, BASE_NONE, NULL, 0x0,
4683 "Vendor Identifier", HFILL}
4685 {&hf_docsis_tlv_sw_file,
4686 {"9 Software Upgrade File", "docsis_tlv.sw_upg_file",
4687 FT_STRINGZ, BASE_NONE, NULL, 0x0,
4688 "Software Upgrade File", HFILL}
4690 {&hf_docsis_tlv_snmp_access,
4691 {"10 SNMP Write Access", "docsis_tlv.snmp_access",
4692 FT_BYTES, BASE_NONE, NULL, 0x0,
4693 "SNMP Write Access", HFILL}
4695 {&hf_docsis_tlv_snmp_obj,
4696 {"11 SNMP Object", "docsis_tlv.snmp_obj",
4697 FT_BYTES, BASE_NONE, NULL, 0x0,
4698 "SNMP Object", HFILL}
4700 {&hf_docsis_tlv_modem_addr,
4701 {"12 Modem IP Address", "docsis_tlv.modemaddr",
4702 FT_IPv4, BASE_NONE, NULL, 0x0,
4703 "Modem IP Address", HFILL}
4705 {&hf_docsis_tlv_svc_unavail,
4706 {"13 Service Not Available Response", "docsis_tlv.svcunavail",
4707 FT_BYTES, BASE_NONE, NULL, 0x0,
4708 "Service Not Available Response", HFILL}
4710 {&hf_docsis_tlv_svc_unavail_classid,
4711 {"Service Not Available: (Class ID)", "docsis_tlv.svcunavail.classid",
4712 FT_UINT8, BASE_DEC, NULL, 0x0,
4713 "Service Not Available (Class ID)", HFILL}
4715 {&hf_docsis_tlv_svc_unavail_type,
4716 {"Service Not Available (Type)", "docsis_tlv.svcunavail.type",
4717 FT_UINT8, BASE_DEC, NULL, 0x0,
4720 {&hf_docsis_tlv_svc_unavail_code,
4721 {"Service Not Available (Code)", "docsis_tlv.svcunavail.code",
4722 FT_UINT8, BASE_DEC, VALS(docsis_conf_code), 0x0,
4725 {&hf_docsis_tlv_cpe_ethernet,
4726 {"14 CPE Ethernet Addr", "docsis_tlv.cpe_ether",
4727 FT_ETHER, BASE_NONE, NULL, 0x0,
4728 "CPE Ethernet Addr", HFILL}
4730 {&hf_docsis_tlv_bpi,
4731 {"17 Baseline Privacy Encoding", "docsis_tlv.bpi",
4732 FT_BYTES, BASE_NONE, NULL, 0x0,
4733 "Baseline Privacy Encoding", HFILL}
4735 {&hf_docsis_tlv_max_cpe,
4736 {"18 Max # of CPE's", "docsis_tlv.maxcpe",
4737 FT_UINT8, BASE_DEC, NULL, 0x0,
4738 "Max Number of CPE's", HFILL}
4740 {&hf_docsis_tlv_tftp_server_timestamp,
4741 {"19 TFTP Server Timestamp", "docsis_tlv.tftp_time",
4742 FT_UINT32, BASE_DEC, NULL, 0x0,
4743 "TFTP Server TimeStamp", HFILL}
4745 {&hf_docsis_tlv_tftp_prov_modem_address,
4746 {"20 TFTP Server Provisioned Modem Addr", "docsis_tlv.tftpmodemaddr",
4747 FT_IPv4, BASE_NONE, NULL, 0x0,
4748 "TFTP Server Provisioned Modem Addr", HFILL}
4750 {&hf_docsis_tlv_sw_upg_srvr,
4751 {"21 Software Upgrade Server", "docsis_tlv.sw_upg_srvr",
4752 FT_IPv4, BASE_NONE, NULL, 0x0,
4753 "Software Upgrade Server", HFILL}
4755 {&hf_docsis_tlv_upclsfr,
4756 {"22 Upstream Classifier", "docsis_tlv.upclsfr",
4757 FT_BYTES, BASE_NONE, NULL, 0x0,
4760 {&hf_docsis_tlv_downclsfr,
4761 {"23 Downstream Classifier", "docsis_tlv.downclsfr",
4762 FT_BYTES, BASE_NONE, NULL, 0x0,
4765 {&hf_docsis_tlv_clsfr_ref,
4766 {".1 Classifier Ref", "docsis_tlv.clsfr.ref",
4767 FT_UINT8, BASE_DEC, NULL, 0x0,
4768 "Classifier Reference", HFILL}
4770 {&hf_docsis_tlv_clsfr_id,
4771 {".2 Classifier ID", "docsis_tlv.clsfr.id",
4772 FT_UINT16, BASE_DEC, NULL, 0x0,
4773 "Classifier ID", HFILL}
4775 {&hf_docsis_tlv_clsfr_sflow_ref,
4776 {".3 Service Flow Ref", "docsis_tlv.clsfr.sflowref",
4777 FT_UINT16, BASE_DEC, NULL, 0x0,
4778 "Service Flow Reference", HFILL}
4780 {&hf_docsis_tlv_clsfr_sflow_id,
4781 {".4 Service Flow ID", "docsis_tlv.clsfr.sflowid",
4782 FT_UINT16, BASE_DEC, NULL, 0x0,
4783 "Service Flow ID", HFILL}
4785 {&hf_docsis_tlv_clsfr_rule_pri,
4786 {".5 Rule Priority", "docsis_tlv.clsfr.rulepri",
4787 FT_UINT8, BASE_DEC, NULL, 0x0,
4788 "Rule Priority", HFILL}
4790 {&hf_docsis_tlv_clsfr_act_state,
4791 {".6 Activation State", "docsis_tlv.clsfr.actstate",
4792 FT_BOOLEAN, BASE_NONE, TFS (&activation_tfs), 0x0,
4793 "Classifier Activation State", HFILL}
4795 {&hf_docsis_tlv_clsfr_dsc_act,
4796 {".7 DSC Action", "docsis_tlv.clsfr.dscact",
4797 FT_UINT8, BASE_DEC, VALS (dsc_act_vals), 0x0,
4798 "Dynamic Service Change Action", HFILL}
4800 {&hf_docsis_tlv_clsfr_err,
4801 {".8 Error Encodings", "docsis_tlv.clsfr.err",
4802 FT_BYTES, BASE_NONE, NULL, 0x0,
4803 "Error Encodings", HFILL}
4805 {&hf_docsis_tlv_clsfr_err_param,
4806 {"..1 Param Subtype", "docsis_tlv.clsfr.err.param",
4807 FT_UINT8, BASE_DEC, NULL, 0x0,
4808 "Parameter Subtype", HFILL}
4810 {&hf_docsis_tlv_clsfr_err_code,
4811 {"..2 Error Code", "docsis_tlv.clsfr.err.code",
4812 FT_UINT8, BASE_DEC, VALS(docsis_conf_code), 0x0,
4813 "TCP/UDP Destination Port End", HFILL}
4815 {&hf_docsis_tlv_clsfr_err_msg,
4816 {"..3 Error Message", "docsis_tlv.clsfr.err.msg",
4817 FT_STRINGZ, BASE_NONE, NULL, 0x0,
4818 "Error Message", HFILL}
4820 {&hf_docsis_tlv_ipclsfr,
4821 {".9 IP Classifier Encodings", "docsis_tlv.clsfr.ip",
4822 FT_BYTES, BASE_NONE, NULL, 0x0,
4823 "IP Classifier Encodings", HFILL}
4825 {&hf_docsis_tlv_ipclsfr_tosmask,
4826 {"..1 Type Of Service Mask", "docsis_tlv.clsfr.ip.tosmask",
4827 FT_BYTES, BASE_NONE, NULL, 0x0,
4828 "Type Of Service Mask", HFILL}
4830 {&hf_docsis_tlv_ipclsfr_ipproto,
4831 {"..2 IP Protocol", "docsis_tlv.clsfr.ip.ipproto",
4832 FT_UINT16, BASE_DEC, NULL, 0x0,
4833 "IP Protocol", HFILL}
4835 {&hf_docsis_tlv_ipclsfr_src,
4836 {"..3 Source Address", "docsis_tlv.clsfr.ip.src",
4837 FT_IPv4, BASE_NONE, NULL, 0x0,
4838 "Source Address", HFILL}
4840 {&hf_docsis_tlv_ipclsfr_dst,
4841 {"..4 Destination Address", "docsis_tlv.clsfr.ip.dst",
4842 FT_IPv4, BASE_NONE, NULL, 0x0,
4843 "Destination Address", HFILL}
4845 {&hf_docsis_tlv_ipclsfr_srcmask,
4846 {"..5 Source Mask", "docsis_tlv.clsfr.ip.smask",
4847 FT_IPv4, BASE_NONE, NULL, 0x0,
4848 "Source Mask", HFILL}
4850 {&hf_docsis_tlv_ipclsfr_dstmask,
4851 {"..6 Destination Mask", "docsis_tlv.clsfr.ip.dmask",
4852 FT_IPv4, BASE_NONE, NULL, 0x0,
4853 "Destination Mask", HFILL}
4855 {&hf_docsis_tlv_ipclsfr_sport_start,
4856 {"..7 Source Port Start", "docsis_tlv.clsfr.ip.sportstart",
4857 FT_UINT16, BASE_DEC, NULL, 0x0,
4858 "TCP/UDP Source Port Start", HFILL}
4860 {&hf_docsis_tlv_ipclsfr_sport_end,
4861 {"..8 Source Port End", "docsis_tlv.clsfr.ip.sportend",
4862 FT_UINT16, BASE_DEC, NULL, 0x0,
4863 "TCP/UDP Source Port End", HFILL}
4865 {&hf_docsis_tlv_ipclsfr_dport_start,
4866 {"..9 Dest Port Start", "docsis_tlv.clsfr.ip.dportstart",
4867 FT_UINT16, BASE_DEC, NULL, 0x0,
4868 "TCP/UDP Destination Port Start", HFILL}
4870 {&hf_docsis_tlv_ipclsfr_dport_end,
4871 {"..10 Dest Port End", "docsis_tlv.clsfr.ip.dportend",
4872 FT_UINT16, BASE_DEC, NULL, 0x0,
4873 "TCP/UDP Destination Port End", HFILL}
4875 {&hf_docsis_tlv_ethclsfr,
4876 {".10 Ethernet Classifier Encodings", "docsis_tlv.clsfr.eth",
4877 FT_BYTES, BASE_NONE, NULL, 0x0,
4878 "Ethernet Classifier Encodings", HFILL}
4880 {&hf_docsis_tlv_ethclsfr_dmac,
4881 {"..1 Dest Mac Address", "docsis_tlv.clsfr.eth.dmac",
4882 FT_ETHER, BASE_NONE, NULL, 0x0,
4883 "Destination Mac Address", HFILL}
4885 {&hf_docsis_tlv_ethclsfr_smac,
4886 {"..2 Source Mac Address", "docsis_tlv.clsfr.eth.smac",
4887 FT_ETHER, BASE_NONE, NULL, 0x0,
4888 "Source Mac Address", HFILL}
4890 {&hf_docsis_tlv_ethclsfr_ethertype,
4891 {"..3 Ethertype", "docsis_tlv.clsfr.eth.ethertype",
4892 FT_UINT24, BASE_HEX, NULL, 0x0,
4895 {&hf_docsis_tlv_dot1qclsfr,
4896 {".11 802.1Q Classifier Encodings", "docsis_tlv.clsfr.dot1q",
4897 FT_BYTES, BASE_NONE, NULL, 0x0,
4898 "802.1Q Classifier Encodings", HFILL}
4900 {&hf_docsis_tlv_dot1qclsfr_user_pri,
4901 {"..1 User Priority", "docsis_tlv.clsfr.dot1q.userpri",
4902 FT_UINT16, BASE_HEX, NULL, 0x0,
4903 "User Priority", HFILL}
4905 {&hf_docsis_tlv_dot1qclsfr_vlanid,
4906 {"..2 VLAN id", "docsis_tlv.clsfr.dot1q.ethertype",
4907 FT_UINT16, BASE_DEC, NULL, 0x0,
4910 {&hf_docsis_tlv_dot1qclsfr_vendorspec,
4911 {"..43 Vendor Specific Encodings", "docsis_tlv.clsfr.dot1q.vendorspec",
4912 FT_BYTES, BASE_NONE, NULL, 0x0,
4913 "Vendor Specific Encodings", HFILL}
4915 {&hf_docsis_tlv_clsfr_vendor_spc,
4916 {".43 Vendor Specific Encodings", "docsis_tlv.clsfr.vendor",
4917 FT_BYTES, BASE_NONE, NULL, 0x0,
4918 "Vendor Specific Encodings", HFILL}
4920 {&hf_docsis_tlv_upsflow,
4921 {"24 Upstream Service Flow", "docsis_tlv.upsflow",
4922 FT_BYTES, BASE_NONE, NULL, 0x0,
4925 {&hf_docsis_tlv_downsflow,
4926 {"25 Downstream Service Flow", "docsis_tlv.downsflow",
4927 FT_BYTES, BASE_NONE, NULL, 0x0,
4930 {&hf_docsis_tlv_sflow_ref,
4931 {".1 Service Flow Ref", "docsis_tlv.sflow.ref",
4932 FT_UINT16, BASE_DEC, NULL, 0x0,
4933 "Service Flow Reference", HFILL}
4935 {&hf_docsis_tlv_sflow_id,
4936 {".2 Service Flow Id", "docsis_tlv.sflow.id",
4937 FT_UINT32, BASE_DEC, NULL, 0x0,
4938 "Service Flow Id", HFILL}
4940 {&hf_docsis_tlv_sflow_sid,
4941 {".3 Service Identifier", "docsis_tlv.sflow.sid",
4942 FT_UINT16, BASE_DEC, NULL, 0x0,
4943 "Service Identifier", HFILL}
4945 {&hf_docsis_tlv_sflow_classname,
4946 {".4 Service Class Name", "docsis_tlv.sflow.cname",
4947 FT_STRINGZ, BASE_NONE, NULL, 0x0,
4948 "Service Class Name", HFILL}
4950 {&hf_docsis_tlv_sflow_err,
4951 {".5 Error Encodings", "docsis_tlv.sflow.err",
4952 FT_BYTES, BASE_NONE, NULL, 0x0,
4953 "Error Encodings", HFILL}
4955 {&hf_docsis_tlv_sflow_err_param,
4956 {"..1 Param Subtype", "docsis_tlv.sflow.err.param",
4957 FT_UINT8, BASE_DEC, NULL, 0x0,
4958 "Parameter Subtype", HFILL}
4960 {&hf_docsis_tlv_sflow_err_code,
4961 {"..2 Error Code", "docsis_tlv.sflow.err.code",
4962 FT_UINT8, BASE_DEC, VALS(docsis_conf_code), 0x0,
4963 "Error Code", HFILL}
4965 {&hf_docsis_tlv_sflow_err_msg,
4966 {"..3 Error Message", "docsis_tlv.sflow.err.msg",
4967 FT_STRINGZ, BASE_NONE, NULL, 0x0,
4968 "Error Message", HFILL}
4970 {&hf_docsis_tlv_sflow_qos_param,
4971 {".6 QOS Parameter Set", "docsis_tlv.sflow.qos",
4972 FT_UINT8, BASE_HEX, VALS (qos_param_vals), 0x0,
4973 "QOS Parameter Set", HFILL}
4975 {&hf_docsis_tlv_sflow_traf_pri,
4976 {".7 Traffic Priority", "docsis_tlv.sflow.trafpri",
4977 FT_UINT8, BASE_DEC, NULL, 0x0,
4978 "Traffic Priority", HFILL}
4980 {&hf_docsis_tlv_sflow_max_sus,
4981 {".8 Maximum Sustained Traffic Rate (bps)", "docsis_tlv.sflow.maxtrafrate",
4982 FT_UINT32, BASE_DEC, NULL, 0x0,
4983 "Maximum Sustained Traffic Rate (bps)", HFILL}
4985 {&hf_docsis_tlv_sflow_max_burst,
4986 {".9 Maximum Burst (bps)", "docsis_tlv.sflow.maxburst",
4987 FT_UINT32, BASE_DEC, NULL, 0x0,
4988 "Maximum Burst (bps)", HFILL}
4990 {&hf_docsis_tlv_sflow_min_traf,
4991 {".10 Minimum Traffic Rate (bps)", "docsis_tlv.sflow.mintrafrate",
4992 FT_UINT32, BASE_DEC, NULL, 0x0,
4993 "Minimum Traffic Rate (bps)", HFILL}
4995 {&hf_docsis_tlv_sflow_ass_min_pkt_size,
4996 {".11 Assumed Min Reserved Packet Size", "docsis_tlv.sflow.assumed_min_pkt_size",
4997 FT_UINT16, BASE_DEC, NULL, 0x0,
4998 "Assumed Minimum Reserved Packet Size", HFILL}
5000 {&hf_docsis_tlv_sflow_timeout_active,
5001 {".12 Timeout for Active Params (secs)", "docsis_tlv.sflow.act_timeout",
5002 FT_UINT16, BASE_DEC, NULL, 0x0,
5003 "Timeout for Active Params (secs)", HFILL}
5005 {&hf_docsis_tlv_sflow_timeout_admitted,
5006 {".13 Timeout for Admitted Params (secs)", "docsis_tlv.sflow.adm_timeout",
5007 FT_UINT16, BASE_DEC, NULL, 0x0,
5008 "Timeout for Admitted Params (secs)", HFILL}
5010 {&hf_docsis_tlv_sflow_max_down_latency,
5011 {".14 Maximum Downstream Latency (usec)", "docsis_tlv.sflow.max_down_lat",
5012 FT_UINT32, BASE_DEC, NULL, 0x0,
5013 "Maximum Downstream Latency (usec)", HFILL}
5015 {&hf_docsis_tlv_sflow_max_concat_burst,
5016 {".14 Max Concat Burst", "docsis_tlv.sflow.maxconcat",
5017 FT_UINT16, BASE_DEC, NULL, 0x0,
5018 "Max Concatenated Burst", HFILL}
5020 {&hf_docsis_tlv_sflow_sched_type,
5021 {".15 Scheduling Type", "docsis_tlv.sflow.schedtype",
5022 FT_UINT32, BASE_HEX, VALS (sched_type_vals), 0x0,
5023 "Scheduling Type", HFILL}
5025 {&hf_docsis_tlv_sflow_reqxmit_pol,
5026 {".16 Request/Transmission Policy", "docsis_tlv.sflow.reqxmitpol",
5027 FT_UINT32, BASE_HEX, NULL, 0x0,
5028 "Request/Transmission Policy", HFILL}
5030 {&hf_docsis_tlv_sflow_nominal_polling,
5031 {".17 Nominal Polling Interval(usec)", "docsis_tlv.sflow.nominal_polling",
5032 FT_UINT32, BASE_DEC, NULL, 0x0,
5033 "Nominal Polling Interval(usec)", HFILL}
5035 {&hf_docsis_tlv_sflow_tolerated_jitter,
5036 {".18 Tolerated Poll Jitter (usec)", "docsis_tlv.sflow.toler_jitter",
5037 FT_UINT32, BASE_DEC, NULL, 0x0,
5038 "Tolerated Poll Jitter (usec)", HFILL}
5040 {&hf_docsis_tlv_sflow_ugs_size,
5041 {".19 Unsolicited Grant Size (bytes)", "docsis_tlv.sflow.ugs_size",
5042 FT_UINT16, BASE_DEC, NULL, 0x0,
5043 "Unsolicited Grant Size (bytes)", HFILL}
5045 {&hf_docsis_tlv_sflow_nom_grant_intvl,
5046 {".20 Nominal Grant Interval (usec)", "docsis_tlv.sflow.nom_grant_intvl",
5047 FT_UINT32, BASE_DEC, NULL, 0x0,
5048 "Nominal Grant Interval (usec)", HFILL}
5050 {&hf_docsis_tlv_sflow_tol_grant_jitter,
5051 {".21 Tolerated Grant Jitter (usec)", "docsis_tlv.sflow.tol_grant_jitter",
5052 FT_UINT32, BASE_DEC, NULL, 0x0,
5053 "Tolerated Grant Jitter (usec)", HFILL}
5055 {&hf_docsis_tlv_sflow_grants_per_intvl,
5056 {".22 Grants Per Interval", "docsis_tlv.sflow.grnts_per_intvl",
5057 FT_UINT8, BASE_DEC, NULL, 0x0,
5058 "Grants Per Interval", HFILL}
5060 {&hf_docsis_tlv_sflow_ip_tos_overwrite,
5061 {".23 IP TOS Overwrite", "docsis_tlv.sflow.iptos_overwrite",
5062 FT_UINT16, BASE_HEX, NULL, 0x0,
5063 "IP TOS Overwrite", HFILL}
5065 {&hf_docsis_tlv_sflow_ugs_timeref,
5066 {".24 UGS Time Reference", "docsis_tlv.sflow.ugs_timeref",
5067 FT_UINT32, BASE_DEC, NULL, 0x0,
5068 "UGS Time Reference", HFILL}
5070 {&hf_docsis_tlv_sflow_vendor_spec,
5071 {".43 Vendor Specific Encodings", "docsis_tlv.sflow.vendorspec",
5072 FT_BYTES, BASE_NONE, NULL, 0x0,
5073 "Vendor Specific Encodings", HFILL}
5075 {&hf_docsis_tlv_phs,
5076 {"26 PHS Rules", "docsis_tlv.phs",
5077 FT_BYTES, BASE_NONE, NULL, 0x0,
5080 {&hf_docsis_tlv_phs_class_ref,
5081 {".1 Classifier Reference", "docsis_tlv.phs.classref",
5082 FT_UINT8, BASE_DEC, NULL, 0x0,
5083 "Classifier Reference", HFILL}
5085 {&hf_docsis_tlv_phs_class_id,
5086 {".2 Classifier Id", "docsis_tlv.phs.classid",
5087 FT_UINT16, BASE_DEC, NULL, 0x0,
5088 "Classifier Id", HFILL}
5090 {&hf_docsis_tlv_phs_sflow_ref,
5091 {".3 Service flow reference", "docsis_tlv.phs.sflowref",
5092 FT_UINT16, BASE_DEC, NULL, 0x0,
5093 "Service Flow Reference", HFILL}
5095 {&hf_docsis_tlv_phs_sflow_id,
5096 {".4 Service flow Id", "docsis_tlv.phs.sflowid",
5097 FT_UINT16, BASE_DEC, NULL, 0x0,
5098 "Service Flow Id", HFILL}
5100 {&hf_docsis_tlv_phs_dsc_action,
5101 {".5 DSC Action", "docsis_tlv.phs.dscaction",
5102 FT_UINT8, BASE_DEC, VALS (action_vals), 0x0,
5103 "Dynamic Service Change Action", HFILL}
5105 {&hf_docsis_tlv_phs_err,
5106 {".6 Error Encodings", "docsis_tlv.phs.err",
5107 FT_BYTES, BASE_NONE, NULL, 0x0,
5108 "Error Encodings", HFILL}
5110 {&hf_docsis_tlv_phs_err_param,
5111 {"..1 Param Subtype", "docsis_tlv.phs.err.param",
5112 FT_UINT8, BASE_DEC, NULL, 0x0,
5113 "Parameter Subtype", HFILL}
5115 {&hf_docsis_tlv_phs_err_code,
5116 {"..2 Error Code", "docsis_tlv.phs.err.code",
5117 FT_UINT8, BASE_DEC, NULL, 0x0,
5118 "Error Code", HFILL}
5120 {&hf_docsis_tlv_phs_err_msg,
5121 {"..3 Error Message", "docsis_tlv.phs.err.msg",
5122 FT_STRINGZ, BASE_NONE, NULL, 0x0,
5123 "Error Message", HFILL}
5125 {&hf_docsis_tlv_phs_phsf,
5126 {".7 PHS Field", "docsis_tlv.phs.phsf",
5127 FT_BYTES, BASE_NONE, NULL, 0x0,
5130 {&hf_docsis_tlv_phs_phsi,
5131 {".8 PHS Index", "docsis_tlv.phs.phsi",
5132 FT_UINT8, BASE_DEC, NULL, 0x0,
5135 {&hf_docsis_tlv_phs_phsm,
5136 {".9 PHS Mask", "docsis_tlv.phs.phsm",
5137 FT_BYTES, BASE_NONE, NULL, 0x0,
5140 {&hf_docsis_tlv_phs_phss,
5141 {".10 PHS Size", "docsis_tlv.phs.phss",
5142 FT_UINT8, BASE_DEC, NULL, 0x0,
5145 {&hf_docsis_tlv_phs_phsv,
5146 {".11 PHS Verify", "docsis_tlv.phs.phsv",
5147 FT_BOOLEAN, BASE_NONE, TFS (&verify_tfs), 0x0,
5148 "PHS Verify", HFILL}
5150 {&hf_docsis_tlv_phs_vendorspec,
5151 {".43 PHS Vendor Specific", "docsis_tlv.phs.vendorspec",
5152 FT_BYTES, BASE_NONE, NULL, 0x0,
5153 "PHS Vendor Specific", HFILL}
5155 {&hf_docsis_tlv_hmac_digest,
5156 {"27 HMAC Digest", "docsis_tlv.hmac_digest",
5157 FT_BYTES, BASE_NONE, NULL, 0x0,
5158 "HMAC Digest", HFILL}
5160 {&hf_docsis_tlv_max_classifiers,
5161 {"28 Max # of Classifiers", "docsis_tlv.maxclass",
5162 FT_UINT16, BASE_DEC, NULL, 0x0,
5163 "Max # of Classifiers", HFILL}
5165 {&hf_docsis_tlv_privacy_enable,
5166 {"29 Privacy Enable", "docsis_tlv.bpi_en",
5167 FT_BOOLEAN, BASE_NONE, TFS (&ena_dis_tfs), 0x0,
5168 "Privacy Enable", HFILL}
5170 {&hf_docsis_tlv_auth_block,
5171 {"30 Auth Block", "docsis_tlv.auth_block",
5172 FT_BYTES, BASE_NONE, NULL, 0x0,
5173 "Auth Block", HFILL}
5175 {&hf_docsis_tlv_key_seq_num,
5176 {"31 Key Sequence Number", "docsis_tlv.key_seq",
5177 FT_BYTES, BASE_NONE, NULL, 0x0,
5178 "Key Sequence Number", HFILL}
5180 {&hf_docsis_tlv_mfgr_cvc,
5181 {"32 Manufacturer CVC", "docsis_tlv.mfgr_cvc",
5182 FT_BYTES, BASE_NONE, NULL, 0x0,
5183 "Manufacturer CVC", HFILL}
5185 {&hf_docsis_tlv_cosign_cvc,
5186 {"33 Co-Signer CVC", "docsis_tlv.cosign_cvc",
5187 FT_BYTES, BASE_NONE, NULL, 0x0,
5188 "Co-Signer CVC", HFILL}
5190 {&hf_docsis_tlv_snmpv3_kick,
5191 {"34 SNMPv3 Kickstart Value", "docsis_tlv.snmpv3",
5192 FT_BYTES, BASE_NONE, NULL, 0x0,
5193 "SNMPv3 Kickstart Value", HFILL}
5195 {&hf_docsis_tlv_snmpv3_kick_name,
5196 {".1 SNMPv3 Kickstart Security Name", "docsis_tlv.snmpv3.secname",
5197 FT_STRING, BASE_NONE, NULL, 0x0,
5198 "SNMPv3 Kickstart Security Name", HFILL}
5200 {&hf_docsis_tlv_snmpv3_kick_publicnum,
5201 {".2 SNMPv3 Kickstart Manager Public Number", "docsis_tlv.snmpv3.publicnum",
5202 FT_BYTES, BASE_NONE, NULL, 0x0,
5203 "SNMPv3 Kickstart Value Manager Public Number", HFILL}
5205 {&hf_docsis_tlv_subs_mgmt_ctrl,
5206 {"35 Subscriber Management Control", "docsis_tlv.subsmgmtctrl",
5207 FT_BYTES, BASE_NONE, NULL, 0x0,
5208 "Subscriber Management Control", HFILL}
5210 {&hf_docsis_tlv_subs_mgmt_ip_table,
5211 {"36 Subscriber Management CPE IP Table", "docsis_tlv.subsiptable",
5212 FT_BYTES, BASE_NONE, NULL, 0x0,
5213 "Subscriber Management CPE IP Table", HFILL}
5215 {&hf_docsis_tlv_subs_mgmt_ip_entry,
5216 {"Subscriber Management CPE IP Entry", "docsis_tlv.subsipentry",
5217 FT_IPv4, BASE_NONE, NULL, 0x0,
5220 {&hf_docsis_tlv_subs_mgmt_filter_grps,
5221 {"37 Subscriber Management Filter Groups", "docsis_tlv.subsfltrgrps",
5222 FT_BYTES, BASE_NONE, NULL, 0x0,
5223 "Subscriber Management Filter Groups", HFILL}
5225 {&hf_docsis_tlv_snmpv3_ntfy_rcvr,
5226 {"38 SNMPv3 Notification Receiver", "docsis_tlv.snmpv3ntfy",
5227 FT_BYTES, BASE_NONE, NULL, 0x0,
5228 "SNMPv3 Notification Receiver", HFILL}
5230 {&hf_docsis_tlv_enable_20_mode,
5231 {"39 Enable 2.0 Mode", "docsis_tlv.enable20mode",
5232 FT_BOOLEAN, BASE_NONE, TFS (&ena_dis_tfs), 0x0,
5233 "Enable 2.0 Mode", HFILL}
5235 {&hf_docsis_tlv_enable_test_modes,
5236 {"40 Enable Test Modes", "docsis_tlv.enabletestmodes",
5237 FT_BOOLEAN, BASE_NONE, TFS (&ena_dis_tfs), 0x0,
5238 "Enable Test Modes", HFILL}
5240 {&hf_docsis_tlv_ds_ch_list,
5241 {"41 Downstream Channel List", "docsis_tlv.dschlist",
5242 FT_BYTES, BASE_NONE, NULL, 0x0,
5245 {&hf_docsis_tlv_ds_ch_list_single,
5246 {".1 Single Downstream Channel", "docsis_tlv.dschlist.single",
5247 FT_BYTES, BASE_NONE, NULL, 0x0,
5250 {&hf_docsis_tlv_single_ch_timeout,
5251 {"..1 Timeout", "docsis_tlv.dschlist.single.timeout",
5252 FT_UINT16, BASE_DEC, NULL, 0x0,
5255 {&hf_docsis_tlv_single_ch_freq,
5256 {"..2 Timeout", "docsis_tlv.dschlist.single.freq",
5257 FT_UINT32, BASE_DEC, NULL, 0x0,
5260 {&hf_docsis_tlv_ds_ch_list_range,
5261 {".2 Downstream Frequency Range", "docsis_tlv.dschlist.range",
5262 FT_BYTES, BASE_NONE, NULL, 0x0,
5265 {&hf_docsis_tlv_freq_rng_timeout,
5266 {"..1 Timeout", "docsis_tlv.dschlist.range.timeout",
5267 FT_UINT16, BASE_DEC, NULL, 0x0,
5270 {&hf_docsis_tlv_freq_rng_start,
5271 {"..2 Frequency Start", "docsis_tlv.dschlist.range.start",
5272 FT_UINT32, BASE_DEC, NULL, 0x0,
5273 "Frequency Start", HFILL}
5275 {&hf_docsis_tlv_freq_rng_end,
5276 {"..3 Frequency Start", "docsis_tlv.dschlist.range.end",
5277 FT_UINT32, BASE_DEC, NULL, 0x0,
5278 "Frequency End", HFILL}
5280 {&hf_docsis_tlv_freq_rng_step,
5281 {"..4 Frequency Step Size", "docsis_tlv.dschlist.range.step",
5282 FT_UINT32, BASE_DEC, NULL, 0x0,
5283 "Frequency Step Size", HFILL}
5285 {&hf_docsis_tlv_ds_ch_list_default_timeout,
5286 {".3 Default Scanning Timeout", "docsis_tlv.dschlist.defaulttimeout",
5287 FT_UINT16, BASE_DEC, NULL, 0x0,
5288 "Default Scanning Timeout", HFILL}
5290 {&hf_docsis_tlv_mc_mac_address,
5291 {"42 Static Multicast MAC Address", "docsis_tlv.mcmac",
5292 FT_ETHER, BASE_NONE, NULL, 0x0,
5293 "Static Multicast MAC Address", HFILL}
5295 {&hf_docsis_tlv_vendor_spec,
5296 {"43 Vendor Specific Encodings", "docsis_tlv.vendorspec",
5297 FT_BYTES, BASE_NONE, NULL, 0x0,
5298 "Vendor Specific Encodings", HFILL}
5300 {&hf_docsis_tlv_rng_tech,
5301 {"Ranging Technique", "docsis_tlv.rng_tech",
5302 FT_UINT8, BASE_DEC, VALS (rng_tech_vals), 0x0,
5305 {&hf_docsis_tlv_dut_filter,
5306 {"45 Downstream Unencrypted Traffic Filtering Encoding", "docsis_tlv.dut",
5307 FT_BYTES, BASE_NONE, NULL, 0x0,
5308 "Downstream Unencrypted Traffic Filtering Encoding", HFILL}
5310 {&hf_docsis_tlv_dut_filter_control,
5311 {".1 DUT Control", "docsis_tlv.dut.control",
5312 FT_BOOLEAN, BASE_NONE, TFS (&ena_dis_tfs), 0x0,
5313 "DUT Control", HFILL}
5315 {&hf_docsis_tlv_dut_filter_cmim,
5316 {".2 DUT CMIM", "docsis_tlv.dut.cmim",
5317 FT_BYTES, BASE_NONE, NULL, 0x0,
5320 {&hf_docsis_tlv_tcc,
5321 {"46 Transmit Channel Configuration", "docsis_tlv.tcc",
5322 FT_BYTES, BASE_NONE, NULL, 0x0,
5323 "Transmit Channel Configuration", HFILL}
5325 {&hf_docsis_tlv_tcc_refid,
5326 {".1 TCC Reference ID", "docsis_tlv.tcc.refid",
5327 FT_UINT8, BASE_DEC, NULL, 0x0,
5328 "TCC Reference ID", HFILL}
5330 {&hf_docsis_tlv_tcc_us_ch_action,
5331 {".2 Upstream Channel Action", "docsis_tlv.tcc.uschact",
5332 FT_UINT8, BASE_DEC, VALS (us_ch_action_vals), 0x0,
5333 "Upstream Channel Action", HFILL}
5335 {&hf_docsis_tlv_tcc_us_ch_id,
5336 {".3 Upstream Channel ID", "docsis_tlv.tcc.uschid",
5337 FT_UINT8, BASE_DEC, NULL, 0x0,
5338 "Upstream Channel ID", HFILL}
5340 {&hf_docsis_tlv_tcc_new_us_ch_id,
5341 {".4 New Upstream Channel ID", "docsis_tlv.tcc.newuschid",
5342 FT_UINT8, BASE_DEC, NULL, 0x0,
5343 "New Upstream Channel ID", HFILL}
5345 {&hf_docsis_tlv_tcc_ucd,
5346 {".5 Upstream Channel Decsriptor", "docsis_tlv.tcc.ucd",
5347 FT_BYTES, BASE_NONE, NULL, 0x0,
5348 "Upstream Channel Descriptor", HFILL}
5350 {&hf_docsis_tlv_tcc_rng_sid,
5351 {".6 Ranging SID", "docsis_tlv.tcc.rngsid",
5352 FT_UINT16, BASE_DEC, NULL, 0x0,
5353 "Ranging SID", HFILL}
5355 {&hf_docsis_tlv_tcc_init_tech,
5356 {".7 Initialization Technique", "docsis_tlv.tcc.inittech",
5357 FT_UINT8, BASE_DEC, VALS (init_tech_vals), 0x0,
5358 "Initialization Technique", HFILL}
5360 {&hf_docsis_tlv_tcc_rng_parms,
5361 {".8 Ranging Parameters", "docsis_tlv.tcc.rngparms",
5362 FT_BYTES, BASE_NONE, NULL, 0x0,
5363 "Ranging Parameters", HFILL}
5365 {&hf_docsis_rng_parms_us_ch_id,
5366 {"..1 Ranging Reference Channel ID", "docsis_tlv.tcc.rngparms.uschid",
5367 FT_UINT8, BASE_DEC, NULL, 0x0,
5368 "Upstream Channel ID", HFILL}
5370 {&hf_docsis_rng_parms_time_off_int,
5371 {"..2 Timing Offset, Integer Part", "docsis_tlv.tcc.rngparms.timeoffint",
5372 FT_UINT32, BASE_DEC, NULL, 0x0,
5373 "Timing Offset, Integer Part", HFILL}
5375 {&hf_docsis_rng_parms_time_off_frac,
5376 {"..3 Timing Offset, Fractional Part", "docsis_tlv.tcc.rngparms.timeofffrac",
5377 FT_UINT8, BASE_DEC, NULL, 0x0,
5378 "Timing Offset, Fractional Part", HFILL}
5380 {&hf_docsis_rng_parms_power_off,
5381 {"..4 Power Offset", "docsis_tlv.tcc.rngparms.poweroff",
5382 FT_UINT8, BASE_DEC, NULL, 0x0,
5383 "Power Offset", HFILL}
5385 {&hf_docsis_rng_parms_freq_off,
5386 {"..5 Frequency Offset", "docsis_tlv.tcc.rngparms.freqoff",
5387 FT_UINT16, BASE_DEC, NULL, 0x0,
5388 "Frequency Offset", HFILL}
5390 {&hf_docsis_tlv_tcc_dyn_rng_win,
5391 {".9 Dynamic Range Window", "docsis_tlv.tcc.dynrngwin",
5392 FT_UINT8, BASE_DEC, NULL, 0x0,
5393 "Dynamic Range Window", HFILL}
5395 {&hf_docsis_tlv_tcc_err,
5396 {".10 TCC Error Encodings", "docsis_tlv.tcc.err",
5397 FT_BYTES, BASE_NONE, NULL, 0x0,
5398 "TCC Error Encodings", HFILL}
5400 {&hf_docsis_tcc_err_subtype,
5401 {"..1 TCC Subtype", "docsis_tlv.tcc.err.subtype",
5402 FT_BYTES, BASE_NONE, NULL, 0x0,
5403 "TCC Subtype", HFILL}
5405 {&hf_docsis_tcc_err_code,
5406 {"..2 Error Code", "docsis_tlv.tcc.err.code",
5407 FT_UINT8, BASE_DEC, VALS(docsis_conf_code), 0x0,
5408 "Error Code", HFILL}
5410 {&hf_docsis_tcc_err_msg,
5411 {"..3 Error Message", "docsis_tlv.tcc.err.msg",
5412 FT_STRINGZ, BASE_NONE, NULL, 0x0,
5413 "Error Message", HFILL}
5415 {&hf_docsis_tlv_sid_cl,
5416 {"47 Service Flow SID Cluster Assignments", "docsis_tlv.sid",
5417 FT_BYTES, BASE_NONE, NULL, 0x0,
5418 "Service Flow SID Cluster Assignments", HFILL}
5420 {&hf_docsis_sid_cl_sf_id,
5421 {".1 Service Flow ID", "docsis_tlv.sid.sfid",
5422 FT_UINT32, BASE_DEC, NULL, 0x0,
5423 "Upstream Channel ID", HFILL}
5425 {&hf_docsis_sid_cl_enc,
5426 {".2 SID Cluster Encodings", "docsis_tlv.sid.enc",
5427 FT_BYTES, BASE_NONE, NULL, 0x0,
5428 "SID Cluster Encodings", HFILL}
5430 {&hf_docsis_sid_cl_enc_id,
5431 {"..1 SID Cluster ID", "docsis_tlv.sid.enc.id",
5432 FT_UINT8, BASE_DEC, NULL, 0x0,
5433 "SID Cluster ID", HFILL}
5435 {&hf_docsis_sid_cl_enc_map,
5436 {"..2 SID-to-Channel Mapping", "docsis_tlv.sid.enc.map",
5437 FT_BYTES, BASE_NONE, NULL, 0x0,
5438 "SID Cluster ID", HFILL}
5440 {&hf_docsis_sid_cl_map_us_ch_id,
5441 {"...1 Upstraem Channel ID", "docsis_tlv.sid.enc.map.uschid",
5442 FT_UINT8, BASE_DEC, NULL, 0x0,
5443 "Upstream Channel ID", HFILL}
5445 {&hf_docsis_sid_cl_map_sid,
5446 {"...2 SID", "docsis_tlv.sid.enc.map.sid",
5447 FT_UINT16, BASE_DEC, NULL, 0x0,
5450 {&hf_docsis_sid_cl_map_action,
5451 {"...3 SID-to-Channel Mapping Action", "docsis_tlv.sid.enc.map.action",
5452 FT_UINT8, BASE_DEC, VALS (sid_ch_map_vals), 0x0,
5453 "SID-to-Channel Mapping Action", HFILL}
5455 {&hf_docsis_sid_cl_so_crit,
5456 {".3 SID Cluster Switchover Criteria", "docsis_tlv.sid.socrit",
5457 FT_BYTES, BASE_NONE, NULL, 0x0,
5458 "SID Cluster Switchover Criteria", HFILL}
5460 {&hf_docsis_sid_cl_so_max_req,
5461 {"..1 Maximum Requests per SID Cluster", "docsis_tlv.sid.socrit.maxreq",
5462 FT_UINT8, BASE_DEC, NULL, 0x0,
5463 "Maximum Requests per SID Cluster", HFILL}
5465 {&hf_docsis_sid_cl_so_max_out_bytes,
5466 {"..2 Maximum Outstanding Bytes per SID Cluster", "docsis_tlv.sid.socrit.maxoutbytes",
5467 FT_UINT32, BASE_DEC, NULL, 0x0,
5468 "Maximum Outstanding Bytes per SID Cluster", HFILL}
5470 {&hf_docsis_sid_cl_so_max_req_bytes,
5471 {"..3 Maximum Total Bytes Requested per SID Cluster", "docsis_tlv.sid.socrit.maxreqbytes",
5472 FT_UINT32, BASE_DEC, NULL, 0x0,
5473 "Maximum Total Bytes Requested per SID Cluster", HFILL}
5475 {&hf_docsis_sid_cl_so_max_time,
5476 {"..4 Maximum Time in the SID Cluster", "docsis_tlv.sid.socrit.maxtime",
5477 FT_UINT16, BASE_DEC, NULL, 0x0,
5478 "Maximum Time in the SID Cluster", HFILL}
5480 {&hf_docsis_tlv_rcp,
5481 {"48 Receive Channel Profile", "docsis_tlv.rcp",
5482 FT_BYTES, BASE_NONE, NULL, 0x0,
5483 "Receive Channel Profile", HFILL}
5485 {&hf_docsis_tlv_rcp_id,
5486 {".1 RCP-ID", "docsis_tlv.rcp.id",
5487 FT_BYTES, BASE_NONE, NULL, 0x0,
5490 {&hf_docsis_tlv_rcp_name,
5491 {".2 RCP Name", "docsis_tlv.rcp.name",
5492 FT_BYTES, BASE_NONE, NULL, 0x0,
5495 {&hf_docsis_tlv_rcp_freq_spc,
5496 {".3 RCP Center Frequency Spacing", "docsis_tlv.rcp.freq_spc",
5497 FT_UINT8, BASE_DEC, NULL, 0x0,
5498 "RCP Center Frequency Spacing", HFILL}
5500 {&hf_docsis_tlv_rcp_rcv_mod_enc,
5501 {".4 Receive Module Capability", "docsis_tlv.rcp.rcv_mod_enc",
5502 FT_BYTES, BASE_NONE, NULL, 0x0,
5503 "Receive Module Encoding", HFILL}
5505 {&hf_docsis_rcv_mod_enc_idx,
5506 {"..1 Receive Module Index", "docsis_tlv.rcp.rcv_mod_enc.idx",
5507 FT_UINT8, BASE_DEC, NULL, 0x0,
5508 "Receive Module Index", HFILL}
5510 {&hf_docsis_rcv_mod_enc_adj_ch,
5511 {"..2 Adjacent Channels", "docsis_tlv.rcp.rcv_mod_enc.adj_ch",
5512 FT_UINT8, BASE_DEC, NULL, 0x0,
5513 "Adjacent Channels", HFILL}
5515 {&hf_docsis_rcv_mod_enc_ch_bl_rng,
5516 {"..3 Channel Block Range", "docsis_tlv.rcp.rcv_mod_enc.ch_bl_rng",
5517 FT_BYTES, BASE_NONE, NULL, 0x0,
5518 "Channel Block Range", HFILL}
5520 {&hf_docsis_ch_bl_rng_min_ctr_freq,
5521 {"...1 Minimum Center Frequency", "docsis_tlv.rcp.rcv_mod_enc.ch_bl_rng.min_ctr_freq",
5522 FT_UINT32, BASE_DEC, NULL, 0x0,
5523 "Minimum Center Frequency", HFILL}
5525 {&hf_docsis_ch_bl_rng_max_ctr_freq,
5526 {"...2 Maximum Center Frequency", "docsis_tlv.rcp.rcv_mod_enc.ch_bl_rng.max_ctr_freq",
5527 FT_UINT32, BASE_DEC, NULL, 0x0,
5528 "Maximum Center Frequency", HFILL}
5530 {&hf_docsis_rcv_mod_enc_rsq_ch_subs_cap ,
5531 {"..5 Resequencing Channel Subset Capability", "docsis_tlv.rcp.rcv_mod_enc.rsq_ch_subs_cap",
5532 FT_BYTES, BASE_NONE, NULL, 0x0,
5533 "Resequencing Channel Subset Capability", HFILL}
5535 {&hf_docsis_rcv_mod_enc_conn ,
5536 {"..6 Receive Module Connectivity", "docsis_tlv.rcp.rcv_mod_enc.conn",
5537 FT_BYTES, BASE_NONE, NULL, 0x0,
5538 "Receive Module Connectivity", HFILL}
5540 {&hf_docsis_rcv_mod_enc_phy_layr_parms,
5541 {"..7 Physical Layer Parameter", "docsis_tlv.rcp.rcv_mod_enc.phy_layr_parms",
5542 FT_BYTES, BASE_NONE, NULL, 0x0,
5543 "Physical Layer Parameter", HFILL}
5545 {&hf_docsis_tlv_rcp_rcv_ch,
5546 {".5 Receive Channel", "docsis_tlv.rcp.rcv_ch",
5547 FT_BYTES, BASE_NONE, NULL, 0x0,
5548 "Receive Channel", HFILL}
5550 {&hf_docsis_rcv_ch_idx,
5551 {"..1 Receive Channel Index", "docsis_tlv.rcp.rcv_ch.idx",
5552 FT_UINT8, BASE_DEC, NULL, 0x0,
5553 "Receive Channel Index", HFILL}
5555 {&hf_docsis_rcv_ch_conn,
5556 {"..2 Receive Channel Connectivity", "docsis_tlv.rcp.rcv_ch.conn",
5557 FT_BYTES, BASE_NONE, NULL, 0x0,
5558 "Receive Channel Connectivity", HFILL}
5560 {&hf_docsis_rcv_ch_conn_off,
5561 {"..3 Receive Channel Connected Offset", "docsis_tlv.rcp.rcv_ch.conn_off",
5562 FT_UINT8, BASE_DEC, NULL, 0x0,
5563 "Receive Channel Connected Offset", HFILL}
5565 {&hf_docsis_rcv_ch_prim_ds_ch_ind,
5566 {"..5 Primary Downstream Channel Indicator", "docsis_tlv.rcp.rcv_ch.prim_ds_ch_ind",
5567 FT_UINT8, BASE_DEC, NULL, 0x0,
5568 "Primary Downstream Channel Indicator", HFILL}
5570 {&hf_docsis_tlv_rcp_ven_spec,
5571 {".43 Vendor Specific Encodings", "docsis_tlv.rcp.vendorspec",
5572 FT_BYTES, BASE_NONE, NULL, 0x0,
5573 "Vendor Specific Encodings", HFILL}
5575 {&hf_docsis_tlv_rcc,
5576 {"49 Receive Channel Configuration", "docsis_tlv.rcc",
5577 FT_BYTES, BASE_NONE, NULL, 0x0,
5578 "Receive Channel Configuration", HFILL}
5580 {&hf_docsis_tlv_rcc_id,
5581 {".1 Assigned RCP-ID", "docsis_tlv.rcc.id",
5582 FT_BYTES, BASE_NONE, NULL, 0x0,
5583 "Assigned RCP-ID", HFILL}
5585 {&hf_docsis_tlv_rcc_rcv_mod_enc,
5586 {".4 Receive Module Assignment", "docsis_tlv.rcc.rcv_mod_enc",
5587 FT_BYTES, BASE_NONE, NULL, 0x0,
5588 "Receive Module Assignment", HFILL}
5590 {&hf_docsis_rcc_rcv_mod_enc_idx,
5591 {"..1 Receive Module Index", "docsis_tlv.rcc.rcc_rcv_mod_enc.idx",
5592 FT_UINT8, BASE_DEC, NULL, 0x0,
5593 "Receive Module Index", HFILL}
5595 {&hf_docsis_rcc_rcv_mod_enc_ctr_freq_asgn,
5596 {"..4 First Channel Center Frequency Assignment", "docsis_tlv.rcc.rcv_mod_enc.ctr_freq_asgn",
5597 FT_UINT32, BASE_DEC, NULL, 0x0,
5598 "First Channel Center Frequency Assignment", HFILL}
5600 {&hf_docsis_rcc_rcv_mod_enc_conn ,
5601 {"..6 Receive Module Connectivity", "docsis_tlv.rcc.rcv_mod_enc.conn",
5602 FT_BYTES, BASE_NONE, NULL, 0x0,
5603 "Receive Module Connectivity", HFILL}
5605 {&hf_docsis_tlv_rcc_rcv_ch,
5606 {".5 Receive Channel", "docsis_tlv.rcc.rcv_ch",
5607 FT_BYTES, BASE_NONE, NULL, 0x0,
5608 "Receive Channel", HFILL}
5610 {&hf_docsis_rcc_rcv_ch_idx,
5611 {"..1 Receive Channel Index", "docsis_tlv.rcc.rcv_ch.idx",
5612 FT_UINT8, BASE_DEC, NULL, 0x0,
5613 "Receive Channel Index", HFILL}
5615 {&hf_docsis_rcc_rcv_ch_conn,
5616 {"..2 Receive Channel Connectivity", "docsis_tlv.rcc.rcv_ch.conn",
5617 FT_BYTES, BASE_NONE, NULL, 0x0,
5618 "Receive Channel Connectivity", HFILL}
5620 {&hf_docsis_rcc_rcv_ch_ctr_freq_asgn,
5621 {"..4 Receive Channel Center Frequency Assignment", "docsis_tlv.rcc.rcv_ch.ctr_freq_asgn",
5622 FT_UINT32, BASE_DEC, NULL, 0x0,
5623 "Receive Channel Center Frequency Assignment", HFILL}
5625 {&hf_docsis_rcc_rcv_ch_prim_ds_ch_ind,
5626 {"..5 Primary Downstream Channel Indicator", "docsis_tlv.rcc.rcv_ch.prim_ds_ch_ind",
5627 FT_UINT8, BASE_DEC, NULL, 0x0,
5628 "Primary Downstream Channel Indicator", HFILL}
5630 {&hf_docsis_tlv_rcc_part_serv_ds_ch,
5631 {".6 Partial Service Downstream Channels", "docsis_tlv.rcc.part_serv_ds_ch",
5632 FT_BYTES, BASE_NONE, NULL, 0x0,
5633 "Partial Service Downstream Channels", HFILL}
5635 {&hf_docsis_tlv_rcc_ven_spec,
5636 {".43 Vendor Specific Encodings", "docsis_tlv.rcc.vendorspec",
5637 FT_BYTES, BASE_NONE, NULL, 0x0,
5638 "Vendor Specific Encodings", HFILL}
5640 {&hf_docsis_tlv_rcc_err,
5641 {".254 RCC Error Encodings", "docsis_tlv.rcc.err",
5642 FT_BYTES, BASE_NONE, NULL, 0x0,
5643 "RCC Error Encodings", HFILL}
5645 {&hf_docsis_tlv_rcc_err_mod_or_ch,
5646 {".1 Receive Modul or Receive Channel", "docsis_tlv.rcc.err.mod_or_ch",
5647 FT_UINT8, BASE_DEC, VALS (mod_or_ch_vals), 0x0,
5648 "Receive Modul or Receive Channel", HFILL}
5650 {&hf_docsis_tlv_rcc_err_idx,
5651 {".2 Receive Modul/Channel Index", "docsis_tlv.rcc.err.idx",
5652 FT_UINT8, BASE_DEC, NULL, 0x0,
5653 "Receive Modul/Channel Index", HFILL}
5655 {&hf_docsis_tlv_rcc_err_param,
5656 {".3 Reported Parameter", "docsis_tlv.rcc.err.param",
5657 FT_UINT8, BASE_DEC, NULL, 0x0,
5658 "Reported Parameter", HFILL}
5660 {&hf_docsis_tlv_rcc_err_code,
5661 {".4 Error Code", "docsis_tlv.rcc.err.code",
5662 FT_UINT8, BASE_DEC, VALS (docsis_conf_code), 0x0,
5663 "Error Code", HFILL}
5665 {&hf_docsis_tlv_rcc_err_msg,
5666 {".5 Error Message", "docsis_tlv.rcc.err.msg",
5667 FT_BYTES, BASE_NONE, NULL, 0x0,
5668 "Error Message", HFILL}
5670 {&hf_docsis_tlv_dsid,
5671 {"50 DSID Encodings", "docsis_tlv.dsid",
5672 FT_BYTES, BASE_NONE, NULL, 0x0,
5673 "DSID Encodings", HFILL}
5675 {&hf_docsis_tlv_dsid_id,
5676 {".1 Downstream Service Identifier (DSID)", "docsis_tlv.dsid.id",
5677 FT_UINT24, BASE_DEC, NULL, 0x0,
5678 "Downstream Service Identifier (DSID)", HFILL}
5680 {&hf_docsis_tlv_dsid_action,
5681 {".2 DSID Action", "docsis_tlv.dsid.action",
5682 FT_UINT8, BASE_DEC, VALS (dsid_action_vals), 0x0,
5683 "DSID Action", HFILL}
5685 {&hf_docsis_tlv_dsid_ds_reseq,
5686 {".3 Downstream Resequencing Encodings", "docsis_tlv.dsid.ds_reseq",
5687 FT_BYTES, BASE_NONE, NULL, 0x0,
5688 "Downstream Resequencing Encodings", HFILL}
5690 {&hf_docsis_ds_reseq_dsid,
5691 {"..1 Resequencing DSID", "docsis_tlv.dsid.ds_reseq.dsid",
5692 FT_UINT8, BASE_DEC, NULL, 0x0,
5693 "Resequencing DSID", HFILL}
5695 {&hf_docsis_ds_reseq_ch_lst,
5696 {"..2 Downstream Resequencing Channel List", "docsis_tlv.dsid.ds_reseq.ch_lst",
5697 FT_BYTES, BASE_NONE, NULL, 0x0,
5698 "Downstream Resequencing Channel List", HFILL}
5700 {&hf_docsis_ds_reseq_wait_time,
5701 {"..3 Downstream Resequencing Wait Time", "docsis_tlv.dsid.ds_reseq.wait_time",
5702 FT_UINT8, BASE_DEC, NULL, 0x0,
5703 "Downstream Resequencing Wait Time", HFILL}
5705 {&hf_docsis_ds_reseq_warn_thresh,
5706 {"..4 Resequencing Warn Threshold", "docsis_tlv.dsid.ds_reseq.warn_thresh",
5707 FT_UINT8, BASE_DEC, NULL, 0x0,
5708 "Resequencing Warn Threshold", HFILL}
5710 {&hf_docsis_ds_reseq_ho_timer,
5711 {"..5 CM-Status max. Event Hold-Off Timer (Out-of-Range Events)", "docsis_tlv.dsid.ds_reseq.ho_timer",
5712 FT_UINT16, BASE_DEC, NULL, 0x0,
5713 "CM-Status max. Event Hold-Off Timer (Out-of-Range Events)", HFILL}
5715 {&hf_docsis_tlv_dsid_mc,
5716 {".4 Multicast Encodings", "docsis_tlv.dsid.mc",
5717 FT_BYTES, BASE_NONE, NULL, 0x0,
5718 "Multicast Encodings", HFILL}
5720 {&hf_docsis_tlv_dsid_mc_addr,
5721 {"..1 Client MAC Address Encodings", "docsis_tlv.dsid.mc.addr",
5722 FT_BYTES, BASE_NONE, NULL, 0x0,
5723 "Client MAC Address Encodings", HFILL}
5725 {&hf_docsis_mc_addr_action,
5726 {"...1 Client MAC Address Action", "docsis_tlv.dsid.mc.addr.action",
5727 FT_UINT8, BASE_DEC, VALS (add_del_vals), 0x0,
5728 "Client MAC Address Action", HFILL}
5730 {&hf_docsis_mc_addr_addr,
5731 {"...2 Client MAC Address", "docsis_tlv.dsid.mc.addr.addr",
5732 FT_BYTES, BASE_NONE, NULL, 0x0,
5733 "Client MAC Address", HFILL}
5735 {&hf_docsis_tlv_dsid_mc_cmim,
5736 {"..2 Multicast CM Interface Mask", "docsis_tlv.dsid.mc.cmim",
5737 FT_BYTES, BASE_NONE, NULL, 0x0,
5738 "Multicast CM Interface Mask", HFILL}
5740 {&hf_docsis_tlv_dsid_mc_group,
5741 {"..3 Multicast Group MAC Addresses", "docsis_tlv.dsid.mc.group",
5742 FT_BYTES, BASE_NONE, NULL, 0x0,
5743 "Multicast Group MAC Addresses", HFILL}
5745 {&hf_docsis_tlv_dsid_mc_phs,
5746 {"..26 Payload Header Suppression Encodings", "docsis_tlv.dsid.mc.phs",
5747 FT_BYTES, BASE_NONE, NULL, 0x0,
5748 "Payload Header Suppression Encodings", HFILL}
5750 {&hf_docsis_tlv_sec_assoc,
5751 {"51 Security Association Encodings", "docsis_tlv.sec_assoc",
5752 FT_BYTES, BASE_NONE, NULL, 0x0,
5753 "Security Association Encodings", HFILL}
5755 {&hf_docsis_tlv_sec_assoc_action,
5756 {".1 SA Action", "docsis_tlv.sec_assoc.action",
5757 FT_UINT8, BASE_DEC, VALS (add_del_vals), 0x0,
5760 {&hf_docsis_tlv_sec_assoc_desc,
5761 {".23 SA Descriptor", "docsis_tlv.sec_assoc.desc",
5762 FT_BYTES, BASE_NONE, NULL, 0x0,
5763 "SA Descriptor", HFILL}
5765 {&hf_docsis_tlv_init_ch_timeout,
5766 {"52 Intializing Channel Timeout", "docsis_tlv.init_ch_timeout",
5767 FT_UINT16, BASE_DEC, NULL, 0x0,
5768 "Intializing Channel Timeout", HFILL}
5770 {&hf_docsis_tlv_ch_asgn,
5771 {"56 Channel Assignment Configuration Settings", "docsis_tlv.ch_asgn",
5772 FT_BYTES, BASE_NONE, NULL, 0x0,
5773 "Channel Assignment Configuration Settings", HFILL}
5775 {&hf_docsis_ch_asgn_us_ch_id,
5776 {".1 Upstream Channel ID", "docsis_tlv.ch_asgn.us_ch_id",
5777 FT_UINT8, BASE_DEC, NULL, 0x0,
5778 "Upstream Channel ID", HFILL}
5780 {&hf_docsis_ch_asgn_rx_freq,
5781 {".2 Rx Frequency", "docsis_tlv.ch_asgn.rx_freq",
5782 FT_UINT16, BASE_DEC, NULL, 0x0,
5783 "Rx Frequency", HFILL}
5785 {&hf_docsis_tlv_cm_init_reason,
5786 {"57 CM Initialization Reason", "docsis_tlv.cm_init_reason",
5787 FT_UINT16, BASE_DEC, VALS (init_reason_vals), 0x0,
5788 "CM Initialization Reason", HFILL}
5790 {&hf_docsis_tlv_sw_upg_srvr_ipv6,
5791 {"58 Software Upgrade Server IPv6", "docsis_tlv.sw_upg_srvr_ipv6",
5792 FT_IPv6, BASE_NONE, NULL, 0x0,
5793 "Software Upgrade Server IPv6", HFILL}
5795 {&hf_docsis_tlv_tftp_prov_cm_ipv6_addr,
5796 {"59 TFTP Server Provisioned Modem IPv6 Address", "docsis_tlv.tftp_prov_cm_ipv6_addr",
5797 FT_IPv6, BASE_NONE, NULL, 0x0,
5798 "TFTP Server Provisioned Modem IPv6 Address", HFILL}
5800 {&hf_docsis_tlv_us_drop_clfy,
5801 {"60 Upstream Drop Packet Classification Encoding", "docsis_tlv.us_drop_clfy",
5802 FT_BYTES, BASE_NONE, NULL, 0x0,
5803 "Upstream Drop Packet Classification Encoding", HFILL}
5805 {&hf_docsis_tlv_subs_mgmt_ipv6_lst,
5806 {"61 Subscriber Management CPE IPv6 Prefix List", "docsis_tlv.subs_mgmt_ipv6_lst",
5807 FT_BYTES, BASE_NONE, NULL, 0x0,
5808 "Subscriber Management CPE IPv6 Prefix List", HFILL}
5810 {&hf_docsis_tlv_us_drop_clfy_group_id,
5811 {"62 Upstream Drop Classifier Group ID", "docsis_tlv.us_drop_clfy_group_id",
5812 FT_BYTES, BASE_NONE, NULL, 0x0,
5813 "Upstream Drop Classifier Group ID", HFILL}
5815 {&hf_docsis_tlv_subs_mgmt_ctrl_max_cpe_ipv6,
5816 {"63 Subscriber Management Control Max CPE IPv6 Prefix", "docsis_tlv.subs_mgmt_ctrl_max_cpe_ipv6",
5817 FT_UINT16, BASE_DEC, NULL, 0x0,
5818 "Subscriber Management Control Max CPE IPv6 Prefix", HFILL}
5820 {&hf_docsis_tlv_cmts_mc_sess_enc,
5821 {"64 CMTS Static Multicast Session Encoding", "docsis_tlv.cmts_mc_sess_enc",
5822 FT_BYTES, BASE_NONE, NULL, 0x0,
5823 "CMTS Static Multicast Session Encoding", HFILL}
5825 {&hf_docsis_cmts_mc_sess_enc_grp,
5826 {".1 Multicast Group Address", "docsis_tlv.cmts_mc_sess_enc.grp",
5827 FT_IPXNET, BASE_NONE, NULL, 0x0,
5828 "Multicast Group Address", HFILL}
5830 {&hf_docsis_cmts_mc_sess_enc_src,
5831 {".2 Source IP Address", "docsis_tlv.cmts_mc_sess_enc.src",
5832 FT_IPXNET, BASE_NONE, NULL, 0x0,
5833 "Source IP Address", HFILL}
5837 /* Setup protocol subtree array */
5838 static gint *ett[] = {
5840 &ett_docsis_tlv_cos,
5841 &ett_docsis_tlv_mcap,
5842 &ett_docsis_tlv_clsfr,
5843 &ett_docsis_tlv_clsfr_ip,
5844 &ett_docsis_tlv_clsfr_eth,
5845 &ett_docsis_tlv_clsfr_err,
5846 &ett_docsis_tlv_clsfr_dot1q,
5847 &ett_docsis_tlv_reqxmitpol,
5848 &ett_docsis_tlv_sflow_err,
5849 &ett_docsis_tlv_phs,
5850 &ett_docsis_tlv_phs_err,
5851 &ett_docsis_tlv_svc_unavail,
5852 &ett_docsis_tlv_snmpv3_kick,
5853 &ett_docsis_tlv_ds_ch_list,
5854 &ett_docsis_tlv_ds_ch_list_single,
5855 &ett_docsis_tlv_ds_ch_list_range,
5856 &ett_docsis_tlv_tcc,
5857 &ett_docsis_tlv_tcc_ucd,
5858 &ett_docsis_tlv_tcc_rng_parms,
5859 &ett_docsis_tlv_tcc_err,
5860 &ett_docsis_tlv_sid_cl,
5861 &ett_docsis_tlv_sid_cl_enc,
5862 &ett_docsis_tlv_sid_cl_enc_map,
5863 &ett_docsis_tlv_sid_cl_so,
5864 &ett_docsis_tlv_rcp,
5865 &ett_docsis_tlv_rcp_rcv_mod_enc,
5866 &ett_docsis_tlv_rcp_ch_bl_rng,
5867 &ett_docsis_tlv_rcp_rcv_ch,
5868 &ett_docsis_tlv_rcc,
5869 &ett_docsis_tlv_rcc_rcv_mod_enc,
5870 &ett_docsis_tlv_rcc_rcv_ch,
5871 &ett_docsis_tlv_rcc_err,
5872 &ett_docsis_tlv_dsid,
5873 &ett_docsis_tlv_dsid_ds_reseq,
5874 &ett_docsis_tlv_dsid_mc,
5875 &ett_docsis_tlv_dsid_mc_addr,
5876 &ett_docsis_tlv_sec_assoc,
5877 &ett_docsis_tlv_ch_asgn,
5878 &ett_docsis_cmts_mc_sess_enc,
5881 /* Register the protocol name and description */
5882 proto_docsis_tlv = proto_register_protocol ("DOCSIS Appendix C TLV's",
5883 "DOCSIS TLVs", "docsis_tlv");
5885 /* Required function calls to register the header fields and subtrees used */
5886 proto_register_field_array (proto_docsis_tlv, hf, array_length (hf));
5887 proto_register_subtree_array (ett, array_length (ett));
5889 register_dissector ("docsis_tlv", dissect_tlv, proto_docsis_tlv);
5893 /* If this dissector uses sub-dissector registration add a registration routine.
5894 This format is required because a script is used to find these routines and
5895 create the code that calls these routines.
5898 proto_reg_handoff_docsis_tlv (void)
5901 dissector_handle_t docsis_tlv_handle;
5903 docsis_tlv_handle = find_dissector ("docsis_tlv");
5904 dissector_add_uint ("docsis", 0xFF, docsis_tlv_handle);
5907 docsis_vsif_handle = find_dissector("docsis_vsif");
5908 docsis_ucd_handle = find_dissector("docsis_ucd");