3 * Relevant DOCSIS specifications:
4 * - DOCSIS MAC and Upper Layer Protocols Interface:
5 * - CM-SP-MULPIv4.0: https://www.cablelabs.com/specifications/CM-SP-MULPIv4.0
6 * - CM-SP-MULPIv3.1: https://www.cablelabs.com/specifications/CM-SP-MULPIv3.1
7 * - CM-SP-MULPIv3.0: https://www.cablelabs.com/specifications/CM-SP-MULPIv3.0
8 * - CM-SP-RFIv2.0 : https://www.cablelabs.com/specifications/radio-frequency-interface-specification-2
9 * - CM-SP-RFIv1.1 : https://www.cablelabs.com/specifications/radio-frequency-interface-specification
10 * - SP-RFI : https://www.cablelabs.com/specifications/radio-frequency-interface-specification-3
12 * - DOCSIS Security (BPKM):
13 * - CM-SP-SECv4.0: https://www.cablelabs.com/specifications/CM-SP-SECv4.0
14 * - CM-SP-SECv3.1: https://www.cablelabs.com/specifications/CM-SP-SECv3.1
15 * - CM-SP-SECv3.0: https://www.cablelabs.com/specifications/CM-SP-SECv3.0
16 * - CM-SP-BPI+ : https://www.cablelabs.com/specifications/baseline-privacy-plus-interface-specification
18 * Routines for DOCSIS MAC Management Header dissection
19 * Routines for Upstream Channel Change dissection
20 * Routines for Ranging Message dissection
21 * Routines for Registration Message dissection
22 * Routines for Baseline Privacy Key Management Message dissection
23 * Routines for Dynamic Service Addition Message dissection
24 * Routines for Dynamic Service Change Request dissection
25 * Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
27 * Routines for Type 2 UCD Message dissection
28 * Copyright 2015, Adrian Simionov <daniel.simionov@gmail.com>
29 * Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
31 * Routines for Sync Message dissection
32 * Routines for REG-REQ-MP dissection
33 * Copyright 2007, Bruno Verstuyft <bruno.verstuyft@excentis.com>
35 * Routines for DOCSIS 3.1 OFDM Channel Descriptor dissection.
36 * Routines for DOCSIS 3.1 Downstream Profile Descriptor dissection.
37 * Routines for Type 51 UCD - DOCSIS 3.1 only - Message dissection
38 * Copyright 2016, Bruno Verstuyft <bruno.verstuyft@excentis.com>
40 * Routines for DCC Message dissection
41 * Routines for DCD Message dissection
42 * Copyright 2004, Darryl Hymel <darryl.hymel[AT]arrisi.com>
44 * Routines for Type 29 UCD - DOCSIS 2.0 only - Message dissection
45 * Copyright 2015, Adrian Simionov <daniel.simionov@gmail.com>
46 * Copyright 2003, Brian Wheeler <brian.wheeler[AT]arrisi.com>
48 * Routines for Initial Ranging Request Message dissection
49 * Copyright 2003, Brian Wheeler <brian.wheeler[AT]arrisi.com>
51 * Routines for Baseline Privacy Key Management Attributes dissection
52 * Copyright 2017, Adrian Simionov <daniel.simionov@gmail.com>
53 * Copyright 2002, Anand V. Narwani <anand[AT]narwani.org>
55 * Routines for MDD Message dissection
56 * Copyright 2014, Adrian Simionov <adrian.simionov@arrisi.com>
57 * Copyright 2007, Bruno Verstuyft <bruno.verstuyft@excentis.com>
59 * Routines for DOCSIS 3.0 Bonded Initial Ranging Request Message dissection.
60 * Copyright 2009, Geoffrey Kimball <gekimbal[AT]cisco.com>
62 * Routines for Type 35 UCD - DOCSIS 3.0 only - Message dissection
63 * Copyright 2015, Adrian Simionov <daniel.simionov@gmail.com>
65 * Routines for DOCSIS 3.0 Dynamic Bonding Change Message dissection.
66 * Routines for DOCSIS 3.0 DOCSIS Path Verify Message dissection.
67 * Routines for DOCSIS 3.0 CM Control Message dissection.
68 * Copyright 2010, Guido Reismueller <g.reismueller[AT]avm.de>
70 * Routines for DOCSIS 4.0 TLVs dissection
71 * Copyright 2023, Andrii Vladyka <andrii.vladyka@harmonicinc.com>
73 * Wireshark - Network traffic analyzer
74 * By Gerald Combs <gerald@wireshark.org>
75 * Copyright 1998 Gerald Combs
77 * SPDX-License-Identifier: GPL-2.0-or-later
82 #include <epan/packet.h>
83 #include <epan/expert.h>
84 #include <wsutil/utf8_entities.h>
85 #include "packet-docsis-tlv.h"
86 #include <epan/addr_resolv.h>
87 #include <epan/asn1.h>
88 #include "packet-cms.h"
89 #include "packet-ocsp.h"
90 #include "packet-pkcs1.h"
91 #include "packet-x509af.h"
92 #include <epan/reassemble.h>
93 #include <epan/proto_data.h>
95 #include <epan/unit_strings.h>
96 #include <wsutil/array.h>
98 void proto_register_docsis_mgmt(void);
99 void proto_reg_handoff_docsis_mgmt(void);
104 #define MGT_RNG_REQ 4
105 #define MGT_RNG_RSP 5
106 #define MGT_REG_REQ 6
107 #define MGT_REG_RSP 7
108 #define MGT_UCC_REQ 8
109 #define MGT_UCC_RSP 9
110 #define MGT_TRI_TCD 10
111 #define MGT_TRI_TSI 11
112 #define MGT_BPKM_REQ 12
113 #define MGT_BPKM_RSP 13
114 #define MGT_REG_ACK 14
115 #define MGT_DSA_REQ 15
116 #define MGT_DSA_RSP 16
117 #define MGT_DSA_ACK 17
118 #define MGT_DSC_REQ 18
119 #define MGT_DSC_RSP 19
120 #define MGT_DSC_ACK 20
121 #define MGT_DSD_REQ 21
122 #define MGT_DSD_RSP 22
123 #define MGT_DCC_REQ 23
124 #define MGT_DCC_RSP 24
125 #define MGT_DCC_ACK 25
126 #define MGT_DCI_REQ 26
127 #define MGT_DCI_RSP 27
128 #define MGT_UP_DIS 28
129 #define MGT_TYPE29UCD 29
130 #define MGT_INIT_RNG_REQ 30
131 #define MGT_TEST_REQ 31
132 #define MGT_DS_CH_DESC 32
134 #define MGT_B_INIT_RNG_REQ 34
135 #define MGT_TYPE35UCD 35
136 #define MGT_DBC_REQ 36
137 #define MGT_DBC_RSP 37
138 #define MGT_DBC_ACK 38
139 #define MGT_DPV_REQ 39
140 #define MGT_DPV_RSP 40
141 #define MGT_CM_STATUS 41
142 #define MGT_CM_CTRL_REQ 42
143 #define MGT_CM_CTRL_RSP 43
144 #define MGT_REG_REQ_MP 44
145 #define MGT_REG_RSP_MP 45
146 #define MGT_EM_REQ 46
147 #define MGT_EM_RSP 47
148 #define MGT_CM_STATUS_ACK 48
151 #define MGT_TYPE51UCD 51
152 #define MGT_ODS_REQ 52
153 #define MGT_ODS_RSP 53
154 #define MGT_OPT_REQ 54
155 #define MGT_OPT_RSP 55
156 #define MGT_OPT_ACK 56
157 #define MGT_DPT_REQ 57
158 #define MGT_DPT_RSP 58
159 #define MGT_DPT_ACK 59
160 #define MGT_DPT_INFO 60
161 #define MGT_RBA_SW 61
162 #define MGT_RBA_HW 62
163 #define MGT_CWT_REQ 63
164 #define MGT_CWT_RSP 64
165 #define MGT_ECT_REQ 65
166 #define MGT_ECT_RSP 66
167 #define MGT_EXT_RNG_REQ 67
169 #define MGT_BPKM_REQ_V5 69
170 #define MGT_BPKM_RSP_V5 70
172 #define UCD_SYMBOL_RATE 1
173 #define UCD_FREQUENCY 2
174 #define UCD_PREAMBLE 3
175 #define UCD_BURST_DESCR 4
176 #define UCD_BURST_DESCR5 5
177 #define UCD_EXT_PREAMBLE 6
178 #define UCD_SCDMA_MODE_ENABLED 7
179 #define UCD_SCDMA_SPREADING_INTERVAL 8
180 #define UCD_SCDMA_CODES_PER_MINI_SLOT 9
181 #define UCD_SCDMA_ACTIVE_CODES 10
182 #define UCD_SCDMA_CODE_HOPPING_SEED 11
183 #define UCD_SCDMA_US_RATIO_NUM 12
184 #define UCD_SCDMA_US_RATIO_DENOM 13
185 #define UCD_SCDMA_TIMESTAMP_SNAPSHOT 14
186 #define UCD_MAINTAIN_POWER_SPECTRAL_DENSITY 15
187 #define UCD_RANGING_REQUIRED 16
188 #define UCD_MAX_SCHEDULED_CODES 17
189 #define UCD_RANGING_HOLD_OFF_PRIORITY_FIELD 18
190 #define UCD_RANGING_CHANNEL_CLASS_ID 19
191 #define UCD_SCDMA_SELECTION_ACTIVE_CODES_AND_CODE_HOPPING 20
192 #define UCD_SCDMA_SELECTION_STRING_FOR_ACTIVE_CODES 21
193 #define UCD_HIGHER_UCD_FOR_SAME_UCID 22
194 #define UCD_BURST_DESCR23 23
195 #define UCD_CHANGE_IND_BITMASK 24
196 #define UCD_OFDMA_TIMESTAMP_SNAPSHOT 25
197 #define UCD_OFDMA_CYCLIC_PREFIX_SIZE 26
198 #define UCD_OFDMA_ROLLOFF_PERIOD_SIZE 27
199 #define UCD_SUBCARRIER_SPACING 28
200 #define UCD_CENTER_FREQ_SUBC_0 29
201 #define UCD_SUBC_EXCL_BAND 30
202 #define UCD_UNUSED_SUBC_SPEC 31
203 #define UCD_SYMB_IN_OFDMA_FRAME 32
204 #define UCD_RAND_SEED 33
205 #define EXTENDED_US_CHANNEL 34
207 #define UCD_MODULATION 1
208 #define UCD_DIFF_ENCODING 2
209 #define UCD_PREAMBLE_LEN 3
210 #define UCD_PREAMBLE_VAL_OFF 4
212 #define UCD_FEC_CODEWORD 6
213 #define UCD_SCRAMBLER_SEED 7
214 #define UCD_MAX_BURST 8
215 #define UCD_GUARD_TIME 9
216 #define UCD_LAST_CW_LEN 10
217 #define UCD_SCRAMBLER_ONOFF 11
218 #define UCD_RS_INT_DEPTH 12
219 #define UCD_RS_INT_BLOCK 13
220 #define UCD_PREAMBLE_TYPE 14
221 #define UCD_SCMDA_SCRAMBLER_ONOFF 15
222 #define UCD_SCDMA_CODES_PER_SUBFRAME 16
223 #define UCD_SCDMA_FRAMER_INT_STEP_SIZE 17
224 #define UCD_TCM_ENABLED 18
225 #define UCD_SUBC_INIT_RANG 19
226 #define UCD_SUBC_FINE_RANG 20
227 #define UCD_OFDMA_PROFILE 21
228 #define UCD_OFDMA_IR_POWER_CONTROL 22
230 #define IUC_REQUEST 1
231 #define IUC_REQ_DATA 2
232 #define IUC_INIT_MAINT 3
233 #define IUC_STATION_MAINT 4
234 #define IUC_SHORT_DATA_GRANT 5
235 #define IUC_LONG_DATA_GRANT 6
236 #define IUC_NULL_IE 7
237 #define IUC_DATA_ACK 8
238 #define IUC_ADV_PHY_SHORT_DATA_GRANT 9
239 #define IUC_ADV_PHY_LONG_DATA_GRANT 10
240 #define IUC_ADV_PHY_UGS 11
241 #define IUC_DATA_PROFILE_IUC12 12
242 #define IUC_DATA_PROFILE_IUC13 13
243 #define IUC_RESERVED14 14
244 #define IUC_EXPANSION 15
248 #define MAP_PROBE_IE_PW_MASK 0x00010000
249 #define MAP_PROBE_IE_ST_MASK 0x00004000
251 #define RNGRSP_TIMING 1
252 #define RNGRSP_PWR_LEVEL_ADJ 2
253 #define RNGRSP_OFFSET_FREQ_ADJ 3
254 #define RNGRSP_TRANSMIT_EQ_ADJ 4
255 #define RNGRSP_RANGING_STATUS 5
256 #define RNGRSP_DOWN_FREQ_OVER 6
257 #define RNGRSP_UP_CHID_OVER 7
258 #define RNGRSP_TRANSMIT_EQ_SET 9
259 #define RNGRSP_T4_TIMEOUT_MULTIPLIER 13
260 #define RNGRSP_DYNAMIC_RANGE_WINDOW_UPPER_EDGE 14
261 #define RNGRSP_TRANSMIT_EQ_ADJUST_OFDMA_CHANNELS 15
262 #define RNGRSP_TRANSMIT_EQ_SET_OFDMA_CHANNELS 16
263 #define RNGRSP_COMMANDED_POWER 17
264 #define RNGRSP_EXT_US_COMMANDED_POWER 18
266 /* Commanded Power Sub-TLVs */
267 #define RNGRSP_COMMANDED_POWER_DYNAMIC_RANGE_WINDOW 1
268 #define RNGRSP_COMMANDED_POWER_UCID_AND_POWER_LEVEL_LIST 2
272 /* BPKM Attributes */
273 #define BPKM_RESERVED 0
274 #define BPKM_SERIAL_NUM 1
275 #define BPKM_MANUFACTURER_ID 2
276 #define BPKM_MAC_ADDR 3
277 #define BPKM_RSA_PUB_KEY 4
279 #define BPKM_DISPLAY_STR 6
280 #define BPKM_AUTH_KEY 7
282 #define BPKM_KEY_LIFETIME 9
283 #define BPKM_KEY_SEQ_NUM 10
284 #define BPKM_HMAC_DIGEST 11
286 #define BPKM_TEK_PARAM 13
287 #define BPKM_OBSOLETED 14
288 #define BPKM_CBC_IV 15
289 #define BPKM_ERROR_CODE 16
290 #define BPKM_CA_CERT 17
291 #define BPKM_CM_CERT 18
292 #define BPKM_SEC_CAPABILITIES 19
293 #define BPKM_CRYPTO_SUITE 20
294 #define BPKM_CRYPTO_SUITE_LIST 21
295 #define BPKM_BPI_VERSION 22
296 #define BPKM_SA_DESCRIPTOR 23
297 #define BPKM_SA_TYPE 24
298 #define BPKM_SA_QUERY 25
299 #define BPKM_SA_QUERY_TYPE 26
300 #define BPKM_IP_ADDRESS 27
301 #define BPKM_DNLD_PARAMS 28
302 #define BPKM_CVC_ROOT_CA_CERT 51
303 #define BPKM_CVC_CA_CERT 52
304 #define BPKM_DEV_CA_CERT 53
305 #define BPKM_ROOT_CA_CERT 54
306 #define BPKM_CM_NONCE 61
307 #define BPKM_MSG_SIGNATURE 62
308 #define BPKM_KEY_EXCHANGE_SHARE 63
309 #define BPKM_ALLOWED_BPI_VERSIONS 64
310 #define BPKM_OCSP_RSP 65
311 #define BPKM_CMTS_DESIGNATION 66
312 #define BPKM_CM_STATUS_CODE 67
313 #define BPKM_DETECTED_ERRORS 68
314 #define BPKM_VENDOR_DEFINED 127
316 #define DCCREQ_UP_CHAN_ID 1
317 #define DCCREQ_DS_PARAMS 2
318 #define DCCREQ_INIT_TECH 3
319 #define DCCREQ_UCD_SUB 4
320 #define DCCREQ_SAID_SUB 6
321 #define DCCREQ_SF_SUB 7
322 #define DCCREQ_CMTS_MAC_ADDR 8
323 #define DCCREQ_KEY_SEQ_NUM 31
324 #define DCCREQ_HMAC_DIGEST 27
326 /* Define Downstrean Parameters subtypes
327 * These are subtype of DCCREQ_DS_PARAMS (2)
330 #define DCCREQ_DS_FREQ 1
331 #define DCCREQ_DS_MOD_TYPE 2
332 #define DCCREQ_DS_SYM_RATE 3
333 #define DCCREQ_DS_INTLV_DEPTH 4
334 #define DCCREQ_DS_CHAN_ID 5
335 #define DCCREQ_DS_SYNC_SUB 6
336 #define DCCREQ_DS_OFDM_BLOCK_FREQ 7
338 /* Define Service Flow Substitution subtypes
339 * These are subtypes of DCCREQ_SF_SUB (7)
341 #define DCCREQ_SF_SFID 1
342 #define DCCREQ_SF_SID 2
343 #define DCCREQ_SF_UNSOL_GRANT_TREF 5
345 #define DCCRSP_CM_JUMP_TIME 1
346 #define DCCRSP_KEY_SEQ_NUM 31
347 #define DCCRSP_HMAC_DIGEST 27
349 /* Define DCC-RSP CM Jump Time subtypes
350 * These are subtype of DCCRSP_CM_JUMP_TIME (1)
352 #define DCCRSP_CM_JUMP_TIME_LENGTH 1
353 #define DCCRSP_CM_JUMP_TIME_START 2
355 #define DCCACK_KEY_SEQ_NUM 31
356 #define DCCACK_HMAC_DIGEST 27
358 #define DCD_DOWN_CLASSIFIER 23
359 #define DCD_DSG_RULE 50
360 #define DCD_DSG_CONFIG 51
362 /* Define Downstrean Classifier subtypes
363 * These are subtype of DCD_DOWN_CLASSIFIER (23)
367 #define DCD_CFR_RULE_PRI 5
368 #define DCD_CFR_IP_CLASSIFIER 9
370 /* Define IP Classifier sub-subtypes
371 * These are subtypes of DCD_CFR_IP_CLASSIFIER (23.9)
373 #define DCD_CFR_IP_SOURCE_ADDR 3
374 #define DCD_CFR_IP_SOURCE_MASK 4
375 #define DCD_CFR_IP_DEST_ADDR 5
376 #define DCD_CFR_IP_DEST_MASK 6
377 #define DCD_CFR_TCPUDP_SRCPORT_START 7
378 #define DCD_CFR_TCPUDP_SRCPORT_END 8
379 #define DCD_CFR_TCPUDP_DSTPORT_START 9
380 #define DCD_CFR_TCPUDP_DSTPORT_END 10
382 /* Define DSG Rule subtypes
383 * These are subtype of DCD_DSG_RULE (50)
386 #define DCD_RULE_ID 1
387 #define DCD_RULE_PRI 2
388 #define DCD_RULE_UCID_RNG 3
389 #define DCD_RULE_CLIENT_ID 4
390 #define DCD_RULE_TUNL_ADDR 5
391 #define DCD_RULE_CFR_ID 6
392 #define DCD_RULE_VENDOR_SPEC 43
393 /* Define DSG Rule Client ID sub-subtypes
394 * These are subtypes of DCD_RULE_CLIENT_ID (50.4)
396 #define DCD_CLID_BCAST_ID 1
397 #define DCD_CLID_KNOWN_MAC_ADDR 2
398 #define DCD_CLID_CA_SYS_ID 3
399 #define DCD_CLID_APP_ID 4
401 /* Define DSG Configuration subtypes
402 * These are subtype of DCD_DSG_CONFIG (51)
405 #define DCD_CFG_CHAN_LST 1
406 #define DCD_CFG_TDSG1 2
407 #define DCD_CFG_TDSG2 3
408 #define DCD_CFG_TDSG3 4
409 #define DCD_CFG_TDSG4 5
410 #define DCD_CFG_VENDOR_SPEC 43
415 #define EM_HOLDOFF_TIMER 1
418 #define DOWNSTREAM_ACTIVE_CHANNEL_LIST 1
419 #define MAC_DOMAIN_DOWNSTREAM_SERVICE_GROUP 2
420 #define DOWNSTREAM_AMBIGUITY_RESOLUTION_FREQUENCY_LIST 3
421 #define RECEIVE_CHANNEL_PROFILE_REPORTING_CONTROL 4
422 #define IP_INITIALIZATION_PARAMETERS 5
423 #define EARLY_AUTHENTICATION_AND_ENCRYPTION 6
424 #define UPSTREAM_ACTIVE_CHANNEL_LIST 7
425 #define UPSTREAM_AMBIGUITY_RESOLUTION_CHANNEL_LIST 8
426 #define UPSTREAM_FREQUENCY_RANGE 9
427 #define SYMBOL_CLOCK_LOCKING_INDICATOR 10
428 #define CM_STATUS_EVENT_CONTROL 11
429 #define UPSTREAM_TRANSMIT_POWER_REPORTING 12
430 #define DSG_DA_TO_DSID_ASSOCIATION_ENTRY 13
431 #define CM_STATUS_EVENT_ENABLE_NON_CHANNEL_SPECIFIC_EVENTS 15
432 #define EXTENDED_UPSTREAM_TRANSMIT_POWER_SUPPORT 16
433 #define CMTS_DOCSIS_VERSION 17
434 #define CM_PERIODIC_MAINTENANCE_TIMEOUT_INDICATOR 18
435 #define DLS_BROADCAST_AND_MULTICAST_DELIVERY_METHOD 19
436 #define CM_STATUS_EVENT_ENABLE_FOR_DOCSIS_3_1_EVENTS 20
437 #define DIPLEXER_BAND_EDGE 21
438 #define ADVANCED_BAND_PLAN 22
439 #define MDD_BPI_PLUS 23
442 /* Downstream Active Channel List */
443 #define DOWNSTREAM_ACTIVE_CHANNEL_LIST_CHANNEL_ID 1
444 #define DOWNSTREAM_ACTIVE_CHANNEL_LIST_FREQUENCY 2
445 #define DOWNSTREAM_ACTIVE_CHANNEL_LIST_MODULATION_ORDER_ANNEX 3
446 #define DOWNSTREAM_ACTIVE_CHANNEL_LIST_PRIMARY_CAPABLE 4
447 #define DOWNSTREAM_ACTIVE_CHANNEL_LIST_CM_STATUS_EVENT_ENABLE_BITMASK 5
448 #define DOWNSTREAM_ACTIVE_CHANNEL_LIST_MAP_UCD_TRANSPORT_INDICATOR 6
449 #define DOWNSTREAM_ACTIVE_CHANNEL_LIST_OFDM_PLC_PARAMETERS 7
450 #define DOWNSTREAM_ACTIVE_CHANNEL_LIST_FDX_SUB_BAND_ID 8
451 #define DOWNSTREAM_ACTIVE_CHANNEL_LIST_FDX_DS 9
453 /* MAC Domain Downstream Service Group */
454 #define MAC_DOMAIN_DOWNSTREAM_SERVICE_GROUP_MD_DS_SG_IDENTIFIER 1
455 #define MAC_DOMAIN_DOWNSTREAM_SERVICE_GROUP_CHANNEL_IDS 2
457 /* Modulation Orders */
462 #define J83_ANNEX_A 0
463 #define J83_ANNEX_B 1
464 #define J83_ANNEX_C 2
466 /* Primary Capable */
467 #define NOT_PRIMARY_CAPABLE 0
468 #define PRIMARY_CAPABLE 1
470 /* Can carry MAP and UCD */
471 #define CANNOT_CARRY_MAP_UCD 0
472 #define CAN_CARRY_MAP_UCD 1
474 /* Receive Channel Profile Reporting Control */
475 #define RCP_CENTER_FREQUENCY_SPACING 1
476 #define VERBOSE_RCP_REPORTING 2
477 #define FRAGMENTED_RCP_TRANSMISSION 3
479 /* Frequency spacing */
480 #define ASSUME_6MHZ_CENTER_FREQUENCY_SPACING 0
481 #define ASSUME_8MHZ_CENTER_FREQUENCY_SPACING 1
483 /* Verbose RCP reporting */
484 #define RCP_NO_VERBOSE_REPORTING 0
485 #define RCP_VERBOSE_REPORTING 1
487 /* Sub-TLVs for IP Initialization Parameters */
488 #define IP_PROVISIONING_MODE 1
489 #define PRE_REGISTRATION_DSID 2
491 /* IP Provisioning Modes */
494 #define IP_ALTERNATE 2
497 /* Early authentication and encryption */
498 #define EAE_DISABLED 0
499 #define EAE_ENABLED 1
501 /* Upstream Active Channel List */
502 #define UPSTREAM_ACTIVE_CHANNEL_LIST_UPSTREAM_CHANNEL_ID 1
503 #define UPSTREAM_ACTIVE_CHANNEL_LIST_CM_STATUS_EVENT_ENABLE_BITMASK 2
504 #define UPSTREAM_ACTIVE_CHANNEL_LIST_UPSTREAM_CHANNEL_PRIORITY 3
505 #define UPSTREAM_ACTIVE_CHANNEL_LIST_DSCHIDS_MAPS_UCDS 4
506 #define UPSTREAM_ACTIVE_CHANNEL_LIST_FDX_UPSTREAM_CHANNEL 5
507 #define UPSTREAM_ACTIVE_CHANNEL_LIST_FDX_SUBBAND_ID 6
509 /* Upstream Frequency Range */
510 #define STANDARD_UPSTREAM_FREQUENCY_RANGE 0
511 #define EXTENDED_UPSTREAM_FREQUENCY_RANGE 1
513 /* Symbol Clock Locking Indicator */
514 #define NOT_LOCKED_TO_MASTER_CLOCK 0
515 #define LOCKED_TO_MASTER_CLOCK 1
517 /* CM-STATUS Event Control */
518 #define EVENT_TYPE_CODE 1
519 #define MAXIMUM_EVENT_HOLDOFF_TIMER 2
520 #define MAXIMUM_NUMBER_OF_REPORTS_PER_EVENT 3
522 /* CM-STATUS Events */
523 #define SECONDARY_CHANNEL_MDD_TIMEOUT 1
524 #define QAM_FEC_LOCK_FAILURE 2
525 #define SEQUENCE_OUT_OF_RANGE 3
526 #define MDD_RECOVERY 4
527 #define QAM_FEC_LOCK_RECOVERY 5
529 #define T3_RETRIES_EXCEEDED 7
530 #define SUCCESFUL_RANGING_AFTER_T3_RETRIES_EXCEEDED 8
531 #define CM_OPERATING_ON_BATTERY_BACKUP 9
532 #define CM_RETURNED_TO_AC_POWER 10
533 #define MAC_REMOVAL_EVENT 11
534 #define DS_OFDM_PROFILE_FAILURE 16
535 #define PRIMARY_DS_CHANGE 17
536 #define DPD_MISMATCH 18
537 #define DEPRECATED 19
538 #define NCP_PROFILE_FAILURE 20
539 #define PLC_FAILURE 21
540 #define NCP_PROFILE_RECOVERY 22
541 #define PLC_RECOVERY 23
542 #define OFDM_PROFILE_RECOVERY 24
543 #define OFDMA_FAILURE 25
544 #define MAP_STORAGE_OVERFLOW 26
545 #define MAP_STORAGE_ALMOST_FULL 27
547 /* Upstream Transmit Power Reporting */
548 #define CM_DOESNT_REPORT_TRANSMIT_POWER 0
549 #define CM_REPORTS_TRANSMIT_POWER 1
551 /* DSG DA to DSID association entry */
552 #define DSG_DA_TO_DSID_ASSOCIATION_DA 1
553 #define DSG_DA_TO_DSID_ASSOCIATION_DSID 2
555 /* CMTS DOCSIS VERSION */
556 #define CMTS_DOCSIS_VERSION_MAJOR_PRE_40 1
557 #define CMTS_DOCSIS_VERSION_MINOR_PRE_40 2
558 #define CMTS_DOCSIS_VERSION_MAJOR 3
559 #define CMTS_DOCSIS_VERSION_MINOR 4
560 #define CMTS_DOCSIS_VERSION_EXT_SPECTRUM_MODE 5
561 #define CMTS_DOCSIS_VERSION_EXT_SPECTRUM_MODE_FDD 0x01
562 #define CMTS_DOCSIS_VERSION_EXT_SPECTRUM_MODE_FDX 0x02
564 /* Define Tukey raised cosine window */
567 #define TUKEY_128TS 2
568 #define TUKEY_192TS 3
569 #define TUKEY_256TS 4
571 /* Define Cyclic prefix */
572 #define CYCLIC_PREFIX_192_TS 0
573 #define CYCLIC_PREFIX_256_TS 1
574 #define CYCLIC_PREFIX_512_TS 2
575 #define CYCLIC_PREFIX_768_TS 3
576 #define CYCLIC_PREFIX_1024_TS 4
578 /* Define Sub carrier spacing */
579 #define SPACING_25KHZ 0
580 #define SPACING_50KHZ 1
582 #define SEC_CH_MDD_TIMEOUT 1
583 #define QAM_FEC_LOCK_FAILURE 2
584 #define SEQ_OUT_OF_RANGE 3
585 #define SEC_CH_MDD_RECOVERY 4
586 #define QAM_FEC_LOCK_RECOVERY 5
588 #define T3_RETRIES_EXCEEDED 7
589 #define SUCCESS_RANGING_AFTER_T3_RETRIES_EXCEEDED 8
590 #define CM_ON_BATTERY 9
591 #define CM_ON_AC_POWER 10
592 #define MAC_REMOVAL_EVENT 11
593 #define DS_OFDM_PROFILE_FAILURE 16
594 #define PRIMARY_DOWNSTREAM_CHANGE 17
595 #define DPD_MISMATCH 18
596 #define NCP_PROFILE_FAILURE 20
597 #define PLC_FAILURE 21
598 #define NCP_PROFILE_RECOVERY 22
599 #define PLC_RECOVERY 23
600 #define OFDM_PROFILE_RECOVERY 24
601 #define OFDMA_PROFILE_FAILURE 25
602 #define MAP_STORAGE_OVERFLOW_INDICATOR 26
603 #define MAP_STORAGE_ALMOST_FULL_INDICATOR 27
605 #define STATUS_EVENT 1
607 #define EVENT_DESCR 2
608 #define EVENT_DS_CH_ID 4
609 #define EVENT_US_CH_ID 5
611 #define EVENT_MAC_ADDRESS 7
612 #define EVENT_DS_OFDM_PROFILE_ID 8
613 #define EVENT_US_OFDMA_PROFILE_ID 9
615 #define CM_CTRL_MUTE 1
616 #define CM_CTRL_MUTE_TIMEOUT 2
617 #define CM_CTRL_REINIT 3
618 #define CM_CTRL_DISABLE_FWD 4
619 #define CM_CTRL_DS_EVENT 5
620 #define CM_CTRL_US_EVENT 6
621 #define CM_CTRL_EVENT 7
623 #define DS_EVENT_CH_ID 1
624 #define DS_EVENT_MASK 2
626 #define US_EVENT_CH_ID 1
627 #define US_EVENT_MASK 2
630 #define DISCRETE_FOURIER_TRANSFORM_SIZE 0
631 #define CYCLIC_PREFIX 1
633 #define OFDM_SPECTRUM_LOCATION 3
634 #define TIME_INTERLEAVING_DEPTH 4
635 #define SUBCARRIER_ASSIGNMENT_RANGE_LIST 5
636 #define PRIMARY_CAPABILITY_INDICATOR 6
637 #define FDX_INDICATOR 7
640 #define SUBCARRIER_ASSIGNMENT_VECTOR 6
642 #define SUBCARRIER_ASSIGNMENT_RANGE_CONT 0
643 #define SUBCARRIER_ASSIGNMENT_RANGE_SKIPBY1 1
644 #define SUBCARRIER_ASSIGNMENT_LIST 2
646 #define OPT_REQ_REQ_STAT 1
647 #define OPT_REQ_RXMER_THRESH_PARAMS 2
648 #define OPT_REQ_RXMER_THRESH_PARAMS_MODULATION_ORDER 1
649 #define OPT_REQ_TRIGGER_DEFINITION 7
650 #define OPT_REQ_TRIGGER_DEFINITION_TRIGGER_TYPE 1
651 #define OPT_REQ_TRIGGER_DEFINITION_MEASUREMENT_DURATION 2
652 #define OPT_REQ_TRIGGER_DEFINITION_TRIGGERING_SID 3
653 #define OPT_REQ_TRIGGER_DEFINITION_US_CHANNEL_ID 4
654 #define OPT_REQ_TRIGGER_DEFINITION_OUDP_SOUND_AMBIG_OFFSET 5
655 #define OPT_REQ_TRIGGER_DEFINITION_RXMER_TO_REPORT 6
656 #define OPT_REQ_TRIGGER_DEFINITION_START_TIME 7
658 #define OPT_RSP_RXMER 1
659 #define OPT_RSP_DATA_CW 2
660 #define OPT_RSP_NCP_FIELDS 3
662 #define OPT_RSP_RXMER_SUBCARRIER 1
663 #define OPT_RSP_RXMER_SUBCARRIER_THRESHOLD 2
664 #define OPT_RSP_RXMER_SUBCARRIER_THRESHOLD_COUNT 3
665 #define OPT_RSP_RXMER_SNR_MARGIN 4
666 #define OPT_RSP_RXMER_AVG 5
667 #define OPT_RSP_RXMER_ECT_RBA_SUBBAND_DIRECTION 6
669 #define OPT_RSP_DATA_CW_COUNT 1
670 #define OPT_RSP_DATA_CW_CORRECTED 2
671 #define OPT_RSP_DATA_CW_UNCORRECTABLE 3
672 #define OPT_RSP_DATA_CW_THRESHOLD_COMPARISON 4
674 #define OPT_RSP_NCP_FIELDS_COUNT 1
675 #define OPT_RSP_NCP_FIELDS_FAILURE 2
676 #define OPT_RSP_NCP_FIELDS_THRESHOLD_COMPARISON 3
678 #define DIPLEXER_US_UPPER_BAND_EDGE 1
679 #define DIPLEXER_DS_LOWER_BAND_EDGE 2
680 #define DIPLEXER_DS_UPPER_BAND_EDGE 3
681 #define DIPLEXER_US_UPPER_BAND_EDGE_OVERRIDE 4
682 #define DIPLEXER_DS_LOWER_BAND_EDGE_OVERRIDE 5
683 #define DIPLEXER_DS_UPPER_BAND_EDGE_OVERRIDE 6
685 /* MDD Advanced Band Plan */
686 #define MDD_ABP_SUB_BAND_COUNT 2
687 #define MDD_ABP_SUB_BAND_WIDTH 3
690 #define MDD_BPI_PLUS_VERSION 1
691 #define MDD_BPI_PLUS_CFG 2
693 #define KEY_MGMT_VERSION 0
694 #define KEY_MGMT_MULTIPART 1
696 /* CWT-REQ and CWT-RSP */
697 #define CWT_PHASE_ROTATION 1
698 #define CWT_MAX_DURATION 2
699 #define CWT_US_ENCODINGS 3
700 #define CWT_US_ENCODINGS_CID 1
701 #define CWT_US_ENCODINGS_SC_INDEX 2
702 #define CWT_US_ENCODINGS_POWER_BOOST 3
704 /* ECT-REQ and ECT-RSP */
705 #define ECT_CONTROL 87
706 #define ECT_CONTROL_SUBBAND_DIRECTION 1
707 #define ECT_CONTROL_STATUS 2
708 #define ECT_CONTROL_METHOD 3
709 #define ECT_CONTROL_METHOD_FG 1
710 #define ECT_CONTROL_METHOD_FG_DURATION 1
711 #define ECT_CONTROL_METHOD_FG_PERIODICITY 2
712 #define ECT_CONTROL_METHOD_FG_EXPIRATION_TIME 3
713 #define ECT_CONTROL_METHOD_FG_DS_ZBL 4
714 #define ECT_CONTROL_METHOD_BG 2
715 #define ECT_CONTROL_METHOD_BG_DURATION 1
716 #define ECT_CONTROL_METHOD_BG_PERIODICITY 2
717 #define ECT_CONTROL_METHOD_BG_EXPIRATION_TIME 3
718 #define ECT_CONTROL_METHOD_BG_START_TIME 4
719 #define ECT_CONTROL_PARTIAL_SERVICE 4
720 #define ECT_CONTROL_PARTIAL_SERVICE_DCID 1
721 #define ECT_CONTROL_PARTIAL_SERVICE_UCID 2
722 #define ECT_CONTROL_DEFERRAL_TIME 5
723 #define ECT_CONTROL_RXMER_DURATION 6
725 /* BPKM CMTS Designation */
726 #define BPKMATTR_CMTS_DESIGNATION_CERTIFICATE_FINGERPRINT 0
727 #define BPKMATTR_CMTS_DESIGNATION_COMMON_NAME 1
728 #define BPKMATTR_CMTS_DESIGNATION_ORG_UNIT 2
729 #define BPKMATTR_CMTS_DESIGNATION_ORG_NAME 3
730 #define BPKMATTR_CMTS_DESIGNATION_SERIAL_NUMBER 4
731 #define BPKMATTR_CMTS_DESIGNATION_ISSUING_CA_FINGERPRINT 5
732 #define BPKMATTR_CMTS_DESIGNATION_ISSUING_CA_COMMON_NAME 6
733 #define BPKMATTR_CMTS_DESIGNATION_ISSUING_CA_ORG_UNIT 7
734 #define BPKMATTR_CMTS_DESIGNATION_ISSUING_CA_ORG_NAME 8
735 #define BPKMATTR_CMTS_DESIGNATION_ISSUING_CA_SERIAL_NUMBER 9
737 static int proto_docsis_mgmt
;
738 static int proto_docsis_sync
;
739 static int proto_docsis_ucd
;
740 static int proto_docsis_map_v1
;
741 static int proto_docsis_map_v5
;
742 static int proto_docsis_rngreq
;
743 static int proto_docsis_rngrsp
;
744 static int proto_docsis_regreq
;
745 static int proto_docsis_regrsp
;
746 static int proto_docsis_uccreq
;
747 static int proto_docsis_uccrsp
;
748 static int proto_docsis_bpkmreq
;
749 static int proto_docsis_bpkmrsp
;
750 static int proto_docsis_regack
;
751 static int proto_docsis_dsareq
;
752 static int proto_docsis_dsarsp
;
753 static int proto_docsis_dsaack
;
754 static int proto_docsis_dscreq
;
755 static int proto_docsis_dscrsp
;
756 static int proto_docsis_dscack
;
757 static int proto_docsis_dsdreq
;
758 static int proto_docsis_dsdrsp
;
759 static int proto_docsis_dccreq
;
760 static int proto_docsis_dccrsp
;
761 static int proto_docsis_dccack
;
762 static int proto_docsis_type29ucd
;
763 static int proto_docsis_intrngreq
;
764 static int proto_docsis_dcd
;
765 static int proto_docsis_mdd
;
766 static int proto_docsis_bintrngreq
;
767 static int proto_docsis_type35ucd
;
768 static int proto_docsis_dbcreq
;
769 static int proto_docsis_dbcrsp
;
770 static int proto_docsis_dbcack
;
771 static int proto_docsis_dpvreq
;
772 static int proto_docsis_dpvrsp
;
773 static int proto_docsis_cmstatus
;
774 static int proto_docsis_cmstatusack
;
775 static int proto_docsis_cmctrlreq
;
776 static int proto_docsis_cmctrlrsp
;
777 static int proto_docsis_regreqmp
;
778 static int proto_docsis_regrspmp
;
779 static int proto_docsis_emreq
;
780 static int proto_docsis_emrsp
;
781 static int proto_docsis_ocd
;
782 static int proto_docsis_dpd
;
783 static int proto_docsis_type51ucd
;
784 static int proto_docsis_optreq
;
785 static int proto_docsis_optrsp
;
786 static int proto_docsis_optack
;
787 static int proto_docsis_rba
;
788 static int proto_docsis_cwt_req
;
789 static int proto_docsis_cwt_rsp
;
790 static int proto_docsis_ect_req
;
791 static int proto_docsis_ect_rsp
;
792 static int proto_docsis_ext_rngreq
;
793 static int proto_docsis_dpr
;
795 static int hf_docsis_sync_cmts_timestamp
;
797 static int hf_docsis_ucd_config_ch_cnt
;
798 static int hf_docsis_ucd_mini_slot_size
;
799 static int hf_docsis_ucd_type
;
800 static int hf_docsis_ucd_length
;
801 static int hf_docsis_ucd_burst_type
;
802 static int hf_docsis_ucd_burst_length
;
803 static int hf_docsis_ucd_symbol_rate
;
804 static int hf_docsis_ucd_frequency
;
805 static int hf_docsis_ucd_preamble_pat
;
806 static int hf_docsis_ucd_ext_preamble_pat
;
807 static int hf_docsis_ucd_scdma_mode_enabled
;
808 static int hf_docsis_ucd_scdma_spreading_interval
;
809 static int hf_docsis_ucd_scdma_codes_per_mini_slot
;
810 static int hf_docsis_ucd_scdma_active_codes
;
811 static int hf_docsis_ucd_scdma_code_hopping_seed
;
812 static int hf_docsis_ucd_scdma_us_ratio_num
;
813 static int hf_docsis_ucd_scdma_us_ratio_denom
;
814 static int hf_docsis_ucd_scdma_timestamp_snapshot
;
815 static int hf_docsis_ucd_maintain_power_spectral_density
;
816 static int hf_docsis_ucd_ranging_required
;
817 static int hf_docsis_ucd_max_scheduled_codes
;
818 static int hf_docsis_ucd_rnghoff_cm
;
819 static int hf_docsis_ucd_rnghoff_erouter
;
820 static int hf_docsis_ucd_rnghoff_emta
;
821 static int hf_docsis_ucd_rnghoff_estb
;
822 static int hf_docsis_ucd_rnghoff_rsvd
;
823 static int hf_docsis_ucd_rnghoff_id_ext
;
824 static int hf_docsis_ucd_chan_class_id_cm
;
825 static int hf_docsis_ucd_chan_class_id_erouter
;
826 static int hf_docsis_ucd_chan_class_id_emta
;
827 static int hf_docsis_ucd_chan_class_id_estb
;
828 static int hf_docsis_ucd_chan_class_id_rsvd
;
829 static int hf_docsis_ucd_chan_class_id_id_ext
;
830 static int hf_docsis_ucd_scdma_scrambler_onoff
;
831 static int hf_docsis_ucd_scdma_codes_per_subframe
;
832 static int hf_docsis_ucd_scdma_framer_int_step_size
;
833 static int hf_docsis_ucd_tcm_enabled
;
834 static int hf_docsis_ucd_active_code_hopping
;
835 static int hf_docsis_ucd_higher_ucd_for_same_ucid
;
836 static int hf_docsis_ucd_higher_ucd_for_same_ucid_resv
;
837 static int hf_docsis_ucd_scdma_selection_active_codes
;
838 static int hf_docsis_ucd_iuc
;
839 static int hf_docsis_ucd_change_ind_bitmask_subc_excl_band
;
840 static int hf_docsis_ucd_change_ind_bitmask_unused_subc
;
841 static int hf_docsis_ucd_change_ind_bitmask_other_subc
;
842 static int hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc5
;
843 static int hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc6
;
844 static int hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc9
;
845 static int hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc10
;
846 static int hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc11
;
847 static int hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc12
;
848 static int hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc13
;
849 static int hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc3_or_4
;
850 static int hf_docsis_ucd_change_ind_bitmask_reserved
;
851 static int hf_docsis_ucd_ofdma_timestamp_snapshot
;
852 static int hf_docsis_ucd_ofdma_timestamp_snapshot_reserved
;
853 static int hf_docsis_ucd_ofdma_timestamp_snapshot_d30timestamp
;
854 static int hf_docsis_ucd_ofdma_timestamp_snapshot_4msbits_of_div20
;
855 static int hf_docsis_ucd_ofdma_timestamp_snapshot_minislot_count
;
856 static int hf_docsis_ucd_ofdma_cyclic_prefix_size
;
857 static int hf_docsis_ucd_ofdma_rolloff_period_size
;
858 static int hf_docsis_ucd_subc_spacing
;
859 static int hf_docsis_ucd_cent_freq_subc0
;
860 static int hf_docsis_ucd_subcarrier_range
;
861 static int hf_docsis_ucd_symb_ofdma_frame
;
862 static int hf_docsis_ucd_rand_seed
;
863 static int hf_docsis_ucd_extended_us_channel
;
865 static int hf_docsis_burst_mod_type
;
866 static int hf_docsis_burst_diff_encoding
;
867 static int hf_docsis_burst_preamble_len
;
868 static int hf_docsis_burst_preamble_val_off
;
869 static int hf_docsis_burst_fec
;
870 static int hf_docsis_burst_fec_codeword
;
871 static int hf_docsis_burst_scrambler_seed
;
872 static int hf_docsis_burst_max_burst
;
873 static int hf_docsis_burst_guard_time
;
874 static int hf_docsis_burst_last_cw_len
;
875 static int hf_docsis_burst_scrambler_onoff
;
876 static int hf_docsis_rs_int_depth
;
877 static int hf_docsis_rs_int_block
;
878 static int hf_docsis_preamble_type
;
879 static int hf_docsis_subc_init_rang
;
880 static int hf_docsis_subc_fine_rang
;
881 static int hf_docsis_ofdma_prof_mod_order
;
882 static int hf_docsis_ofdma_prof_pilot_pattern
;
883 static int hf_docsis_ofdma_prof_num_add_minislots
;
884 static int hf_docsis_ofdma_ir_pow_ctrl_start_pow
;
885 static int hf_docsis_ofdma_ir_pow_ctrl_step_size
;
887 static int hf_docsis_map_ucd_count
;
888 static int hf_docsis_map_numie
;
889 static int hf_docsis_map_numie_v5
;
890 static int hf_docsis_map_alloc_start
;
891 static int hf_docsis_map_ack_time
;
892 static int hf_docsis_map_rng_start
;
893 static int hf_docsis_map_rng_end
;
894 static int hf_docsis_map_data_start
;
895 static int hf_docsis_map_data_end
;
896 static int hf_docsis_map_ie
;
897 static int hf_docsis_map_probe_ie
;
899 static int hf_docsis_map_rsvd
;
900 static int hf_docsis_map_rsvd_v5
;
901 static int hf_docsis_map_cat
;
903 static int hf_docsis_map_sid
;
904 static int hf_docsis_map_iuc
;
905 static int hf_docsis_map_offset
;
906 static int hf_docsis_map_mer
;
907 static int hf_docsis_map_pw
;
908 static int hf_docsis_map_eq
;
909 static int hf_docsis_map_st
;
910 static int hf_docsis_map_probe_frame
;
911 static int hf_docsis_map_symbol_in_frame
;
912 static int hf_docsis_map_start_subc
;
913 static int hf_docsis_map_subc_skip
;
914 static int hf_docsis_map_ect
;
917 static int hf_docsis_rngreq_sid_field_bit15
;
918 static int hf_docsis_rngreq_sid_field_bit14
;
919 static int hf_docsis_rngreq_sid_field_bit15_14
;
920 static int hf_docsis_rngreq_sid
;
921 static int hf_docsis_rngreq_pend_compl
;
923 static int hf_docsis_rngrsp_type
;
924 static int hf_docsis_rngrsp_length
;
925 static int hf_docsis_rngrsp_sid
;
926 static int hf_docsis_rngrsp_timing_adj
;
927 static int hf_docsis_rngrsp_power_adj
;
928 static int hf_docsis_rngrsp_freq_adj
;
929 static int hf_docsis_rngrsp_xmit_eq_adj
;
930 static int hf_docsis_rngrsp_ranging_status
;
931 static int hf_docsis_rngrsp_down_freq_over
;
932 static int hf_docsis_rngrsp_upstream_ch_over
;
933 static int hf_docsis_rngrsp_xmit_eq_set
;
934 static int hf_docsis_rngrsp_rngrsp_t4_timeout_multiplier
;
935 static int hf_docsis_rngrsp_dynamic_range_window_upper_edge
;
936 static int hf_docsis_rngrsp_tlv_unknown
;
937 static int hf_docsis_rngrsp_trans_eq_data
;
938 static int hf_docsis_rngrsp_trans_eq_enc_scdma_tdma_main_tap_location
;
939 static int hf_docsis_rngrsp_trans_eq_enc_scdma_tdma_number_of_forward_taps_per_symbol
;
940 static int hf_docsis_rngrsp_trans_eq_enc_scdma_tdma_number_of_forward_taps_n
;
941 static int hf_docsis_rngrsp_trans_eq_enc_scdma_tdma_reserved
;
942 static int hf_docsis_rngrsp_trans_eq_enc_lowest_subc
;
943 static int hf_docsis_rngrsp_trans_eq_enc_highest_subc
;
944 static int hf_docsis_rngrsp_trans_eq_enc_coef_real
;
945 static int hf_docsis_rngrsp_trans_eq_enc_coef_imag
;
946 static int hf_docsis_rngrsp_commanded_power_data
;
947 static int hf_docsis_rngrsp_commanded_power_dynamic_range_window
;
948 static int hf_docsis_rngrsp_commanded_power_ucid
;
949 static int hf_docsis_rngrsp_commanded_power_trans_pow_lvl
;
952 static int hf_docsis_regreq_sid
;
953 static int hf_docsis_regrsp_sid
;
954 static int hf_docsis_regrsp_response
;
956 static int hf_docsis_bpkm_code
;
957 static int hf_docsis_bpkm_length
;
958 static int hf_docsis_bpkm_ident
;
959 static int hf_docsis_bpkmattr
;
960 static int hf_docsis_bpkmattr_tlv
;
961 static int hf_docsis_bpkmattr_tlv_type
;
962 static int hf_docsis_bpkmattr_tlv_length
;
963 static int hf_docsis_bpkmattr_serial_num
;
964 static int hf_docsis_bpkmattr_manf_id
;
965 static int hf_docsis_bpkmattr_mac_addr
;
966 static int hf_docsis_bpkmattr_rsa_pub_key
;
967 static int hf_docsis_bpkmattr_cm_id
;
968 static int hf_docsis_bpkmattr_display_str
;
969 static int hf_docsis_bpkmattr_auth_key
;
970 static int hf_docsis_bpkmattr_tek
;
971 static int hf_docsis_bpkmattr_key_life
;
972 static int hf_docsis_bpkmattr_key_seq
;
973 static int hf_docsis_bpkmattr_hmac_digest
;
974 static int hf_docsis_bpkmattr_said
;
975 static int hf_docsis_bpkmattr_tek_params
;
976 static int hf_docsis_bpkmattr_cbc_iv
;
977 static int hf_docsis_bpkmattr_error_code
;
978 static int hf_docsis_bpkmattr_ca_cert
;
979 static int hf_docsis_bpkmattr_cm_cert
;
980 static int hf_docsis_bpkmattr_security_cap
;
981 static int hf_docsis_bpkmattr_crypto_suite
;
982 static int hf_docsis_bpkmattr_crypto_suite_encr
;
983 static int hf_docsis_bpkmattr_crypto_suite_auth
;
984 static int hf_docsis_bpkmattr_crypto_suite_list
;
985 static int hf_docsis_bpkmattr_bpi_version
;
986 static int hf_docsis_bpkmattr_sa_descr
;
987 static int hf_docsis_bpkmattr_sa_type
;
988 static int hf_docsis_bpkmattr_sa_query
;
989 static int hf_docsis_bpkmattr_sa_query_type
;
990 static int hf_docsis_bpkmattr_ip_address
;
991 static int hf_docsis_bpkmattr_download_param
;
992 static int hf_docsis_bpkmattr_cvc_root_ca_cert
;
993 static int hf_docsis_bpkmattr_cvc_ca_cert
;
994 static int hf_docsis_bpkmattr_dev_ca_cert
;
995 static int hf_docsis_bpkmattr_root_ca_cert
;
996 static int hf_docsis_bpkmattr_cm_nonce
;
997 static int hf_docsis_bpkmattr_msg_signature
;
998 static int hf_docsis_bpkmattr_key_exchange_share_field_id
;
999 static int hf_docsis_bpkmattr_key_exchange_share_key_share
;
1000 static int hf_docsis_bpkmattr_allowed_bpi_versions
;
1001 static int hf_docsis_bpkmattr_allowed_bpi_version
;
1002 static int hf_docsis_bpkmattr_ocsp_responses
;
1003 static int hf_docsis_bpkmattr_ocsp_response
;
1004 static int hf_docsis_bpkmattr_cmts_designation
;
1005 static int hf_docsis_bpkmattr_cmts_designation_data_type
;
1006 static int hf_docsis_bpkmattr_cmts_designation_certificate_fingerprint
;
1007 static int hf_docsis_bpkmattr_cmts_designation_common_name
;
1008 static int hf_docsis_bpkmattr_cmts_designation_org_unit
;
1009 static int hf_docsis_bpkmattr_cmts_designation_org_name
;
1010 static int hf_docsis_bpkmattr_cmts_designation_serial_number
;
1011 static int hf_docsis_bpkmattr_cmts_designation_issuing_ca_fingerprint
;
1012 static int hf_docsis_bpkmattr_cmts_designation_issuing_ca_common_name
;
1013 static int hf_docsis_bpkmattr_cmts_designation_issuing_ca_org_unit
;
1014 static int hf_docsis_bpkmattr_cmts_designation_issuing_ca_org_name
;
1015 static int hf_docsis_bpkmattr_cmts_designation_issuing_ca_serial_number
;
1016 static int hf_docsis_bpkmattr_cm_status_code
;
1017 static int hf_docsis_bpkmattr_detected_errors
;
1018 static int hf_docsis_bpkmattr_vendor_def
;
1020 static int hf_docsis_regack_sid
;
1021 static int hf_docsis_regack_response
;
1023 static int hf_docsis_dsarsp_response
;
1024 static int hf_docsis_dsaack_response
;
1026 static int hf_docsis_dscrsp_response
;
1027 static int hf_docsis_dscack_response
;
1029 static int hf_docsis_dsdreq_rsvd
;
1030 static int hf_docsis_dsdreq_sfid
;
1032 static int hf_docsis_dsdrsp_confcode
;
1033 static int hf_docsis_dsdrsp_rsvd
;
1035 static int hf_docsis_dccreq_type
;
1036 static int hf_docsis_dccreq_length
;
1037 static int hf_docsis_dccreq_tran_id
;
1038 static int hf_docsis_dccreq_up_chan_id
;
1039 static int hf_docsis_dcc_ds_params_subtype
;
1040 static int hf_docsis_dcc_ds_params_length
;
1041 static int hf_docsis_dccreq_ds_freq
;
1042 static int hf_docsis_dccreq_ds_mod_type
;
1043 static int hf_docsis_dccreq_ds_sym_rate
;
1044 static int hf_docsis_dccreq_ds_intlv_depth_i
;
1045 static int hf_docsis_dccreq_ds_intlv_depth_j
;
1046 static int hf_docsis_dccreq_ds_chan_id
;
1047 static int hf_docsis_dccreq_ds_sync_sub
;
1048 static int hf_docsis_dccreq_ds_ofdm_block_freq
;
1049 static int hf_docsis_dccreq_init_tech
;
1050 static int hf_docsis_dccreq_ucd_sub
;
1051 static int hf_docsis_dccreq_said_sub_cur
;
1052 static int hf_docsis_dccreq_said_sub_new
;
1053 static int hf_docsis_dcc_sf_sub_subtype
;
1054 static int hf_docsis_dcc_sf_sub_length
;
1055 static int hf_docsis_dccreq_sf_sfid_cur
;
1056 static int hf_docsis_dccreq_sf_sfid_new
;
1057 static int hf_docsis_dccreq_sf_sid_cur
;
1058 static int hf_docsis_dccreq_sf_sid_new
;
1059 static int hf_docsis_dccreq_sf_unsol_grant_tref
;
1060 static int hf_docsis_dccreq_cmts_mac_addr
;
1061 static int hf_docsis_dccreq_key_seq_num
;
1062 static int hf_docsis_dccreq_hmac_digest
;
1063 static int hf_docsis_dccrsp_conf_code
;
1064 static int hf_docsis_dccrsp_type
;
1065 static int hf_docsis_dccrsp_length
;
1066 static int hf_docsis_dcc_cm_jump_subtype
;
1067 static int hf_docsis_dcc_cm_jump_length
;
1068 static int hf_docsis_dccrsp_cm_jump_time_length
;
1069 static int hf_docsis_dccrsp_cm_jump_time_start
;
1070 static int hf_docsis_dccrsp_key_seq_num
;
1071 static int hf_docsis_dccrsp_hmac_digest
;
1072 static int hf_docsis_dccack_type
;
1073 static int hf_docsis_dccack_length
;
1074 static int hf_docsis_dccack_key_seq_num
;
1075 static int hf_docsis_dccack_hmac_digest
;
1077 static int hf_docsis_intrngreq_sid
;
1079 static int hf_docsis_dcd_config_ch_cnt
;
1080 static int hf_docsis_dcd_num_of_frag
;
1081 static int hf_docsis_dcd_frag_sequence_num
;
1082 static int hf_docsis_dcd_type
;
1083 static int hf_docsis_dcd_length
;
1084 static int hf_docsis_dcd_down_classifier_subtype
;
1085 static int hf_docsis_dcd_down_classifier_length
;
1086 static int hf_docsis_dcd_cfr_id
;
1087 static int hf_docsis_dcd_cfr_rule_pri
;
1088 static int hf_docsis_dcd_cfr_ip_subtype
;
1089 static int hf_docsis_dcd_cfr_ip_length
;
1090 static int hf_docsis_dcd_cfr_ip_source_addr
;
1091 static int hf_docsis_dcd_cfr_ip_source_mask
;
1092 static int hf_docsis_dcd_cfr_ip_dest_addr
;
1093 static int hf_docsis_dcd_cfr_ip_dest_mask
;
1094 static int hf_docsis_dcd_cfr_tcpudp_srcport_start
;
1095 static int hf_docsis_dcd_cfr_tcpudp_srcport_end
;
1096 static int hf_docsis_dcd_cfr_tcpudp_dstport_start
;
1097 static int hf_docsis_dcd_cfr_tcpudp_dstport_end
;
1098 static int hf_docsis_dcd_rule_id
;
1099 static int hf_docsis_dcd_rule_pri
;
1100 static int hf_docsis_dcd_rule_ucid_list
;
1101 static int hf_docsis_dcd_clid_subtype
;
1102 static int hf_docsis_dcd_clid_length
;
1103 static int hf_docsis_dcd_clid_bcast_id
;
1104 static int hf_docsis_dcd_clid_known_mac_addr
;
1105 static int hf_docsis_dcd_clid_ca_sys_id
;
1106 static int hf_docsis_dcd_clid_app_id
;
1107 static int hf_docsis_dcd_dsg_rule_subtype
;
1108 static int hf_docsis_dcd_dsg_rule_length
;
1109 static int hf_docsis_dcd_rule_tunl_addr
;
1110 static int hf_docsis_dcd_rule_cfr_id
;
1111 static int hf_docsis_dcd_rule_vendor_spec
;
1112 static int hf_docsis_dcd_cfg_subtype
;
1113 static int hf_docsis_dcd_cfg_length
;
1114 static int hf_docsis_dcd_cfg_chan
;
1115 static int hf_docsis_dcd_cfg_tdsg1
;
1116 static int hf_docsis_dcd_cfg_tdsg2
;
1117 static int hf_docsis_dcd_cfg_tdsg3
;
1118 static int hf_docsis_dcd_cfg_tdsg4
;
1119 static int hf_docsis_dcd_cfg_vendor_spec
;
1121 static int hf_docsis_mdd_ccc
;
1122 static int hf_docsis_mdd_number_of_fragments
;
1123 static int hf_docsis_mdd_fragment_sequence_number
;
1124 static int hf_docsis_mdd_current_channel_dcid
;
1125 static int hf_docsis_mdd_tlv
;
1126 static int hf_docsis_mdd_tlv_type
;
1127 static int hf_docsis_mdd_tlv_length
;
1128 static int hf_docsis_mdd_ds_active_channel_list_subtype
;
1129 static int hf_docsis_mdd_ds_active_channel_list_length
;
1130 static int hf_docsis_mdd_downstream_active_channel_list_channel_id
;
1131 static int hf_docsis_mdd_downstream_active_channel_list_frequency
;
1132 static int hf_docsis_mdd_downstream_active_channel_list_annex
;
1133 static int hf_docsis_mdd_downstream_active_channel_list_modulation_order
;
1134 static int hf_docsis_mdd_downstream_active_channel_list_primary_capable
;
1135 static int hf_docsis_mdd_downstream_active_channel_list_map_ucd_transport_indicator
;
1136 static int hf_docsis_mdd_downstream_active_channel_list_fdx_sub_band_id
;
1137 static int hf_docsis_mdd_downstream_active_channel_list_fdx_ds
;
1138 static int hf_docsis_mdd_cm_status_event_enable_bitmask
;
1139 static int hf_docsis_mdd_cm_status_event_enable_bitmask_mdd_timeout
;
1140 static int hf_docsis_mdd_cm_status_event_enable_bitmask_qam_fec_lock_failure
;
1141 static int hf_docsis_mdd_cm_status_event_enable_bitmask_mdd_recovery
;
1142 static int hf_docsis_mdd_cm_status_event_enable_bitmask_qam_fec_lock_recovery
;
1143 static int hf_docsis_mdd_ofdm_plc_parameters
;
1144 static int hf_docsis_mdd_ofdm_plc_parameters_tukey_raised_cosine_window
;
1145 static int hf_docsis_mdd_ofdm_plc_parameters_cyclic_prefix
;
1146 static int hf_docsis_mdd_ofdm_plc_parameters_sub_carrier_spacing
;
1147 static int hf_docsis_mdd_up_active_channel_list_subtype
;
1148 static int hf_docsis_mdd_up_active_channel_list_length
;
1149 static int hf_docsis_mdd_cm_status_event_enable_bitmask_t4_timeout
;
1150 static int hf_docsis_mdd_cm_status_event_enable_bitmask_t3_retries_exceeded
;
1151 static int hf_docsis_mdd_cm_status_event_enable_bitmask_successful_ranging_after_t3_retries_exceeded
;
1152 static int hf_docsis_mdd_ds_service_group_subtype
;
1153 static int hf_docsis_mdd_ds_service_group_length
;
1154 static int hf_docsis_mdd_mac_domain_downstream_service_group_md_ds_sg_identifier
;
1155 static int hf_docsis_mdd_mac_domain_downstream_service_group_channel_id
;
1156 static int hf_docsis_mdd_downstream_ambiguity_resolution_frequency
;
1157 static int hf_docsis_mdd_channel_profile_reporting_control_subtype
;
1158 static int hf_docsis_mdd_channel_profile_reporting_control_length
;
1159 static int hf_docsis_mdd_rcp_center_frequency_spacing
;
1160 static int hf_docsis_mdd_verbose_rcp_reporting
;
1161 static int hf_docsis_mdd_fragmented_rcp_transmission
;
1162 static int hf_docsis_mdd_ip_init_param_subtype
;
1163 static int hf_docsis_mdd_ip_init_param_length
;
1164 static int hf_docsis_mdd_ip_provisioning_mode
;
1165 static int hf_docsis_mdd_pre_registration_dsid
;
1166 static int hf_docsis_mdd_early_authentication_and_encryption
;
1167 static int hf_docsis_mdd_upstream_active_channel_list_upstream_channel_id
;
1168 static int hf_docsis_mdd_upstream_active_channel_list_upstream_channel_priority
;
1169 static int hf_docsis_mdd_upstream_active_channel_list_dschids_maps_ucds
;
1170 static int hf_docsis_mdd_upstream_active_channel_list_dschids_maps_ucds_dschid
;
1171 static int hf_docsis_mdd_upstream_active_channel_list_fdx_upstream_channel
;
1172 static int hf_docsis_mdd_upstream_active_channel_list_fdx_subband_id
;
1173 static int hf_docsis_mdd_upstream_ambiguity_resolution_channel_list_channel_id
;
1174 static int hf_docsis_mdd_upstream_frequency_range
;
1175 static int hf_docsis_mdd_symbol_clock_locking_indicator
;
1176 static int hf_docsis_mdd_cm_status_event_control_subtype
;
1177 static int hf_docsis_mdd_cm_status_event_control_length
;
1178 static int hf_docsis_mdd_event_type
;
1179 static int hf_docsis_mdd_maximum_event_holdoff_timer
;
1180 static int hf_docsis_mdd_maximum_number_of_reports_per_event
;
1181 static int hf_docsis_mdd_upstream_transmit_power_reporting
;
1182 static int hf_docsis_mdd_dsg_da_to_dsid_subtype
;
1183 static int hf_docsis_mdd_dsg_da_to_dsid_length
;
1184 static int hf_docsis_mdd_dsg_da_to_dsid_association_da
;
1185 static int hf_docsis_mdd_dsg_da_to_dsid_association_dsid
;
1186 static int hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events
;
1187 static int hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events_sequence_out_of_range
;
1188 static int hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events_cm_operating_on_battery_backup
;
1189 static int hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events_cm_returned_to_ac_power
;
1190 static int hf_docsis_mdd_extended_upstream_transmit_power_support
;
1192 static int hf_docsis_mdd_cmts_major_docsis_version
;
1193 static int hf_docsis_mdd_cmts_minor_docsis_version
;
1194 static int hf_docsis_mdd_docsis_version_tlv
;
1195 static int hf_docsis_mdd_docsis_version_tlv_type
;
1196 static int hf_docsis_mdd_docsis_version_tlv_length
;
1197 static int hf_docsis_mdd_docsis_version_major_pre_40
;
1198 static int hf_docsis_mdd_docsis_version_minor_pre_40
;
1199 static int hf_docsis_mdd_docsis_version_major
;
1200 static int hf_docsis_mdd_docsis_version_minor
;
1201 static int hf_docsis_mdd_docsis_version_ext_spectrum_mode
;
1202 static int hf_docsis_mdd_docsis_version_ext_spectrum_mode_fdd
;
1203 static int hf_docsis_mdd_docsis_version_ext_spectrum_mode_fdx
;
1205 static int hf_docsis_mdd_cm_periodic_maintenance_timeout_indicator
;
1206 static int hf_docsis_mdd_dls_broadcast_and_multicast_delivery_method
;
1207 static int hf_docsis_mdd_cm_status_event_d31_ofdm_prof_fail
;
1208 static int hf_docsis_mdd_cm_status_event_d31_prim_down_chan_change
;
1209 static int hf_docsis_mdd_cm_status_event_d31_dpd_mismatch
;
1210 static int hf_docsis_mdd_cm_status_event_d31_deprecated
;
1211 static int hf_docsis_mdd_cm_status_event_d31_ncp_prof_fail
;
1212 static int hf_docsis_mdd_cm_status_event_d31_loss_fec_plc
;
1213 static int hf_docsis_mdd_cm_status_event_d31_ncp_prof_recover
;
1214 static int hf_docsis_mdd_cm_status_event_d31_fec_recover_on_plc
;
1215 static int hf_docsis_mdd_cm_status_event_d31_fec_recover_on_ofdm_prof
;
1216 static int hf_docsis_mdd_cm_status_event_d31_ofdma_prof_fail
;
1217 static int hf_docsis_mdd_cm_status_event_d31_map_stor_overflow_ind
;
1218 static int hf_docsis_mdd_cm_status_event_d31_ofdm_map_stor_almost_full_ind
;
1219 static int hf_docsis_mdd_cm_status_event_d31_reserved
;
1221 static int hf_docsis_mdd_diplexer_band_edge
;
1222 static int hf_docsis_mdd_diplexer_band_edge_length
;
1223 static int hf_docsis_mdd_diplexer_us_upper_band_edge
;
1224 static int hf_docsis_mdd_diplexer_ds_lower_band_edge
;
1225 static int hf_docsis_mdd_diplexer_ds_upper_band_edge
;
1226 static int hf_docsis_mdd_diplexer_us_upper_band_edge_override
;
1227 static int hf_docsis_mdd_diplexer_ds_lower_band_edge_override
;
1228 static int hf_docsis_mdd_diplexer_ds_upper_band_edge_override
;
1230 static int hf_docsis_mdd_abp_tlv
;
1231 static int hf_docsis_mdd_abp_tlv_type
;
1232 static int hf_docsis_mdd_abp_tlv_length
;
1233 static int hf_docsis_mdd_abp_sub_band_count
;
1234 static int hf_docsis_mdd_abp_sub_band_width
;
1236 static int hf_docsis_mdd_bpi_plus_tlv
;
1237 static int hf_docsis_mdd_bpi_plus_tlv_type
;
1238 static int hf_docsis_mdd_bpi_plus_tlv_length
;
1239 static int hf_docsis_mdd_bpi_plus_version
;
1240 static int hf_docsis_mdd_bpi_plus_cfg
;
1241 static int hf_docsis_mdd_bpi_plus_cfg_eae
;
1243 static int hf_docsis_bintrngreq_mddsgid
;
1244 static int hf_docsis_bintrngreq_capflags
;
1245 static int hf_docsis_bintrngreq_capflags_frag
;
1246 static int hf_docsis_bintrngreq_capflags_encrypt
;
1248 static int hf_docsis_dbcreq_number_of_fragments
;
1249 static int hf_docsis_dbcreq_fragment_sequence_number
;
1251 static int hf_docsis_dbcrsp_conf_code
;
1253 static int hf_docsis_dpv_flags
;
1254 static int hf_docsis_dpv_us_sf
;
1255 static int hf_docsis_dpv_n
;
1256 static int hf_docsis_dpv_start
;
1257 static int hf_docsis_dpv_end
;
1258 static int hf_docsis_dpv_ts_start
;
1259 static int hf_docsis_dpv_ts_end
;
1261 static int hf_docsis_cmstatus_e_t_mdd_t
;
1262 static int hf_docsis_cmstatus_e_t_qfl_f
;
1263 static int hf_docsis_cmstatus_e_t_s_o
;
1264 static int hf_docsis_cmstatus_e_t_mdd_r
;
1265 static int hf_docsis_cmstatus_e_t_qfl_r
;
1266 static int hf_docsis_cmstatus_e_t_t4_t
;
1267 static int hf_docsis_cmstatus_e_t_t3_e
;
1268 static int hf_docsis_cmstatus_e_t_rng_s
;
1269 static int hf_docsis_cmstatus_e_t_cm_b
;
1270 static int hf_docsis_cmstatus_e_t_cm_a
;
1271 static int hf_docsis_cmstatus_e_t_mac_removal
;
1272 static int hf_docsis_cmstatus_e_t_ds_ofdm_profile_failure
;
1273 static int hf_docsis_cmstatus_e_t_prim_ds_change
;
1274 static int hf_docsis_cmstatus_e_t_dpd_mismatch
;
1275 static int hf_docsis_cmstatus_e_t_ncp_profile_failure
;
1276 static int hf_docsis_cmstatus_e_t_plc_failure
;
1277 static int hf_docsis_cmstatus_e_t_ncp_profile_recovery
;
1278 static int hf_docsis_cmstatus_e_t_plc_recovery
;
1279 static int hf_docsis_cmstatus_e_t_ofdm_profile_recovery
;
1280 static int hf_docsis_cmstatus_e_t_ofdma_profile_failure
;
1281 static int hf_docsis_cmstatus_e_t_map_storage_overflow_indicator
;
1282 static int hf_docsis_cmstatus_e_t_map_storage_almost_full_indicator
;
1283 static int hf_docsis_cmstatus_e_t_unknown
;
1284 static int hf_docsis_cmstatus_status_event_ds_ch_id
;
1285 static int hf_docsis_cmstatus_status_event_us_ch_id
;
1286 static int hf_docsis_cmstatus_status_event_dsid
;
1287 static int hf_docsis_cmstatus_status_event_mac_address
;
1288 static int hf_docsis_cmstatus_status_event_ds_ofdm_profile_id
;
1289 static int hf_docsis_cmstatus_status_event_us_ofdma_profile_id
;
1290 static int hf_docsis_cmstatus_status_event_descr
;
1291 static int hf_docsis_cmstatus_tlv_data
;
1292 static int hf_docsis_cmstatus_type
;
1293 static int hf_docsis_cmstatus_length
;
1294 static int hf_docsis_cmstatus_status_event_tlv_data
;
1295 static int hf_docsis_cmstatus_status_event_type
;
1296 static int hf_docsis_cmstatus_status_event_length
;
1298 static int hf_docsis_cmctrl_tlv_mute
;
1299 static int hf_docsis_cmctrl_tlv_mute_timeout
;
1300 static int hf_docsis_cmctrl_tlv_reinit
;
1301 static int hf_docsis_cmctrl_tlv_disable_fwd
;
1302 static int hf_docsis_cmctrl_tlv_ds_event
;
1303 static int hf_docsis_cmctrl_tlv_us_event
;
1304 static int hf_docsis_cmctrl_tlv_event
;
1305 static int hf_docsis_cmctrlreq_tlv_data
;
1306 static int hf_docsis_cmctrlreq_type
;
1307 static int hf_docsis_cmctrlreq_length
;
1308 static int hf_docsis_cmctrlreq_us_type
;
1309 static int hf_docsis_cmctrlreq_us_length
;
1310 static int hf_docsis_cmctrl_us_event_ch_id
;
1311 static int hf_docsis_cmctrl_us_event_mask
;
1312 static int hf_docsis_cmctrl_ds_type
;
1313 static int hf_docsis_cmctrl_ds_length
;
1314 static int hf_docsis_cmctrl_ds_event_ch_id
;
1315 static int hf_docsis_cmctrl_ds_event_mask
;
1317 static int hf_docsis_regreqmp_sid
;
1318 static int hf_docsis_regreqmp_number_of_fragments
;
1319 static int hf_docsis_regreqmp_fragment_sequence_number
;
1320 static int hf_docsis_regrspmp_sid
;
1321 static int hf_docsis_regrspmp_response
;
1322 static int hf_docsis_regrspmp_number_of_fragments
;
1323 static int hf_docsis_regrspmp_fragment_sequence_number
;
1325 static int hf_docsis_emrsp_tlv_data
;
1326 static int hf_docsis_emrsp_tlv_type
;
1327 static int hf_docsis_emrsp_tlv_length
;
1328 static int hf_docsis_emrsp_tlv_holdoff_timer
;
1329 static int hf_docsis_emreq_req_power_mode
;
1330 static int hf_docsis_emreq_reserved
;
1331 static int hf_docsis_emrsp_rsp_code
;
1332 static int hf_docsis_emrsp_reserved
;
1333 static int hf_docsis_emrsp_tlv_unknown
;
1335 static int hf_docsis_ocd_tlv_unknown
;
1336 static int hf_docsis_ocd_ccc
;
1337 static int hf_docsis_ocd_tlv_four_trans_size
;
1338 static int hf_docsis_ocd_tlv_cycl_pref
;
1339 static int hf_docsis_ocd_tlv_roll_off
;
1340 static int hf_docsis_ocd_tlv_ofdm_spec_loc
;
1341 static int hf_docsis_ocd_tlv_time_int_depth
;
1342 static int hf_docsis_ocd_tlv_prim_cap_ind
;
1343 static int hf_docsis_ocd_tlv_fdx_ind
;
1344 static int hf_docsis_ocd_tlv_subc_assign_type
;
1345 static int hf_docsis_ocd_tlv_subc_assign_value
;
1346 static int hf_docsis_ocd_subc_assign_subc_type
;
1347 static int hf_docsis_ocd_subc_assign_range
;
1348 static int hf_docsis_ocd_subc_assign_index
;
1349 static int hf_docsis_ocd_tlv_data
;
1350 static int hf_docsis_ocd_type
;
1351 static int hf_docsis_ocd_length
;
1353 static int hf_docsis_dpd_tlv_unknown
;
1354 static int hf_docsis_dpd_prof_id
;
1355 static int hf_docsis_dpd_ccc
;
1356 static int hf_docsis_dpd_tlv_subc_assign_type
;
1357 static int hf_docsis_dpd_tlv_subc_assign_value
;
1358 static int hf_docsis_dpd_subc_assign_range
;
1359 static int hf_docsis_dpd_tlv_subc_assign_reserved
;
1360 static int hf_docsis_dpd_tlv_subc_assign_modulation
;
1361 static int hf_docsis_dpd_subc_assign_index
;
1362 static int hf_docsis_dpd_tlv_subc_assign_vector_oddness
;
1363 static int hf_docsis_dpd_tlv_subc_assign_vector_reserved
;
1364 static int hf_docsis_dpd_tlv_subc_assign_vector_subc_start
;
1365 static int hf_docsis_dpd_tlv_subc_assign_vector_modulation_odd
;
1366 static int hf_docsis_dpd_tlv_subc_assign_vector_modulation_even
;
1367 static int hf_docsis_dpd_tlv_data
;
1368 static int hf_docsis_dpd_type
;
1369 static int hf_docsis_dpd_length
;
1371 static int hf_docsis_optreq_tlv_unknown
;
1372 static int hf_docsis_optreq_prof_id
;
1373 static int hf_docsis_optreq_opcode
;
1374 static int hf_docsis_optreq_reserved
;
1375 static int hf_docsis_optreq_tlv_data
;
1376 static int hf_docsis_optreq_type
;
1377 static int hf_docsis_optreq_length
;
1378 static int hf_docsis_optreq_reqstat_rxmer_stat_subc
;
1379 static int hf_docsis_optreq_reqstat_rxmer_subc_threshold_comp
;
1380 static int hf_docsis_optreq_reqstat_snr_marg_cand_prof
;
1381 static int hf_docsis_optreq_reqstat_codew_stat_cand_prof
;
1382 static int hf_docsis_optreq_reqstat_codew_thresh_comp_cand_prof
;
1383 static int hf_docsis_optreq_reqstat_ncp_field_stat
;
1384 static int hf_docsis_optreq_reqstat_ncp_crc_thresh_comp
;
1385 static int hf_docsis_optreq_reqstat_reserved
;
1386 static int hf_docsis_optreq_tlv_rxmer_thresh_data
;
1387 static int hf_docsis_optreq_xmer_thresh_params_type
;
1388 static int hf_docsis_optreq_xmer_thresh_params_length
;
1389 static int hf_docsis_optreq_tlv_rxmer_thresh_data_mod_order
;
1390 static int hf_docsis_optreq_tlv_trigger_definition_data
;
1391 static int hf_docsis_optreq_tlv_trigger_definition_data_type
;
1392 static int hf_docsis_optreq_tlv_trigger_definition_data_length
;
1393 static int hf_docsis_optreq_tlv_trigger_definition_trigger_type
;
1394 static int hf_docsis_optreq_tlv_trigger_definition_measure_duration
;
1395 static int hf_docsis_optreq_tlv_trigger_definition_triggering_sid
;
1396 static int hf_docsis_optreq_tlv_trigger_definition_us_chan_id
;
1397 static int hf_docsis_optreq_tlv_trigger_definition_sound_ambig_offset
;
1398 static int hf_docsis_optreq_tlv_trigger_definition_rx_mer_to_report
;
1399 static int hf_docsis_optreq_tlv_trigger_definition_start_time
;
1401 static int hf_docsis_optrsp_reserved
;
1402 static int hf_docsis_optrsp_prof_id
;
1403 static int hf_docsis_optrsp_status
;
1404 static int hf_docsis_optrsp_tlv
;
1405 static int hf_docsis_optrsp_tlv_type
;
1406 static int hf_docsis_optrsp_tlv_length
;
1407 static int hf_docsis_optrsp_rxmer_tlv
;
1408 static int hf_docsis_optrsp_rxmer_tlv_type
;
1409 static int hf_docsis_optrsp_rxmer_tlv_length
;
1410 static int hf_docsis_optrsp_rxmer_subcarrier
;
1411 static int hf_docsis_optrsp_rxmer_subcarrier_threshold
;
1412 static int hf_docsis_optrsp_rxmer_subcarrier_threshold_count
;
1413 static int hf_docsis_optrsp_rxmer_snr_margin
;
1414 static int hf_docsis_optrsp_rxmer_avg
;
1415 static int hf_docsis_optrsp_rxmer_ect_rba_subband_direction
;
1416 static int hf_docsis_optrsp_rxmer_ect_rba_subband_direction_sb0
;
1417 static int hf_docsis_optrsp_rxmer_ect_rba_subband_direction_sb1
;
1418 static int hf_docsis_optrsp_rxmer_ect_rba_subband_direction_sb2
;
1419 static int hf_docsis_optrsp_data_cw_tlv
;
1420 static int hf_docsis_optrsp_data_cw_tlv_type
;
1421 static int hf_docsis_optrsp_data_cw_tlv_length
;
1422 static int hf_docsis_optrsp_data_cw_count
;
1423 static int hf_docsis_optrsp_data_cw_corrected
;
1424 static int hf_docsis_optrsp_data_cw_uncorrectable
;
1425 static int hf_docsis_optrsp_data_cw_threshold_comparison
;
1426 static int hf_docsis_optrsp_ncp_fields_tlv
;
1427 static int hf_docsis_optrsp_ncp_fields_tlv_type
;
1428 static int hf_docsis_optrsp_ncp_fields_tlv_length
;
1429 static int hf_docsis_optrsp_ncp_fields_count
;
1430 static int hf_docsis_optrsp_ncp_fields_failure
;
1431 static int hf_docsis_optrsp_ncp_fields_threshold_comparison
;
1433 static int hf_docsis_optack_prof_id
;
1434 static int hf_docsis_optack_reserved
;
1436 static int hf_docsis_rba_tg_id
;
1437 static int hf_docsis_rba_ccc
;
1438 static int hf_docsis_rba_dcid
;
1439 static int hf_docsis_rba_control_byte_bitmask
;
1440 static int hf_docsis_rba_resource_block_change_bit
;
1441 static int hf_docsis_rba_expiration_time_valid_bit
;
1442 static int hf_docsis_rba_control_byte_bitmask_rsvd
;
1443 static int hf_docsis_rba_rba_time
;
1444 static int hf_docsis_rba_rba_expiration_time
;
1445 static int hf_docsis_rba_number_of_subbands
;
1446 static int hf_docsis_rba_subband_direction
;
1448 /* CWT-REQ and CWT-RSP */
1449 static int hf_docsis_cwt_trans_id
;
1450 static int hf_docsis_cwt_sub_band_id
;
1451 static int hf_docsis_cwt_op_code
;
1452 static int hf_docsis_cwt_status
;
1453 static int hf_docsis_cwt_tlv
;
1454 static int hf_docsis_cwt_tlv_type
;
1455 static int hf_docsis_cwt_tlv_length
;
1456 static int hf_docsis_cwt_phase_rotation
;
1457 static int hf_docsis_cwt_max_duration
;
1458 static int hf_docsis_cwt_us_encodings_tlv
;
1459 static int hf_docsis_cwt_us_encodings_tlv_type
;
1460 static int hf_docsis_cwt_us_encodings_tlv_length
;
1461 static int hf_docsis_cwt_us_encodings_cid
;
1462 static int hf_docsis_cwt_us_encodings_sc_index
;
1463 static int hf_docsis_cwt_us_encodings_power_boost
;
1465 /* ECT-REQ and ECT-RSP */
1466 static int hf_docsis_ect_trans_id
;
1467 static int hf_docsis_ect_rsp_code
;
1468 static int hf_docsis_ect_tlv
;
1469 static int hf_docsis_ect_tlv_type
;
1470 static int hf_docsis_ect_tlv_length
;
1471 static int hf_docsis_ect_control_tlv
;
1472 static int hf_docsis_ect_control_tlv_type
;
1473 static int hf_docsis_ect_control_tlv_length
;
1474 static int hf_docsis_ect_control_subband_direction
;
1475 static int hf_docsis_ect_control_status
;
1476 static int hf_docsis_ect_control_method_tlv
;
1477 static int hf_docsis_ect_control_method_tlv_type
;
1478 static int hf_docsis_ect_control_method_tlv_length
;
1479 static int hf_docsis_ect_control_method_fg_tlv
;
1480 static int hf_docsis_ect_control_method_fg_tlv_type
;
1481 static int hf_docsis_ect_control_method_fg_tlv_length
;
1482 static int hf_docsis_ect_control_method_fg_duration
;
1483 static int hf_docsis_ect_control_method_fg_periodicity
;
1484 static int hf_docsis_ect_control_method_fg_expiration_time
;
1485 static int hf_docsis_ect_control_method_fg_ds_zbl
;
1486 static int hf_docsis_ect_control_method_bg_tlv
;
1487 static int hf_docsis_ect_control_method_bg_tlv_type
;
1488 static int hf_docsis_ect_control_method_bg_tlv_length
;
1489 static int hf_docsis_ect_control_method_bg_duration
;
1490 static int hf_docsis_ect_control_method_bg_periodicity
;
1491 static int hf_docsis_ect_control_method_bg_expiration_time
;
1492 static int hf_docsis_ect_control_method_bg_start_time
;
1493 static int hf_docsis_ect_control_partial_service_tlv
;
1494 static int hf_docsis_ect_control_partial_service_tlv_type
;
1495 static int hf_docsis_ect_control_partial_service_tlv_length
;
1496 static int hf_docsis_ect_control_partial_service_dcid
;
1497 static int hf_docsis_ect_control_partial_service_ucid
;
1498 static int hf_docsis_ect_control_deferral_time
;
1499 static int hf_docsis_ect_control_rxmer_duration
;
1502 static int hf_docsis_dpr_carrier
;
1503 static int hf_docsis_dpr_dcid
;
1504 static int hf_docsis_dpr_tg_id
;
1505 static int hf_docsis_dpr_reserved
;
1506 static int hf_docsis_dpr_start_time
;
1507 static int hf_docsis_dpr_duration
;
1509 static int hf_docsis_mgt_upstream_chid
;
1510 static int hf_docsis_mgt_down_chid
;
1511 static int hf_docsis_mgt_tranid
;
1512 static int hf_docsis_mgt_dst_addr
;
1513 static int hf_docsis_mgt_src_addr
;
1514 static int hf_docsis_mgt_msg_len
;
1515 static int hf_docsis_mgt_dsap
;
1516 static int hf_docsis_mgt_ssap
;
1517 static int hf_docsis_mgt_30_transmit_power
;
1518 static int hf_docsis_mgt_31_transmit_power
;
1519 static int hf_docsis_mgt_40_transmit_power
;
1520 static int hf_docsis_mgt_control
;
1521 static int hf_docsis_mgt_version
;
1522 static int hf_docsis_mgt_type
;
1523 static int hf_docsis_mgt_rsvd
;
1524 static int hf_docsis_mgt_multipart
;
1525 static int hf_docsis_mgt_multipart_number_of_fragments
;
1526 static int hf_docsis_mgt_multipart_fragment_sequence_number
;
1528 static int hf_docsis_tlv_fragments
;
1529 static int hf_docsis_tlv_fragment
;
1530 static int hf_docsis_tlv_fragment_overlap
;
1531 static int hf_docsis_tlv_fragment_overlap_conflict
;
1532 static int hf_docsis_tlv_fragment_multiple_tails
;
1533 static int hf_docsis_tlv_fragment_too_long_fragment
;
1534 static int hf_docsis_tlv_fragment_error
;
1535 static int hf_docsis_tlv_fragment_count
;
1536 static int hf_docsis_tlv_reassembled_in
;
1537 static int hf_docsis_tlv_reassembled_length
;
1538 static int hf_docsis_tlv_reassembled_data
;
1540 static int hf_docsis_tlv_reassembled
;
1542 static int ett_docsis_sync
;
1544 static int ett_docsis_ucd
;
1545 static int ett_docsis_tlv
;
1546 static int ett_docsis_burst_tlv
;
1548 static int ett_docsis_map
;
1549 static int ett_docsis_map_ie
;
1550 static int ett_docsis_map_probe_ie
;
1553 static int ett_docsis_rngreq
;
1555 static int ett_docsis_rngrsp
;
1556 static int ett_docsis_rngrsptlv
;
1557 static int ett_docsis_rngrsp_tlv_transmit_equalization_encodings
;
1558 static int ett_docsis_rngrsp_tlv_transmit_equalization_encodings_coef
;
1559 static int ett_docsis_rngrsp_tlv_commanded_power_subtlv
;
1560 static int ett_docsis_rngrsp_tlv_commanded_power
;
1563 static int ett_docsis_regreq
;
1564 static int ett_docsis_regrsp
;
1566 static int ett_docsis_emreq
;
1567 static int ett_docsis_emrsp
;
1568 static int ett_docsis_emrsp_tlv
;
1569 static int ett_docsis_emrsp_tlvtlv
;
1571 static int ett_docsis_uccreq
;
1572 static int ett_docsis_uccrsp
;
1574 static int ett_docsis_bpkmreq
;
1575 static int ett_docsis_bpkmrsp
;
1576 static int ett_docsis_bpkmattr
;
1577 static int ett_docsis_bpkmattr_tlv
;
1578 static int ett_docsis_bpkmattr_cmid
;
1579 static int ett_docsis_bpkmattr_scap
;
1580 static int ett_docsis_bpkmattr_crypto_suite
;
1581 static int ett_docsis_bpkmattr_crypto_suite_list
;
1582 static int ett_docsis_bpkmattr_allowed_bpi_versions
;
1583 static int ett_docsis_bpkmattr_ocsp_responses
;
1584 static int ett_docsis_bpkmattr_cmts_designation
;
1585 static int ett_docsis_bpkmattr_tekp
;
1586 static int ett_docsis_bpkmattr_sadsc
;
1587 static int ett_docsis_bpkmattr_saqry
;
1588 static int ett_docsis_bpkmattr_dnld
;
1590 static int ett_docsis_regack
;
1592 static int ett_docsis_dsareq
;
1593 static int ett_docsis_dsarsp
;
1594 static int ett_docsis_dsaack
;
1596 static int ett_docsis_dscreq
;
1597 static int ett_docsis_dscrsp
;
1598 static int ett_docsis_dscack
;
1600 static int ett_docsis_dsdreq
;
1601 static int ett_docsis_dsdrsp
;
1603 static int ett_docsis_dccreq
;
1604 static int ett_docsis_dccreq_tlv
;
1605 static int ett_docsis_dccreq_ds_params
;
1606 static int ett_docsis_dccreq_sf_sub
;
1607 static int ett_docsis_dccrsp
;
1608 static int ett_docsis_dccrsp_cm_jump_time
;
1609 static int ett_docsis_dccrsp_tlv
;
1610 static int ett_docsis_dccack
;
1611 static int ett_docsis_dccack_tlv
;
1613 static int ett_docsis_intrngreq
;
1615 static int ett_docsis_dcd
;
1616 static int ett_docsis_dcd_cfr
;
1617 static int ett_docsis_dcd_cfr_ip
;
1618 static int ett_docsis_dcd_rule
;
1619 static int ett_docsis_dcd_clid
;
1620 static int ett_docsis_dcd_cfg
;
1621 static int ett_docsis_dcd_tlv
;
1623 static int ett_docsis_mdd
;
1625 static int ett_sub_tlv
;
1626 static int ett_docsis_mdd_cm_status_ev_en_for_docsis31
;
1627 static int ett_docsis_mdd_ds_active_channel_list
;
1628 static int ett_docsis_mdd_ds_service_group
;
1629 static int ett_docsis_mdd_channel_profile_reporting_control
;
1630 static int ett_docsis_mdd_ip_init_param
;
1631 static int ett_docsis_mdd_up_active_channel_list
;
1632 static int ett_docsis_mdd_upstream_active_channel_list_dschids_maps_ucds_dschids
;
1633 static int ett_docsis_mdd_cm_status_event_control
;
1634 static int ett_docsis_mdd_dsg_da_to_dsid
;
1635 static int ett_docsis_mdd_docsis_version
;
1636 static int ett_docsis_mdd_docsis_version_tlv
;
1637 static int ett_docsis_mdd_diplexer_band_edge
;
1638 static int ett_docsis_mdd_advanced_band_plan
;
1639 static int ett_docsis_mdd_bpi_plus
;
1641 static int ett_docsis_bintrngreq
;
1643 static int ett_docsis_dbcreq
;
1644 static int ett_docsis_dbcrsp
;
1645 static int ett_docsis_dbcack
;
1647 static int ett_docsis_dpvreq
;
1648 static int ett_docsis_dpvrsp
;
1650 static int ett_docsis_cmstatus
;
1651 static int ett_docsis_cmstatus_tlv
;
1652 static int ett_docsis_cmstatus_tlvtlv
;
1653 static int ett_docsis_cmstatus_status_event_tlv
;
1654 static int ett_docsis_cmstatus_status_event_tlvtlv
;
1656 static int ett_docsis_cmstatusack
;
1658 static int ett_docsis_cmctrlreq
;
1659 static int ett_docsis_cmctrlreq_tlv
;
1660 static int ett_docsis_cmctrlreq_tlvtlv
;
1661 static int ett_docsis_cmctrl_tlv_us_event
;
1662 static int ett_docsis_cmctrl_tlv_ds_event
;
1663 static int ett_docsis_cmctrlrsp
;
1665 static int ett_docsis_regreqmp
;
1666 static int ett_docsis_regrspmp
;
1668 static int ett_docsis_ocd
;
1669 static int ett_docsis_ocd_tlv
;
1670 static int ett_docsis_ocd_tlvtlv
;
1672 static int ett_docsis_dpd
;
1673 static int ett_docsis_dpd_tlv
;
1674 static int ett_docsis_dpd_tlvtlv
;
1675 static int ett_docsis_dpd_tlv_subcarrier_assignment
;
1676 static int ett_docsis_dpd_tlv_subcarrier_assignment_vector
;
1678 static int ett_docsis_optreq
;
1679 static int ett_docsis_optreq_tlv
;
1680 static int ett_docsis_optreq_tlvtlv
;
1681 static int ett_docsis_optreq_tlv_rxmer_thresh_params
;
1682 static int ett_docsis_optreq_tlv_rxmer_thresh_params_tlv
;
1683 static int ett_docsis_optreq_tlv_trigger_definition_params
;
1684 static int ett_docsis_optreq_tlv_trigger_definition_params_tlv
;
1686 static int ett_docsis_optrsp
;
1687 static int ett_docsis_optrsp_tlv
;
1688 static int ett_docsis_optrsp_rxmer_tlv
;
1689 static int ett_docsis_optrsp_rxmer_subcarrier_tlv
;
1690 static int ett_docsis_optrsp_data_cw_tlv
;
1691 static int ett_docsis_optrsp_ncp_fields_tlv
;
1693 static int ett_docsis_optack
;
1695 static int ett_docsis_rba
;
1696 static int ett_docsis_rba_control_byte
;
1697 static int ett_docsis_cwt_req
;
1698 static int ett_docsis_cwt_rsp
;
1699 static int ett_docsis_cwt_tlv
;
1700 static int ett_docsis_cwt_subtlv
;
1701 static int ett_docsis_ect_req
;
1702 static int ett_docsis_ect_rsp
;
1703 static int ett_docsis_ect_tlv
;
1704 static int ett_docsis_ext_rngreq
;
1705 static int ett_docsis_dpr
;
1707 static int ett_docsis_mgmt
;
1708 static int ett_mgmt_pay
;
1710 static int ett_docsis_tlv_fragments
;
1711 static int ett_docsis_tlv_fragment
;
1712 static int ett_docsis_tlv_reassembled
;
1714 static expert_field ei_docsis_mgmt_tlvlen_bad
;
1715 static expert_field ei_docsis_mgmt_tlvtype_unknown
;
1716 static expert_field ei_docsis_mgmt_version_unknown
;
1717 static expert_field ei_docsis_mgmt_opt_req_trigger_def_measure_duration
;
1718 static expert_field ei_docsis_cwt_out_of_range
;
1719 static expert_field ei_docsis_ect_control_out_of_range
;
1720 static expert_field ei_docsis_dpr_out_of_range
;
1722 static dissector_table_t docsis_mgmt_dissector_table
;
1723 static dissector_handle_t docsis_tlv_handle
;
1724 static dissector_handle_t docsis_ucd_handle
;
1725 static dissector_handle_t docsis_rba_handle
;
1727 static const value_string channel_tlv_vals
[] = {
1728 {UCD_SYMBOL_RATE
, "Symbol Rate"},
1729 {UCD_FREQUENCY
, "Frequency"},
1730 {UCD_PREAMBLE
, "Preamble Pattern"},
1731 {UCD_BURST_DESCR
, "Burst Descriptor Type 4"},
1732 {UCD_BURST_DESCR5
, "Burst Descriptor Type 5"},
1733 {UCD_EXT_PREAMBLE
, "Extended Preamble Pattern"},
1734 {UCD_SCDMA_MODE_ENABLED
, "S-CDMA Mode Enabled"},
1735 {UCD_SCDMA_SPREADING_INTERVAL
, "S-CDMA Spreading Intervals per Frame"},
1736 {UCD_SCDMA_CODES_PER_MINI_SLOT
, "S-CDMA Codes per Mini-slot"},
1737 {UCD_SCDMA_ACTIVE_CODES
, "S-CDMA Number of Active Codes"},
1738 {UCD_SCDMA_CODE_HOPPING_SEED
, "S-CDMA Code Hopping Seed"},
1739 {UCD_SCDMA_US_RATIO_NUM
, "S-CDMA US ratio numerator M"},
1740 {UCD_SCDMA_US_RATIO_DENOM
, "S-CDMA US ratio denominator N"},
1741 {UCD_SCDMA_TIMESTAMP_SNAPSHOT
, "S-CDMA Timestamp Snapshot"},
1742 {UCD_MAINTAIN_POWER_SPECTRAL_DENSITY
, "Maintain Power Spectral Density"},
1743 {UCD_RANGING_REQUIRED
, "Ranging Required"},
1744 {UCD_MAX_SCHEDULED_CODES
, "S-CDMA Maximum Scheduled Codes"},
1745 {UCD_RANGING_HOLD_OFF_PRIORITY_FIELD
, "Ranging Hold-Off Priority Field"},
1746 {UCD_RANGING_CHANNEL_CLASS_ID
, "Ranging Channel Class ID"},
1747 {UCD_SCDMA_SELECTION_ACTIVE_CODES_AND_CODE_HOPPING
, "S-CDMA Selection Mode for Active Codes and Code Hopping"},
1748 {UCD_SCDMA_SELECTION_STRING_FOR_ACTIVE_CODES
, "S-CDMA Selection String for Active Codes"},
1749 {UCD_HIGHER_UCD_FOR_SAME_UCID
, "Higher UCD for the same UCID present bitmap"},
1750 {UCD_BURST_DESCR23
, "Burst Descriptor Type 23"},
1751 {UCD_CHANGE_IND_BITMASK
, "UCD Change Indicator Bitmask"},
1752 {UCD_OFDMA_TIMESTAMP_SNAPSHOT
, "OFDMA Timestamp Snapshot"},
1753 {UCD_OFDMA_CYCLIC_PREFIX_SIZE
, "OFDMA Cyclic Prefix Size"},
1754 {UCD_OFDMA_ROLLOFF_PERIOD_SIZE
, "OFDMA Rolloff Period Size"},
1755 {UCD_SUBCARRIER_SPACING
, "Subcarrier Spacing"},
1756 {UCD_CENTER_FREQ_SUBC_0
, "Center Frequency of Subcarrier 0"},
1757 {UCD_SUBC_EXCL_BAND
, "Subcarrier Exclusion Band"},
1758 {UCD_UNUSED_SUBC_SPEC
, "Unused Subcarrier Specification"},
1759 {UCD_SYMB_IN_OFDMA_FRAME
, "Symbols in OFDMA frame"},
1760 {UCD_RAND_SEED
, "Randomization Seed"},
1761 {EXTENDED_US_CHANNEL
, "Extended Upstream Channel"},
1765 static const value_string burst_tlv_vals
[] = {
1766 {UCD_MODULATION
, "Modulation Type"},
1767 {UCD_DIFF_ENCODING
, "Differential Encoding"},
1768 {UCD_PREAMBLE_LEN
, "Preamble Length"},
1769 {UCD_PREAMBLE_VAL_OFF
, "Preamble Value Offset"},
1770 {UCD_FEC
, "FEC Error Correction (T)"},
1771 {UCD_FEC_CODEWORD
, "FEC Codeword Information Bytes (k)"},
1772 {UCD_SCRAMBLER_SEED
, "Scrambler Seed"},
1773 {UCD_MAX_BURST
, "Maximum Burst Size"},
1774 {UCD_GUARD_TIME
, "Guard Time Size"},
1775 {UCD_LAST_CW_LEN
, "Last Codeword Length"},
1776 {UCD_SCRAMBLER_ONOFF
, "Scrambler on/off"},
1777 {UCD_RS_INT_DEPTH
, "R-S Interleaver Depth (Ir)"},
1778 {UCD_RS_INT_BLOCK
, "R-S Interleaver Block Size (Br)"},
1779 {UCD_PREAMBLE_TYPE
, "Preamble Type"},
1780 {UCD_SCMDA_SCRAMBLER_ONOFF
, "S-CDMA Spreader on/off"},
1781 {UCD_SCDMA_CODES_PER_SUBFRAME
, "S-CDMA Codes per Subframe"},
1782 {UCD_SCDMA_FRAMER_INT_STEP_SIZE
, "S-CDMA Framer Interleaving Step Size"},
1783 {UCD_TCM_ENABLED
, "TCM Encoding"},
1784 {UCD_SUBC_INIT_RANG
, "Subcarriers (Nir) Initial Ranging"},
1785 {UCD_SUBC_FINE_RANG
, "Subcarriers (Nfr) Fine Ranging"},
1786 {UCD_OFDMA_PROFILE
, "OFDMA Profile"},
1787 {UCD_OFDMA_IR_POWER_CONTROL
, "OFDMA Power Control (Ir)"},
1791 static const value_string mgmt_type_vals
[] = {
1792 {MGT_SYNC
, "Timing Synchronisation"},
1793 {MGT_UCD
, "Upstream Channel Descriptor"},
1794 {MGT_TYPE29UCD
, "Upstream Channel Descriptor Type 29"},
1795 {MGT_TYPE35UCD
, "Upstream Channel Descriptor Type 35"},
1796 {MGT_MAP
, "Upstream Bandwidth Allocation"},
1797 {MGT_RNG_REQ
, "Ranging Request"},
1798 {MGT_RNG_RSP
, "Ranging Response"},
1799 {MGT_REG_REQ
, "Registration Request"},
1800 {MGT_REG_RSP
, "Registration Response"},
1801 {MGT_UCC_REQ
, "Upstream Channel Change Request"},
1802 {MGT_UCC_RSP
, "Upstream Channel Change Response"},
1803 {MGT_TRI_TCD
, "Telephony Channel Descriptor"},
1804 {MGT_TRI_TSI
, "Termination System Information"},
1805 {MGT_BPKM_REQ
, "Privacy Key Management Request"},
1806 {MGT_BPKM_RSP
, "Privacy Key Management Response"},
1807 {MGT_REG_ACK
, "Registration Acknowledge"},
1808 {MGT_DSA_REQ
, "Dynamic Service Addition Request"},
1809 {MGT_DSA_RSP
, "Dynamic Service Addition Response"},
1810 {MGT_DSA_ACK
, "Dynamic Service Addition Acknowledge"},
1811 {MGT_DSC_REQ
, "Dynamic Service Change Request"},
1812 {MGT_DSC_RSP
, "Dynamic Service Change Response"},
1813 {MGT_DSC_ACK
, "Dynamic Service Change Acknowledge"},
1814 {MGT_DSD_REQ
, "Dynamic Service Delete Request"},
1815 {MGT_DSD_RSP
, "Dynamic Service Delete Response"},
1816 {MGT_DCC_REQ
, "Dynamic Channel Change Request"},
1817 {MGT_DCC_RSP
, "Dynamic Channel Change Response"},
1818 {MGT_DCC_ACK
, "Dynamic Channel Change Acknowledge"},
1819 {MGT_DCI_REQ
, "Device Class Identification Request"},
1820 {MGT_DCI_RSP
, "Device Class Identification Response"},
1821 {MGT_UP_DIS
, "Upstream Channel Disable"},
1822 {MGT_INIT_RNG_REQ
, "Initial Ranging Request"},
1823 {MGT_TEST_REQ
, "Test Request Message"},
1824 {MGT_DS_CH_DESC
, "Downstream Channel Descriptor"},
1825 {MGT_MDD
, "MAC Domain Descriptor"},
1826 {MGT_B_INIT_RNG_REQ
, "Bonded Initial Ranging Request"},
1827 {MGT_DBC_REQ
, "Dynamic Bonding Change Request"},
1828 {MGT_DBC_RSP
, "Dynamic Bonding Change Response"},
1829 {MGT_DBC_ACK
, "Dynamic Bonding Change Acknowledge"},
1830 {MGT_DPV_REQ
, "DOCSIS Path Verify Request"},
1831 {MGT_DPV_RSP
, "DOCSIS Path Verify Response"},
1832 {MGT_CM_STATUS
, "CM Status Report"},
1833 {MGT_CM_CTRL_REQ
, "CM Control Request"},
1834 {MGT_CM_CTRL_RSP
, "CM Control Response"},
1835 {MGT_REG_REQ_MP
, "Multipart Registration Request"},
1836 {MGT_REG_RSP_MP
, "Multipart Registration Response"},
1837 {MGT_EM_REQ
, "Energy Management Request"},
1838 {MGT_EM_RSP
, "Energy Management Response"},
1839 {MGT_CM_STATUS_ACK
, "Status Report Acknowledge"},
1840 {MGT_OCD
, "OFDM Channel Descriptor"},
1841 {MGT_DPD
, "Downstream Profile Descriptor"},
1842 {MGT_TYPE51UCD
, "Upstream Channel Descriptor Type 51"},
1843 {MGT_ODS_REQ
, "ODS-REQ"},
1844 {MGT_ODS_RSP
, "ODS-RSP"},
1845 {MGT_OPT_REQ
, "OFDM Downstream Profile Test Request"},
1846 {MGT_OPT_RSP
, "OFDM Downstream Profile Test Response"},
1847 {MGT_OPT_ACK
, "OFDM Downstream Profile Test Acknowledge"},
1848 {MGT_DPT_REQ
, "DOCSIS Time Protocol Request"},
1849 {MGT_DPT_RSP
, "DOCSIS Time Protocol Response"},
1850 {MGT_DPT_ACK
, "DOCSIS Time Protocol Acknowledge"},
1851 {MGT_DPT_INFO
, "DOCSIS Time Protocol Information"},
1852 {MGT_RBA_SW
, "DOCSIS SW-Friendly Resource Block Assignment"},
1853 {MGT_RBA_HW
, "DOCSIS HW-Friendly Resource Block Assignment"},
1854 {MGT_CWT_REQ
, "IG Discovery CW Test Request"},
1855 {MGT_CWT_RSP
, "IG Discovery CW Test Response"},
1856 {MGT_ECT_REQ
, "CM Echo Cancellation Training Request"},
1857 {MGT_ECT_RSP
, "CM Echo Cancellation Training Response"},
1858 {MGT_EXT_RNG_REQ
, "Extended Upstream Range Request"},
1859 {MGT_DPR
, "Downstream Protection"},
1860 {MGT_BPKM_REQ_V5
, "Privacy Key Management Request v5"},
1861 {MGT_BPKM_RSP_V5
, "Privacy Key Management Response v5"},
1865 static const value_string on_off_vals
[] = {
1871 static const value_string inhibit_allow_vals
[] = {
1872 {0, "Inhibit Initial Ranging"},
1873 {1, "Ranging Allowed"},
1877 static const value_string mod_vals
[] = {
1883 {6, "128-QAM (SCDMA-only)"},
1884 {7, "Reserved for C-DOCSIS"},
1888 static const value_string iuc_vals
[] = {
1889 {IUC_REQUEST
, "Request"},
1890 {IUC_REQ_DATA
, "REQ/Data"},
1891 {IUC_INIT_MAINT
, "Initial Maintenance"},
1892 {IUC_STATION_MAINT
, "Station Maintenance"},
1893 {IUC_SHORT_DATA_GRANT
, "Short Data Grant"},
1894 {IUC_LONG_DATA_GRANT
, "Long Data Grant"},
1895 {IUC_NULL_IE
, "NULL IE"},
1896 {IUC_DATA_ACK
, "Data Ack"},
1897 {IUC_ADV_PHY_SHORT_DATA_GRANT
, "Advanced Phy Short Data Grant"},
1898 {IUC_ADV_PHY_LONG_DATA_GRANT
, "Advanced Phy Long Data Grant"},
1899 {IUC_ADV_PHY_UGS
, "Advanced Phy UGS"},
1900 {IUC_DATA_PROFILE_IUC12
, "Data Profile IUC12"},
1901 {IUC_DATA_PROFILE_IUC13
, "Data Profile IUC13"},
1902 {IUC_RESERVED14
, "Reserved"},
1903 {IUC_EXPANSION
, "Expanded IUC"},
1907 static const true_false_string pw_vals
= {"transmit using alternate power setting specified by the Start Subc field.", "transmit using normal power settings"};
1909 static const value_string map_ect_vals
[] = {
1910 {0, "Ranging probe"},
1912 {2, "ECT RxMER probe"},
1913 {3, "First ECT probe"},
1914 {4, "First ECT RxMER probe"},
1918 static const value_string last_cw_len_vals
[] = {
1924 static const value_string ranging_req_vals
[] = {
1925 {0, "No ranging required"},
1926 {1, "Unicast initial ranging required"},
1927 {2, "Broadcast initial ranging required"},
1931 static const value_string rng_stat_vals
[] = {
1943 int16_t frac
= value
;
1946 snprintf(buf
, ITEM_LABEL_LENGTH
,
1951 static const value_string rngrsp_tlv_vals
[] = {
1952 {RNGRSP_TIMING
, "Timing Adjust (6.25us/64)"},
1953 {RNGRSP_PWR_LEVEL_ADJ
, "Power Level Adjust (0.25dB units)"},
1954 {RNGRSP_OFFSET_FREQ_ADJ
, "Offset Freq Adjust (Hz)"},
1955 {RNGRSP_TRANSMIT_EQ_ADJ
, "Transmit Equalization Adjust"},
1956 {RNGRSP_RANGING_STATUS
, "Ranging Status"},
1957 {RNGRSP_DOWN_FREQ_OVER
, "Downstream Frequency Override (Hz)"},
1958 {RNGRSP_UP_CHID_OVER
, "Upstream Channel ID Override"},
1959 {RNGRSP_TRANSMIT_EQ_SET
, "Transmit Equalization Set"},
1960 {RNGRSP_T4_TIMEOUT_MULTIPLIER
, "T4 Timeout Multiplier"},
1961 {RNGRSP_DYNAMIC_RANGE_WINDOW_UPPER_EDGE
, "Dynamic Range Window Upper Edge"},
1962 {RNGRSP_TRANSMIT_EQ_ADJUST_OFDMA_CHANNELS
, "Transmit Equalization Adjust for OFDMA Channels"},
1963 {RNGRSP_TRANSMIT_EQ_SET_OFDMA_CHANNELS
, "Transmit Equalization Set for OFDMA Channels"},
1964 {RNGRSP_COMMANDED_POWER
, "Commanded Power"},
1965 {RNGRSP_EXT_US_COMMANDED_POWER
, "Extended Upstream Commanded Power"},
1970 static const value_string rngrsp_tlv_commanded_power_subtlv_vals
[] = {
1971 {RNGRSP_COMMANDED_POWER_DYNAMIC_RANGE_WINDOW
, "Dynamic Range Window"},
1972 {RNGRSP_COMMANDED_POWER_UCID_AND_POWER_LEVEL_LIST
, "List of Upstream Channel IDs and Corresponding Transmit Power Levels"},
1976 static const value_string code_field_vals
[] = {
1977 { 4, "Auth Request"},
1979 { 6, "Auth Reject"},
1980 { 7, "Key Request"},
1983 {10, "Auth Invalid"},
1984 {11, "TEK Invalid"},
1986 {13, "Map Request"},
1989 {16, "Auth Status Info"},
1993 static const value_string ds_mod_type_vals
[] = {
1999 static const value_string ds_sym_rate_vals
[] = {
2000 {0 , "5.056941 Msym/sec"},
2001 {1 , "5.360537 Msym/sec"},
2002 {2 , "6.952 Msym/sec"},
2005 static const value_string init_tech_vals
[] = {
2006 {0 , "Reinitialize MAC"},
2007 {1 , "Broadcast Init RNG on new chanbefore normal op"},
2008 {2 , "Unicast RNG on new chan before normal op"},
2009 {3 , "Either Unicast or broadcast RNG on new chan before normal op"},
2010 {4 , "Use new chan directly without re-init or RNG"},
2014 static const value_string dcc_tlv_vals
[] = {
2015 {DCCREQ_UP_CHAN_ID
, "Up Channel ID"},
2016 {DCCREQ_DS_PARAMS
, "Downstream Params Encodings"},
2017 {DCCREQ_INIT_TECH
, "Initialization Technique"},
2018 {DCCREQ_UCD_SUB
, "UCD Substitution"},
2019 {DCCREQ_SAID_SUB
, "SAID Sub"},
2020 {DCCREQ_SF_SUB
, "Service Flow Substitution Encodings"},
2021 {DCCREQ_CMTS_MAC_ADDR
, "CMTS MAC Address"},
2022 {DCCREQ_KEY_SEQ_NUM
, "Auth Key Sequence Number"},
2023 {DCCREQ_HMAC_DIGEST
, "HMAC-DigestNumber"},
2027 static const value_string ds_param_subtlv_vals
[] = {
2028 {DCCREQ_DS_FREQ
, "Frequency"},
2029 {DCCREQ_DS_MOD_TYPE
, "Modulation Type"},
2030 {DCCREQ_DS_SYM_RATE
, "Symbol Rate"},
2031 {DCCREQ_DS_INTLV_DEPTH
, "Interleaver Depth"},
2032 {DCCREQ_DS_CHAN_ID
, "Downstream Channel ID"},
2033 {DCCREQ_DS_SYNC_SUB
, "SYNC Substitution"},
2034 {DCCREQ_DS_OFDM_BLOCK_FREQ
, "OFDM Block Frequency"},
2038 static const value_string sf_sub_subtlv_vals
[] = {
2039 {DCCREQ_SF_SFID
, "SFID"},
2040 {DCCREQ_SF_SID
, "SID"},
2041 {DCCREQ_SF_UNSOL_GRANT_TREF
, "Unsolicited Grant Time Reference"},
2045 static const value_string dccrsp_tlv_vals
[] = {
2046 {DCCRSP_CM_JUMP_TIME
, "CM Jump Time Encodings"},
2047 {DCCRSP_KEY_SEQ_NUM
, "Auth Key Sequence Number"},
2048 {DCCRSP_HMAC_DIGEST
, "HMAC-Digest Number"},
2052 static const value_string cm_jump_subtlv_vals
[] = {
2053 {DCCRSP_CM_JUMP_TIME_LENGTH
, "Length of Jump"},
2054 {DCCRSP_CM_JUMP_TIME_START
, "Start Time of Jump"},
2058 static const value_string dccack_tlv_vals
[] = {
2059 {DCCACK_HMAC_DIGEST
, "HMAC-DigestNumber"},
2060 {DCCACK_KEY_SEQ_NUM
, "Auth Key Sequence Number"},
2064 static const value_string max_scheduled_codes_vals
[] = {
2070 static const value_string dcd_tlv_vals
[] = {
2071 {DCD_DOWN_CLASSIFIER
, "DCD_CFR Encodings"},
2072 {DCD_DSG_RULE
, "DCD DSG Rule Encodings"},
2073 {DCD_DSG_CONFIG
, "DCD DSG Config Encodings"},
2077 static const value_string dcd_down_classifier_vals
[] = {
2078 {DCD_CFR_ID
, "Downstream Classifier ID"},
2079 {DCD_CFR_RULE_PRI
, "Downstream Classifier Rule Priority"},
2080 {DCD_CFR_IP_CLASSIFIER
, "DCD_CFR_IP Encodings"},
2084 static const value_string dcd_dsg_rule_vals
[] = {
2085 {DCD_RULE_ID
, "DSG Rule ID"},
2086 {DCD_RULE_PRI
, "DSG Rule Priority"},
2087 {DCD_RULE_UCID_RNG
, "DSG Rule UCID Range"},
2088 {DCD_RULE_CLIENT_ID
, "DCD Rule ClientID Encodings"},
2089 {DCD_RULE_TUNL_ADDR
, "DSG Rule Tunnel MAC Address"},
2090 {DCD_RULE_CFR_ID
, "DSG Rule Classifier ID"},
2091 {DCD_RULE_VENDOR_SPEC
, "DSG Rule Vendor Specific Parameters"},
2095 static const value_string dcd_clid_vals
[] = {
2096 {DCD_CLID_BCAST_ID
, "DSG Rule Client ID Broadcast ID"},
2097 {DCD_CLID_KNOWN_MAC_ADDR
, "DSG Rule Client ID Known MAC Address"},
2098 {DCD_CLID_CA_SYS_ID
, "DSG Rule Client ID CA System ID"},
2099 {DCD_CLID_APP_ID
, "DSG Rule Client ID Application ID"},
2103 static const value_string dcd_cfr_ip_vals
[] = {
2104 {DCD_CFR_IP_SOURCE_ADDR
, "Downstream Classifier IP Source Address"},
2105 {DCD_CFR_IP_SOURCE_MASK
, "Downstream Classifier IP Source Mask"},
2106 {DCD_CFR_IP_DEST_ADDR
, "Downstream Classifier IP Destination Address"},
2107 {DCD_CFR_IP_DEST_MASK
, "Downstream Classifier IP Destination Mask"},
2108 {DCD_CFR_TCPUDP_SRCPORT_START
, "Downstream Classifier IP TCP/UDP Source Port Start"},
2109 {DCD_CFR_TCPUDP_SRCPORT_END
, "Downstream Classifier IP TCP/UDP Source Port End"},
2110 {DCD_CFR_TCPUDP_DSTPORT_START
, "Downstream Classifier IP TCP/UDP Destination Port Start"},
2111 {DCD_CFR_TCPUDP_DSTPORT_END
, "Downstream Classifier IP TCP/UDP Destination Port End"},
2115 static const value_string dcd_cfg_vals
[] = {
2116 {DCD_CFG_CHAN_LST
, "DSG Configuration Channel"},
2117 {DCD_CFG_TDSG1
, "DSG Initialization Timeout (Tdsg1)"},
2118 {DCD_CFG_TDSG2
, "DSG Initialization Timeout (Tdsg2)"},
2119 {DCD_CFG_TDSG3
, "DSG Initialization Timeout (Tdsg3)"},
2120 {DCD_CFG_TDSG4
, "DSG Initialization Timeout (Tdsg4)"},
2121 {DCD_CFG_VENDOR_SPEC
, "DSG Configuration Vendor Specific Parameters"},
2125 static const value_string J83_annex_vals
[] = {
2126 {J83_ANNEX_A
, "J.83 Annex A"},
2127 {J83_ANNEX_B
, "J.83 Annex B"},
2128 {J83_ANNEX_C
, "J.83 Annex C"},
2132 static const value_string modulation_order_vals
[] = {
2134 {QAM256
, "256-QAM"},
2138 static const value_string primary_capable_vals
[] = {
2139 {NOT_PRIMARY_CAPABLE
, "Channel is not primary-capable"},
2140 {PRIMARY_CAPABLE
, "Channel is primary-capable"},
2141 {2, "Reserved (was FDX downstream channel)"},
2145 static const value_string map_ucd_transport_indicator_vals
[] = {
2146 {CANNOT_CARRY_MAP_UCD
, "Channel cannot carry MAPs and UCDs for the MAC domain for which the MDD is sent"},
2147 {CAN_CARRY_MAP_UCD
, "Channel can carry MAPs and UCDs for the MAC domain for which the MDD is sent"},
2151 static const value_string mdd_downstream_active_channel_list_fdx_vals
[] = {
2152 {0, "Not an FDX Downstream Channel"},
2153 {1, "FDX Downstream Channel"},
2157 static const value_string tukey_raised_cosine_vals
[] = {
2158 {TUKEY_0TS
, "0 "UTF8_MICRO_SIGN
"s (0 * Ts)"},
2159 {TUKEY_64TS
, "0.3125 "UTF8_MICRO_SIGN
"s (64 * Ts)"},
2160 {TUKEY_128TS
, "0.625 "UTF8_MICRO_SIGN
"s (128 * Ts)"},
2161 {TUKEY_192TS
, "0.9375 "UTF8_MICRO_SIGN
"s (192 * Ts)"},
2162 {TUKEY_256TS
, "1.25 "UTF8_MICRO_SIGN
"s (256 * Ts)"},
2166 static const value_string cyclic_prefix_vals
[] = {
2167 {CYCLIC_PREFIX_192_TS
, "0.9375 "UTF8_MICRO_SIGN
"s (192 * Ts)"},
2168 {CYCLIC_PREFIX_256_TS
, "1.25 "UTF8_MICRO_SIGN
"s (256 * Ts)"},
2169 {CYCLIC_PREFIX_512_TS
, "2.5 "UTF8_MICRO_SIGN
"s (512 * Ts) 3"},
2170 {CYCLIC_PREFIX_768_TS
, "3.75 "UTF8_MICRO_SIGN
"s (768 * Ts)"},
2171 {CYCLIC_PREFIX_1024_TS
, "5 "UTF8_MICRO_SIGN
"s (1024 * Ts)"},
2175 static const value_string spacing_vals
[] = {
2176 {SPACING_25KHZ
, "25kHz"},
2177 {SPACING_50KHZ
, "50kHz"},
2181 static const value_string bpkmattr_tlv_vals
[] = {
2182 {BPKM_RESERVED
, "Reserved"},
2183 {BPKM_SERIAL_NUM
, "Serial Number"},
2184 {BPKM_MANUFACTURER_ID
, "Manufacturer ID"},
2185 {BPKM_MAC_ADDR
, "MAC Address"},
2186 {BPKM_RSA_PUB_KEY
, "RSA Public Key"},
2187 {BPKM_CM_ID
, "CM Identification"},
2188 {BPKM_DISPLAY_STR
, "Display String"},
2189 {BPKM_AUTH_KEY
, "Auth Key (encrypted)"},
2190 {BPKM_TEK
, "Traffic Encryption Key"},
2191 {BPKM_KEY_LIFETIME
, "Key Lifetime"},
2192 {BPKM_KEY_SEQ_NUM
, "Key Sequence Number"},
2193 {BPKM_HMAC_DIGEST
, "HMAC Digest"},
2194 {BPKM_SAID
, "SAID"},
2195 {BPKM_TEK_PARAM
, "TEK Parameters"},
2196 {BPKM_OBSOLETED
, "Obsoleted"},
2197 {BPKM_CBC_IV
, "CBC IV"},
2198 {BPKM_ERROR_CODE
, "Error Code"},
2199 {BPKM_CA_CERT
, "CA Certificate"},
2200 {BPKM_CM_CERT
, "CM Certificate"},
2201 {BPKM_SEC_CAPABILITIES
, "Security Capabilities"},
2202 {BPKM_CRYPTO_SUITE
, "Cryptographic Suite"},
2203 {BPKM_CRYPTO_SUITE_LIST
, "Cryptographic Suite List"},
2204 {BPKM_BPI_VERSION
, "BPI Version"},
2205 {BPKM_SA_DESCRIPTOR
, "SA Descriptor"},
2206 {BPKM_SA_TYPE
, "SA Type"},
2207 {BPKM_SA_QUERY
, "SA Query"},
2208 {BPKM_SA_QUERY_TYPE
, "SA Query Type"},
2209 {BPKM_IP_ADDRESS
, "IP Address"},
2210 {BPKM_DNLD_PARAMS
, "Download Parameters"},
2211 {BPKM_CVC_ROOT_CA_CERT
, "CVC Root CA Certificate"},
2212 {BPKM_CVC_CA_CERT
, "CVC CA Certificate"},
2213 {BPKM_DEV_CA_CERT
, "Device CA Certificate"},
2214 {BPKM_ROOT_CA_CERT
, "Root CA Certificate"},
2215 {BPKM_CM_NONCE
, "CM Nonce"},
2216 {BPKM_MSG_SIGNATURE
, "Message Signature"},
2217 {BPKM_KEY_EXCHANGE_SHARE
, "Key Exchange Share"},
2218 {BPKM_ALLOWED_BPI_VERSIONS
, "Allowed BPI Versions"},
2219 {BPKM_OCSP_RSP
, "OCSP Responses"},
2220 {BPKM_CMTS_DESIGNATION
, "CMTS Designation"},
2221 {BPKM_CM_STATUS_CODE
, "CM-Status Code"},
2222 {BPKM_DETECTED_ERRORS
, "Detected Errors"},
2223 {BPKM_VENDOR_DEFINED
, "Vendor Defined"},
2227 static const value_string error_code_vals
[] = {
2228 {0, "No Information"},
2229 {1, "Unauthorized CM"},
2230 {2, "Unauthorized SAID"},
2232 {4, "Invalid Key Sequence Number"},
2233 {5, "Message (Key Request) authentication failure"},
2234 {6, "Permanent Authorization Failure"},
2235 {7, "Not authorized for requested downstream traffic flow"},
2236 {8, "Downstream traffic flow not mapped to SAID"},
2237 {9, "Time of day not acquired"},
2238 {10, "EAE Disabled"},
2239 {11, "BPI+ Version not supported"},
2243 static const value_string bpkm_crypto_suite_encr_vals
[] = {
2244 {0x01, "CBC-Mode 56-bit DES"},
2245 {0x02, "CBC-Mode 40-bit DES"},
2246 {0x03, "CBC-Mode 128-bit AES"},
2247 {0x04, "CBC-Mode 256-bit AES"},
2251 static const value_string bpkm_crypto_suite_auth_vals
[] = {
2256 static const value_string bpkmattr_key_exchange_share_field_id_vals
[] = {
2257 {0x0017, "secp256r1"},
2258 {0x0018, "secp384r1"},
2259 {0x0019, "secp521r1"},
2265 static const value_string bpi_ver_vals
[] = {
2272 static const value_string bpi_sa_vals
[] = {
2279 static const range_string bpi_sa_query_type_vals
[] = {
2280 {1, 1, "IP Multicast"},
2281 {128, 255, "Vendor Specific"},
2285 static const value_string bpkm_cmts_binding_vals
[] = {
2286 {BPKMATTR_CMTS_DESIGNATION_CERTIFICATE_FINGERPRINT
, "Certificate Fingerprint"},
2287 {BPKMATTR_CMTS_DESIGNATION_COMMON_NAME
, "Common Name"},
2288 {BPKMATTR_CMTS_DESIGNATION_ORG_UNIT
, "Organizational Unit"},
2289 {BPKMATTR_CMTS_DESIGNATION_ORG_NAME
, "Organization Name"},
2290 {BPKMATTR_CMTS_DESIGNATION_SERIAL_NUMBER
, "Serial Number"},
2291 {BPKMATTR_CMTS_DESIGNATION_ISSUING_CA_FINGERPRINT
, "Issuing CA Fingerprint"},
2292 {BPKMATTR_CMTS_DESIGNATION_ISSUING_CA_COMMON_NAME
, "Issuing CA Common Name"},
2293 {BPKMATTR_CMTS_DESIGNATION_ISSUING_CA_ORG_UNIT
, "Issuing CA Organizational Unit"},
2294 {BPKMATTR_CMTS_DESIGNATION_ISSUING_CA_ORG_NAME
, "Issuing CA Organization Name"},
2295 {BPKMATTR_CMTS_DESIGNATION_ISSUING_CA_SERIAL_NUMBER
, "Issuing CA Serial Number"},
2299 static const value_string bpkm_cm_status_code_vals
[] = {
2301 {1, "Generic error"},
2302 {2, "Auth Reply not received"},
2303 {3, "Missing Auth Reply required attribute"},
2304 {4, "BPI-Version mismatch"},
2305 {5, "NONCE mismatch"},
2306 {11, "Signature Format Error"},
2307 {12, "Signature Algorithm not supported"},
2308 {13, "Public Key Algorithm not supported"},
2309 {14, "Incomplete Certificate Chain"},
2310 {15, "Certificate Not Trusted"},
2311 {16, "Missing EE certificate revocation information"},
2312 {17, "Missing CA certificate revocation information"},
2313 {18, "EE certificate Expired"},
2314 {19, "CA certificate Expired"},
2315 {20, "CMTS-designation fingerprint (SHA-256) mismatch"},
2316 {21, "CMTS-designation Common-Name mismatch"},
2317 {22, "CMTS-designation Organizational-Unit mismatch"},
2318 {23, "CMTS-designation Organization-Name mismatch"},
2319 {24, "CMTS-designation Serial-Number mismatch"},
2320 {25, "CMTS-designation Issuing-CA-fingerprint (SHA-256) mismatch"},
2321 {26, "CMTS-designation Issuing-CA-Common-Name mismatch"},
2322 {27, "CMTS-designation Issuing-CA-Organizational-Unit mismatch"},
2323 {28, "CMTS-designation Issuing-CA-Organization mismatch"},
2324 {29, "CMTS-designation Issuing-CA-Serial-umber mismatch"},
2325 {30, "Missing Key-Derivation required parameters"},
2326 {31, "Key-Derivation parameters field mismatch"},
2327 {32, "Key-Derivation error"},
2331 static const value_string mdd_tlv_vals
[] = {
2332 {DOWNSTREAM_ACTIVE_CHANNEL_LIST
, "Downstream Active Channel List"},
2333 {MAC_DOMAIN_DOWNSTREAM_SERVICE_GROUP
, "MAC Domain Downstream Service Group"},
2334 {DOWNSTREAM_AMBIGUITY_RESOLUTION_FREQUENCY_LIST
, "Downstream Ambiguity Resolution Frequency List "},
2335 {RECEIVE_CHANNEL_PROFILE_REPORTING_CONTROL
, "Receive Channel Profile Reporting Control"},
2336 {IP_INITIALIZATION_PARAMETERS
, "IP Initialization Parameters"},
2337 {EARLY_AUTHENTICATION_AND_ENCRYPTION
, "Early Authentication and Encryption"},
2338 {UPSTREAM_ACTIVE_CHANNEL_LIST
, "Upstream Active Channel List"},
2339 {UPSTREAM_AMBIGUITY_RESOLUTION_CHANNEL_LIST
, "Upstream Ambiguity Resolution Channel List"},
2340 {UPSTREAM_FREQUENCY_RANGE
, "Upstream Frequency Range"},
2341 {SYMBOL_CLOCK_LOCKING_INDICATOR
, "Symbol Clock Locking Indicator"},
2342 {CM_STATUS_EVENT_CONTROL
, "CM-STATUS Event Control"},
2343 {UPSTREAM_TRANSMIT_POWER_REPORTING
, "Upstream Transmit Power Reporting"},
2344 {DSG_DA_TO_DSID_ASSOCIATION_ENTRY
, "DSG DA-to-DSID Association Entry"},
2345 {CM_STATUS_EVENT_ENABLE_NON_CHANNEL_SPECIFIC_EVENTS
, "CM-STATUS Event Enable for Non-Channel-Specific-Events"},
2346 {EXTENDED_UPSTREAM_TRANSMIT_POWER_SUPPORT
, "Extended Upstream Transmit Power Support"},
2347 {CMTS_DOCSIS_VERSION
, "CMTS DOCSIS Version"},
2348 {CM_PERIODIC_MAINTENANCE_TIMEOUT_INDICATOR
, "CM Periodic Maintenance Timeout Indicator"},
2349 {DLS_BROADCAST_AND_MULTICAST_DELIVERY_METHOD
, "DLS Broadcast and Multicast Delivery Method"},
2350 {CM_STATUS_EVENT_ENABLE_FOR_DOCSIS_3_1_EVENTS
, "CM-STATUS Event Enable for DOCSIS 3.1 Specific Events"},
2351 {DIPLEXER_BAND_EDGE
, "Diplexer Band Edge"},
2352 {ADVANCED_BAND_PLAN
, "Advanced Band Plan Descriptor"},
2353 {MDD_BPI_PLUS
, "BPI+ Enabled Version and Configuration"},
2358 static const value_string rcp_center_frequency_spacing_vals
[] = {
2359 {ASSUME_6MHZ_CENTER_FREQUENCY_SPACING
, "CM MUST report only Receive Channel Profiles assuming 6 MHz center frequency spacing"},
2360 {ASSUME_8MHZ_CENTER_FREQUENCY_SPACING
, "CM MUST report only Receive Channel Profiles assuming 8 MHz center frequency spacing"},
2364 static const value_string verbose_rcp_reporting_vals
[] = {
2365 {RCP_NO_VERBOSE_REPORTING
, "CM MUST NOT provide verbose reporting of all its Receive Channel Profile(s) (both standard profiles and manufacturers profiles)."},
2366 {RCP_VERBOSE_REPORTING
, "CM MUST provide verbose reporting of Receive Channel Profile(s) (both standard profiles and manufacturers profiles)."},
2370 static const value_string fragmented_rcp_transmission_vals
[] = {
2371 {1, "CM optionally transmits Receive Channel Profile (s) requiring fragmentation (RCPs in excess of 255 bytes) in addition to those that do not."},
2375 static const value_string ip_provisioning_mode_vals
[] = {
2376 {IPv4_ONLY
, "IPv4 Only"},
2377 {IPv6_ONLY
, "IPv6 Only"},
2378 {IP_ALTERNATE
, "Alternate"},
2379 {DUAL_STACK
, "Dual Stack"},
2383 static const value_string eae_vals
[] = {
2384 {EAE_DISABLED
, "early authentication and encryption disabled"},
2385 {EAE_ENABLED
, "early authentication and encryption enabled"},
2389 static const value_string upstream_frequency_range_vals
[] = {
2390 {STANDARD_UPSTREAM_FREQUENCY_RANGE
, "Standard Upstream Frequency Range"},
2391 {EXTENDED_UPSTREAM_FREQUENCY_RANGE
, "Extended Upstream Frequency Range"},
2395 static const value_string symbol_clock_locking_indicator_vals
[] = {
2396 {NOT_LOCKED_TO_MASTER_CLOCK
, "Symbol Clock is not locked to Master Clock"},
2397 {LOCKED_TO_MASTER_CLOCK
, "Symbol Clock is locked to Master Clock"},
2401 static const value_string symbol_cm_status_event_vals
[] = {
2402 {SECONDARY_CHANNEL_MDD_TIMEOUT
, "Secondary Channel MDD timeout"},
2403 {QAM_FEC_LOCK_FAILURE
, "Qam FEC Lock Failure"},
2404 {SEQUENCE_OUT_OF_RANGE
, "Sequence out of Range"},
2405 {MDD_RECOVERY
, "MDD Recovery"},
2406 {QAM_FEC_LOCK_RECOVERY
, "Qam FEC Lock Recovery"},
2407 {T4_TIMEOUT
, "T4 Timeout"},
2408 {T3_RETRIES_EXCEEDED
, "T3 Retries Exceeded"},
2409 {SUCCESFUL_RANGING_AFTER_T3_RETRIES_EXCEEDED
, "Successful ranging after T3 Retries Exceeded"},
2410 {CM_OPERATING_ON_BATTERY_BACKUP
, "CM Operating on Battery Backup"},
2411 {CM_RETURNED_TO_AC_POWER
, "CM Returned to AC Power"},
2412 {MAC_REMOVAL_EVENT
, "MAC Removal Event"},
2413 {DS_OFDM_PROFILE_FAILURE
, "DS OFDM Profile Failure"},
2414 {PRIMARY_DS_CHANGE
, "Primary Downstream Change"},
2415 {DPD_MISMATCH
, "DPD Mismatch"},
2416 {DEPRECATED
, "Deprecated"},
2417 {NCP_PROFILE_FAILURE
, "NCP Profile Failure"},
2418 {PLC_FAILURE
, "PLC Failure"},
2419 {NCP_PROFILE_RECOVERY
, "NCP Profile Recovery"},
2420 {PLC_RECOVERY
, "PLC Recovery"},
2421 {OFDM_PROFILE_RECOVERY
, "OFDM Profile Recovery"},
2422 {OFDMA_FAILURE
, "OFDMA Failure"},
2423 {MAP_STORAGE_OVERFLOW
, "MAP Storage Overflow"},
2424 {MAP_STORAGE_ALMOST_FULL
, "MAP Storage Almost Full"},
2428 static const value_string upstream_transmit_power_reporting_vals
[] = {
2429 {CM_DOESNT_REPORT_TRANSMIT_POWER
, "CM does not report transmit power in RNG-REQ, INIT-RNG-REQ, and B-INIT-RNG-REQ messages"},
2430 {CM_REPORTS_TRANSMIT_POWER
, "CM reports transmit power in RNG-REQ, INIT-RNG-REQ, and B-INIT-RNG-REQ messages"},
2434 static const value_string cm_periodic_maintenance_timeout_indicator_vals
[] = {
2435 {0, "use Unicast Ranging opportunity"},
2436 {1, "use Probe opportunity"},
2437 {2, "use Unicast Ranging or Probe opportunity"},
2441 static const value_string dls_broadcast_and_multicast_delivery_method_vals
[] = {
2442 {1, "delayed selected multicast method"},
2443 {2, "selectively replicated multicast method"},
2448 static const value_string mdd_ds_active_channel_list_vals
[] = {
2449 {DOWNSTREAM_ACTIVE_CHANNEL_LIST_CHANNEL_ID
, "Channel ID"},
2450 {DOWNSTREAM_ACTIVE_CHANNEL_LIST_FREQUENCY
, "Frequency"},
2451 {DOWNSTREAM_ACTIVE_CHANNEL_LIST_MODULATION_ORDER_ANNEX
, "Annex/Modulation Order"},
2452 {DOWNSTREAM_ACTIVE_CHANNEL_LIST_PRIMARY_CAPABLE
, "Primary Capable"},
2453 {DOWNSTREAM_ACTIVE_CHANNEL_LIST_CM_STATUS_EVENT_ENABLE_BITMASK
, "CM-STATUS Event Enable Bitmask"},
2454 {DOWNSTREAM_ACTIVE_CHANNEL_LIST_MAP_UCD_TRANSPORT_INDICATOR
, "MAP and UCD transport indicator"},
2455 {DOWNSTREAM_ACTIVE_CHANNEL_LIST_OFDM_PLC_PARAMETERS
, "OFDM PLC Parameters"},
2456 {DOWNSTREAM_ACTIVE_CHANNEL_LIST_FDX_SUB_BAND_ID
, "Full Duplex Sub-band ID"},
2457 {DOWNSTREAM_ACTIVE_CHANNEL_LIST_FDX_DS
, "Full Duplex Downstream"},
2461 static const value_string mdd_ds_service_group_vals
[] = {
2462 {MAC_DOMAIN_DOWNSTREAM_SERVICE_GROUP_MD_DS_SG_IDENTIFIER
, "MD-DS-SG Identifier"},
2463 {MAC_DOMAIN_DOWNSTREAM_SERVICE_GROUP_CHANNEL_IDS
, "Channel Ids"},
2467 static const value_string mdd_channel_profile_reporting_control_vals
[] = {
2468 {RCP_CENTER_FREQUENCY_SPACING
, "RCP Center Frequency Spacing"},
2469 {VERBOSE_RCP_REPORTING
, "Verbose RCP reporting"},
2470 {FRAGMENTED_RCP_TRANSMISSION
, "Fragmented RCP transmission"},
2474 static const value_string mdd_ip_init_param_vals
[] = {
2475 {IP_PROVISIONING_MODE
, "IP Provisioning Mode"},
2476 {PRE_REGISTRATION_DSID
, "Pre-registration DSID"},
2480 static const value_string mdd_up_active_channel_list_vals
[] = {
2481 {UPSTREAM_ACTIVE_CHANNEL_LIST_UPSTREAM_CHANNEL_ID
, "Upstream Channel ID"},
2482 {UPSTREAM_ACTIVE_CHANNEL_LIST_CM_STATUS_EVENT_ENABLE_BITMASK
, "CM-STATUS Event Enable Bitmask"},
2483 {UPSTREAM_ACTIVE_CHANNEL_LIST_UPSTREAM_CHANNEL_PRIORITY
, "Upstream Channel Priority"},
2484 {UPSTREAM_ACTIVE_CHANNEL_LIST_DSCHIDS_MAPS_UCDS
, "Downstream Channel(s) on which MAPs and UCDs for this Upstream Channel are sent"},
2485 {UPSTREAM_ACTIVE_CHANNEL_LIST_FDX_UPSTREAM_CHANNEL
, "FDX Upstream Channel"},
2486 {UPSTREAM_ACTIVE_CHANNEL_LIST_FDX_SUBBAND_ID
, "FDX Sub-band ID"},
2490 static const value_string mdd_cm_status_event_control_vals
[] = {
2491 {EVENT_TYPE_CODE
, "Event Type"},
2492 {MAXIMUM_EVENT_HOLDOFF_TIMER
, "Maximum Event Holdoff Timer"},
2493 {MAXIMUM_NUMBER_OF_REPORTS_PER_EVENT
, "Maximum Number of Reports per Event"},
2497 static const value_string mdd_cm_dsg_da_to_dsid_vals
[] = {
2498 {DSG_DA_TO_DSID_ASSOCIATION_DA
, "Destination Address"},
2499 {DSG_DA_TO_DSID_ASSOCIATION_DSID
, "DSID"},
2503 static const value_string tlv20_vals
[] = {
2504 {0, "Selectable active codes mode 1 enabled and code hopping disabled"},
2505 {1, "Selectable active codes mode 1 enabled and code hopping mode 1 enabled"},
2506 {2, "Selectable active codes mode 2 enabled and code hopping mode 2 enabled"},
2507 {3, "Selectable active codes mode 2 enabled and code hopping disabled"},
2511 static const value_string mdd_diplexer_band_edge_vals
[] = {
2512 {DIPLEXER_US_UPPER_BAND_EDGE
, "Diplexer Upstream Upper Band Edge"},
2513 {DIPLEXER_DS_LOWER_BAND_EDGE
, "Diplexer Downstream Lower Band Edge"},
2514 {DIPLEXER_DS_UPPER_BAND_EDGE
, "Diplexer Downstream Upper Band Edge"},
2515 {DIPLEXER_US_UPPER_BAND_EDGE_OVERRIDE
, "Diplexer Upstream Upper Band Edge Override"},
2516 {DIPLEXER_DS_LOWER_BAND_EDGE_OVERRIDE
, "Diplexer Downstream Lower Band Edge Override"},
2517 {DIPLEXER_DS_UPPER_BAND_EDGE_OVERRIDE
, "Diplexer Downstream Upper Band Edge Override"},
2521 static const value_string mdd_diplexer_us_upper_band_edge_vals
[] = {
2522 {0, "Upstream Frequency Range up to 42 MHz"},
2523 {1, "Upstream Frequency Range up to 65 MHz"},
2524 {2, "Upstream Frequency Range up to 85 MHz"},
2525 {3, "Upstream Frequency Range up to 117 MHz"},
2526 {4, "Upstream Frequency Range up to 204 MHz"},
2530 static const value_string mdd_diplexer_ds_lower_band_edge_vals
[] = {
2531 {0, "Downstream Frequency Range starting from 108 MHz"},
2532 {1, "Downstream Frequency Range starting from 258 MHz"},
2536 static const value_string mdd_diplexer_ds_upper_band_edge_vals
[] = {
2537 {0, "Downstream Frequency Range up to 1218 MHz"},
2538 {1, "Downstream Frequency Range up to 1794 MHz"},
2539 {2, "Downstream Frequency Range up to 1002 MHz"},
2543 static const value_string mdd_abp_vals
[] = {
2545 {MDD_ABP_SUB_BAND_COUNT
, "Total number of sub-bands"},
2546 {MDD_ABP_SUB_BAND_WIDTH
, "Full Duplex Sub-band Width"},
2550 static const value_string mdd_abp_sub_band_vals
[] = {
2552 {1, "1 FDX sub-band"},
2553 {2, "2 FDX sub-bands"},
2554 {3, "3 FDX sub-bands"},
2558 static const value_string mdd_abp_sub_band_width_vals
[] = {
2564 static const value_string mdd_docsis_version_vals
[] = {
2565 {CMTS_DOCSIS_VERSION_MAJOR_PRE_40
, "CMTS Pre-DOCSIS 4.0 Major DOCSIS Version"},
2566 {CMTS_DOCSIS_VERSION_MINOR_PRE_40
, "CMTS Pre-DOCSIS 4.0 Minor DOCSIS Version"},
2567 {CMTS_DOCSIS_VERSION_MAJOR
, "CMTS Major DOCSIS Version"},
2568 {CMTS_DOCSIS_VERSION_MINOR
, "CMTS Minor DOCSIS Version"},
2569 {CMTS_DOCSIS_VERSION_EXT_SPECTRUM_MODE
, "CMTS Extended Spectrum Mode of Operation"},
2573 static const value_string mdd_bpi_plus_vals
[] = {
2574 {MDD_BPI_PLUS_VERSION
, "BPI+ Version Number"},
2575 {MDD_BPI_PLUS_CFG
, "BPI+ Configuration Bitmask"},
2579 static const value_string cmstatus_tlv_vals
[] = {
2580 {STATUS_EVENT
, "Status Event"},
2584 static const value_string cmstatus_status_event_tlv_vals
[] = {
2585 {EVENT_DS_CH_ID
, "Downstream Channel ID"},
2586 {EVENT_US_CH_ID
, "Upstream Channel ID"},
2587 {EVENT_DSID
, "DSID"},
2588 {EVENT_DESCR
, "Description"},
2589 {EVENT_MAC_ADDRESS
, "MAC Address"},
2590 {EVENT_DS_OFDM_PROFILE_ID
, "Downstream OFDM Profile ID"},
2591 {EVENT_US_OFDMA_PROFILE_ID
, "Upstream OFDMA Profile ID"},
2595 static const value_string cmctrlreq_tlv_vals
[] = {
2596 {CM_CTRL_MUTE
, "Upstream Channel RF Mute"},
2597 {CM_CTRL_MUTE_TIMEOUT
, "RF Mute Timeout Interval"},
2598 {CM_CTRL_REINIT
, "CM Reinitialize"},
2599 {CM_CTRL_DISABLE_FWD
, "Disable Forwarding"},
2600 {CM_CTRL_DS_EVENT
, "Override Downstream Events"},
2601 {CM_CTRL_US_EVENT
, "Override Upstream Events"},
2602 {CM_CTRL_EVENT
, "Override Non-Channel-Specific Events"},
2606 static const value_string cmctrlreq_us_tlv_vals
[] = {
2607 {US_EVENT_CH_ID
, "Upstream Channel ID"},
2608 {US_EVENT_MASK
, "Upstream Status Event Enable Bitmask"},
2612 static const value_string cmctrlreq_ds_tlv_vals
[] = {
2613 {DS_EVENT_CH_ID
, "Downstream Channel ID"},
2614 {DS_EVENT_MASK
, "Downstream Status Event Enable Bitmask"},
2618 static const value_string emrsp_tlv_vals
[] = {
2619 {EM_HOLDOFF_TIMER
, "Hold-Off Timer"},
2623 static const value_string emreq_req_power_mode_vals
[] = {
2624 {0, "Normal Operation"},
2625 {1, "Energy Management 1x1 Mode"},
2626 {2, "DOCSIS Light Sleep Mode"},
2630 static const value_string emrsp_rsp_code_vals
[] = {
2632 {1, "Reject Temporary"},
2633 {2, "Reject Permanent, Requested Low Power Mode(s) Not Supported"},
2634 {3, "Reject Permanent, Requested Low Power Mode(s) Disabled"},
2635 {4, "Reject Permanent, Other"},
2639 static const value_string docsis_ocd_subc_assign_type_str
[] = {
2640 {0, "range, continuous"},
2641 {1, "range, skip by 1"},
2647 static const value_string docsis_ocd_subc_assign_value_str
[] = {
2648 {0, "specific value"},
2649 {1, "default value"},
2653 static const value_string docsis_ocd_subc_assign_subc_type_str
[] = {
2654 {1, "continuous pilot"},
2655 {16, "excluded subcarriers"},
2656 {20, "PLC, 16-QAM"},
2660 static const value_string docsis_ocd_four_trans_size
[] = {
2661 {0, "4096 subcarriers at 50 kHz spacing"},
2662 {1, "8192 subcarriers at 25 kHz spacing"},
2666 static const value_string docsis_ocd_cyc_prefix
[] = {
2667 {0, "0.9375 "UTF8_MICRO_SIGN
"s with 192 samples"},
2668 {1, "1.25 "UTF8_MICRO_SIGN
"s with 256 samples"},
2669 {2, "2.5 "UTF8_MICRO_SIGN
"s with 512 samples"},
2670 {3, "3.75 "UTF8_MICRO_SIGN
"s with 768 samples"},
2671 {4, "5.0 "UTF8_MICRO_SIGN
"s with 1024 samples"},
2675 static const value_string docsis_ocd_roll_off
[] = {
2676 {0, "0 "UTF8_MICRO_SIGN
"s with 0 samples"},
2677 {1, "0.3125 "UTF8_MICRO_SIGN
"s with 64 samples"},
2678 {2, "0.625 "UTF8_MICRO_SIGN
"s with 128 samples"},
2679 {3, "0.9375 "UTF8_MICRO_SIGN
"s with 192 samples"},
2680 {4, "1.25 "UTF8_MICRO_SIGN
"s with 256 samples"},
2684 static const value_string docsis_ocd_prim_cap_ind_str
[] = {
2685 {0, "channel is not primary capable"},
2686 {1, "channel is primary capable"},
2690 static const value_string docsis_ocd_fdx_ind_str
[] = {
2695 static const value_string ocd_tlv_vals
[] = {
2696 {DISCRETE_FOURIER_TRANSFORM_SIZE
, "Discrete Fourier Transform Size"},
2697 {CYCLIC_PREFIX
, "Cyclic Prefix"},
2698 {ROLL_OFF
, "Roll Off"},
2699 {OFDM_SPECTRUM_LOCATION
, "OFDM Spectrum Location"},
2700 {TIME_INTERLEAVING_DEPTH
, "Time Interleaving Depth"},
2701 {SUBCARRIER_ASSIGNMENT_RANGE_LIST
, "Subcarrier Assignment Range/List"},
2702 {PRIMARY_CAPABILITY_INDICATOR
, "Primary Capable Indicator"},
2703 {FDX_INDICATOR
, "FDX Indicator"},
2707 static const value_string docsis_dpd_subc_assign_type_str
[] = {
2708 {0, "range, continuous"},
2709 {1, "range, skip by 1"},
2715 static const value_string docsis_dpd_subc_assign_value_str
[] = {
2716 {0, "specific value"},
2717 {1, "default value"},
2721 static const value_string docsis_dpd_subc_assign_modulation_str
[] = {
2722 {0, "zero-bit loaded"},
2724 {2, "QPSK (for NCP profile only)"},
2741 static const value_string docsis_dpd_tlv_subc_assign_vector_oddness_str
[] = {
2747 static const value_string docsis_dpd_tlv_subc_assign_vector_modulation_str
[] = {
2748 {0, "zero-bit loaded"},
2749 {1, "continuous pilot"},
2750 {2, "QPSK (for NCP profile only)"},
2767 static const value_string dpd_tlv_vals
[] = {
2768 {SUBCARRIER_ASSIGNMENT_RANGE_LIST
, "Subcarrier Assignment Range/List"},
2769 {SUBCARRIER_ASSIGNMENT_VECTOR
, "Subcarrier Assignment Vector"},
2773 static const value_string ofdma_cyclic_prefix_size_vals
[] = {
2783 {10, "512 samples"},
2784 {11, "640 samples"},
2788 static const value_string ofdma_rolloff_period_size_vals
[] = {
2800 static const value_string subc_spacing_vals
[] = {
2801 {1, "25 kHz (corresponds to 4096 subcarriers and 16 subcarriers per minislot)"},
2802 {2, "50 kHz (corresponds to 2048 subcarriers and 8 subcarriers per minislot)"},
2806 static const value_string ofdma_prof_mod_order
[] = {
2807 {0, "no bit-loading"},
2823 static const value_string profile_id_vals
[] = {
2840 {254, "Profile for RxMER statistics only"},
2841 {255, "NCP Profile"},
2845 static const value_string opt_opcode_vals
[] = {
2848 {3, "FDX Triggered Start"},
2852 static const value_string opt_status_vals
[] = {
2854 {2, "Profile already testing from another request"},
2855 {3, "No free profile resource on CM"},
2856 {4, "Maximum duration expired"},
2859 {7, "Profile already assigned to the CM"},
2860 {8, "DS Lock Lost"},
2864 static const value_string optreq_tlv_vals
[] = {
2865 {OPT_REQ_REQ_STAT
, "Requested Statistics"},
2866 {OPT_REQ_RXMER_THRESH_PARAMS
, "RxMER Thresholding Parameters"},
2867 {OPT_REQ_TRIGGER_DEFINITION
, "Trigger Definition"},
2871 static const value_string optreq_tlv_rxmer_thresh_params_vals
[] = {
2872 {OPT_REQ_RXMER_THRESH_PARAMS_MODULATION_ORDER
, "Modulation Order"},
2876 static const value_string opreq_tlv_rxmer_thresh_params_mod_order
[] = {
2896 static const value_string optreq_tlv_trigger_definition_vals
[] = {
2897 {OPT_REQ_TRIGGER_DEFINITION_TRIGGER_TYPE
, "Trigger Type"},
2898 {OPT_REQ_TRIGGER_DEFINITION_MEASUREMENT_DURATION
, "Measurement Duration"},
2899 {OPT_REQ_TRIGGER_DEFINITION_TRIGGERING_SID
, "Triggering SID"},
2900 {OPT_REQ_TRIGGER_DEFINITION_US_CHANNEL_ID
, "US channel ID"},
2901 {OPT_REQ_TRIGGER_DEFINITION_OUDP_SOUND_AMBIG_OFFSET
, "OUDP Sounding Ambiguity Offset"},
2902 {OPT_REQ_TRIGGER_DEFINITION_RXMER_TO_REPORT
, "RxMER Measurement to Report"},
2903 {OPT_REQ_TRIGGER_DEFINITION_START_TIME
, "Time-Triggered Start Time"},
2907 static const value_string optreq_tlv_triggered_definition_trigger_type_vals
[] = {
2908 {0, "OUDP Sounding Triggered"},
2909 {1, "ECT RxMER Probe Triggered"},
2910 {2, "Time Triggered"},
2914 static const value_string optreq_tlv_triggered_definition_rx_mer_to_report_vals
[] = {
2915 {0, "Report RxMER per Subcarrier for all subcarriers"},
2916 {1, "Report Average RxMER over all subcarriers"},
2917 {2, "Report both RxMER per Subcarrier and Average RxMER for all subcarriers"},
2921 static const value_string optrsp_tlv_vals
[] = {
2922 {OPT_RSP_RXMER
, "RxMER and SNR Margin Data"},
2923 {OPT_RSP_DATA_CW
, "Data Profile Codeword Data"},
2924 {OPT_RSP_NCP_FIELDS
, "NCP Fields Data"},
2928 static const value_string optrsp_rxmer_vals
[] = {
2929 {OPT_RSP_RXMER_SUBCARRIER
, "RxMER per Subcarrier"},
2930 {OPT_RSP_RXMER_SUBCARRIER_THRESHOLD
, "RxMER per Subcarrier Threshold Comparison Result"},
2931 {OPT_RSP_RXMER_SUBCARRIER_THRESHOLD_COUNT
, "Number of Subcarriers whose RxMER is RxMER Margin below the RxMER Target"},
2932 {OPT_RSP_RXMER_SNR_MARGIN
, "SNR Margin"},
2933 {OPT_RSP_RXMER_AVG
, "Average RxMER"},
2934 {OPT_RSP_RXMER_ECT_RBA_SUBBAND_DIRECTION
, "ECT RxMER Probe-Triggered RBA Sub-band Direction Set"},
2938 static const value_string optrsp_data_cw_vals
[] = {
2939 {OPT_RSP_DATA_CW_COUNT
, "Codeword Count"},
2940 {OPT_RSP_DATA_CW_CORRECTED
, "Corrected Codeword Count"},
2941 {OPT_RSP_DATA_CW_UNCORRECTABLE
, "Uncorrectable Codeword Count"},
2942 {OPT_RSP_DATA_CW_THRESHOLD_COMPARISON
, "Codeword Threshold Comparison Result for Candidate Profile"},
2946 static const value_string optrsp_data_cw_threshold_comparison_vals
[] = {
2947 {0, "Uncorrectable Codeword Count (N_e) reached"},
2948 {1, "Codeword Count (N_c) reached"},
2952 static const value_string optrsp_ncp_fields_vals
[] = {
2953 {OPT_RSP_NCP_FIELDS_COUNT
, "NCP Fields Count"},
2954 {OPT_RSP_NCP_FIELDS_FAILURE
, "NCP CRC Failure Count"},
2955 {OPT_RSP_NCP_FIELDS_THRESHOLD_COMPARISON
, "NCP CRC Threshold Comparison Result"},
2959 static const value_string optrsp_ncp_fields_threshold_comparison_vals
[] = {
2960 {0, "NCP CRC Failure Count (NF_e) reached"},
2961 {1, "NCP Fields Count (NF_c) reached"},
2965 static const value_string sid_field_bit15_14_vals
[] = {
2966 {0, "No error condition"},
2967 {1, "Power Adjustment not applied"},
2968 {2, "The current value for Pr is more than 3dB below the top of the dynamic range window for all channels"},
2969 {3, "Maximum Scheduled Codes Unnecessary"},
2973 static const value_string rba_subband_direction_vals
[] = {
2976 {2, "Undefined for this RBA"},
2980 static const value_string extended_us_channel_vals
[] = {
2981 {0, "Channel is not an Extended Upstream Channel"},
2982 {1, "Channel is an Extended Upstream Channel"},
2986 static const value_string cwt_op_code_vals
[] = {
2992 static const value_string cwt_status_vals
[] = {
2993 {1, "CWT-REQ accepted"},
2994 {2, "CWT-REQ rejected, invalid request"},
2995 {3, "CWT-REQ rejected, no-op"},
2996 {4, "CW aborted, transaction mismatch"},
2997 {5, "CW aborted, max duration timeout"},
3000 static const value_string cwt_tlv_vals
[] = {
3001 {1, "Phase Rotation"},
3002 {2, "Maximum Duration"},
3003 {3, "Upstream Encodings"},
3007 static const value_string cwt_phase_rotation_vals
[] = {
3014 static const value_string cwt_us_encodings_tlv_vals
[] = {
3015 {1, "Extended Upstream Channel ID"},
3016 {2, "Upstream Subcarrier Index"},
3021 static void ect_trans_id_val(char *buf
, uint16_t value
)
3024 snprintf(buf
, ITEM_LABEL_LENGTH
, "unsolicited ECT-RSP message");
3026 snprintf(buf
, ITEM_LABEL_LENGTH
, "%d", value
);
3029 static const value_string ect_rsp_code_vals
[] = {
3031 {1, "Reject, invalid parameters"},
3032 {2, "Reject, RBA not currently active"},
3033 {3, "Reject, Defer EC Training"},
3038 static const value_string ect_tlv_vals
[] = {
3039 {87, "Control Encodings"},
3044 static const value_string ect_control_tlv_vals
[] = {
3045 {1, "Sub-band Direction Set"},
3046 {2, "Training Status"},
3047 {3, "Training Method"},
3048 {4, "Partial Service Indicator"},
3049 {5, "Training Deferral Time"},
3050 {6, "RxMER Duration"},
3055 static const value_string ect_control_status_vals
[] = {
3057 {1, "Not yet converged"},
3058 {2, "No longer converged"},
3064 static const value_string ect_control_method_tlv_vals
[] = {
3065 {1, "Foreground Training Parameters"},
3066 {2, "Background Training Parameters"},
3067 {3, "Training Method"},
3068 {4, "Partial Service Indicator"},
3069 {5, "Training Deferral Time"},
3074 static const value_string ect_control_method_fg_tlv_vals
[] = {
3077 {3, "Expiration Time"},
3078 {4, "Downstream Zero Bit Loading"},
3082 /* TLV 87.3.1.1, 8.6 */
3083 static const unit_name_string units_symbols
= { " symbol", " symbols" };
3086 static const value_string ect_ds_zbl_vals
[] = {
3087 {0, "Not required"},
3093 static const value_string ect_control_method_bg_tlv_vals
[] = {
3096 {3, "Expiration Time"},
3097 {4, "Window Start Time"},
3102 static const value_string ect_control_partial_service_tlv_vals
[] = {
3103 {1, "Downstream Channel List"},
3104 {2, "Upstream Channel List"},
3109 static void ect_deferral_time_val(char *buf
, uint16_t value
)
3114 snprintf(buf
, ITEM_LABEL_LENGTH
, "Next time the RBA sub-band direction set is active");
3117 snprintf(buf
, ITEM_LABEL_LENGTH
, "When the channel(s) in the RBA on which partial service occurred have recovered");
3120 snprintf(buf
, ITEM_LABEL_LENGTH
, "%d ms", value
);
3124 static const range_string dpr_tg_id_vals
[] = {
3125 {0x01, 0xff, "TG ID"},
3126 {0x00, 0x00, "All Transmission Groups"},
3130 static const true_false_string tfs_ucd_change_ind_vals
= {"Changes", "No changes"};
3132 static const true_false_string tfs_allow_inhibit
= { "Inhibit Initial Ranging", "Ranging Allowed" };
3133 static const true_false_string type35ucd_tfs_present_not_present
= { "UCD35 is present for this UCID",
3134 "UCD35 is not present for this UCID" };
3136 static const true_false_string sid_field_bit15_tfs
= {
3137 "The commanded power level P1.6r_n is higher than the value corresponding to the top of the DRW.",
3138 "The commanded power level P1.6r_n is not higher than the value corresponding to the top of the DRW."
3141 static const true_false_string sid_field_bit14_tfs
= {
3142 "The commanded power level P1.6r_n is in excess of 6 dB below the value corresponding to the top of the DRW.",
3143 "The commanded power level P1.6r_n is not in excess of 6 dB below the value corresponding to the top of the DRW."
3146 static const value_string unique_unlimited
[] = {
3152 ofdma_ir_pow_ctrl_start_pow(char *buf
, uint32_t value
)
3154 snprintf(buf
, ITEM_LABEL_LENGTH
, "%.2f dBmV/1.6MHz", value
/4.0);
3158 ofdma_ir_pow_ctrl_step_size(char *buf
, uint32_t value
)
3160 snprintf(buf
, ITEM_LABEL_LENGTH
, "%.2f dB", value
/4.0);
3164 fourth_db(char *buf
, uint32_t value
)
3166 snprintf(buf
, ITEM_LABEL_LENGTH
, "%.2f dB", value
/4.0);
3170 d30_time_ticks(char *buf
, uint32_t value
)
3172 snprintf(buf
, ITEM_LABEL_LENGTH
, "%u 10.24 MHz time ticks (%.3f "UTF8_MICRO_SIGN
"s)",
3173 value
, value
/10.24);
3177 subc_assign_range(char *buf
, uint32_t value
)
3179 snprintf(buf
, ITEM_LABEL_LENGTH
, "%u - %u", value
>> 16, value
&0xFFFF);
3183 multipart_number_of_fragments(char *buf
, uint32_t value
)
3185 snprintf(buf
, ITEM_LABEL_LENGTH
, "%u (Actual Number of Fragments: %u)", value
, value
+ 1);
3188 /* table with an ID consisting of MMM Type as MSB and 3 type-specific LSB */
3189 static reassembly_table docsis_tlv_reassembly_table
;
3191 static const fragment_items docsis_tlv_frag_items
= {
3192 &ett_docsis_tlv_fragment
,
3193 &ett_docsis_tlv_fragments
,
3194 &hf_docsis_tlv_fragments
,
3195 &hf_docsis_tlv_fragment
,
3196 &hf_docsis_tlv_fragment_overlap
,
3197 &hf_docsis_tlv_fragment_overlap_conflict
,
3198 &hf_docsis_tlv_fragment_multiple_tails
,
3199 &hf_docsis_tlv_fragment_too_long_fragment
,
3200 &hf_docsis_tlv_fragment_error
,
3201 &hf_docsis_tlv_fragment_count
,
3202 &hf_docsis_tlv_reassembled_in
,
3203 &hf_docsis_tlv_reassembled_length
,
3204 &hf_docsis_tlv_reassembled_data
,
3209 dissect_multipart(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
,
3210 const uint32_t mmm_type
, uint32_t id
, const int fixed_byte_count
)
3212 /* Multipart MMM messages from version 5 onwards */
3213 unsigned version
, multipart
= 0, fragment
, last_fragment
, tlv_byte_count
;
3214 address save_src
, save_dst
;
3216 version
= GPOINTER_TO_UINT(p_get_proto_data(pinfo
->pool
, pinfo
, proto_docsis_mgmt
, KEY_MGMT_VERSION
));
3218 multipart
= GPOINTER_TO_UINT(p_get_proto_data(pinfo
->pool
, pinfo
, proto_docsis_mgmt
, KEY_MGMT_MULTIPART
));
3220 return tvb_new_subset_remaining(tvb
, fixed_byte_count
);
3222 id
+= mmm_type
<< 24;
3223 fragment
= multipart
& 0x0F;
3224 last_fragment
= multipart
>> 4;
3225 tlv_byte_count
= tvb_reported_length_remaining(tvb
, fixed_byte_count
);
3227 /* DOCSIS MAC management messages do not have network (IP) address. Use link (MAC) address instead. Same workflow as in wimax. */
3228 /* Save address pointers. */
3229 copy_address_shallow(&save_src
, &pinfo
->src
);
3230 copy_address_shallow(&save_dst
, &pinfo
->dst
);
3231 /* Use dl_src and dl_dst in defragmentation. */
3232 copy_address_shallow(&pinfo
->src
, &pinfo
->dl_src
);
3233 copy_address_shallow(&pinfo
->dst
, &pinfo
->dl_dst
);
3235 fragment_head
*fh
= fragment_add_seq_check(&docsis_tlv_reassembly_table
, tvb
, fixed_byte_count
, pinfo
, id
, NULL
,
3236 fragment
, tlv_byte_count
, (fragment
!= last_fragment
));
3238 /* Restore address pointers. */
3239 copy_address_shallow(&pinfo
->src
, &save_src
);
3240 copy_address_shallow(&pinfo
->dst
, &save_dst
);
3243 return process_reassembled_data(tvb
, fixed_byte_count
, pinfo
, "Reassembled TLVs", fh
, &docsis_tlv_frag_items
,
3249 dissect_sync (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
3252 proto_tree
*sync_tree
;
3254 col_set_str(pinfo
->cinfo
, COL_INFO
, "Sync Message");
3256 it
= proto_tree_add_item(tree
, proto_docsis_sync
, tvb
, 0, -1, ENC_NA
);
3257 sync_tree
= proto_item_add_subtree (it
, ett_docsis_sync
);
3259 proto_tree_add_item (sync_tree
, hf_docsis_sync_cmts_timestamp
, tvb
, 0, 4, ENC_BIG_ENDIAN
);
3261 return tvb_captured_length(tvb
);
3265 dissect_ucd_burst_descr(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, proto_item
* item
, int pos
, uint16_t len
)
3267 int tlvpos
, endtlvpos
;
3270 proto_tree
*burst_tree
;
3271 proto_item
*burst_item
, *burst_len_item
;
3275 endtlvpos
= tlvpos
+ len
;
3276 proto_tree_add_item_ret_uint (tree
, hf_docsis_ucd_iuc
, tvb
, tlvpos
++, 1, ENC_BIG_ENDIAN
, &iuc
);
3277 proto_item_append_text(item
, ": IUC %d (%s)", iuc
, val_to_str_const(iuc
,iuc_vals
, "Unknown IUC"));
3278 while (tlvpos
< endtlvpos
)
3280 tlvtype
= tvb_get_uint8 (tvb
, tlvpos
);
3281 burst_tree
= proto_tree_add_subtree (tree
, tvb
, tlvpos
, -1,
3282 ett_docsis_burst_tlv
, &burst_item
,
3283 val_to_str(tlvtype
, burst_tlv_vals
,
3284 "Unknown TLV (%u)"));
3285 proto_tree_add_uint (burst_tree
, hf_docsis_ucd_burst_type
, tvb
, tlvpos
++, 1, tlvtype
);
3286 burst_len_item
= proto_tree_add_item_ret_uint (burst_tree
, hf_docsis_ucd_burst_length
, tvb
, tlvpos
++, 1, ENC_NA
, &tlvlen
);
3287 proto_item_set_len(burst_item
, tlvlen
+ 2);
3290 case UCD_MODULATION
:
3293 proto_tree_add_item (burst_tree
, hf_docsis_burst_mod_type
, tvb
, tlvpos
, tlvlen
, ENC_BIG_ENDIAN
);
3297 expert_add_info_format(pinfo
, burst_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
3300 case UCD_DIFF_ENCODING
:
3303 proto_tree_add_item (burst_tree
, hf_docsis_burst_diff_encoding
, tvb
, tlvpos
, tlvlen
, ENC_BIG_ENDIAN
);
3307 expert_add_info_format(pinfo
, burst_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
3310 case UCD_PREAMBLE_LEN
:
3313 proto_tree_add_item (burst_tree
, hf_docsis_burst_preamble_len
, tvb
, tlvpos
, tlvlen
, ENC_BIG_ENDIAN
);
3317 expert_add_info_format(pinfo
, burst_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
3320 case UCD_PREAMBLE_VAL_OFF
:
3323 proto_tree_add_item (burst_tree
, hf_docsis_burst_preamble_val_off
, tvb
, tlvpos
, tlvlen
, ENC_BIG_ENDIAN
);
3327 expert_add_info_format(pinfo
, burst_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
3333 proto_tree_add_item (burst_tree
, hf_docsis_burst_fec
, tvb
, tlvpos
, tlvlen
, ENC_BIG_ENDIAN
);
3337 expert_add_info_format(pinfo
, burst_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
3340 case UCD_FEC_CODEWORD
:
3343 proto_tree_add_item (burst_tree
, hf_docsis_burst_fec_codeword
, tvb
, tlvpos
, tlvlen
, ENC_BIG_ENDIAN
);
3347 expert_add_info_format(pinfo
, burst_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
3350 case UCD_SCRAMBLER_SEED
:
3353 proto_tree_add_item (burst_tree
, hf_docsis_burst_scrambler_seed
, tvb
, tlvpos
, tlvlen
, ENC_BIG_ENDIAN
);
3357 expert_add_info_format(pinfo
, burst_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
3363 proto_tree_add_item (burst_tree
, hf_docsis_burst_max_burst
, tvb
, tlvpos
, tlvlen
, ENC_BIG_ENDIAN
);
3367 expert_add_info_format(pinfo
, burst_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
3370 case UCD_GUARD_TIME
:
3373 proto_tree_add_item (burst_tree
, hf_docsis_burst_guard_time
, tvb
, tlvpos
, tlvlen
, ENC_BIG_ENDIAN
);
3377 expert_add_info_format(pinfo
, burst_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
3380 case UCD_LAST_CW_LEN
:
3383 proto_tree_add_item (burst_tree
, hf_docsis_burst_last_cw_len
, tvb
, tlvpos
, tlvlen
, ENC_BIG_ENDIAN
);
3387 expert_add_info_format(pinfo
, burst_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
3390 case UCD_SCRAMBLER_ONOFF
:
3393 proto_tree_add_item (burst_tree
, hf_docsis_burst_scrambler_onoff
, tvb
, tlvpos
, tlvlen
, ENC_BIG_ENDIAN
);
3397 expert_add_info_format(pinfo
, burst_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
3400 case UCD_RS_INT_DEPTH
:
3403 proto_tree_add_item (burst_tree
, hf_docsis_rs_int_depth
, tvb
, tlvpos
, tlvlen
, ENC_BIG_ENDIAN
);
3407 expert_add_info_format(pinfo
, burst_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
3410 case UCD_RS_INT_BLOCK
:
3413 proto_tree_add_item (burst_tree
, hf_docsis_rs_int_block
, tvb
, tlvpos
, tlvlen
, ENC_BIG_ENDIAN
);
3417 expert_add_info_format(pinfo
, burst_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
3420 case UCD_PREAMBLE_TYPE
:
3423 proto_tree_add_item (burst_tree
, hf_docsis_preamble_type
, tvb
, tlvpos
, tlvlen
, ENC_BIG_ENDIAN
);
3427 expert_add_info_format(pinfo
, burst_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
3430 case UCD_SCMDA_SCRAMBLER_ONOFF
:
3433 proto_tree_add_item (burst_tree
, hf_docsis_ucd_scdma_scrambler_onoff
, tvb
, tlvpos
, tlvlen
, ENC_BIG_ENDIAN
);
3437 expert_add_info_format(pinfo
, burst_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
3440 case UCD_SCDMA_CODES_PER_SUBFRAME
:
3443 proto_tree_add_item (burst_tree
, hf_docsis_ucd_scdma_codes_per_subframe
, tvb
, tlvpos
, tlvlen
, ENC_BIG_ENDIAN
);
3447 expert_add_info_format(pinfo
, burst_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
3450 case UCD_SCDMA_FRAMER_INT_STEP_SIZE
:
3453 proto_tree_add_item (burst_tree
, hf_docsis_ucd_scdma_framer_int_step_size
, tvb
, tlvpos
, tlvlen
, ENC_BIG_ENDIAN
);
3457 expert_add_info_format(pinfo
, burst_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
3460 case UCD_TCM_ENABLED
:
3463 proto_tree_add_item (burst_tree
, hf_docsis_ucd_tcm_enabled
, tvb
, tlvpos
, tlvlen
, ENC_BIG_ENDIAN
);
3467 expert_add_info_format(pinfo
, burst_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
3470 case UCD_SUBC_INIT_RANG
:
3473 proto_tree_add_item (burst_tree
, hf_docsis_subc_init_rang
, tvb
, tlvpos
, tlvlen
, ENC_BIG_ENDIAN
);
3477 expert_add_info_format(pinfo
, burst_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
3480 case UCD_SUBC_FINE_RANG
:
3483 proto_tree_add_item (burst_tree
, hf_docsis_subc_fine_rang
, tvb
, tlvpos
, tlvlen
, ENC_BIG_ENDIAN
);
3487 expert_add_info_format(pinfo
, burst_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
3490 case UCD_OFDMA_PROFILE
:
3491 if ((tlvlen
% 2) == 0)
3493 for(i
=0; i
< tlvlen
; i
+=2) {
3494 proto_tree_add_item (burst_tree
, hf_docsis_ofdma_prof_mod_order
, tvb
, tlvpos
+ i
, 1, ENC_BIG_ENDIAN
);
3495 proto_tree_add_item (burst_tree
, hf_docsis_ofdma_prof_pilot_pattern
, tvb
, tlvpos
+ i
, 1, ENC_BIG_ENDIAN
);
3496 proto_tree_add_item (burst_tree
, hf_docsis_ofdma_prof_num_add_minislots
, tvb
, tlvpos
+ i
+ 1, 1, ENC_BIG_ENDIAN
);
3501 expert_add_info_format(pinfo
, burst_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u (even length expected)", tlvlen
);
3504 case UCD_OFDMA_IR_POWER_CONTROL
:
3507 proto_tree_add_item (burst_tree
, hf_docsis_ofdma_ir_pow_ctrl_start_pow
, tvb
, tlvpos
, tlvlen
, ENC_BIG_ENDIAN
);
3508 proto_tree_add_item (burst_tree
, hf_docsis_ofdma_ir_pow_ctrl_step_size
, tvb
, tlvpos
+ 1, tlvlen
, ENC_BIG_ENDIAN
);
3512 expert_add_info_format(pinfo
, burst_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
3516 } /* switch(tlvtype) */
3519 } /* while (tlvpos < endtlvpos) */
3524 dissect_any_ucd (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int proto_id
, int type_number
)
3527 uint32_t i
, upchid
, length
;
3528 uint8_t type
, symrate
;
3529 proto_tree
*ucd_tree
, *tlv_tree
;
3530 proto_item
*ucd_item
, *tlv_item
, *tlv_len_item
;
3532 ucd_item
= proto_tree_add_item(tree
, proto_id
, tvb
, 0, -1, ENC_NA
);
3533 ucd_tree
= proto_item_add_subtree (ucd_item
, ett_docsis_ucd
);
3534 proto_tree_add_item_ret_uint (ucd_tree
, hf_docsis_mgt_upstream_chid
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &upchid
);
3535 proto_tree_add_item (ucd_tree
, hf_docsis_ucd_config_ch_cnt
, tvb
, 1, 1, ENC_BIG_ENDIAN
);
3536 proto_tree_add_item (ucd_tree
, hf_docsis_ucd_mini_slot_size
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
3537 proto_tree_add_item (ucd_tree
, hf_docsis_mgt_down_chid
, tvb
, 3, 1, ENC_BIG_ENDIAN
);
3539 /* if the upstream Channel ID is 0 then this is for Telephony Return) */
3541 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
3542 "Type %d UCD Message: Channel ID = %u (U%u)", type_number
, upchid
,
3545 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
3546 "Type %d UCD Message: Channel ID = %u (Telephony Return)",
3547 type_number
, upchid
);
3550 while (tvb_reported_length_remaining(tvb
, pos
) > 0)
3552 type
= tvb_get_uint8 (tvb
, pos
);
3553 tlv_tree
= proto_tree_add_subtree(ucd_tree
, tvb
, pos
, -1,
3554 ett_docsis_tlv
, &tlv_item
,
3555 val_to_str(type
, channel_tlv_vals
,
3556 "Unknown TLV (%u)"));
3557 proto_tree_add_uint (tlv_tree
, hf_docsis_ucd_type
, tvb
, pos
, 1, type
);
3559 tlv_len_item
= proto_tree_add_item_ret_uint (tlv_tree
, hf_docsis_ucd_length
, tvb
, pos
, 1, ENC_NA
, &length
);
3561 proto_item_set_len(tlv_item
, length
+ 2);
3565 case UCD_SYMBOL_RATE
:
3568 symrate
= tvb_get_uint8 (tvb
, pos
);
3569 proto_tree_add_uint (tlv_tree
, hf_docsis_ucd_symbol_rate
, tvb
, pos
, length
, symrate
* 160);
3573 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3579 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_frequency
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
3583 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3587 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_preamble_pat
, tvb
, pos
, length
, ENC_NA
);
3589 case UCD_BURST_DESCR
:
3590 case UCD_BURST_DESCR5
: /* DOCSIS 2.0 Upstream Channel Descriptor */
3591 case UCD_BURST_DESCR23
:
3592 dissect_ucd_burst_descr(tvb
, pinfo
, tlv_tree
, tlv_item
, pos
, length
);
3594 case UCD_EXT_PREAMBLE
:
3595 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_ext_preamble_pat
, tvb
, pos
, length
, ENC_NA
);
3597 case UCD_SCDMA_MODE_ENABLED
:
3600 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_scdma_mode_enabled
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
3604 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3607 case UCD_SCDMA_SPREADING_INTERVAL
:
3610 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_scdma_spreading_interval
, tvb
, pos
, length
, ENC_NA
);
3614 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3617 case UCD_SCDMA_CODES_PER_MINI_SLOT
:
3620 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_scdma_codes_per_mini_slot
, tvb
, pos
, length
, ENC_NA
);
3624 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3627 case UCD_SCDMA_ACTIVE_CODES
:
3630 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_scdma_active_codes
, tvb
, pos
, length
, ENC_NA
);
3634 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3637 case UCD_SCDMA_CODE_HOPPING_SEED
:
3640 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_scdma_code_hopping_seed
, tvb
, pos
, length
, ENC_NA
);
3644 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3647 case UCD_SCDMA_US_RATIO_NUM
:
3650 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_scdma_us_ratio_num
, tvb
, pos
, length
, ENC_NA
);
3654 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3657 case UCD_SCDMA_US_RATIO_DENOM
:
3660 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_scdma_us_ratio_denom
, tvb
, pos
, length
, ENC_NA
);
3664 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3667 case UCD_SCDMA_TIMESTAMP_SNAPSHOT
:
3670 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_scdma_timestamp_snapshot
, tvb
, pos
, length
, ENC_NA
);
3674 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3677 case UCD_MAINTAIN_POWER_SPECTRAL_DENSITY
:
3680 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_maintain_power_spectral_density
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
3684 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3687 case UCD_RANGING_REQUIRED
:
3690 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_ranging_required
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
3694 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3697 case UCD_MAX_SCHEDULED_CODES
:
3700 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_max_scheduled_codes
, tvb
, pos
, length
, ENC_NA
);
3704 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3707 case UCD_RANGING_HOLD_OFF_PRIORITY_FIELD
:
3710 static int * const ucd_rnghoff
[] = {
3711 &hf_docsis_ucd_rnghoff_cm
,
3712 &hf_docsis_ucd_rnghoff_erouter
,
3713 &hf_docsis_ucd_rnghoff_emta
,
3714 &hf_docsis_ucd_rnghoff_estb
,
3715 &hf_docsis_ucd_rnghoff_rsvd
,
3716 &hf_docsis_ucd_rnghoff_id_ext
,
3720 proto_tree_add_bitmask_list(tlv_tree
, tvb
, pos
, length
, ucd_rnghoff
, ENC_BIG_ENDIAN
);
3724 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3727 case UCD_RANGING_CHANNEL_CLASS_ID
:
3730 static int * const ucd_chan_class_id
[] = {
3731 &hf_docsis_ucd_chan_class_id_cm
,
3732 &hf_docsis_ucd_chan_class_id_erouter
,
3733 &hf_docsis_ucd_chan_class_id_emta
,
3734 &hf_docsis_ucd_chan_class_id_estb
,
3735 &hf_docsis_ucd_chan_class_id_rsvd
,
3736 &hf_docsis_ucd_chan_class_id_id_ext
,
3740 proto_tree_add_bitmask_list(tlv_tree
, tvb
, pos
, length
, ucd_chan_class_id
, ENC_BIG_ENDIAN
);
3744 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3747 case UCD_SCDMA_SELECTION_ACTIVE_CODES_AND_CODE_HOPPING
:
3750 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_active_code_hopping
, tvb
, pos
, length
, ENC_NA
);
3754 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3757 case UCD_SCDMA_SELECTION_STRING_FOR_ACTIVE_CODES
:
3760 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_scdma_selection_active_codes
, tvb
, pos
, length
, ENC_NA
);
3764 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3767 case UCD_HIGHER_UCD_FOR_SAME_UCID
:
3770 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_higher_ucd_for_same_ucid
, tvb
, pos
, length
, ENC_NA
);
3771 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_higher_ucd_for_same_ucid_resv
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
3775 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3778 case UCD_CHANGE_IND_BITMASK
:
3781 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_change_ind_bitmask_subc_excl_band
, tvb
, pos
+ 1, 1, ENC_NA
);
3782 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_change_ind_bitmask_unused_subc
, tvb
, pos
+ 1, 1, ENC_NA
);
3783 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_change_ind_bitmask_other_subc
, tvb
, pos
+ 1, 1, ENC_NA
);
3784 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc5
, tvb
, pos
+ 1, 1, ENC_NA
);
3785 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc6
, tvb
, pos
+ 1, 1, ENC_NA
);
3786 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc9
, tvb
, pos
+ 1, 1, ENC_NA
);
3787 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc10
, tvb
, pos
+ 1, 1, ENC_NA
);
3788 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc11
, tvb
, pos
+ 1, 1, ENC_NA
);
3789 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc12
, tvb
, pos
, 1, ENC_NA
);
3790 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc13
, tvb
, pos
, 1, ENC_NA
);
3791 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc3_or_4
, tvb
, pos
, 1, ENC_NA
);
3792 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_change_ind_bitmask_reserved
, tvb
, pos
, 1, ENC_NA
);
3796 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3799 case UCD_OFDMA_TIMESTAMP_SNAPSHOT
:
3802 static int* const timestamp_snapshot_parts
[] = {
3803 &hf_docsis_ucd_ofdma_timestamp_snapshot_reserved
,
3804 &hf_docsis_ucd_ofdma_timestamp_snapshot_d30timestamp
,
3805 &hf_docsis_ucd_ofdma_timestamp_snapshot_4msbits_of_div20
,
3808 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_ofdma_timestamp_snapshot
, tvb
, pos
, length
, ENC_NA
);
3809 proto_tree_add_bitmask_list(tlv_tree
, tvb
, pos
, 5, timestamp_snapshot_parts
, ENC_BIG_ENDIAN
);
3810 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_ofdma_timestamp_snapshot_minislot_count
, tvb
, pos
+5, length
-5, ENC_NA
);
3814 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3817 case UCD_OFDMA_CYCLIC_PREFIX_SIZE
:
3820 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_ofdma_cyclic_prefix_size
, tvb
, pos
, length
, ENC_NA
);
3824 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3827 case UCD_OFDMA_ROLLOFF_PERIOD_SIZE
:
3830 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_ofdma_rolloff_period_size
, tvb
, pos
, length
, ENC_NA
);
3834 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3837 case UCD_SUBCARRIER_SPACING
:
3840 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_subc_spacing
, tvb
, pos
, length
, ENC_NA
);
3844 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3847 case UCD_CENTER_FREQ_SUBC_0
:
3850 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_cent_freq_subc0
, tvb
, pos
, length
, ENC_NA
);
3854 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3857 case UCD_SUBC_EXCL_BAND
:
3858 if ((length
% 4) == 0)
3860 for(i
= 0; i
< length
; i
+=4) {
3861 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_subcarrier_range
, tvb
, pos
+i
, 4, ENC_NA
);
3866 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3869 case UCD_UNUSED_SUBC_SPEC
:
3870 if ((length
% 4) == 0)
3872 for(i
= 0; i
< length
; i
+=4) {
3873 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_subcarrier_range
, tvb
, pos
+i
, 4, ENC_NA
);
3878 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3881 case UCD_SYMB_IN_OFDMA_FRAME
:
3884 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_symb_ofdma_frame
, tvb
, pos
, length
, ENC_NA
);
3888 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3894 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_rand_seed
, tvb
, pos
, length
, ENC_NA
);
3898 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3901 case EXTENDED_US_CHANNEL
:
3904 proto_tree_add_item (tlv_tree
, hf_docsis_ucd_extended_us_channel
, tvb
, pos
, length
, ENC_NA
);
3908 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
3911 } /* switch(type) */
3913 } /* tvb_reported_length_remaining(tvb, pos) > 0 */
3915 return tvb_captured_length(tvb
);
3919 dissect_ucd (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
3921 return dissect_any_ucd(tvb
, pinfo
, tree
, proto_docsis_ucd
, MGT_UCD
);
3925 dissect_any_map (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, uint8_t version
, void* data _U_
)
3927 uint32_t i
, numie
, upchid
, ucd_count
, cat
= 0, ie
;
3930 proto_tree
*map_tree
;
3931 static int * const ies
[] = {
3934 &hf_docsis_map_offset
,
3938 static int * const probe_ies
[] = {
3944 &hf_docsis_map_probe_frame
,
3945 &hf_docsis_map_symbol_in_frame
,
3946 &hf_docsis_map_start_subc
,
3947 &hf_docsis_map_subc_skip
,
3951 static int * const probe_ies_ect
[] = {
3957 &hf_docsis_map_probe_frame
,
3958 &hf_docsis_map_symbol_in_frame
,
3959 &hf_docsis_map_start_subc
,
3966 it
= proto_tree_add_item(tree
, proto_docsis_map_v1
, tvb
, 0, -1, ENC_NA
);
3969 it
= proto_tree_add_item(tree
, proto_docsis_map_v5
, tvb
, 0, -1, ENC_NA
);
3972 it
= proto_tree_add_item(tree
, proto_docsis_map_v1
, tvb
, 0, -1, ENC_NA
);
3973 expert_add_info_format(pinfo
, it
, &ei_docsis_mgmt_version_unknown
, "Unknown MAP MAC Management version: %u", version
);
3974 return tvb_captured_length(tvb
);
3977 map_tree
= proto_item_add_subtree (it
, ett_docsis_map
);
3979 proto_tree_add_item_ret_uint (map_tree
, hf_docsis_mgt_upstream_chid
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &upchid
);
3980 proto_tree_add_item_ret_uint (map_tree
, hf_docsis_map_ucd_count
, tvb
, 1, 1, ENC_BIG_ENDIAN
, &ucd_count
);
3983 proto_tree_add_item_ret_uint (map_tree
, hf_docsis_map_numie
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &numie
);
3984 proto_tree_add_item (map_tree
, hf_docsis_map_rsvd
, tvb
, 3, 1, ENC_BIG_ENDIAN
);
3987 proto_tree_add_item_ret_uint (map_tree
, hf_docsis_map_numie_v5
, tvb
, 2, 2, ENC_BIG_ENDIAN
, &numie
);
3988 proto_tree_add_item (map_tree
, hf_docsis_map_rsvd_v5
, tvb
, 3, 1, ENC_BIG_ENDIAN
);
3989 proto_tree_add_item_ret_uint (map_tree
, hf_docsis_map_cat
, tvb
, 3, 1, ENC_BIG_ENDIAN
, &cat
);
3992 it
= proto_tree_add_item(tree
, proto_docsis_map_v1
, tvb
, 0, -1, ENC_NA
);
3993 expert_add_info_format(pinfo
, it
, &ei_docsis_mgmt_version_unknown
, "Unknown MAP MAC Management version: %u", version
);
3994 return tvb_captured_length(tvb
);
3998 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
3999 "Map Message: Version: %d, Channel ID = %u (U%u), UCD Count = %u, # IE's = %u",
4000 version
, upchid
, upchid
- 1, ucd_count
, numie
);
4002 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
4003 "Map Message: Version: %d, Channel ID = %u (Telephony Return), UCD Count = %u, # IE's = %u",
4004 version
, upchid
, ucd_count
, numie
);
4006 proto_tree_add_item (map_tree
, hf_docsis_map_alloc_start
, tvb
, 4, 4, ENC_BIG_ENDIAN
);
4008 proto_tree_add_item (map_tree
, hf_docsis_map_ack_time
, tvb
, 8, 4, ENC_BIG_ENDIAN
);
4009 proto_tree_add_item (map_tree
, hf_docsis_map_rng_start
, tvb
, 12, 1, ENC_BIG_ENDIAN
);
4010 proto_tree_add_item (map_tree
, hf_docsis_map_rng_end
, tvb
, 13, 1, ENC_BIG_ENDIAN
);
4011 proto_tree_add_item (map_tree
, hf_docsis_map_data_start
, tvb
, 14, 1, ENC_BIG_ENDIAN
);
4012 proto_tree_add_item (map_tree
, hf_docsis_map_data_end
, tvb
, 15, 1, ENC_BIG_ENDIAN
);
4015 for (i
= 0; i
< numie
; i
++)
4017 proto_tree_add_bitmask_with_flags(map_tree
, tvb
, pos
, hf_docsis_map_ie
, ett_docsis_map_ie
, ies
, ENC_BIG_ENDIAN
, BMT_NO_FLAGS
);
4023 for (i
= 0; i
< numie
; i
++)
4025 ie
= tvb_get_uint32(tvb
, pos
, ENC_BIG_ENDIAN
);
4026 if ((ie
& (MAP_PROBE_IE_PW_MASK
| MAP_PROBE_IE_ST_MASK
)) == 0)
4027 proto_tree_add_bitmask_with_flags(map_tree
, tvb
, pos
, hf_docsis_map_probe_ie
, ett_docsis_map_probe_ie
, probe_ies_ect
, ENC_BIG_ENDIAN
, BMT_NO_FLAGS
);
4029 proto_tree_add_bitmask_with_flags(map_tree
, tvb
, pos
, hf_docsis_map_probe_ie
, ett_docsis_map_probe_ie
, probe_ies
, ENC_BIG_ENDIAN
, BMT_NO_FLAGS
);
4034 return tvb_captured_length(tvb
);
4038 static int dissect_map_v1 (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
) {
4039 return dissect_any_map(tvb
, pinfo
, tree
, MAP_v1
, data
);
4042 static int dissect_map_v5 (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
) {
4043 return dissect_any_map(tvb
, pinfo
, tree
, MAP_v5
, data
);
4047 dissect_rngreq (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
4050 proto_tree
*rngreq_tree
;
4054 it
= proto_tree_add_item(tree
, proto_docsis_rngreq
, tvb
, 0, -1, ENC_NA
);
4055 rngreq_tree
= proto_item_add_subtree (it
, ett_docsis_rngreq
);
4057 version
= GPOINTER_TO_UINT(p_get_proto_data(pinfo
->pool
, pinfo
, proto_docsis_mgmt
, KEY_MGMT_VERSION
));
4059 proto_tree_add_item (rngreq_tree
, hf_docsis_rngreq_sid_field_bit15_14
, tvb
, 0, 1, ENC_BIG_ENDIAN
);
4062 //RNG-REQ sent to 3.1 CMTS
4063 proto_tree_add_item (rngreq_tree
, hf_docsis_rngreq_sid_field_bit15
, tvb
, 0, 1, ENC_BIG_ENDIAN
);
4064 proto_tree_add_item (rngreq_tree
, hf_docsis_rngreq_sid_field_bit14
, tvb
, 0, 1, ENC_BIG_ENDIAN
);
4066 proto_tree_add_item_ret_uint (rngreq_tree
, hf_docsis_rngreq_sid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &sid
);
4069 col_add_fstr (pinfo
->cinfo
, COL_INFO
, "Ranging Request: SID = %u",
4072 col_set_str(pinfo
->cinfo
, COL_INFO
, "Initial Ranging Request SID = 0");
4074 proto_tree_add_item (rngreq_tree
, hf_docsis_mgt_down_chid
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
4075 proto_tree_add_item (rngreq_tree
, hf_docsis_rngreq_pend_compl
, tvb
, 3, 1, ENC_BIG_ENDIAN
);
4077 return tvb_captured_length(tvb
);
4081 dissect_rngrsp_transmit_equalization_encodings_scdma_tdma(tvbuff_t
* tvb
, proto_item
* it
, unsigned start
, uint16_t len
)
4084 proto_tree
*transmit_equalization_encodings_tree
, *coef_tree
;
4086 transmit_equalization_encodings_tree
= proto_item_add_subtree (it
, ett_docsis_rngrsp_tlv_transmit_equalization_encodings
);
4088 proto_tree_add_item (transmit_equalization_encodings_tree
, hf_docsis_rngrsp_trans_eq_enc_scdma_tdma_main_tap_location
, tvb
, start
, 1, ENC_BIG_ENDIAN
);
4089 proto_tree_add_item (transmit_equalization_encodings_tree
, hf_docsis_rngrsp_trans_eq_enc_scdma_tdma_number_of_forward_taps_per_symbol
, tvb
, start
+ 1, 1, ENC_BIG_ENDIAN
);
4090 proto_tree_add_item (transmit_equalization_encodings_tree
, hf_docsis_rngrsp_trans_eq_enc_scdma_tdma_number_of_forward_taps_n
, tvb
, start
+ 2, 1, ENC_BIG_ENDIAN
);
4091 proto_tree_add_item (transmit_equalization_encodings_tree
, hf_docsis_rngrsp_trans_eq_enc_scdma_tdma_reserved
, tvb
, start
+ 3, 1, ENC_BIG_ENDIAN
);
4093 for(i
=4; i
< len
; i
+=4) {
4095 coef_tree
= proto_tree_add_subtree_format (transmit_equalization_encodings_tree
, tvb
, start
+ i
, 4, ett_docsis_rngrsp_tlv_transmit_equalization_encodings_coef
, NULL
, "Tap %d: ", i
/4);
4096 proto_tree_add_item_ret_int (coef_tree
, hf_docsis_rngrsp_trans_eq_enc_coef_real
, tvb
, start
+ i
, 2, ENC_BIG_ENDIAN
, &real
);
4097 proto_tree_add_item_ret_int (coef_tree
, hf_docsis_rngrsp_trans_eq_enc_coef_imag
, tvb
, start
+ i
+ 2, 2, ENC_BIG_ENDIAN
, &imag
);
4098 proto_item_append_text(coef_tree
, "real: %f, imag: %f", (int16_t) real
/16384.0, (int16_t) imag
/16384.0);
4103 dissect_rngrsp_transmit_equalization_encodings_ofdma(tvbuff_t
* tvb
, proto_tree
* tree
, unsigned start
, uint16_t len
)
4107 proto_tree
*transmit_equalization_encodings_tree
, *coef_tree
;
4108 unsigned lowest_subc
;
4110 it
= proto_tree_add_item(tree
, hf_docsis_rngrsp_trans_eq_data
, tvb
, start
, len
, ENC_NA
);
4111 transmit_equalization_encodings_tree
= proto_item_add_subtree (it
, ett_docsis_rngrsp_tlv_transmit_equalization_encodings
);
4113 proto_tree_add_item_ret_uint (transmit_equalization_encodings_tree
, hf_docsis_rngrsp_trans_eq_enc_lowest_subc
, tvb
, start
, 3, ENC_BIG_ENDIAN
, &lowest_subc
);
4114 proto_tree_add_item (transmit_equalization_encodings_tree
, hf_docsis_rngrsp_trans_eq_enc_highest_subc
, tvb
, start
, 3, ENC_BIG_ENDIAN
);
4115 for(i
=3; i
< len
; i
+=4) {
4117 coef_tree
= proto_tree_add_subtree_format (transmit_equalization_encodings_tree
, tvb
, start
+ i
, 4, ett_docsis_rngrsp_tlv_transmit_equalization_encodings_coef
, NULL
, "Subcarrier %d: ", lowest_subc
+ (i
-3)/4);
4118 proto_tree_add_item_ret_int (coef_tree
, hf_docsis_rngrsp_trans_eq_enc_coef_real
, tvb
, start
+ i
, 2, ENC_BIG_ENDIAN
, &real
);
4119 proto_tree_add_item_ret_int (coef_tree
, hf_docsis_rngrsp_trans_eq_enc_coef_imag
, tvb
, start
+ i
+ 2, 2, ENC_BIG_ENDIAN
, &imag
);
4120 proto_item_append_text(coef_tree
, "real: %f, imag: %f", (int16_t) real
/16384.0, (int16_t) imag
/16384.0);
4125 dissect_rngrsp_commanded_power(tvbuff_t
* tvb
, proto_tree
* tree
, unsigned start
, uint16_t len
)
4129 uint8_t tlvtype
, tlvlen
;
4131 proto_tree
*commanded_power_tree
;
4132 proto_tree
*commanded_power_subtlv_tree
;
4133 proto_item
*rngrsptlv_commanded_power_subtlv
;
4136 it
= proto_tree_add_item(tree
, hf_docsis_rngrsp_commanded_power_data
, tvb
, start
-2, len
+2, ENC_NA
);
4137 commanded_power_tree
= proto_item_add_subtree (it
, ett_docsis_rngrsp_tlv_commanded_power
);
4141 while (pos
< start
+ len
)
4143 tlvtype
= tvb_get_uint8 (tvb
, pos
);
4144 commanded_power_subtlv_tree
= proto_tree_add_subtree(commanded_power_tree
, tvb
, pos
, -1,
4145 ett_docsis_rngrsp_tlv_commanded_power_subtlv
, &rngrsptlv_commanded_power_subtlv
,
4146 val_to_str(tlvtype
, rngrsp_tlv_commanded_power_subtlv_vals
,
4147 "Unknown TLV (%u)"));
4149 tlvlen
= tvb_get_uint8 (tvb
, pos
);
4154 case RNGRSP_COMMANDED_POWER_DYNAMIC_RANGE_WINDOW
:
4157 proto_tree_add_item (commanded_power_subtlv_tree
,
4158 hf_docsis_rngrsp_commanded_power_dynamic_range_window
, tvb
, pos
,
4159 tlvlen
, ENC_BIG_ENDIAN
);
4162 case RNGRSP_COMMANDED_POWER_UCID_AND_POWER_LEVEL_LIST
:
4163 if ((tlvlen
%3)== 0)
4165 for(i
=0; i
< tlvlen
; i
+=3)
4167 proto_tree_add_item (commanded_power_subtlv_tree
,
4168 hf_docsis_rngrsp_commanded_power_ucid
, tvb
, pos
+ i
,
4170 proto_tree_add_item (commanded_power_subtlv_tree
,
4171 hf_docsis_rngrsp_commanded_power_trans_pow_lvl
, tvb
, pos
+ i
+1,
4182 dissect_rngrsp_tlv (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* rngrsp_tree
)
4184 proto_item
*rngrsptlv_item
, *it
;
4185 proto_tree
*rngrsptlv_tree
;
4191 while (tvb_reported_length_remaining(tvb
, pos
) > 0)
4193 tlvtype
= tvb_get_uint8 (tvb
, pos
);
4194 rngrsptlv_tree
= proto_tree_add_subtree(rngrsp_tree
, tvb
, pos
, -1,
4195 ett_docsis_rngrsptlv
, &rngrsptlv_item
,
4196 val_to_str(tlvtype
, rngrsp_tlv_vals
,
4197 "Unknown TLV (%u)"));
4198 proto_tree_add_uint (rngrsptlv_tree
, hf_docsis_rngrsp_type
, tvb
, pos
, 1, tlvtype
);
4200 tlvlen
= tvb_get_uint8 (tvb
, pos
);
4201 if (tlvtype
== RNGRSP_TRANSMIT_EQ_ADJUST_OFDMA_CHANNELS
|| tlvtype
== RNGRSP_TRANSMIT_EQ_SET_OFDMA_CHANNELS
) {
4202 proto_tree_add_item_ret_uint (rngrsptlv_tree
, hf_docsis_rngrsp_length
, tvb
, pos
, 2, ENC_NA
, &tlvlen
);
4205 proto_tree_add_item_ret_uint (rngrsptlv_tree
, hf_docsis_rngrsp_length
, tvb
, pos
, 1, ENC_NA
, &tlvlen
);
4208 proto_item_set_len(rngrsptlv_item
, tlvlen
+ 2);
4214 proto_tree_add_item (rngrsptlv_tree
, hf_docsis_rngrsp_timing_adj
, tvb
, pos
, tlvlen
, ENC_BIG_ENDIAN
);
4217 case RNGRSP_PWR_LEVEL_ADJ
:
4220 proto_tree_add_item (rngrsptlv_tree
, hf_docsis_rngrsp_power_adj
, tvb
, pos
, tlvlen
, ENC_NA
);
4223 case RNGRSP_OFFSET_FREQ_ADJ
:
4226 proto_tree_add_item (rngrsptlv_tree
, hf_docsis_rngrsp_freq_adj
, tvb
, pos
, tlvlen
, ENC_BIG_ENDIAN
);
4229 case RNGRSP_TRANSMIT_EQ_ADJ
:
4230 it
= proto_tree_add_item (rngrsptlv_tree
, hf_docsis_rngrsp_xmit_eq_adj
, tvb
, pos
, tlvlen
, ENC_NA
);
4231 dissect_rngrsp_transmit_equalization_encodings_scdma_tdma(tvb
, it
, pos
, tlvlen
);
4233 case RNGRSP_RANGING_STATUS
:
4236 proto_tree_add_item (rngrsptlv_tree
, hf_docsis_rngrsp_ranging_status
, tvb
, pos
, tlvlen
, ENC_BIG_ENDIAN
);
4239 case RNGRSP_DOWN_FREQ_OVER
:
4242 proto_tree_add_item (rngrsptlv_tree
, hf_docsis_rngrsp_down_freq_over
, tvb
, pos
, tlvlen
, ENC_BIG_ENDIAN
);
4245 case RNGRSP_UP_CHID_OVER
:
4248 proto_tree_add_item (rngrsptlv_tree
, hf_docsis_rngrsp_upstream_ch_over
, tvb
, pos
, tlvlen
, ENC_BIG_ENDIAN
);
4251 case RNGRSP_TRANSMIT_EQ_SET
:
4252 it
= proto_tree_add_item (rngrsptlv_tree
, hf_docsis_rngrsp_xmit_eq_set
, tvb
, pos
, tlvlen
, ENC_NA
);
4253 dissect_rngrsp_transmit_equalization_encodings_scdma_tdma(tvb
, it
, pos
, tlvlen
);
4255 case RNGRSP_T4_TIMEOUT_MULTIPLIER
:
4257 proto_tree_add_item (rngrsptlv_tree
, hf_docsis_rngrsp_rngrsp_t4_timeout_multiplier
, tvb
, pos
, tlvlen
, ENC_BIG_ENDIAN
);
4260 expert_add_info_format(pinfo
, rngrsptlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
4263 case RNGRSP_DYNAMIC_RANGE_WINDOW_UPPER_EDGE
:
4265 proto_tree_add_item (rngrsptlv_tree
, hf_docsis_rngrsp_dynamic_range_window_upper_edge
, tvb
, pos
, tlvlen
, ENC_BIG_ENDIAN
);
4268 expert_add_info_format(pinfo
, rngrsptlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", tlvlen
);
4271 case RNGRSP_TRANSMIT_EQ_ADJUST_OFDMA_CHANNELS
:
4272 dissect_rngrsp_transmit_equalization_encodings_ofdma(tvb
, rngrsptlv_tree
, pos
, tlvlen
);
4274 case RNGRSP_TRANSMIT_EQ_SET_OFDMA_CHANNELS
:
4275 dissect_rngrsp_transmit_equalization_encodings_ofdma(tvb
, rngrsptlv_tree
, pos
, tlvlen
);
4277 case RNGRSP_COMMANDED_POWER
:
4278 case RNGRSP_EXT_US_COMMANDED_POWER
:
4279 dissect_rngrsp_commanded_power(tvb
, rngrsptlv_tree
, pos
, tlvlen
);
4283 proto_tree_add_item (rngrsp_tree
, hf_docsis_rngrsp_tlv_unknown
, tvb
, pos
, tlvlen
, ENC_NA
);
4284 } /* switch(tlvtype) */
4286 } /* while (tvb_reported_length_remaining(tvb, pos) > 0) */
4290 dissect_rngrsp (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
4293 proto_tree
*rngrsp_tree
;
4294 tvbuff_t
*tlv_tvb
= NULL
;
4295 uint32_t sid
, upchid
, id
;
4297 it
= proto_tree_add_item(tree
, proto_docsis_rngrsp
, tvb
, 0, -1, ENC_NA
);
4298 rngrsp_tree
= proto_item_add_subtree (it
, ett_docsis_rngrsp
);
4300 proto_tree_add_item_ret_uint (rngrsp_tree
, hf_docsis_rngrsp_sid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &sid
);
4301 proto_tree_add_item_ret_uint (rngrsp_tree
, hf_docsis_mgt_upstream_chid
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &upchid
);
4304 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
4305 "Ranging Response: SID = %u, Upstream Channel = %u (U%u)",
4306 sid
, upchid
, upchid
- 1);
4308 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
4309 "Ranging Response: SID = %u, Telephony Return", sid
);
4312 id
= (upchid
<< 16) + sid
;
4313 tlv_tvb
= dissect_multipart(tvb
, pinfo
, rngrsp_tree
, data
, MGT_RNG_RSP
, id
, 3);
4314 if (tlv_tvb
!= NULL
&& tvb_captured_length(tlv_tvb
))
4315 dissect_rngrsp_tlv(tlv_tvb
, pinfo
, rngrsp_tree
);
4316 return tvb_captured_length(tvb
);
4320 dissect_regreq (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
4323 proto_tree
*regreq_tree
;
4327 it
= proto_tree_add_item(tree
, proto_docsis_regreq
, tvb
, 0, -1, ENC_NA
);
4328 regreq_tree
= proto_item_add_subtree (it
, ett_docsis_regreq
);
4330 proto_tree_add_item_ret_uint (regreq_tree
, hf_docsis_regreq_sid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &sid
);
4332 col_add_fstr (pinfo
->cinfo
, COL_INFO
, "Registration Request SID = %u", sid
);
4334 /* Call Dissector for Appendix C TlV's */
4335 next_tvb
= tvb_new_subset_remaining (tvb
, 2);
4336 call_dissector (docsis_tlv_handle
, next_tvb
, pinfo
, regreq_tree
);
4337 return tvb_captured_length(tvb
);
4341 dissect_regrsp (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
4344 proto_tree
*regrsp_tree
;
4345 uint32_t sid
, response
;
4348 it
= proto_tree_add_item(tree
, proto_docsis_regrsp
, tvb
, 0, -1, ENC_NA
);
4349 regrsp_tree
= proto_item_add_subtree (it
, ett_docsis_regrsp
);
4350 proto_tree_add_item_ret_uint (regrsp_tree
, hf_docsis_regrsp_sid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &sid
);
4351 proto_tree_add_item_ret_uint (regrsp_tree
, hf_docsis_regrsp_response
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &response
);
4353 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
4354 "Registration Response SID = %u (%s)", sid
,
4355 val_to_str_ext (response
, &docsis_conf_code_ext
, "%d"));
4357 /* Call Dissector for Appendix C TLVs */
4358 next_tvb
= tvb_new_subset_remaining (tvb
, 3);
4359 call_dissector (docsis_tlv_handle
, next_tvb
, pinfo
, regrsp_tree
);
4360 return tvb_captured_length(tvb
);
4364 dissect_uccreq (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
4367 proto_tree
*uccreq_tree
;
4370 it
= proto_tree_add_item (tree
, proto_docsis_uccreq
, tvb
, 0, -1, ENC_NA
);
4371 uccreq_tree
= proto_item_add_subtree (it
, ett_docsis_uccreq
);
4373 proto_tree_add_item_ret_uint (uccreq_tree
, hf_docsis_mgt_upstream_chid
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &chid
);
4375 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
4376 "Upstream Channel Change request: Channel ID = %u (U%u)",
4377 chid
, (chid
> 0 ? chid
- 1 : chid
));
4379 return tvb_captured_length(tvb
);
4383 dissect_uccrsp (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
4386 proto_tree
*uccrsp_tree
;
4389 it
= proto_tree_add_item(tree
, proto_docsis_uccrsp
, tvb
, 0, -1, ENC_NA
);
4390 uccrsp_tree
= proto_item_add_subtree (it
, ett_docsis_uccrsp
);
4392 proto_tree_add_item_ret_uint (uccrsp_tree
, hf_docsis_mgt_upstream_chid
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &chid
);
4394 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
4395 "Upstream Channel Change response: Channel ID = %u (U%u)",
4396 chid
, (chid
> 0 ? chid
- 1 : chid
));
4398 return tvb_captured_length(tvb
);
4401 /* The dissect_attrs() function does the actual work to dissect the
4402 * attributes. It's called recursively, to dissect embedded attributes
4405 // NOLINTNEXTLINE(misc-no-recursion)
4406 dissect_attrs(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_item
*item _U_
, proto_tree
*tree
, int pos
, int length
)
4408 proto_item
*tlv_item
, *tlv_subitem
;
4409 proto_tree
*tlv_tree
, *tlv_subtree
;
4410 uint32_t tlv_type
, tlv_subtype
;
4411 int tlv_length
, end
= pos
+ length
, i
, attr_end
;
4415 asn1_ctx_t asn1_ctx
;
4417 static int *const bpkmattr_crypto_suite
[] = {
4418 &hf_docsis_bpkmattr_crypto_suite_encr
,
4419 &hf_docsis_bpkmattr_crypto_suite_auth
,
4423 increment_dissection_depth(pinfo
);
4424 while (pos
+ 2 < end
)
4426 tlv_type
= tvb_get_uint8(tvb
, pos
);
4427 tlv_length
= tvb_get_ntohs(tvb
, pos
+ 1);
4428 tlv_item
= proto_tree_add_item(tree
, hf_docsis_bpkmattr_tlv
, tvb
, pos
, tlv_length
+ 3, ENC_NA
);
4429 proto_item_set_text(tlv_item
, "%s", val_to_str(tlv_type
, bpkmattr_tlv_vals
, "Unknown TLV: %u"));
4430 tlv_tree
= proto_item_add_subtree(tlv_item
, ett_docsis_bpkmattr_tlv
);
4431 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_tlv_type
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
4432 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_tlv_length
, tvb
, pos
+ 1, 2, ENC_BIG_ENDIAN
);
4435 if (tlv_length
> 1487)
4436 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "TLV length too big: %i", tlv_length
);
4440 case BPKM_SERIAL_NUM
:
4441 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_serial_num
, tvb
, pos
, tlv_length
, ENC_ASCII
);
4442 if (tlv_length
> 255)
4443 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "TLV length too big: %i", tlv_length
);
4445 case BPKM_MANUFACTURER_ID
:
4446 if (tlv_length
== 3) {
4447 tlv_subitem
= proto_tree_add_item_ret_uint(tlv_tree
, hf_docsis_bpkmattr_manf_id
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
, &value
);
4448 label
= uint_get_manuf_name_if_known(value
);
4449 proto_item_append_text(tlv_subitem
, " (%s)", label
? label
: "unknown OUI");
4451 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
4454 if (tlv_length
== 6)
4455 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_mac_addr
, tvb
, pos
, tlv_length
, ENC_NA
);
4457 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
4459 case BPKM_RSA_PUB_KEY
:
4460 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
4461 dissect_pkcs1_RSAPublicKey(false, tvb
, pos
, &asn1_ctx
, tlv_tree
, hf_docsis_bpkmattr_rsa_pub_key
);
4464 tlv_subitem
= proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_cm_id
, tvb
, pos
, tlv_length
, ENC_NA
);
4465 tlv_subtree
= proto_item_add_subtree(tlv_subitem
, ett_docsis_bpkmattr_cmid
);
4466 dissect_attrs(tvb
, pinfo
, tlv_item
, tlv_subtree
, pos
, tlv_length
);
4467 if (tlv_length
< 126)
4468 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "TLV length too small: %i", tlv_length
);
4470 case BPKM_DISPLAY_STR
:
4471 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_display_str
, tvb
, pos
, tlv_length
, ENC_ASCII
);
4472 if (tlv_length
> 128)
4473 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "TLV length too big: %i", tlv_length
);
4476 if (tlv_length
== 96 || tlv_length
== 128 || tlv_length
== 256)
4477 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_auth_key
, tvb
, pos
, tlv_length
, ENC_NA
);
4479 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
4482 if (tlv_length
== 8 || tlv_length
== 16 || tlv_length
== 32)
4483 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_tek
, tvb
, pos
, tlv_length
, ENC_NA
);
4485 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
4487 case BPKM_KEY_LIFETIME
:
4488 if (tlv_length
== 4)
4489 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_key_life
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
4491 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
4493 case BPKM_KEY_SEQ_NUM
:
4494 if (tlv_length
== 1)
4495 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_key_seq
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
4497 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
4499 case BPKM_HMAC_DIGEST
:
4500 if (tlv_length
== 20)
4501 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_hmac_digest
, tvb
, pos
, tlv_length
, ENC_NA
);
4503 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
4506 if (tlv_length
== 2)
4507 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_said
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
4509 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
4511 case BPKM_TEK_PARAM
:
4512 tlv_subitem
= proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_tek_params
, tvb
, pos
, tlv_length
, ENC_NA
);
4513 tlv_subtree
= proto_item_add_subtree(tlv_subitem
, ett_docsis_bpkmattr_tekp
);
4514 dissect_attrs(tvb
, pinfo
, tlv_item
, tlv_subtree
, pos
, tlv_length
);
4516 case BPKM_OBSOLETED
:
4519 if (tlv_length
== 8 || tlv_length
== 16)
4520 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_cbc_iv
, tvb
, pos
, tlv_length
, ENC_NA
);
4522 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
4524 case BPKM_ERROR_CODE
:
4525 if (tlv_length
== 1)
4526 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_error_code
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
4528 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
4531 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
4532 dissect_x509af_Certificate(false, tvb
, pos
, &asn1_ctx
, tlv_tree
, hf_docsis_bpkmattr_ca_cert
);
4535 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
4536 dissect_x509af_Certificate(false, tvb
, pos
, &asn1_ctx
, tlv_tree
, hf_docsis_bpkmattr_cm_cert
);
4538 case BPKM_SEC_CAPABILITIES
:
4539 tlv_subitem
= proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_security_cap
, tvb
, pos
, tlv_length
, ENC_NA
);
4540 tlv_subtree
= proto_item_add_subtree(tlv_subitem
, ett_docsis_bpkmattr_scap
);
4541 dissect_attrs(tvb
, pinfo
, tlv_item
, tlv_subtree
, pos
, tlv_length
);
4543 case BPKM_CRYPTO_SUITE
:
4544 if (tlv_length
== 2)
4545 proto_tree_add_bitmask(tlv_tree
, tvb
, pos
, hf_docsis_bpkmattr_crypto_suite
,
4546 ett_docsis_bpkmattr_crypto_suite
, bpkmattr_crypto_suite
, ENC_BIG_ENDIAN
);
4548 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
4550 case BPKM_CRYPTO_SUITE_LIST
:
4551 tlv_subitem
= proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_crypto_suite_list
, tvb
, pos
, tlv_length
, ENC_NA
);
4552 tlv_subtree
= proto_item_add_subtree(tlv_subitem
, ett_docsis_bpkmattr_crypto_suite_list
);
4553 for (i
= 0; i
< tlv_length
- 1; i
+= 2)
4554 proto_tree_add_bitmask(tlv_subtree
, tvb
, pos
+ i
, hf_docsis_bpkmattr_crypto_suite
,
4555 ett_docsis_bpkmattr_crypto_suite
, bpkmattr_crypto_suite
, ENC_BIG_ENDIAN
);
4557 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
4559 case BPKM_BPI_VERSION
:
4560 if (tlv_length
== 1)
4561 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_bpi_version
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
4563 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
4565 case BPKM_SA_DESCRIPTOR
:
4566 tlv_subitem
= proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_sa_descr
, tvb
, pos
, tlv_length
, ENC_NA
);
4567 tlv_subtree
= proto_item_add_subtree(tlv_subitem
, ett_docsis_bpkmattr_sadsc
);
4568 dissect_attrs(tvb
, pinfo
, tlv_item
, tlv_subtree
, pos
, tlv_length
);
4571 if (tlv_length
== 1)
4572 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_sa_type
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
4574 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
4577 tlv_subitem
= proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_sa_query
, tvb
, pos
, tlv_length
, ENC_NA
);
4578 tlv_subtree
= proto_item_add_subtree(tlv_subitem
, ett_docsis_bpkmattr_saqry
);
4579 dissect_attrs(tvb
, pinfo
, tlv_item
, tlv_subtree
, pos
, tlv_length
);
4581 case BPKM_SA_QUERY_TYPE
:
4582 if (tlv_length
== 1)
4583 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_sa_query_type
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
4585 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
4587 case BPKM_IP_ADDRESS
:
4588 if (tlv_length
== 4)
4589 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_ip_address
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
4591 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
4593 case BPKM_DNLD_PARAMS
:
4594 tlv_subitem
= proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_download_param
, tvb
, pos
, tlv_length
, ENC_NA
);
4595 tlv_subtree
= proto_item_add_subtree(tlv_subitem
, ett_docsis_bpkmattr_dnld
);
4596 dissect_attrs(tvb
, pinfo
, tlv_item
, tlv_subtree
, pos
, tlv_length
);
4598 case BPKM_CVC_ROOT_CA_CERT
:
4599 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
4600 dissect_x509af_Certificate(false, tvb
, pos
, &asn1_ctx
, tlv_tree
, hf_docsis_bpkmattr_cvc_root_ca_cert
);
4602 case BPKM_CVC_CA_CERT
:
4603 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
4604 dissect_x509af_Certificate(false, tvb
, pos
, &asn1_ctx
, tlv_tree
, hf_docsis_bpkmattr_cvc_ca_cert
);
4606 case BPKM_DEV_CA_CERT
:
4607 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
4608 dissect_x509af_Certificate(false, tvb
, pos
, &asn1_ctx
, tlv_tree
, hf_docsis_bpkmattr_dev_ca_cert
);
4610 case BPKM_ROOT_CA_CERT
:
4611 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
4612 dissect_x509af_Certificate(false, tvb
, pos
, &asn1_ctx
, tlv_tree
, hf_docsis_bpkmattr_root_ca_cert
);
4615 if (tlv_length
== 8)
4616 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_cm_nonce
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
4618 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
4620 case BPKM_MSG_SIGNATURE
:
4621 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
4622 dissect_cms_SignedData(false, tvb
, pos
, &asn1_ctx
, tlv_tree
, hf_docsis_bpkmattr_msg_signature
);
4624 case BPKM_KEY_EXCHANGE_SHARE
:
4625 if (tlv_length
> 2) {
4626 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_key_exchange_share_field_id
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
4627 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_key_exchange_share_key_share
, tvb
, pos
+ 2, tlv_length
- 2, ENC_NA
);
4629 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
4631 case BPKM_ALLOWED_BPI_VERSIONS
:
4632 tlv_subitem
= proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_allowed_bpi_versions
, tvb
, pos
, tlv_length
, ENC_NA
);
4633 tlv_subtree
= proto_item_add_subtree(tlv_subitem
, ett_docsis_bpkmattr_allowed_bpi_versions
);
4634 for (i
= 0; i
< tlv_length
; ++i
)
4635 proto_tree_add_item(tlv_subtree
, hf_docsis_bpkmattr_allowed_bpi_version
, tvb
, pos
+ i
, 1, ENC_BIG_ENDIAN
);
4638 tlv_subitem
= proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_ocsp_responses
, tvb
, pos
, tlv_length
, ENC_NA
);
4639 tlv_subtree
= proto_item_add_subtree(tlv_subitem
, ett_docsis_bpkmattr_ocsp_responses
);
4640 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
4642 attr_end
= pos
+ tlv_length
;
4643 while (i
< attr_end
)
4644 i
= dissect_ocsp_OCSPResponse(false, tvb
, i
, &asn1_ctx
, tlv_subtree
, hf_docsis_bpkmattr_ocsp_response
);
4646 case BPKM_CMTS_DESIGNATION
:
4648 tlv_subitem
= proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_cmts_designation
, tvb
, pos
, tlv_length
, ENC_NA
);
4649 tlv_subtree
= proto_item_add_subtree(tlv_subitem
, ett_docsis_bpkmattr_cmts_designation
);
4650 proto_tree_add_item_ret_uint(tlv_tree
, hf_docsis_bpkmattr_cmts_designation_data_type
,
4651 tvb
, pos
, 1, ENC_BIG_ENDIAN
, &tlv_subtype
);
4652 switch (tlv_subtype
)
4654 case BPKMATTR_CMTS_DESIGNATION_CERTIFICATE_FINGERPRINT
:
4655 proto_tree_add_item(tlv_subtree
, hf_docsis_bpkmattr_cmts_designation_certificate_fingerprint
,
4656 tvb
, pos
+ 1, tlv_length
- 1, ENC_NA
);
4658 case BPKMATTR_CMTS_DESIGNATION_COMMON_NAME
:
4659 proto_tree_add_item(tlv_subtree
, hf_docsis_bpkmattr_cmts_designation_common_name
,
4660 tvb
, pos
+ 1, tlv_length
- 1, ENC_ASCII
);
4662 case BPKMATTR_CMTS_DESIGNATION_ORG_UNIT
:
4663 proto_tree_add_item(tlv_subtree
, hf_docsis_bpkmattr_cmts_designation_org_unit
,
4664 tvb
, pos
+ 1, tlv_length
- 1, ENC_ASCII
);
4666 case BPKMATTR_CMTS_DESIGNATION_ORG_NAME
:
4667 proto_tree_add_item(tlv_subtree
, hf_docsis_bpkmattr_cmts_designation_org_name
,
4668 tvb
, pos
+ 1, tlv_length
- 1, ENC_ASCII
);
4670 case BPKMATTR_CMTS_DESIGNATION_SERIAL_NUMBER
:
4671 proto_tree_add_item(tlv_subtree
, hf_docsis_bpkmattr_cmts_designation_serial_number
,
4672 tvb
, pos
+ 1, tlv_length
- 1, ENC_ASCII
);
4674 case BPKMATTR_CMTS_DESIGNATION_ISSUING_CA_FINGERPRINT
:
4675 proto_tree_add_item(tlv_subtree
, hf_docsis_bpkmattr_cmts_designation_issuing_ca_fingerprint
,
4676 tvb
, pos
+ 1, tlv_length
- 1, ENC_NA
);
4678 case BPKMATTR_CMTS_DESIGNATION_ISSUING_CA_COMMON_NAME
:
4679 proto_tree_add_item(tlv_subtree
, hf_docsis_bpkmattr_cmts_designation_issuing_ca_common_name
,
4680 tvb
, pos
+ 1, tlv_length
- 1, ENC_ASCII
);
4682 case BPKMATTR_CMTS_DESIGNATION_ISSUING_CA_ORG_UNIT
:
4683 proto_tree_add_item(tlv_subtree
, hf_docsis_bpkmattr_cmts_designation_issuing_ca_org_unit
,
4684 tvb
, pos
+ 1, tlv_length
- 1, ENC_ASCII
);
4686 case BPKMATTR_CMTS_DESIGNATION_ISSUING_CA_ORG_NAME
:
4687 proto_tree_add_item(tlv_subtree
, hf_docsis_bpkmattr_cmts_designation_issuing_ca_org_name
,
4688 tvb
, pos
+ 1, tlv_length
- 1, ENC_ASCII
);
4690 case BPKMATTR_CMTS_DESIGNATION_ISSUING_CA_SERIAL_NUMBER
:
4691 proto_tree_add_item(tlv_subtree
, hf_docsis_bpkmattr_cmts_designation_issuing_ca_serial_number
,
4692 tvb
, pos
, tlv_length
- 1, ENC_ASCII
);
4696 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
4698 case BPKM_CM_STATUS_CODE
:
4699 if (tlv_length
== 1)
4700 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_cm_status_code
, tvb
, pos
, tlv_length
, ENC_NA
);
4702 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
4704 case BPKM_DETECTED_ERRORS
:
4705 if (tlv_length
== 1)
4706 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_detected_errors
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
4708 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
4710 case BPKM_VENDOR_DEFINED
:
4711 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_vendor_def
, tvb
, pos
, tlv_length
, ENC_NA
);
4714 proto_tree_add_item(tlv_tree
, hf_docsis_bpkmattr_vendor_def
, tvb
, pos
, tlv_length
, ENC_NA
);
4721 expert_add_info_format(pinfo
, item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", length
);
4722 decrement_dissection_depth(pinfo
);
4726 dissect_bpkmreq(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
4728 proto_item
*bpkmreq_item
, *attr_item
;
4729 proto_tree
*bpkmreq_tree
, *attr_tree
;
4730 tvbuff_t
*tlv_tvb
= NULL
;
4732 uint32_t code
, id
, length
;
4734 bpkmreq_item
= proto_tree_add_item(tree
, proto_docsis_bpkmreq
, tvb
, 0, -1, ENC_NA
);
4735 bpkmreq_tree
= proto_item_add_subtree(bpkmreq_item
, ett_docsis_bpkmreq
);
4736 proto_tree_add_item_ret_uint(bpkmreq_tree
, hf_docsis_bpkm_code
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &code
);
4737 proto_tree_add_item_ret_uint(bpkmreq_tree
, hf_docsis_bpkm_ident
, tvb
, 1, 1, ENC_BIG_ENDIAN
, &id
);
4738 proto_tree_add_item_ret_uint(bpkmreq_tree
, hf_docsis_bpkm_length
, tvb
, 2, 2, ENC_BIG_ENDIAN
, &length
);
4740 col_add_fstr(pinfo
->cinfo
, COL_INFO
, "BPKM Request (BPKM-REQ): %s, ID %u",
4741 val_to_str(code
, code_field_vals
, "Unknown Code (%u)"), id
);
4744 tlv_tvb
= dissect_multipart(tvb
, pinfo
, bpkmreq_tree
, data
, MGT_BPKM_REQ
, id
, 4);
4745 if (tlv_tvb
!= NULL
&& tvb_captured_length(tlv_tvb
)) {
4746 attr_item
= proto_tree_add_item(bpkmreq_tree
, hf_docsis_bpkmattr
, tlv_tvb
, 0, length
, ENC_NA
);
4747 attr_tree
= proto_item_add_subtree(attr_item
, ett_docsis_bpkmattr
);
4748 dissect_attrs(tlv_tvb
, pinfo
, attr_item
, attr_tree
, 0, length
);
4749 if (length
!= tvb_reported_length(tlv_tvb
))
4750 expert_add_info_format(pinfo
, bpkmreq_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", length
);
4752 return tvb_captured_length(tvb
);
4756 dissect_bpkmrsp(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
4758 proto_item
*bpkmrsp_item
, *attr_item
;
4759 proto_tree
*bpkmrsp_tree
, *attr_tree
;
4760 tvbuff_t
*tlv_tvb
= NULL
;
4762 uint32_t code
, id
, length
;
4764 bpkmrsp_item
= proto_tree_add_item(tree
, proto_docsis_bpkmrsp
, tvb
, 0, -1, ENC_NA
);
4765 bpkmrsp_tree
= proto_item_add_subtree(bpkmrsp_item
, ett_docsis_bpkmrsp
);
4766 proto_tree_add_item_ret_uint(bpkmrsp_tree
, hf_docsis_bpkm_code
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &code
);
4767 proto_tree_add_item_ret_uint(bpkmrsp_tree
, hf_docsis_bpkm_ident
, tvb
, 1, 1, ENC_BIG_ENDIAN
, &id
);
4768 proto_tree_add_item_ret_uint(bpkmrsp_tree
, hf_docsis_bpkm_length
, tvb
, 2, 2, ENC_BIG_ENDIAN
, &length
);
4770 col_add_fstr(pinfo
->cinfo
, COL_INFO
, "BPKM Response (BPKM-RSP): %s, ID %u",
4771 val_to_str(code
, code_field_vals
, "Unknown Code (%u)"), id
);
4774 tlv_tvb
= dissect_multipart(tvb
, pinfo
, bpkmrsp_tree
, data
, MGT_BPKM_RSP
, id
, 4);
4775 if (tlv_tvb
!= NULL
&& tvb_captured_length(tlv_tvb
)) {
4776 attr_item
= proto_tree_add_item(bpkmrsp_tree
, hf_docsis_bpkmattr
, tlv_tvb
, 0, length
, ENC_NA
);
4777 attr_tree
= proto_item_add_subtree(attr_item
, ett_docsis_bpkmattr
);
4778 dissect_attrs(tlv_tvb
, pinfo
, attr_item
, attr_tree
, 0, length
);
4779 if (length
!= tvb_reported_length(tlv_tvb
))
4780 expert_add_info_format(pinfo
, bpkmrsp_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", length
);
4782 return tvb_captured_length(tvb
);
4786 dissect_regack (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
4789 proto_tree
*regack_tree
;
4790 uint32_t sid
, response
;
4793 it
= proto_tree_add_item (tree
, proto_docsis_regack
, tvb
, 0, -1, ENC_NA
);
4794 regack_tree
= proto_item_add_subtree (it
, ett_docsis_regack
);
4796 proto_tree_add_item_ret_uint (regack_tree
, hf_docsis_regack_sid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &sid
);
4797 proto_tree_add_item_ret_uint (regack_tree
, hf_docsis_regack_response
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &response
);
4799 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
4800 "Registration Acknowledge SID = %u (%s)", sid
,
4801 val_to_str_ext (response
, &docsis_conf_code_ext
, "%d"));
4803 /* Call Dissector for Appendix C TLVs */
4804 if(tvb_reported_length_remaining(tvb
, 3) > 0 )
4806 next_tvb
= tvb_new_subset_remaining (tvb
, 3);
4807 call_dissector (docsis_tlv_handle
, next_tvb
, pinfo
, regack_tree
);
4810 return tvb_captured_length(tvb
);
4814 dissect_dsareq (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
4817 proto_tree
*dsareq_tree
;
4821 it
= proto_tree_add_item(tree
, proto_docsis_dsareq
, tvb
, 0, -1, ENC_NA
);
4822 dsareq_tree
= proto_item_add_subtree (it
, ett_docsis_dsareq
);
4824 proto_tree_add_item_ret_uint (dsareq_tree
, hf_docsis_mgt_tranid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &transid
);
4826 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
4827 "Dynamic Service Addition Request Tran-id = %u ", transid
);
4829 /* Call Dissector for Appendix C TLVs */
4830 next_tvb
= tvb_new_subset_remaining (tvb
, 2);
4831 call_dissector (docsis_tlv_handle
, next_tvb
, pinfo
, dsareq_tree
);
4832 return tvb_captured_length(tvb
);
4836 dissect_dsarsp (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
4839 proto_tree
*dsarsp_tree
;
4840 uint32_t transid
, response
;
4843 it
= proto_tree_add_item (tree
, proto_docsis_dsarsp
, tvb
, 0, -1, ENC_NA
);
4844 dsarsp_tree
= proto_item_add_subtree (it
, ett_docsis_dsarsp
);
4845 proto_tree_add_item_ret_uint (dsarsp_tree
, hf_docsis_mgt_tranid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &transid
);
4846 proto_tree_add_item_ret_uint (dsarsp_tree
, hf_docsis_dsarsp_response
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &response
);
4848 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
4849 "Dynamic Service Add Response ID = %u (%s)", transid
,
4850 val_to_str_ext (response
, &docsis_conf_code_ext
, "%d"));
4852 /* Call dissector for Appendix C TLVs */
4853 next_tvb
= tvb_new_subset_remaining (tvb
, 3);
4854 call_dissector (docsis_tlv_handle
, next_tvb
, pinfo
, dsarsp_tree
);
4855 return tvb_captured_length(tvb
);
4859 dissect_dsaack (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
4862 proto_tree
*dsaack_tree
;
4863 uint32_t transid
, response
;
4866 it
= proto_tree_add_item (tree
, proto_docsis_dsaack
, tvb
, 0, -1, ENC_NA
);
4867 dsaack_tree
= proto_item_add_subtree (it
, ett_docsis_dsaack
);
4868 proto_tree_add_item_ret_uint (dsaack_tree
, hf_docsis_mgt_tranid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &transid
);
4869 proto_tree_add_item_ret_uint (dsaack_tree
, hf_docsis_dsaack_response
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &response
);
4871 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
4872 "Dynamic Service Add Acknowledge: Transaction ID = %u (%s)", transid
,
4873 val_to_str_ext (response
, &docsis_conf_code_ext
, "%d"));
4875 /* Call Dissector for Appendix C TLVs */
4876 next_tvb
= tvb_new_subset_remaining (tvb
, 3);
4877 call_dissector (docsis_tlv_handle
, next_tvb
, pinfo
, dsaack_tree
);
4878 return tvb_captured_length(tvb
);
4882 dissect_dscreq (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
4885 proto_tree
*dscreq_tree
;
4889 it
= proto_tree_add_item (tree
, proto_docsis_dscreq
, tvb
, 0, -1, ENC_NA
);
4890 dscreq_tree
= proto_item_add_subtree (it
, ett_docsis_dscreq
);
4892 proto_tree_add_item_ret_uint (dscreq_tree
, hf_docsis_mgt_tranid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &transid
);
4894 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
4895 "Dynamic Service Change Request Tran-id = %u ", transid
);
4897 /* Call dissector for Appendix C TLVs */
4898 next_tvb
= tvb_new_subset_remaining (tvb
, 2);
4899 call_dissector (docsis_tlv_handle
, next_tvb
, pinfo
, dscreq_tree
);
4900 return tvb_captured_length(tvb
);
4904 dissect_dscrsp (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
4907 proto_tree
*dscrsp_tree
;
4908 uint32_t transid
, response
;
4911 it
= proto_tree_add_item(tree
, proto_docsis_dscrsp
, tvb
, 0, -1, ENC_NA
);
4912 dscrsp_tree
= proto_item_add_subtree (it
, ett_docsis_dscrsp
);
4913 proto_tree_add_item_ret_uint (dscrsp_tree
, hf_docsis_mgt_tranid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &transid
);
4914 proto_tree_add_item_ret_uint (dscrsp_tree
, hf_docsis_dscrsp_response
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &response
);
4916 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
4917 "Dynamic Service Change Response: Transaction ID = %u (%s)", transid
,
4918 val_to_str_ext (response
, &docsis_conf_code_ext
, "%d"));
4920 /* Call Dissector for Appendix C TLVs */
4921 next_tvb
= tvb_new_subset_remaining (tvb
, 3);
4922 call_dissector (docsis_tlv_handle
, next_tvb
, pinfo
, dscrsp_tree
);
4923 return tvb_captured_length(tvb
);
4927 dissect_dscack (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
4930 proto_tree
*dscack_tree
;
4931 uint32_t transid
, response
;
4934 it
= proto_tree_add_item(tree
, proto_docsis_dscack
, tvb
, 0, -1, ENC_NA
);
4935 dscack_tree
= proto_item_add_subtree (it
, ett_docsis_dscack
);
4937 proto_tree_add_item_ret_uint (dscack_tree
, hf_docsis_mgt_tranid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &transid
);
4938 proto_tree_add_item_ret_uint (dscack_tree
, hf_docsis_dscack_response
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &response
);
4940 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
4941 "Dynamic Service Change Acknowledge: Transaction ID = %u (%s)", transid
,
4942 val_to_str_ext (response
, &docsis_conf_code_ext
, "%d"));
4944 /* Call Dissector for Appendix C TLVs */
4945 next_tvb
= tvb_new_subset_remaining (tvb
, 3);
4946 call_dissector (docsis_tlv_handle
, next_tvb
, pinfo
, dscack_tree
);
4947 return tvb_captured_length(tvb
);
4951 dissect_dsdreq (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
4954 proto_tree
*dsdreq_tree
;
4958 it
= proto_tree_add_item (tree
, proto_docsis_dsdreq
, tvb
, 0, -1, ENC_NA
);
4959 dsdreq_tree
= proto_item_add_subtree (it
, ett_docsis_dsdreq
);
4961 proto_tree_add_item_ret_uint (dsdreq_tree
, hf_docsis_mgt_tranid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &transid
);
4963 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
4964 "Dynamic Service Delete Request Tran-id = %u ", transid
);
4966 proto_tree_add_item (dsdreq_tree
, hf_docsis_dsdreq_rsvd
, tvb
, 2, 2, ENC_BIG_ENDIAN
);
4967 proto_tree_add_item (dsdreq_tree
, hf_docsis_dsdreq_sfid
, tvb
, 4, 4, ENC_BIG_ENDIAN
);
4969 /* Call Dissector for Appendix C TLVs */
4970 next_tvb
= tvb_new_subset_remaining (tvb
, 8);
4971 call_dissector (docsis_tlv_handle
, next_tvb
, pinfo
, dsdreq_tree
);
4972 return tvb_captured_length(tvb
);
4976 dissect_dsdrsp (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
4979 proto_tree
*dsdrsp_tree
;
4980 uint32_t tranid
, confcode
;
4982 it
= proto_tree_add_item(tree
, proto_docsis_dsdrsp
, tvb
, 0, -1, ENC_NA
);
4983 dsdrsp_tree
= proto_item_add_subtree (it
, ett_docsis_dsdrsp
);
4984 proto_tree_add_item_ret_uint (dsdrsp_tree
, hf_docsis_mgt_tranid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &tranid
);
4985 proto_tree_add_item_ret_uint (dsdrsp_tree
, hf_docsis_dsdrsp_confcode
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &confcode
);
4986 proto_tree_add_item (dsdrsp_tree
, hf_docsis_dsdrsp_rsvd
, tvb
, 3, 1, ENC_BIG_ENDIAN
);
4988 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
4989 "Dynamic Service Delete Response: Transaction ID = %u (%s)",
4990 tranid
, val_to_str_ext (confcode
, &docsis_conf_code_ext
, "%d"));
4992 return tvb_captured_length(tvb
);
4996 dissect_dccreq_ds_params (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int start
, uint16_t len
)
5000 proto_tree
*dcc_tree
;
5001 proto_item
*dcc_item
, *tlv_len_item
;
5005 while ( pos
< ( start
+ len
) )
5007 type
= tvb_get_uint8 (tvb
, pos
);
5008 dcc_tree
= proto_tree_add_subtree(tree
, tvb
, pos
, -1,
5009 ett_docsis_dccreq_ds_params
, &dcc_item
,
5010 val_to_str(type
, ds_param_subtlv_vals
,
5011 "Unknown TLV (%u)"));
5012 proto_tree_add_uint (dcc_tree
, hf_docsis_dcc_ds_params_subtype
, tvb
, pos
, 1, type
);
5014 tlv_len_item
= proto_tree_add_item_ret_uint (dcc_tree
, hf_docsis_dcc_ds_params_length
, tvb
, pos
, 1, ENC_NA
, &length
);
5016 proto_item_set_len(dcc_item
, length
+ 2);
5020 case DCCREQ_DS_FREQ
:
5023 proto_tree_add_item (dcc_tree
, hf_docsis_dccreq_ds_freq
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5027 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5030 case DCCREQ_DS_MOD_TYPE
:
5033 proto_tree_add_item (dcc_tree
, hf_docsis_dccreq_ds_mod_type
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5037 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5040 case DCCREQ_DS_SYM_RATE
:
5043 proto_tree_add_item (dcc_tree
, hf_docsis_dccreq_ds_sym_rate
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5047 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5050 case DCCREQ_DS_INTLV_DEPTH
:
5053 proto_tree_add_item (dcc_tree
, hf_docsis_dccreq_ds_intlv_depth_i
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
5054 proto_tree_add_item (dcc_tree
, hf_docsis_dccreq_ds_intlv_depth_j
, tvb
, pos
+ 1, 1, ENC_BIG_ENDIAN
);
5058 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5061 case DCCREQ_DS_CHAN_ID
:
5064 proto_tree_add_item (dcc_tree
, hf_docsis_dccreq_ds_chan_id
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5068 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5071 case DCCREQ_DS_SYNC_SUB
:
5074 proto_tree_add_item (dcc_tree
, hf_docsis_dccreq_ds_sync_sub
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5078 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5081 case DCCREQ_DS_OFDM_BLOCK_FREQ
:
5084 proto_tree_add_item (dcc_tree
, hf_docsis_dccreq_ds_ofdm_block_freq
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5088 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5098 dissect_dccreq_sf_sub (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int start
, uint16_t len
)
5102 proto_tree
*dcc_tree
;
5103 proto_item
*dcc_item
, *tlv_len_item
;
5107 while ( pos
< ( start
+ len
) )
5109 type
= tvb_get_uint8 (tvb
, pos
);
5110 dcc_tree
= proto_tree_add_subtree(tree
, tvb
, pos
, -1,
5111 ett_docsis_dccreq_sf_sub
, &dcc_item
,
5112 val_to_str(type
, sf_sub_subtlv_vals
,
5113 "Unknown TLV (%u)"));
5114 proto_tree_add_uint (dcc_tree
, hf_docsis_dcc_sf_sub_subtype
, tvb
, pos
, 1, type
);
5116 tlv_len_item
= proto_tree_add_item_ret_uint (dcc_tree
, hf_docsis_dcc_sf_sub_length
, tvb
, pos
, 1, ENC_NA
, &length
);
5118 proto_item_set_len(dcc_item
, length
+ 2);
5122 case DCCREQ_SF_SFID
:
5125 proto_tree_add_item (dcc_tree
, hf_docsis_dccreq_sf_sfid_cur
, tvb
, pos
, 4, ENC_BIG_ENDIAN
);
5126 proto_tree_add_item (dcc_tree
, hf_docsis_dccreq_sf_sfid_new
, tvb
, pos
+ 4, 4, ENC_BIG_ENDIAN
);
5130 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5136 proto_tree_add_item (dcc_tree
, hf_docsis_dccreq_sf_sid_cur
, tvb
, pos
, 2, ENC_BIG_ENDIAN
);
5137 proto_tree_add_item (dcc_tree
, hf_docsis_dccreq_sf_sid_new
, tvb
, pos
+ 2, 2, ENC_BIG_ENDIAN
);
5141 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5144 case DCCREQ_SF_UNSOL_GRANT_TREF
:
5147 proto_tree_add_item (dcc_tree
, hf_docsis_dccreq_sf_unsol_grant_tref
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5151 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5161 dissect_dccreq (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
5166 proto_tree
*dcc_tree
, *tlv_tree
;
5167 proto_item
*dcc_item
, *tlv_item
, *tlv_len_item
;
5169 col_set_str(pinfo
->cinfo
, COL_INFO
, "DCC-REQ Message");
5171 dcc_item
= proto_tree_add_item (tree
, proto_docsis_dccreq
, tvb
, 0, -1, ENC_NA
);
5172 dcc_tree
= proto_item_add_subtree (dcc_item
, ett_docsis_dccreq
);
5174 proto_tree_add_item (dcc_tree
, hf_docsis_dccreq_tran_id
, tvb
, 0, 2, ENC_BIG_ENDIAN
);
5177 while (tvb_reported_length_remaining(tvb
, pos
) > 0)
5179 type
= tvb_get_uint8 (tvb
, pos
);
5180 tlv_tree
= proto_tree_add_subtree(dcc_tree
, tvb
, pos
, -1,
5181 ett_docsis_dccreq_tlv
, &tlv_item
,
5182 val_to_str(type
, dcc_tlv_vals
,
5183 "Unknown TLV (%u)"));
5184 proto_tree_add_uint (tlv_tree
, hf_docsis_dccreq_type
, tvb
, pos
, 1, type
);
5186 tlv_len_item
= proto_tree_add_item_ret_uint (tlv_tree
, hf_docsis_dccreq_length
, tvb
, pos
, 1, ENC_NA
, &length
);
5188 proto_item_set_len(tlv_item
, length
+ 2);
5192 case DCCREQ_UP_CHAN_ID
:
5195 proto_tree_add_item (tlv_tree
, hf_docsis_dccreq_up_chan_id
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5199 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5202 case DCCREQ_DS_PARAMS
:
5203 dissect_dccreq_ds_params (tvb
, pinfo
, tlv_tree
, pos
, length
);
5205 case DCCREQ_INIT_TECH
:
5208 proto_tree_add_item (tlv_tree
, hf_docsis_dccreq_init_tech
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5212 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5215 case DCCREQ_UCD_SUB
:
5216 proto_tree_add_item (tlv_tree
, hf_docsis_dccreq_ucd_sub
, tvb
, pos
, length
, ENC_NA
);
5218 case DCCREQ_SAID_SUB
:
5221 proto_tree_add_item (tlv_tree
, hf_docsis_dccreq_said_sub_cur
, tvb
, pos
, 2, ENC_BIG_ENDIAN
);
5222 proto_tree_add_item (tlv_tree
, hf_docsis_dccreq_said_sub_new
, tvb
, pos
+ 2, 2, ENC_BIG_ENDIAN
);
5226 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5230 dissect_dccreq_sf_sub (tvb
, pinfo
, tlv_tree
, pos
, length
);
5232 case DCCREQ_CMTS_MAC_ADDR
:
5235 proto_tree_add_item (tlv_tree
, hf_docsis_dccreq_cmts_mac_addr
, tvb
, pos
, length
, ENC_NA
);
5239 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5242 case DCCREQ_KEY_SEQ_NUM
:
5245 proto_tree_add_item (tlv_tree
, hf_docsis_dccreq_key_seq_num
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5249 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5252 case DCCREQ_HMAC_DIGEST
:
5255 proto_tree_add_item (tlv_tree
, hf_docsis_dccreq_hmac_digest
, tvb
, pos
, length
, ENC_NA
);
5259 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5262 } /* switch(type) */
5264 } /* (tvb_reported_length_remaining(tvb, pos) > 0) */
5265 return tvb_captured_length(tvb
);
5269 dissect_dccrsp_cm_jump_time (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int start
, uint16_t len
)
5273 proto_tree
*dcc_tree
;
5274 proto_item
*dcc_item
, *tlv_len_item
;
5278 while ( pos
< ( start
+ len
) )
5280 type
= tvb_get_uint8 (tvb
, pos
);
5281 dcc_tree
= proto_tree_add_subtree(tree
, tvb
, pos
, -1,
5282 ett_docsis_dccrsp_cm_jump_time
, &dcc_item
,
5283 val_to_str(type
, cm_jump_subtlv_vals
,
5284 "Unknown TLV (%u)"));
5285 proto_tree_add_uint (dcc_tree
, hf_docsis_dcc_cm_jump_subtype
, tvb
, pos
, 1, type
);
5287 tlv_len_item
= proto_tree_add_item_ret_uint (dcc_tree
, hf_docsis_dcc_cm_jump_length
, tvb
, pos
, 1, ENC_NA
, &length
);
5289 proto_item_set_len(dcc_item
, length
+ 2);
5293 case DCCRSP_CM_JUMP_TIME_LENGTH
:
5296 proto_tree_add_item (dcc_tree
, hf_docsis_dccrsp_cm_jump_time_length
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5300 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5303 case DCCRSP_CM_JUMP_TIME_START
:
5306 proto_tree_add_item (dcc_tree
, hf_docsis_dccrsp_cm_jump_time_start
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5310 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5320 dissect_dccrsp (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
5325 proto_tree
*dcc_tree
, *tlv_tree
;
5326 proto_item
*dcc_item
, *tlv_item
, *tlv_len_item
;
5328 col_set_str(pinfo
->cinfo
, COL_INFO
, "DCC-RSP Message");
5330 dcc_item
= proto_tree_add_item (tree
, proto_docsis_dccrsp
, tvb
, 0, -1, ENC_NA
);
5331 dcc_tree
= proto_item_add_subtree (dcc_item
, ett_docsis_dccrsp
);
5332 proto_tree_add_item (dcc_tree
, hf_docsis_mgt_tranid
, tvb
, 0, 2, ENC_BIG_ENDIAN
);
5333 proto_tree_add_item (dcc_tree
, hf_docsis_dccrsp_conf_code
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
5336 while (tvb_reported_length_remaining(tvb
, pos
) > 0)
5338 type
= tvb_get_uint8 (tvb
, pos
);
5339 tlv_tree
= proto_tree_add_subtree(dcc_tree
, tvb
, pos
, -1,
5340 ett_docsis_dccrsp_tlv
, &tlv_item
,
5341 val_to_str(type
, dccrsp_tlv_vals
,
5342 "Unknown TLV (%u)"));
5343 proto_tree_add_uint (tlv_tree
, hf_docsis_dccrsp_type
, tvb
, pos
, 1, type
);
5345 tlv_len_item
= proto_tree_add_item_ret_uint (tlv_tree
, hf_docsis_dccrsp_length
, tvb
, pos
, 1, ENC_NA
, &length
);
5347 proto_item_set_len(tlv_item
, length
+ 2);
5351 case DCCRSP_CM_JUMP_TIME
:
5352 dissect_dccrsp_cm_jump_time (tvb
, pinfo
, tlv_tree
, pos
, length
);
5354 case DCCRSP_KEY_SEQ_NUM
:
5357 proto_tree_add_item (tlv_tree
, hf_docsis_dccrsp_key_seq_num
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5361 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5364 case DCCRSP_HMAC_DIGEST
:
5367 proto_tree_add_item (tlv_tree
, hf_docsis_dccrsp_hmac_digest
, tvb
, pos
, length
, ENC_NA
);
5371 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5374 } /* switch(type) */
5377 } /* while (tvb_reported_length_remaining(tvb, pos) > 0) */
5379 return tvb_captured_length(tvb
);
5383 dissect_dccack (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
5388 proto_tree
*dcc_tree
, *tlv_tree
;
5389 proto_item
*dcc_item
, *tlv_item
, *tlv_len_item
;
5391 col_set_str(pinfo
->cinfo
, COL_INFO
, "DCC-ACK Message");
5393 dcc_item
= proto_tree_add_item(tree
, proto_docsis_dccack
, tvb
, 0, -1, ENC_NA
);
5394 dcc_tree
= proto_item_add_subtree (dcc_item
, ett_docsis_dccack
);
5395 proto_tree_add_item (dcc_tree
, hf_docsis_mgt_tranid
, tvb
, 0, 2, ENC_BIG_ENDIAN
);
5398 while (tvb_reported_length_remaining(tvb
, pos
) > 0)
5400 type
= tvb_get_uint8 (tvb
, pos
);
5401 tlv_tree
= proto_tree_add_subtree(dcc_tree
, tvb
, pos
, -1,
5402 ett_docsis_dccack_tlv
, &tlv_item
,
5403 val_to_str(type
, dccack_tlv_vals
,
5404 "Unknown TLV (%u)"));
5405 proto_tree_add_uint (tlv_tree
, hf_docsis_dccack_type
, tvb
, pos
, 1, type
);
5407 tlv_len_item
= proto_tree_add_item_ret_uint (tlv_tree
, hf_docsis_dccack_length
, tvb
, pos
, 1, ENC_NA
, &length
);
5409 proto_item_set_len(tlv_item
, length
+ 2);
5413 case DCCACK_KEY_SEQ_NUM
:
5416 proto_tree_add_item (tlv_tree
, hf_docsis_dccack_key_seq_num
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5420 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5423 case DCCACK_HMAC_DIGEST
:
5426 proto_tree_add_item (tlv_tree
, hf_docsis_dccack_hmac_digest
, tvb
, pos
, length
, ENC_NA
);
5430 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5433 } /* switch(type) */
5436 } /* while (tvb_reported_length_remaining(tvb, pos) > 0) */
5438 return tvb_captured_length(tvb
);
5442 dissect_type29ucd (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
5444 return dissect_any_ucd(tvb
, pinfo
, tree
, proto_docsis_type29ucd
, MGT_TYPE29UCD
);
5448 dissect_intrngreq (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
5450 proto_item
*intrngreq_item
;
5451 proto_tree
*intrngreq_tree
;
5454 intrngreq_item
= proto_tree_add_item(tree
, proto_docsis_intrngreq
, tvb
, 0, -1, ENC_NA
);
5455 intrngreq_tree
= proto_item_add_subtree (intrngreq_item
, ett_docsis_intrngreq
);
5457 proto_tree_add_item_ret_uint (intrngreq_tree
, hf_docsis_intrngreq_sid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &sid
);
5458 col_add_fstr (pinfo
->cinfo
, COL_INFO
, "Initial Ranging Request: SID = %u",sid
);
5460 proto_tree_add_item (intrngreq_tree
, hf_docsis_mgt_down_chid
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
5461 proto_tree_add_item (intrngreq_tree
, hf_docsis_mgt_upstream_chid
, tvb
, 3, 1, ENC_BIG_ENDIAN
);
5463 return tvb_captured_length(tvb
);
5467 dissect_dcd_dsg_cfg (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int start
, uint16_t len
)
5471 proto_tree
*dcd_tree
;
5472 proto_tree
*dcd_item
, *tlv_len_item
;
5476 while ( pos
< ( start
+ len
) )
5478 type
= tvb_get_uint8 (tvb
, pos
);
5479 dcd_tree
= proto_tree_add_subtree(tree
, tvb
, pos
, -1,
5480 ett_docsis_dcd_cfg
, &dcd_item
,
5481 val_to_str(type
, dcd_cfg_vals
,
5482 "Unknown TLV (%u)"));
5483 proto_tree_add_uint (dcd_tree
, hf_docsis_dcd_cfg_subtype
, tvb
, pos
, 1, type
);
5485 tlv_len_item
= proto_tree_add_item_ret_uint (dcd_tree
, hf_docsis_dcd_cfg_length
, tvb
, pos
, 1, ENC_NA
, &length
);
5487 proto_item_set_len(dcd_item
, length
+ 2);
5491 case DCD_CFG_CHAN_LST
:
5494 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_cfg_chan
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5498 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5504 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_cfg_tdsg1
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5508 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5514 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_cfg_tdsg2
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5518 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5524 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_cfg_tdsg3
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5528 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5534 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_cfg_tdsg4
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5538 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5541 case DCD_CFG_VENDOR_SPEC
:
5542 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_cfg_vendor_spec
, tvb
, pos
, length
, ENC_NA
);
5552 dissect_dcd_down_classifier_ip (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int start
, uint16_t len
)
5556 proto_tree
*dcd_tree
;
5557 proto_tree
*dcd_item
, *tlv_len_item
;
5561 while ( pos
< ( start
+ len
) )
5563 type
= tvb_get_uint8 (tvb
, pos
);
5564 dcd_tree
= proto_tree_add_subtree(tree
, tvb
, pos
, -1,
5565 ett_docsis_dcd_cfr_ip
, &dcd_item
,
5566 val_to_str(type
, dcd_cfr_ip_vals
,
5567 "Unknown TLV (%u)"));
5568 proto_tree_add_uint (dcd_tree
, hf_docsis_dcd_cfr_ip_subtype
, tvb
, pos
, 1, type
);
5570 tlv_len_item
= proto_tree_add_item_ret_uint (dcd_tree
, hf_docsis_dcd_cfr_ip_length
, tvb
, pos
, 1, ENC_NA
, &length
);
5572 proto_item_set_len(dcd_item
, length
+ 2);
5576 case DCD_CFR_IP_SOURCE_ADDR
:
5579 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_cfr_ip_source_addr
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5583 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5586 case DCD_CFR_IP_SOURCE_MASK
:
5589 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_cfr_ip_source_mask
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5593 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5596 case DCD_CFR_IP_DEST_ADDR
:
5599 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_cfr_ip_dest_addr
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5603 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5606 case DCD_CFR_IP_DEST_MASK
:
5609 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_cfr_ip_dest_mask
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5613 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5616 case DCD_CFR_TCPUDP_SRCPORT_START
:
5619 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_cfr_tcpudp_srcport_start
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5623 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5626 case DCD_CFR_TCPUDP_SRCPORT_END
:
5629 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_cfr_tcpudp_srcport_end
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5633 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5636 case DCD_CFR_TCPUDP_DSTPORT_START
:
5639 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_cfr_tcpudp_dstport_start
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5643 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5646 case DCD_CFR_TCPUDP_DSTPORT_END
:
5649 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_cfr_tcpudp_dstport_end
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5653 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5663 dissect_dcd_clid (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int start
, uint16_t len
)
5667 proto_tree
*dcd_tree
;
5668 proto_tree
*dcd_item
, *tlv_len_item
;
5672 while ( pos
< ( start
+ len
) )
5674 type
= tvb_get_uint8 (tvb
, pos
);
5675 dcd_tree
= proto_tree_add_subtree(tree
, tvb
, pos
, -1,
5676 ett_docsis_dcd_clid
, &dcd_item
,
5677 val_to_str(type
, dcd_clid_vals
,
5678 "Unknown TLV (%u)"));
5679 proto_tree_add_uint (dcd_tree
, hf_docsis_dcd_clid_subtype
, tvb
, pos
, 1, type
);
5681 tlv_len_item
= proto_tree_add_item_ret_uint (dcd_tree
, hf_docsis_dcd_clid_length
, tvb
, pos
, 1, ENC_NA
, &length
);
5683 proto_item_set_len(dcd_item
, length
+ 2);
5687 case DCD_CLID_BCAST_ID
:
5690 proto_tree_add_item(dcd_tree
, hf_docsis_dcd_clid_bcast_id
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5694 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5697 case DCD_CLID_KNOWN_MAC_ADDR
:
5700 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_clid_known_mac_addr
, tvb
, pos
, length
, ENC_NA
);
5704 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5707 case DCD_CLID_CA_SYS_ID
:
5710 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_clid_ca_sys_id
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5714 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5717 case DCD_CLID_APP_ID
:
5720 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_clid_app_id
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5724 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5734 dissect_dcd_dsg_rule (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int start
, uint16_t len
)
5738 proto_tree
*dcd_tree
;
5739 proto_tree
*dcd_item
, *tlv_len_item
;
5743 while ( pos
< ( start
+ len
) )
5745 type
= tvb_get_uint8 (tvb
, pos
);
5746 dcd_tree
= proto_tree_add_subtree(tree
, tvb
, pos
, -1,
5747 ett_docsis_dcd_rule
, &dcd_item
,
5748 val_to_str(type
, dcd_dsg_rule_vals
,
5749 "Unknown TLV (%u)"));
5750 proto_tree_add_uint (dcd_tree
, hf_docsis_dcd_dsg_rule_subtype
, tvb
, pos
, 1, type
);
5752 tlv_len_item
= proto_tree_add_item_ret_uint (dcd_tree
, hf_docsis_dcd_dsg_rule_length
, tvb
, pos
, 1, ENC_NA
, &length
);
5754 proto_item_set_len(dcd_item
, length
+ 2);
5761 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_rule_id
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5765 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5771 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_rule_pri
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5775 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5778 case DCD_RULE_UCID_RNG
:
5779 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_rule_ucid_list
, tvb
, pos
, length
, ENC_NA
);
5781 case DCD_RULE_CLIENT_ID
:
5782 dissect_dcd_clid (tvb
, pinfo
, dcd_tree
, pos
, length
);
5784 case DCD_RULE_TUNL_ADDR
:
5787 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_rule_tunl_addr
, tvb
, pos
, length
, ENC_NA
);
5791 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5794 case DCD_RULE_CFR_ID
:
5797 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_rule_cfr_id
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5801 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5804 case DCD_RULE_VENDOR_SPEC
:
5805 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_rule_vendor_spec
, tvb
, pos
, length
, ENC_NA
);
5815 dissect_dcd_down_classifier (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, int start
, uint16_t len
)
5819 proto_tree
*dcd_tree
;
5820 proto_tree
*dcd_item
, *tlv_len_item
;
5824 while ( pos
< ( start
+ len
) )
5826 type
= tvb_get_uint8 (tvb
, pos
);
5827 dcd_tree
= proto_tree_add_subtree(tree
, tvb
, pos
, -1,
5828 ett_docsis_dcd_cfr
, &dcd_item
,
5829 val_to_str(type
, dcd_down_classifier_vals
,
5830 "Unknown TLV (%u)"));
5831 proto_tree_add_uint (dcd_tree
, hf_docsis_dcd_down_classifier_subtype
, tvb
, pos
, 1, type
);
5833 tlv_len_item
= proto_tree_add_item_ret_uint (dcd_tree
, hf_docsis_dcd_down_classifier_length
, tvb
, pos
, 1, ENC_NA
, &length
);
5835 proto_item_set_len(dcd_item
, length
+ 2);
5842 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_cfr_id
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5846 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5849 case DCD_CFR_RULE_PRI
:
5852 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_cfr_rule_pri
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
5856 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
5859 case DCD_CFR_IP_CLASSIFIER
:
5860 dissect_dcd_down_classifier_ip (tvb
, pinfo
, dcd_tree
, pos
, length
);
5869 dissect_dcd (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
5874 proto_tree
*dcd_tree
, *tlv_tree
;
5875 proto_item
*dcd_item
, *tlv_item
;
5877 col_set_str(pinfo
->cinfo
, COL_INFO
, "DCD Message: ");
5879 dcd_item
= proto_tree_add_item(tree
, proto_docsis_dcd
, tvb
, 0, -1, ENC_NA
);
5880 dcd_tree
= proto_item_add_subtree (dcd_item
, ett_docsis_dcd
);
5881 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_config_ch_cnt
, tvb
, 0, 1, ENC_BIG_ENDIAN
);
5882 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_num_of_frag
, tvb
, 1, 1, ENC_BIG_ENDIAN
);
5883 proto_tree_add_item (dcd_tree
, hf_docsis_dcd_frag_sequence_num
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
5886 while (tvb_reported_length_remaining(tvb
, pos
) > 0)
5888 type
= tvb_get_uint8 (tvb
, pos
);
5889 tlv_tree
= proto_tree_add_subtree(dcd_tree
, tvb
, pos
, -1,
5890 ett_docsis_dcd_tlv
, &tlv_item
,
5891 val_to_str(type
, dcd_tlv_vals
,
5892 "Unknown TLV (%u)"));
5893 proto_tree_add_uint (tlv_tree
, hf_docsis_dcd_type
, tvb
, pos
, 1, type
);
5895 proto_tree_add_item_ret_uint (tlv_tree
, hf_docsis_dcd_length
, tvb
, pos
, 1, ENC_NA
, &length
);
5897 proto_item_set_len(tlv_item
, length
+ 2);
5901 case DCD_DOWN_CLASSIFIER
:
5902 dissect_dcd_down_classifier (tvb
, pinfo
, tlv_tree
, pos
, length
);
5905 dissect_dcd_dsg_rule (tvb
, pinfo
, tlv_tree
, pos
, length
);
5907 case DCD_DSG_CONFIG
:
5908 dissect_dcd_dsg_cfg (tvb
, pinfo
, tlv_tree
, pos
, length
);
5910 } /* switch(type) */
5913 } /* while (tvb_reported_length_remaining(tvb, pos) > 0) */
5915 return tvb_captured_length(tvb
);
5919 dissect_mdd_ds_active_channel_list(tvbuff_t
* tvb
, packet_info
* pinfo _U_
, proto_tree
* tree
, int start
, uint16_t len
)
5923 proto_tree
*mdd_tree
;
5924 proto_item
*mdd_item
;
5926 static int * const order_annex
[] = {
5927 &hf_docsis_mdd_downstream_active_channel_list_modulation_order
,
5928 &hf_docsis_mdd_downstream_active_channel_list_annex
,
5931 static int * const cm_status_event
[] = {
5932 &hf_docsis_mdd_cm_status_event_enable_bitmask_mdd_timeout
,
5933 &hf_docsis_mdd_cm_status_event_enable_bitmask_qam_fec_lock_failure
,
5934 &hf_docsis_mdd_cm_status_event_enable_bitmask_mdd_recovery
,
5935 &hf_docsis_mdd_cm_status_event_enable_bitmask_qam_fec_lock_recovery
,
5938 static int * const ofdm_plc_parameters
[] = {
5939 &hf_docsis_mdd_ofdm_plc_parameters_tukey_raised_cosine_window
,
5940 &hf_docsis_mdd_ofdm_plc_parameters_cyclic_prefix
,
5941 &hf_docsis_mdd_ofdm_plc_parameters_sub_carrier_spacing
,
5946 while ( pos
< ( start
+ len
) )
5948 type
= tvb_get_uint8 (tvb
, pos
);
5949 mdd_tree
= proto_tree_add_subtree(tree
, tvb
, pos
, -1,
5950 ett_docsis_mdd_ds_active_channel_list
, &mdd_item
,
5951 val_to_str(type
, mdd_ds_active_channel_list_vals
,
5952 "Unknown TLV (%u)"));
5953 proto_tree_add_uint (mdd_tree
, hf_docsis_mdd_ds_active_channel_list_subtype
, tvb
, pos
, 1, type
);
5955 proto_tree_add_item_ret_uint (mdd_tree
, hf_docsis_mdd_ds_active_channel_list_length
, tvb
, pos
, 1, ENC_NA
, &length
);
5957 proto_item_set_len(mdd_item
, length
+ 2);
5961 case DOWNSTREAM_ACTIVE_CHANNEL_LIST_CHANNEL_ID
:
5962 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_downstream_active_channel_list_channel_id
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
5964 case DOWNSTREAM_ACTIVE_CHANNEL_LIST_FREQUENCY
:
5965 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_downstream_active_channel_list_frequency
, tvb
, pos
, 4, ENC_BIG_ENDIAN
);
5967 case DOWNSTREAM_ACTIVE_CHANNEL_LIST_MODULATION_ORDER_ANNEX
:
5968 proto_tree_add_bitmask_list(mdd_tree
, tvb
, pos
, 1, order_annex
, ENC_BIG_ENDIAN
);
5970 case DOWNSTREAM_ACTIVE_CHANNEL_LIST_PRIMARY_CAPABLE
:
5971 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_downstream_active_channel_list_primary_capable
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
5973 case DOWNSTREAM_ACTIVE_CHANNEL_LIST_CM_STATUS_EVENT_ENABLE_BITMASK
:
5974 proto_tree_add_bitmask(mdd_tree
, tvb
, pos
, hf_docsis_mdd_cm_status_event_enable_bitmask
, ett_sub_tlv
, cm_status_event
, ENC_BIG_ENDIAN
);
5976 case DOWNSTREAM_ACTIVE_CHANNEL_LIST_MAP_UCD_TRANSPORT_INDICATOR
:
5977 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_downstream_active_channel_list_map_ucd_transport_indicator
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
5979 case DOWNSTREAM_ACTIVE_CHANNEL_LIST_OFDM_PLC_PARAMETERS
:
5980 proto_tree_add_bitmask(mdd_tree
, tvb
, pos
, hf_docsis_mdd_ofdm_plc_parameters
, ett_sub_tlv
, ofdm_plc_parameters
, ENC_BIG_ENDIAN
);
5982 case DOWNSTREAM_ACTIVE_CHANNEL_LIST_FDX_SUB_BAND_ID
:
5983 proto_tree_add_item(mdd_tree
, hf_docsis_mdd_downstream_active_channel_list_fdx_sub_band_id
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
5985 case DOWNSTREAM_ACTIVE_CHANNEL_LIST_FDX_DS
:
5986 proto_tree_add_item(mdd_tree
, hf_docsis_mdd_downstream_active_channel_list_fdx_ds
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
5995 dissect_mdd_ds_service_group(tvbuff_t
* tvb
, packet_info
* pinfo _U_
, proto_tree
* tree
, int start
, uint16_t len
)
5999 proto_tree
*mdd_tree
;
6000 proto_item
*mdd_item
;
6004 while ( pos
< ( start
+ len
) )
6006 type
= tvb_get_uint8 (tvb
, pos
);
6007 mdd_tree
= proto_tree_add_subtree(tree
, tvb
, pos
, -1,
6008 ett_docsis_mdd_ds_service_group
, &mdd_item
,
6009 val_to_str(type
, mdd_ds_service_group_vals
,
6010 "Unknown TLV (%u)"));
6011 proto_tree_add_uint (mdd_tree
, hf_docsis_mdd_ds_service_group_subtype
, tvb
, pos
, 1, type
);
6013 proto_tree_add_item_ret_uint (mdd_tree
, hf_docsis_mdd_ds_service_group_length
, tvb
, pos
, 1, ENC_NA
, &length
);
6015 proto_item_set_len(mdd_item
, length
+ 2);
6019 case MAC_DOMAIN_DOWNSTREAM_SERVICE_GROUP_MD_DS_SG_IDENTIFIER
:
6020 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_mac_domain_downstream_service_group_md_ds_sg_identifier
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6022 case MAC_DOMAIN_DOWNSTREAM_SERVICE_GROUP_CHANNEL_IDS
:
6023 for (i
= 0; i
< length
; i
++) {
6024 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_mac_domain_downstream_service_group_channel_id
, tvb
, pos
+ i
, 1, ENC_BIG_ENDIAN
);
6034 dissect_mdd_channel_profile_reporting_control(tvbuff_t
* tvb
, packet_info
* pinfo _U_
, proto_tree
* tree
, int start
, uint16_t len
)
6038 proto_tree
*mdd_tree
;
6039 proto_item
*mdd_item
;
6043 while ( pos
< ( start
+ len
) )
6045 type
= tvb_get_uint8 (tvb
, pos
);
6046 mdd_tree
= proto_tree_add_subtree(tree
, tvb
, pos
, -1,
6047 ett_docsis_mdd_channel_profile_reporting_control
, &mdd_item
,
6048 val_to_str(type
, mdd_channel_profile_reporting_control_vals
,
6049 "Unknown TLV (%u)"));
6050 proto_tree_add_uint (mdd_tree
, hf_docsis_mdd_channel_profile_reporting_control_subtype
, tvb
, pos
, 1, type
);
6052 proto_tree_add_item_ret_uint (mdd_tree
, hf_docsis_mdd_channel_profile_reporting_control_length
, tvb
, pos
, 1, ENC_NA
, &length
);
6054 proto_item_set_len(mdd_item
, length
+ 2);
6058 case RCP_CENTER_FREQUENCY_SPACING
:
6059 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_rcp_center_frequency_spacing
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6061 case VERBOSE_RCP_REPORTING
:
6062 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_verbose_rcp_reporting
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6064 case FRAGMENTED_RCP_TRANSMISSION
:
6065 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_fragmented_rcp_transmission
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6074 dissect_mdd_ip_init_param(tvbuff_t
* tvb
, packet_info
* pinfo _U_
, proto_tree
* tree
, int start
, uint16_t len
)
6078 proto_tree
*mdd_tree
;
6079 proto_item
*mdd_item
;
6083 while ( pos
< ( start
+ len
) )
6085 type
= tvb_get_uint8 (tvb
, pos
);
6086 mdd_tree
= proto_tree_add_subtree(tree
, tvb
, pos
, -1,
6087 ett_docsis_mdd_ip_init_param
, &mdd_item
,
6088 val_to_str(type
, mdd_ip_init_param_vals
,
6089 "Unknown TLV (%u)"));
6090 proto_tree_add_uint (mdd_tree
, hf_docsis_mdd_ip_init_param_subtype
, tvb
, pos
, 1, type
);
6092 proto_tree_add_item_ret_uint (mdd_tree
, hf_docsis_mdd_ip_init_param_length
, tvb
, pos
, 1, ENC_NA
, &length
);
6094 proto_item_set_len(mdd_item
, length
+ 2);
6098 case IP_PROVISIONING_MODE
:
6099 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_ip_provisioning_mode
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6101 case PRE_REGISTRATION_DSID
:
6102 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_pre_registration_dsid
, tvb
, pos
, 3, ENC_BIG_ENDIAN
);
6111 dissect_mdd_upstream_active_channel_list_dschids_maps_ucds(tvbuff_t
* tvb
, proto_tree
* tree
, unsigned start
, uint16_t len
)
6115 proto_tree
*dschid_tree
;
6117 it
= proto_tree_add_item (tree
, hf_docsis_mdd_upstream_active_channel_list_dschids_maps_ucds
, tvb
, start
, len
, ENC_NA
);
6118 dschid_tree
= proto_item_add_subtree (it
, ett_docsis_mdd_upstream_active_channel_list_dschids_maps_ucds_dschids
);
6120 for(i
= 0; i
< len
; ++i
)
6122 proto_tree_add_item (dschid_tree
, hf_docsis_mdd_upstream_active_channel_list_dschids_maps_ucds_dschid
, tvb
, start
+ i
, 1, ENC_BIG_ENDIAN
);
6127 dissect_mdd_upstream_active_channel_list(tvbuff_t
* tvb
, packet_info
* pinfo _U_
, proto_tree
* tree
, int start
, uint16_t len
)
6131 proto_tree
*mdd_tree
;
6132 proto_item
*mdd_item
;
6134 static int * const cm_status_event
[] = {
6135 &hf_docsis_mdd_cm_status_event_enable_bitmask_t4_timeout
,
6136 &hf_docsis_mdd_cm_status_event_enable_bitmask_t3_retries_exceeded
,
6137 &hf_docsis_mdd_cm_status_event_enable_bitmask_successful_ranging_after_t3_retries_exceeded
,
6142 while ( pos
< ( start
+ len
) )
6144 type
= tvb_get_uint8 (tvb
, pos
);
6145 mdd_tree
= proto_tree_add_subtree(tree
, tvb
, pos
, -1,
6146 ett_docsis_mdd_up_active_channel_list
, &mdd_item
,
6147 val_to_str(type
, mdd_up_active_channel_list_vals
,
6148 "Unknown TLV (%u)"));
6149 proto_tree_add_uint (mdd_tree
, hf_docsis_mdd_up_active_channel_list_subtype
, tvb
, pos
, 1, type
);
6151 proto_tree_add_item_ret_uint (mdd_tree
, hf_docsis_mdd_up_active_channel_list_length
, tvb
, pos
, 1, ENC_NA
, &length
);
6153 proto_item_set_len(mdd_item
, length
+ 2);
6157 case UPSTREAM_ACTIVE_CHANNEL_LIST_UPSTREAM_CHANNEL_ID
:
6158 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_upstream_active_channel_list_upstream_channel_id
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6160 case UPSTREAM_ACTIVE_CHANNEL_LIST_CM_STATUS_EVENT_ENABLE_BITMASK
:
6161 proto_tree_add_bitmask(mdd_tree
, tvb
, pos
, hf_docsis_mdd_cm_status_event_enable_bitmask
, ett_sub_tlv
, cm_status_event
, ENC_BIG_ENDIAN
);
6163 case UPSTREAM_ACTIVE_CHANNEL_LIST_UPSTREAM_CHANNEL_PRIORITY
:
6164 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_upstream_active_channel_list_upstream_channel_priority
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6166 case UPSTREAM_ACTIVE_CHANNEL_LIST_DSCHIDS_MAPS_UCDS
:
6167 dissect_mdd_upstream_active_channel_list_dschids_maps_ucds(tvb
, mdd_tree
, pos
, length
);
6169 case UPSTREAM_ACTIVE_CHANNEL_LIST_FDX_UPSTREAM_CHANNEL
:
6170 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_upstream_active_channel_list_fdx_upstream_channel
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6172 case UPSTREAM_ACTIVE_CHANNEL_LIST_FDX_SUBBAND_ID
:
6173 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_upstream_active_channel_list_fdx_subband_id
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6182 dissect_mdd_cm_status_event_control(tvbuff_t
* tvb
, packet_info
* pinfo _U_
, proto_tree
* tree
, int start
, uint16_t len
)
6185 uint32_t length
, timer
;
6186 proto_tree
*mdd_tree
;
6187 proto_item
*mdd_item
, *text_item
;
6191 while ( pos
< ( start
+ len
) )
6193 type
= tvb_get_uint8 (tvb
, pos
);
6194 mdd_tree
= proto_tree_add_subtree(tree
, tvb
, pos
, -1,
6195 ett_docsis_mdd_cm_status_event_control
, &mdd_item
,
6196 val_to_str(type
, mdd_cm_status_event_control_vals
,
6197 "Unknown TLV (%u)"));
6198 proto_tree_add_uint (mdd_tree
, hf_docsis_mdd_cm_status_event_control_subtype
, tvb
, pos
, 1, type
);
6200 proto_tree_add_item_ret_uint (mdd_tree
, hf_docsis_mdd_cm_status_event_control_length
, tvb
, pos
, 1, ENC_NA
, &length
);
6202 proto_item_set_len(mdd_item
, length
+ 2);
6206 case EVENT_TYPE_CODE
:
6207 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_event_type
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6209 case MAXIMUM_EVENT_HOLDOFF_TIMER
:
6210 text_item
= proto_tree_add_item_ret_uint (mdd_tree
, hf_docsis_mdd_maximum_event_holdoff_timer
, tvb
, pos
, 2, ENC_BIG_ENDIAN
, &timer
);
6211 proto_item_append_text(text_item
, " (%d ms)", timer
* 20);
6213 case MAXIMUM_NUMBER_OF_REPORTS_PER_EVENT
:
6214 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_maximum_number_of_reports_per_event
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6223 dissect_mdd_dsg_da_to_dsid(tvbuff_t
* tvb
, packet_info
* pinfo _U_
, proto_tree
* tree
, int start
, uint16_t len
)
6227 proto_tree
*mdd_tree
;
6228 proto_item
*mdd_item
;
6232 while ( pos
< ( start
+ len
) )
6234 type
= tvb_get_uint8 (tvb
, pos
);
6235 mdd_tree
= proto_tree_add_subtree(tree
, tvb
, pos
, -1,
6236 ett_docsis_mdd_dsg_da_to_dsid
, &mdd_item
,
6237 val_to_str(type
, mdd_cm_dsg_da_to_dsid_vals
,
6238 "Unknown TLV (%u)"));
6239 proto_tree_add_uint (mdd_tree
, hf_docsis_mdd_dsg_da_to_dsid_subtype
, tvb
, pos
, 1, type
);
6241 proto_tree_add_item_ret_uint (mdd_tree
, hf_docsis_mdd_dsg_da_to_dsid_length
, tvb
, pos
, 1, ENC_NA
, &length
);
6243 proto_item_set_len(mdd_item
, length
+ 2);
6247 case DSG_DA_TO_DSID_ASSOCIATION_DA
:
6248 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_dsg_da_to_dsid_association_da
, tvb
, pos
, 6, ENC_NA
);
6250 case DSG_DA_TO_DSID_ASSOCIATION_DSID
:
6251 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_dsg_da_to_dsid_association_dsid
, tvb
, pos
, 3, ENC_BIG_ENDIAN
);
6260 dissect_mdd_docsis_version(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_item
*item
, proto_tree
*tree
, int pos
, int length
)
6262 proto_item
*tlv_item
;
6263 proto_tree
*tlv_tree
;
6265 int tlv_length
, end
= pos
+ length
;
6268 int major
= -1, minor
= -1;
6269 int major_pos
= 0, minor_pos
= 0;
6270 uint8_t ext_spectrum_mode
= 0;
6272 static int *const mdd_cmts_docsis_version_ext_spectrum_mode
[] = {
6273 &hf_docsis_mdd_docsis_version_ext_spectrum_mode_fdd
,
6274 &hf_docsis_mdd_docsis_version_ext_spectrum_mode_fdx
,
6278 while (pos
+ 1 < end
)
6280 tlv_type
= tvb_get_uint8(tvb
, pos
);
6281 tlv_length
= tvb_get_uint8(tvb
, pos
+ 1);
6282 tlv_item
= proto_tree_add_item(tree
, hf_docsis_mdd_docsis_version_tlv
, tvb
, pos
, tlv_length
+ 2, ENC_NA
);
6283 proto_item_set_text(tlv_item
, "%s", val_to_str(tlv_type
, mdd_docsis_version_vals
, "Unknown TLV %u"));
6284 tlv_tree
= proto_item_add_subtree(tlv_item
, ett_docsis_mdd_docsis_version
);
6285 proto_tree_add_item(tlv_tree
, hf_docsis_mdd_docsis_version_tlv_type
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6286 proto_tree_add_item(tlv_tree
, hf_docsis_mdd_docsis_version_tlv_length
, tvb
, pos
+ 1, 1, ENC_BIG_ENDIAN
);
6291 case CMTS_DOCSIS_VERSION_MAJOR_PRE_40
:
6292 if (tlv_length
== 1) {
6293 proto_tree_add_item_ret_uint(tlv_tree
, hf_docsis_mdd_docsis_version_major_pre_40
,
6294 tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
, &tlv_value
);
6300 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
6302 case CMTS_DOCSIS_VERSION_MINOR_PRE_40
:
6303 if (tlv_length
== 1) {
6304 proto_tree_add_item_ret_uint(tlv_tree
, hf_docsis_mdd_docsis_version_minor_pre_40
,
6305 tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
, &tlv_value
);
6311 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
6313 case CMTS_DOCSIS_VERSION_MAJOR
:
6314 if (tlv_length
== 1) {
6315 proto_tree_add_item_ret_uint(tlv_tree
, hf_docsis_mdd_docsis_version_major
,
6316 tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
, &tlv_value
);
6320 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
6322 case CMTS_DOCSIS_VERSION_MINOR
:
6323 if (tlv_length
== 1) {
6324 proto_tree_add_item_ret_uint(tlv_tree
, hf_docsis_mdd_docsis_version_minor
,
6325 tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
, &tlv_value
);
6329 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
6331 case CMTS_DOCSIS_VERSION_EXT_SPECTRUM_MODE
:
6332 if (tlv_length
== 1) {
6333 ext_spectrum_mode
= tvb_get_uint8(tvb
, pos
);
6334 proto_tree_add_bitmask_value(tlv_tree
, tvb
, pos
, hf_docsis_mdd_docsis_version_ext_spectrum_mode
,
6335 ett_docsis_mdd_docsis_version_tlv
,
6336 mdd_cmts_docsis_version_ext_spectrum_mode
, ext_spectrum_mode
);
6338 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
6341 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown TLV type: %u", tlv_type
);
6347 proto_item_set_hidden(proto_tree_add_item(tree
, hf_docsis_mdd_cmts_major_docsis_version
, tvb
, major_pos
, 1, ENC_BIG_ENDIAN
));
6349 proto_item_set_hidden(proto_tree_add_item(tree
, hf_docsis_mdd_cmts_minor_docsis_version
, tvb
, minor_pos
, 1, ENC_BIG_ENDIAN
));
6350 if (major
> -1 && minor
> -1)
6351 proto_item_append_text(item
, ": DOCSIS %d.%d%s%s", major
, minor
,
6352 (ext_spectrum_mode
& CMTS_DOCSIS_VERSION_EXT_SPECTRUM_MODE_FDD
) ? " + FDD" : "",
6353 (ext_spectrum_mode
& CMTS_DOCSIS_VERSION_EXT_SPECTRUM_MODE_FDX
) ? " + FDX" : "");
6355 expert_add_info_format(pinfo
, item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", length
);
6359 dissect_mdd_diplexer_band_edge(tvbuff_t
* tvb
, packet_info
* pinfo _U_
, proto_tree
* tree
, int start
, uint16_t len
)
6363 uint16_t override_mhz
;
6364 proto_tree
*mdd_tree
;
6365 proto_item
*mdd_item
;
6369 while ( pos
< ( start
+ len
) )
6371 type
= tvb_get_uint8 (tvb
, pos
);
6372 mdd_tree
= proto_tree_add_subtree(tree
, tvb
, pos
, 1,
6373 ett_docsis_mdd_diplexer_band_edge
, &mdd_item
,
6374 val_to_str(type
, mdd_diplexer_band_edge_vals
,
6375 "Unknown TLV (%u)"));
6376 proto_tree_add_uint (mdd_tree
, hf_docsis_mdd_diplexer_band_edge
, tvb
, pos
, 1, type
);
6378 proto_tree_add_item_ret_uint (mdd_tree
, hf_docsis_mdd_diplexer_band_edge_length
, tvb
, pos
, 1, ENC_BIG_ENDIAN
, &length
);
6380 proto_item_set_len(mdd_item
, length
+ 2);
6382 if (length
== 1 || length
== 2)
6386 case DIPLEXER_US_UPPER_BAND_EDGE
:
6387 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_diplexer_us_upper_band_edge
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
6389 case DIPLEXER_DS_LOWER_BAND_EDGE
:
6390 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_diplexer_ds_lower_band_edge
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
6392 case DIPLEXER_DS_UPPER_BAND_EDGE
:
6393 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_diplexer_ds_upper_band_edge
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
6395 case DIPLEXER_US_UPPER_BAND_EDGE_OVERRIDE
:
6396 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_diplexer_us_upper_band_edge_override
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
6397 override_mhz
= tvb_get_ntohs (tvb
, pos
);
6398 if (override_mhz
!= 204 && override_mhz
!= 300 && override_mhz
!= 396 && override_mhz
!= 492 && override_mhz
!= 684)
6400 expert_add_info_format(pinfo
, mdd_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown Diplexer Upstream Upper Band Edge Override value: %u", override_mhz
);
6403 case DIPLEXER_DS_LOWER_BAND_EDGE_OVERRIDE
:
6404 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_diplexer_ds_lower_band_edge_override
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
6405 override_mhz
= tvb_get_ntohs (tvb
, pos
);
6406 if (override_mhz
!= 108 && override_mhz
!= 258 && override_mhz
!= 372 && override_mhz
!= 492 && override_mhz
!= 606 && override_mhz
!= 834)
6408 expert_add_info_format(pinfo
, mdd_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown Diplexer Downstream Lower Band Edge Override value: %u", override_mhz
);
6411 case DIPLEXER_DS_UPPER_BAND_EDGE_OVERRIDE
:
6412 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_diplexer_ds_upper_band_edge_override
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
6413 override_mhz
= tvb_get_ntohs (tvb
, pos
);
6414 if (override_mhz
!= 1002 && override_mhz
!= 1218 && override_mhz
!= 1794)
6416 expert_add_info_format(pinfo
, mdd_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown Diplexer Downstream Upper Band Edge Override value: %u", override_mhz
);
6420 expert_add_info_format(pinfo
, mdd_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown Diplexer Band Edge TLV type: %u", type
);
6425 expert_add_info_format(pinfo
, mdd_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
6433 dissect_mdd_advanced_band_plan(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_item
*item
, proto_tree
*tree
, int pos
, int length
)
6435 proto_item
*tlv_item
;
6436 proto_tree
*tlv_tree
;
6438 int tlv_length
, end
= pos
+ length
;
6440 while (pos
+ 1 < end
)
6442 tlv_type
= tvb_get_uint8(tvb
, pos
);
6443 tlv_length
= tvb_get_uint8(tvb
, pos
+ 1);
6444 tlv_item
= proto_tree_add_item(tree
, hf_docsis_mdd_abp_tlv
, tvb
, pos
, tlv_length
+ 2, ENC_NA
);
6445 proto_item_set_text(tlv_item
, "%s", val_to_str(tlv_type
, mdd_abp_vals
, "Unknown TLV: %u"));
6446 tlv_tree
= proto_item_add_subtree(tlv_item
, ett_docsis_mdd_advanced_band_plan
);
6447 proto_tree_add_item(tlv_tree
, hf_docsis_mdd_abp_tlv_type
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6448 proto_tree_add_item(tlv_tree
, hf_docsis_mdd_abp_tlv_length
, tvb
, pos
+ 1, 1, ENC_BIG_ENDIAN
);
6453 case MDD_ABP_SUB_BAND_COUNT
:
6454 if (tlv_length
== 1)
6455 proto_tree_add_item(tlv_tree
, hf_docsis_mdd_abp_sub_band_count
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
6457 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
6459 case MDD_ABP_SUB_BAND_WIDTH
:
6460 if (tlv_length
== 1)
6461 proto_tree_add_item(tlv_tree
, hf_docsis_mdd_abp_sub_band_width
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
6463 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
6466 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown TLV type: %u", tlv_type
);
6472 expert_add_info_format(pinfo
, item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", length
);
6476 dissect_mdd_bpi_plus(tvbuff_t
*tvb
, packet_info
*pinfo _U_
, proto_item
*item
, proto_tree
*tree
, int pos
, int length
)
6478 proto_item
*tlv_item
;
6479 proto_tree
*tlv_tree
;
6481 int tlv_length
, end
= pos
+ length
;
6483 static int *const mdd_bpi_plus_cfg
[] = {
6484 &hf_docsis_mdd_bpi_plus_cfg_eae
,
6488 while (pos
+ 1 < end
)
6490 tlv_type
= tvb_get_uint8(tvb
, pos
);
6491 tlv_length
= tvb_get_uint8(tvb
, pos
+ 1);
6492 tlv_item
= proto_tree_add_item(tree
, hf_docsis_mdd_bpi_plus_tlv
, tvb
, pos
, tlv_length
+ 2, ENC_NA
);
6493 proto_item_set_text(tlv_item
, "%s", val_to_str(tlv_type
, mdd_bpi_plus_vals
, "Unknown TLV: %u"));
6494 tlv_tree
= proto_item_add_subtree(tlv_item
, ett_docsis_mdd_bpi_plus
);
6495 proto_tree_add_item(tlv_tree
, hf_docsis_mdd_bpi_plus_tlv_type
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6496 proto_tree_add_item(tlv_tree
, hf_docsis_mdd_bpi_plus_tlv_length
, tvb
, pos
+ 1, 1, ENC_BIG_ENDIAN
);
6501 case MDD_BPI_PLUS_VERSION
:
6502 if (tlv_length
== 1)
6503 proto_tree_add_item(tlv_tree
, hf_docsis_mdd_bpi_plus_version
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
6505 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
6507 case MDD_BPI_PLUS_CFG
:
6508 if (tlv_length
== 1)
6509 proto_tree_add_bitmask(tlv_tree
, tvb
, pos
, hf_docsis_mdd_bpi_plus_cfg
, ett_sub_tlv
, mdd_bpi_plus_cfg
, ENC_BIG_ENDIAN
);
6511 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
6514 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown TLV type: %u", tlv_type
);
6520 expert_add_info_format(pinfo
, item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", length
);
6524 dissect_mdd (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
6526 proto_item
*mdd_item
;
6527 proto_tree
*mdd_tree
;
6533 proto_tree
*tlv_tree
;
6534 proto_item
*tlv_item
;
6535 static int * const non_channel_events
[] = {
6536 &hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events_sequence_out_of_range
,
6537 &hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events_cm_operating_on_battery_backup
,
6538 &hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events_cm_returned_to_ac_power
,
6542 col_set_str(pinfo
->cinfo
, COL_INFO
, "MDD Message:");
6544 mdd_item
= proto_tree_add_item(tree
, proto_docsis_mdd
, tvb
, 0, -1, ENC_NA
);
6545 mdd_tree
= proto_item_add_subtree(mdd_item
, ett_docsis_mdd
);
6547 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_ccc
, tvb
, 0, 1, ENC_BIG_ENDIAN
);
6548 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_number_of_fragments
, tvb
, 1, 1, ENC_BIG_ENDIAN
);
6549 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_fragment_sequence_number
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
6550 proto_tree_add_item (mdd_tree
, hf_docsis_mdd_current_channel_dcid
, tvb
, 3, 1, ENC_BIG_ENDIAN
);
6554 while (tvb_reported_length_remaining(tvb
, pos
) > 0)
6556 type
= tvb_get_uint8(tvb
, pos
);
6557 length
= tvb_get_uint8(tvb
, pos
+ 1);
6558 tlv_item
= proto_tree_add_item(mdd_tree
, hf_docsis_mdd_tlv
, tvb
, pos
, length
+ 2, ENC_NA
);
6559 proto_item_set_text(tlv_item
, "%s", val_to_str(type
, mdd_tlv_vals
, "Unknown TLV %u"));
6560 tlv_tree
= proto_item_add_subtree(tlv_item
, ett_tlv
);
6561 proto_tree_add_item(tlv_tree
, hf_docsis_mdd_tlv_type
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6562 proto_tree_add_item(tlv_tree
, hf_docsis_mdd_tlv_length
, tvb
, pos
+ 1, 1, ENC_BIG_ENDIAN
);
6567 case DOWNSTREAM_ACTIVE_CHANNEL_LIST
:
6568 dissect_mdd_ds_active_channel_list(tvb
, pinfo
, tlv_tree
, pos
, length
);
6570 case MAC_DOMAIN_DOWNSTREAM_SERVICE_GROUP
:
6571 dissect_mdd_ds_service_group(tvb
, pinfo
, tlv_tree
, pos
, length
);
6573 case DOWNSTREAM_AMBIGUITY_RESOLUTION_FREQUENCY_LIST
:
6574 for (i
= 0; i
< length
; i
+=4) {
6575 proto_tree_add_item (tlv_tree
, hf_docsis_mdd_downstream_ambiguity_resolution_frequency
, tvb
, pos
+ i
, 4, ENC_BIG_ENDIAN
);
6578 case RECEIVE_CHANNEL_PROFILE_REPORTING_CONTROL
:
6579 dissect_mdd_channel_profile_reporting_control(tvb
, pinfo
, tlv_tree
, pos
, length
);
6581 case IP_INITIALIZATION_PARAMETERS
:
6582 dissect_mdd_ip_init_param(tvb
, pinfo
, tlv_tree
, pos
, length
);
6584 case EARLY_AUTHENTICATION_AND_ENCRYPTION
:
6585 proto_tree_add_item (tlv_tree
, hf_docsis_mdd_early_authentication_and_encryption
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6587 case UPSTREAM_ACTIVE_CHANNEL_LIST
:
6588 dissect_mdd_upstream_active_channel_list(tvb
, pinfo
, tlv_tree
, pos
, length
);
6590 case UPSTREAM_AMBIGUITY_RESOLUTION_CHANNEL_LIST
:
6591 for (i
= 0; i
< length
; i
++) {
6592 proto_tree_add_item (tlv_tree
, hf_docsis_mdd_upstream_ambiguity_resolution_channel_list_channel_id
, tvb
, pos
+ i
, 1, ENC_BIG_ENDIAN
);
6595 case UPSTREAM_FREQUENCY_RANGE
:
6596 proto_tree_add_item (tlv_tree
, hf_docsis_mdd_upstream_frequency_range
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6598 case SYMBOL_CLOCK_LOCKING_INDICATOR
:
6599 proto_tree_add_item (tlv_tree
, hf_docsis_mdd_symbol_clock_locking_indicator
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6601 case CM_STATUS_EVENT_CONTROL
:
6602 dissect_mdd_cm_status_event_control(tvb
, pinfo
, tlv_tree
, pos
, length
);
6604 case UPSTREAM_TRANSMIT_POWER_REPORTING
:
6605 proto_tree_add_item (tlv_tree
, hf_docsis_mdd_upstream_transmit_power_reporting
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6607 case DSG_DA_TO_DSID_ASSOCIATION_ENTRY
:
6608 dissect_mdd_dsg_da_to_dsid(tvb
, pinfo
, tlv_tree
, pos
, length
);
6610 case CM_STATUS_EVENT_ENABLE_NON_CHANNEL_SPECIFIC_EVENTS
:
6611 proto_tree_add_bitmask(tlv_tree
, tvb
, pos
, hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events
, ett_sub_tlv
, non_channel_events
, ENC_BIG_ENDIAN
);
6613 case EXTENDED_UPSTREAM_TRANSMIT_POWER_SUPPORT
:
6614 proto_tree_add_item (tlv_tree
, hf_docsis_mdd_extended_upstream_transmit_power_support
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6616 case CMTS_DOCSIS_VERSION
:
6617 dissect_mdd_docsis_version(tvb
, pinfo
, tlv_item
, tlv_tree
, pos
, length
);
6619 case CM_PERIODIC_MAINTENANCE_TIMEOUT_INDICATOR
:
6620 proto_tree_add_item (tlv_tree
, hf_docsis_mdd_cm_periodic_maintenance_timeout_indicator
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
6622 case DLS_BROADCAST_AND_MULTICAST_DELIVERY_METHOD
:
6623 proto_tree_add_item (tlv_tree
, hf_docsis_mdd_dls_broadcast_and_multicast_delivery_method
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
6625 case CM_STATUS_EVENT_ENABLE_FOR_DOCSIS_3_1_EVENTS
:
6627 static int * const mdd_cm_status_event_d31
[] = {
6628 &hf_docsis_mdd_cm_status_event_d31_ofdm_prof_fail
,
6629 &hf_docsis_mdd_cm_status_event_d31_prim_down_chan_change
,
6630 &hf_docsis_mdd_cm_status_event_d31_dpd_mismatch
,
6631 &hf_docsis_mdd_cm_status_event_d31_deprecated
,
6632 &hf_docsis_mdd_cm_status_event_d31_ncp_prof_fail
,
6633 &hf_docsis_mdd_cm_status_event_d31_loss_fec_plc
,
6634 &hf_docsis_mdd_cm_status_event_d31_ncp_prof_recover
,
6635 &hf_docsis_mdd_cm_status_event_d31_fec_recover_on_plc
,
6636 &hf_docsis_mdd_cm_status_event_d31_fec_recover_on_ofdm_prof
,
6637 &hf_docsis_mdd_cm_status_event_d31_ofdma_prof_fail
,
6638 &hf_docsis_mdd_cm_status_event_d31_map_stor_overflow_ind
,
6639 &hf_docsis_mdd_cm_status_event_d31_ofdm_map_stor_almost_full_ind
,
6640 &hf_docsis_mdd_cm_status_event_d31_reserved
,
6643 proto_tree_add_bitmask_list(tlv_tree
, tvb
, pos
, length
, mdd_cm_status_event_d31
, ENC_BIG_ENDIAN
);
6647 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
6650 case DIPLEXER_BAND_EDGE
:
6651 dissect_mdd_diplexer_band_edge(tvb
, pinfo
, tlv_tree
, pos
, length
);
6653 case ADVANCED_BAND_PLAN
:
6654 dissect_mdd_advanced_band_plan(tvb
, pinfo
, tlv_item
, tlv_tree
, pos
, length
);
6657 dissect_mdd_bpi_plus(tvb
, pinfo
, tlv_item
, tlv_tree
, pos
, length
);
6660 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown MDD TLV type: %u", type
);
6667 return tvb_captured_length(tvb
);
6671 dissect_bintrngreq (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
6673 proto_item
*bintrngreq_item
;
6674 proto_tree
*bintrngreq_tree
;
6675 uint8_t md_ds_sg_id
;
6676 uint16_t offset
= 0;
6678 md_ds_sg_id
= tvb_get_uint8 (tvb
, 1);
6680 col_add_fstr (pinfo
->cinfo
, COL_INFO
, "Bonded Initial Ranging Request: MD-DS-SG-ID = %u (0x%X)",
6681 md_ds_sg_id
, md_ds_sg_id
);
6683 bintrngreq_item
= proto_tree_add_item(tree
, proto_docsis_bintrngreq
, tvb
, offset
, -1, ENC_NA
);
6684 bintrngreq_tree
= proto_item_add_subtree (bintrngreq_item
, ett_docsis_bintrngreq
);
6685 proto_tree_add_item (bintrngreq_tree
, hf_docsis_bintrngreq_capflags
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
6686 proto_tree_add_item( bintrngreq_tree
, hf_docsis_bintrngreq_capflags_frag
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
6687 proto_tree_add_item( bintrngreq_tree
, hf_docsis_bintrngreq_capflags_encrypt
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
6689 proto_tree_add_item (bintrngreq_tree
, hf_docsis_bintrngreq_mddsgid
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
6691 proto_tree_add_item (bintrngreq_tree
, hf_docsis_mgt_down_chid
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
6693 proto_tree_add_item (bintrngreq_tree
, hf_docsis_mgt_upstream_chid
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
6695 return tvb_captured_length(tvb
);
6699 dissect_type35ucd(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
6701 return dissect_any_ucd(tvb
, pinfo
, tree
, proto_docsis_type35ucd
, MGT_TYPE35UCD
);
6705 dissect_dbcreq (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
6707 proto_item
*dbcreq_item
, *reassembled_item
;
6708 proto_tree
*dbcreq_tree
, *reassembled_tree
;
6709 uint32_t transid
, number_of_fragments
, fragment_sequence_number
, id
;
6712 dbcreq_item
= proto_tree_add_item(tree
, proto_docsis_dbcreq
, tvb
, 0, -1, ENC_NA
);
6713 dbcreq_tree
= proto_item_add_subtree (dbcreq_item
, ett_docsis_dbcreq
);
6714 proto_tree_add_item_ret_uint(dbcreq_tree
, hf_docsis_mgt_tranid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &transid
);
6715 proto_tree_add_item_ret_uint( dbcreq_tree
, hf_docsis_dbcreq_number_of_fragments
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &number_of_fragments
);
6716 proto_tree_add_item_ret_uint( dbcreq_tree
, hf_docsis_dbcreq_fragment_sequence_number
, tvb
, 3, 1, ENC_BIG_ENDIAN
, &fragment_sequence_number
);
6718 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
6719 "Dynamic Bonding Change Request: Tran-Id = %u ", transid
);
6720 col_set_fence(pinfo
->cinfo
, COL_INFO
);
6722 if(number_of_fragments
> 1) {
6723 pinfo
->fragmented
= true;
6725 id
= (MGT_DBC_REQ
<< 24) + transid
;
6726 fragment_head
* reassembled_tlv
= NULL
;
6727 reassembled_tlv
= fragment_add_seq_check(&docsis_tlv_reassembly_table
,
6729 id
, NULL
, /* ID for fragments belonging together */
6730 fragment_sequence_number
- 1, /* Sequence number starts at 0 */
6731 tvb_reported_length_remaining(tvb
, 4), /* fragment length - to the end */
6732 (fragment_sequence_number
!= number_of_fragments
)); /* More fragments? */
6734 if (reassembled_tlv
) {
6735 tvbuff_t
*tlv_tvb
= NULL
;
6737 reassembled_item
= proto_tree_add_item(dbcreq_tree
, hf_docsis_tlv_reassembled
, tvb
, 0, -1, ENC_NA
);
6738 reassembled_tree
= proto_item_add_subtree (reassembled_item
, ett_docsis_tlv_reassembled
);
6741 tlv_tvb
= process_reassembled_data(tvb
, 4, pinfo
, "Reassembled TLV", reassembled_tlv
, &docsis_tlv_frag_items
,
6742 NULL
, reassembled_tree
);
6744 if (tlv_tvb
&& tvb_reported_length(tlv_tvb
) > 0) {
6745 call_dissector (docsis_tlv_handle
, tlv_tvb
, pinfo
, reassembled_tree
);
6750 /* Call Dissector for Appendix C TLVs */
6751 next_tvb
= tvb_new_subset_remaining (tvb
, 4);
6752 call_dissector (docsis_tlv_handle
, next_tvb
, pinfo
, dbcreq_tree
);
6755 return tvb_captured_length(tvb
);
6759 dissect_dbcrsp (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
6761 proto_item
*dbcrsp_item
;
6762 proto_tree
*dbcrsp_tree
;
6763 uint32_t transid
, confcode
;
6766 dbcrsp_item
= proto_tree_add_item(tree
, proto_docsis_dbcrsp
, tvb
, 0, -1, ENC_NA
);
6767 dbcrsp_tree
= proto_item_add_subtree (dbcrsp_item
, ett_docsis_dbcrsp
);
6768 proto_tree_add_item_ret_uint(dbcrsp_tree
, hf_docsis_mgt_tranid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &transid
);
6769 proto_tree_add_item_ret_uint( dbcrsp_tree
, hf_docsis_dbcrsp_conf_code
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &confcode
);
6771 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
6772 "Dynamic Bonding Change Response: Tran-Id = %u (%s) ", transid
,
6773 val_to_str_ext (confcode
, &docsis_conf_code_ext
, "%d"));
6775 /* Call Dissector for Appendix C TLVs */
6776 next_tvb
= tvb_new_subset_remaining (tvb
, 3);
6777 call_dissector (docsis_tlv_handle
, next_tvb
, pinfo
, dbcrsp_tree
);
6778 return tvb_captured_length(tvb
);
6782 dissect_dbcack (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
6784 proto_item
*dbcack_item
;
6785 proto_tree
*dbcack_tree
= NULL
;
6789 transid
= tvb_get_ntohs (tvb
, 0);
6791 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
6792 "Dynamic Bonding Change Acknowledge: Tran-Id = %u ", transid
);
6794 dbcack_item
= proto_tree_add_item(tree
, proto_docsis_dbcack
, tvb
, 0, -1, ENC_NA
);
6795 dbcack_tree
= proto_item_add_subtree (dbcack_item
, ett_docsis_dbcack
);
6796 proto_tree_add_item (dbcack_tree
, hf_docsis_mgt_tranid
, tvb
, 0, 2, ENC_BIG_ENDIAN
);
6798 /* Call Dissector for Appendix C TLVs */
6799 next_tvb
= tvb_new_subset_remaining (tvb
, 2);
6800 call_dissector (docsis_tlv_handle
, next_tvb
, pinfo
, dbcack_tree
);
6801 return tvb_captured_length(tvb
);
6805 dissect_dpvreq (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
6808 proto_tree
*dpvreq_tree
;
6809 uint32_t transid
, dschan
;
6811 it
= proto_tree_add_item(tree
, proto_docsis_dpvreq
, tvb
, 0, -1, ENC_NA
);
6812 dpvreq_tree
= proto_item_add_subtree (it
, ett_docsis_dpvreq
);
6813 proto_tree_add_item_ret_uint (dpvreq_tree
, hf_docsis_mgt_tranid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &transid
);
6814 proto_tree_add_item_ret_uint (dpvreq_tree
, hf_docsis_mgt_down_chid
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &dschan
);
6816 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
6817 "DOCSIS Path Verify Request: Transaction ID = %u DS-Ch %d",
6820 proto_tree_add_item (dpvreq_tree
, hf_docsis_dpv_flags
, tvb
, 3, 1, ENC_BIG_ENDIAN
);
6821 proto_tree_add_item (dpvreq_tree
, hf_docsis_dpv_us_sf
, tvb
, 4, 4, ENC_BIG_ENDIAN
);
6822 proto_tree_add_item (dpvreq_tree
, hf_docsis_dpv_n
, tvb
, 8, 2, ENC_BIG_ENDIAN
);
6823 proto_tree_add_item (dpvreq_tree
, hf_docsis_dpv_start
, tvb
, 10, 1, ENC_BIG_ENDIAN
);
6824 proto_tree_add_item (dpvreq_tree
, hf_docsis_dpv_end
, tvb
, 11, 1, ENC_BIG_ENDIAN
);
6825 proto_tree_add_item (dpvreq_tree
, hf_docsis_dpv_ts_start
, tvb
, 12, 4, ENC_BIG_ENDIAN
);
6826 proto_tree_add_item (dpvreq_tree
, hf_docsis_dpv_ts_end
, tvb
, 16, 4, ENC_BIG_ENDIAN
);
6828 return tvb_captured_length(tvb
);
6832 dissect_dpvrsp (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
6835 proto_tree
*dpvrsp_tree
= NULL
;
6836 uint32_t transid
, dschan
;
6838 it
= proto_tree_add_item (tree
, proto_docsis_dpvrsp
, tvb
, 0, -1, ENC_NA
);
6839 dpvrsp_tree
= proto_item_add_subtree (it
, ett_docsis_dpvrsp
);
6840 proto_tree_add_item_ret_uint (dpvrsp_tree
, hf_docsis_mgt_tranid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &transid
);
6841 proto_tree_add_item_ret_uint (dpvrsp_tree
, hf_docsis_mgt_down_chid
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &dschan
);
6843 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
6844 "DOCSIS Path Verify Response: Transaction ID = %u DS-Ch %d",
6847 proto_tree_add_item (dpvrsp_tree
, hf_docsis_dpv_flags
, tvb
, 3, 1, ENC_BIG_ENDIAN
);
6848 proto_tree_add_item (dpvrsp_tree
, hf_docsis_dpv_us_sf
, tvb
, 4, 4, ENC_BIG_ENDIAN
);
6849 proto_tree_add_item (dpvrsp_tree
, hf_docsis_dpv_n
, tvb
, 8, 2, ENC_BIG_ENDIAN
);
6850 proto_tree_add_item (dpvrsp_tree
, hf_docsis_dpv_start
, tvb
, 10, 1, ENC_BIG_ENDIAN
);
6851 proto_tree_add_item (dpvrsp_tree
, hf_docsis_dpv_end
, tvb
, 11, 1, ENC_BIG_ENDIAN
);
6852 proto_tree_add_item (dpvrsp_tree
, hf_docsis_dpv_ts_start
, tvb
, 12, 4, ENC_BIG_ENDIAN
);
6853 proto_tree_add_item (dpvrsp_tree
, hf_docsis_dpv_ts_end
, tvb
, 16, 4, ENC_BIG_ENDIAN
);
6855 return tvb_captured_length(tvb
);
6859 dissect_cmstatus_status_event_tlv (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
)
6861 proto_item
*it
, *tlv_item
, *tlv_len_item
;
6862 proto_tree
*tlv_tree
, *tlvtlv_tree
;
6867 it
= proto_tree_add_item(tree
, hf_docsis_cmstatus_status_event_tlv_data
, tvb
, 0, tvb_reported_length(tvb
), ENC_NA
);
6868 tlv_tree
= proto_item_add_subtree (it
, ett_docsis_cmstatus_status_event_tlv
);
6870 while (tvb_reported_length_remaining(tvb
, pos
) > 0)
6872 type
= tvb_get_uint8 (tvb
, pos
);
6873 tlvtlv_tree
= proto_tree_add_subtree(tlv_tree
, tvb
, pos
, -1,
6874 ett_docsis_cmstatus_status_event_tlvtlv
, &tlv_item
,
6875 val_to_str(type
, cmstatus_status_event_tlv_vals
,
6876 "Unknown Status Event TLV (%u)"));
6877 proto_tree_add_uint (tlvtlv_tree
, hf_docsis_cmstatus_status_event_type
, tvb
, pos
, 1, type
);
6879 tlv_len_item
= proto_tree_add_item_ret_uint (tlvtlv_tree
, hf_docsis_cmstatus_status_event_length
, tvb
, pos
, 1, ENC_NA
, &length
);
6881 proto_item_set_len(tlv_item
, length
+ 2);
6885 case EVENT_DS_CH_ID
:
6888 proto_tree_add_item (tlvtlv_tree
, hf_docsis_cmstatus_status_event_ds_ch_id
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6892 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
6896 case EVENT_US_CH_ID
:
6899 proto_tree_add_item (tlvtlv_tree
, hf_docsis_cmstatus_status_event_us_ch_id
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6903 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
6910 proto_tree_add_item (tlvtlv_tree
, hf_docsis_cmstatus_status_event_dsid
, tvb
, pos
, 3, ENC_BIG_ENDIAN
);
6914 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
6918 case EVENT_MAC_ADDRESS
:
6921 proto_tree_add_item (tlvtlv_tree
, hf_docsis_cmstatus_status_event_mac_address
, tvb
, pos
, 6, ENC_NA
);
6925 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
6929 case EVENT_DS_OFDM_PROFILE_ID
:
6932 proto_tree_add_item (tlvtlv_tree
, hf_docsis_cmstatus_status_event_ds_ofdm_profile_id
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6936 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
6940 case EVENT_US_OFDMA_PROFILE_ID
:
6943 proto_tree_add_item (tlvtlv_tree
, hf_docsis_cmstatus_status_event_us_ofdma_profile_id
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
6947 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
6952 if (length
>= 1 && length
<= 80)
6954 proto_tree_add_item (tlvtlv_tree
, hf_docsis_cmstatus_status_event_descr
, tvb
, pos
, length
, ENC_NA
);
6958 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
6967 dissect_cmstatus_tlv (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
)
6969 proto_item
*it
, *tlv_item
;
6970 proto_tree
*tlv_tree
, *tlvtlv_tree
;
6976 it
= proto_tree_add_item(tree
, hf_docsis_cmstatus_tlv_data
, tvb
, 0, tvb_reported_length(tvb
), ENC_NA
);
6977 tlv_tree
= proto_item_add_subtree (it
, ett_docsis_cmstatus_tlv
);
6979 while (tvb_reported_length_remaining(tvb
, pos
) > 0)
6981 type
= tvb_get_uint8 (tvb
, pos
);
6982 tlvtlv_tree
= proto_tree_add_subtree(tlv_tree
, tvb
, pos
, -1,
6983 ett_docsis_cmstatus_tlvtlv
, &tlv_item
,
6984 val_to_str(type
, cmstatus_tlv_vals
,
6985 "Unknown TLV (%u)"));
6986 proto_tree_add_uint (tlvtlv_tree
, hf_docsis_cmstatus_type
, tvb
, pos
, 1, type
);
6988 proto_tree_add_item_ret_uint (tlvtlv_tree
, hf_docsis_cmstatus_length
, tvb
, pos
, 1, ENC_NA
, &length
);
6990 proto_item_set_len(tlv_item
, length
+ 2);
6995 next_tvb
= tvb_new_subset_length(tvb
, pos
, length
);
6996 dissect_cmstatus_status_event_tlv (next_tvb
, pinfo
, tlvtlv_tree
);
7005 dissect_cmstatus_common (tvbuff_t
* tvb
, proto_tree
* tree
)
7009 event_type
= tvb_get_uint8 (tvb
, 2);
7012 case SEC_CH_MDD_TIMEOUT
:
7013 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_mdd_t
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7016 case QAM_FEC_LOCK_FAILURE
:
7017 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_qfl_f
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7020 case SEQ_OUT_OF_RANGE
:
7021 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_s_o
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7024 case SEC_CH_MDD_RECOVERY
:
7025 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_mdd_r
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7028 case QAM_FEC_LOCK_RECOVERY
:
7029 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_qfl_r
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7033 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_t4_t
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7036 case T3_RETRIES_EXCEEDED
:
7037 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_t3_e
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7040 case SUCCESS_RANGING_AFTER_T3_RETRIES_EXCEEDED
:
7041 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_rng_s
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7045 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_cm_b
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7048 case CM_ON_AC_POWER
:
7049 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_cm_a
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7052 case MAC_REMOVAL_EVENT
:
7053 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_mac_removal
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7056 case DS_OFDM_PROFILE_FAILURE
:
7057 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_ds_ofdm_profile_failure
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7060 case PRIMARY_DOWNSTREAM_CHANGE
:
7061 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_prim_ds_change
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7065 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_dpd_mismatch
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7068 case NCP_PROFILE_FAILURE
:
7069 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_ncp_profile_failure
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7073 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_plc_failure
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7076 case NCP_PROFILE_RECOVERY
:
7077 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_ncp_profile_recovery
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7081 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_plc_recovery
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7084 case OFDM_PROFILE_RECOVERY
:
7085 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_ofdm_profile_recovery
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7088 case OFDMA_PROFILE_FAILURE
:
7089 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_ofdma_profile_failure
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7092 case MAP_STORAGE_OVERFLOW_INDICATOR
:
7093 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_map_storage_overflow_indicator
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7096 case MAP_STORAGE_ALMOST_FULL_INDICATOR
:
7097 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_map_storage_almost_full_indicator
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7101 proto_tree_add_item (tree
, hf_docsis_cmstatus_e_t_unknown
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7108 dissect_cmstatus (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
7111 proto_tree
*cmstatus_tree
;
7115 it
= proto_tree_add_item(tree
, proto_docsis_cmstatus
, tvb
, 0, -1, ENC_NA
);
7116 cmstatus_tree
= proto_item_add_subtree (it
, ett_docsis_cmstatus
);
7117 proto_tree_add_item_ret_uint (cmstatus_tree
, hf_docsis_mgt_tranid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &transid
);
7119 col_add_fstr (pinfo
->cinfo
, COL_INFO
, "CM-STATUS Report: Transaction ID = %u", transid
);
7121 dissect_cmstatus_common (tvb
, cmstatus_tree
);
7123 /* Call Dissector TLVs */
7124 next_tvb
= tvb_new_subset_remaining(tvb
, 3);
7125 dissect_cmstatus_tlv(next_tvb
, pinfo
, cmstatus_tree
);
7126 return tvb_captured_length(tvb
);
7130 dissect_cmstatusack (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
7133 proto_tree
*cmstatus_tree
;
7136 it
= proto_tree_add_item(tree
, proto_docsis_cmstatusack
, tvb
, 0, -1, ENC_NA
);
7137 cmstatus_tree
= proto_item_add_subtree (it
, ett_docsis_cmstatusack
);
7138 proto_tree_add_item_ret_uint (cmstatus_tree
, hf_docsis_mgt_tranid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &transid
);
7140 col_add_fstr (pinfo
->cinfo
, COL_INFO
, "CM-STATUS Report Acknowledge: Transaction ID = %u", transid
);
7142 dissect_cmstatus_common (tvb
, cmstatus_tree
);
7144 return tvb_captured_length(tvb
);
7148 dissect_ds_event(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
7152 proto_tree
*event_tree
;
7153 proto_item
*event_item
, *tlv_len_item
;
7156 while (pos
< (start
+ len
))
7158 type
= tvb_get_uint8 (tvb
, pos
);
7159 event_tree
= proto_tree_add_subtree(tree
, tvb
, pos
, -1,
7160 ett_docsis_cmctrl_tlv_ds_event
, &event_item
,
7161 val_to_str(type
, cmctrlreq_ds_tlv_vals
,
7162 "Unknown TLV (%u)"));
7163 proto_tree_add_uint (event_tree
, hf_docsis_cmctrl_ds_type
, tvb
, pos
, 1, type
);
7165 tlv_len_item
= proto_tree_add_item_ret_uint (event_tree
, hf_docsis_cmctrl_ds_length
, tvb
, pos
, 1, ENC_NA
, &length
);
7167 proto_item_set_len(event_item
, length
+ 2);
7171 case DS_EVENT_CH_ID
:
7174 proto_tree_add_item (event_tree
, hf_docsis_cmctrl_ds_event_ch_id
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
7178 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
7184 proto_tree_add_item (event_tree
, hf_docsis_cmctrl_ds_event_mask
, tvb
, pos
, length
, ENC_NA
);
7188 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
7198 dissect_us_event(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
*tree
, int start
, uint16_t len
)
7202 proto_tree
*event_tree
;
7203 proto_item
*event_item
, *tlv_len_item
;
7206 while (pos
< (start
+ len
))
7208 type
= tvb_get_uint8 (tvb
, pos
);
7209 event_tree
= proto_tree_add_subtree(tree
, tvb
, pos
, -1,
7210 ett_docsis_cmctrl_tlv_us_event
, &event_item
,
7211 val_to_str(type
, cmctrlreq_us_tlv_vals
,
7212 "Unknown TLV (%u)"));
7213 proto_tree_add_uint (event_tree
, hf_docsis_cmctrlreq_us_type
, tvb
, pos
, 1, type
);
7215 tlv_len_item
= proto_tree_add_item_ret_uint (event_tree
, hf_docsis_cmctrlreq_us_length
, tvb
, pos
, 1, ENC_NA
, &length
);
7217 proto_item_set_len(event_item
, length
+ 2);
7221 case US_EVENT_CH_ID
:
7224 proto_tree_add_item (event_tree
, hf_docsis_cmctrl_us_event_ch_id
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
7228 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
7234 proto_tree_add_item (event_tree
, hf_docsis_cmctrl_us_event_mask
, tvb
, pos
, length
, ENC_NA
);
7238 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
7247 dissect_cmctrlreq_tlv(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
)
7249 proto_item
*it
, *tlv_item
, *tlv_len_item
;
7250 proto_tree
*tlv_tree
, *tlvtlv_tree
;
7255 it
= proto_tree_add_item(tree
, hf_docsis_cmctrlreq_tlv_data
, tvb
, 0, tvb_reported_length(tvb
), ENC_NA
);
7256 tlv_tree
= proto_item_add_subtree (it
, ett_docsis_cmctrlreq_tlv
);
7258 while (tvb_reported_length_remaining(tvb
, pos
) > 0)
7260 type
= tvb_get_uint8 (tvb
, pos
);
7261 length
= tvb_get_uint8 (tvb
, pos
+ 1);
7262 tlvtlv_tree
= proto_tree_add_subtree(tlv_tree
, tvb
, pos
, length
+ 2,
7263 ett_docsis_cmctrlreq_tlvtlv
, &tlv_item
,
7264 val_to_str(type
, cmctrlreq_tlv_vals
,
7265 "Unknown TLV (%u)"));
7266 proto_tree_add_uint (tlvtlv_tree
, hf_docsis_cmctrlreq_type
, tvb
, pos
, 1, type
);
7268 tlv_len_item
= proto_tree_add_item (tlvtlv_tree
, hf_docsis_cmctrlreq_length
, tvb
, pos
, 1, ENC_NA
);
7270 proto_item_set_len(tlv_item
, length
+ 2);
7277 proto_tree_add_item (tlvtlv_tree
, hf_docsis_cmctrl_tlv_mute
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
7281 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
7284 case CM_CTRL_MUTE_TIMEOUT
:
7285 if (length
== 4 || length
== 1) /* response TLV always with len 1 */
7287 proto_tree_add_item (tlvtlv_tree
, hf_docsis_cmctrl_tlv_mute_timeout
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
7291 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
7294 case CM_CTRL_REINIT
:
7297 proto_tree_add_item (tlvtlv_tree
, hf_docsis_cmctrl_tlv_reinit
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
7301 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
7304 case CM_CTRL_DISABLE_FWD
:
7307 proto_tree_add_item (tlvtlv_tree
, hf_docsis_cmctrl_tlv_disable_fwd
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
7311 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
7314 case CM_CTRL_DS_EVENT
:
7317 proto_tree_add_item (tlvtlv_tree
, hf_docsis_cmctrl_tlv_ds_event
, tvb
, pos
, length
, ENC_NA
);
7321 dissect_ds_event(tvb
, pinfo
, tlvtlv_tree
, pos
, length
);
7324 case CM_CTRL_US_EVENT
:
7327 proto_tree_add_item (tlvtlv_tree
, hf_docsis_cmctrl_tlv_us_event
, tvb
, pos
, length
, ENC_NA
);
7331 dissect_us_event(tvb
, pinfo
, tlvtlv_tree
, pos
, length
);
7335 if (length
== 2 || length
== 1) /* response TLV always with len 1 */
7337 proto_tree_add_item (tlvtlv_tree
, hf_docsis_cmctrl_tlv_event
, tvb
, pos
, length
, ENC_NA
);
7341 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
7352 dissect_cmctrlreq(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
7355 proto_tree
*cmctrlreq_tree
;
7359 it
= proto_tree_add_item (tree
, proto_docsis_cmctrlreq
, tvb
, 0, -1, ENC_NA
);
7360 cmctrlreq_tree
= proto_item_add_subtree (it
, ett_docsis_cmctrlreq
);
7361 proto_tree_add_item_ret_uint (cmctrlreq_tree
, hf_docsis_mgt_tranid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &transid
);
7363 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
7364 "CM Control Request: Transaction ID = %u", transid
);
7366 next_tvb
= tvb_new_subset_remaining(tvb
, 2);
7367 dissect_cmctrlreq_tlv(next_tvb
, pinfo
, cmctrlreq_tree
);
7368 return tvb_captured_length(tvb
);
7372 dissect_cmctrlrsp (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
7375 proto_tree
*cmctrlrsp_tree
;
7379 it
= proto_tree_add_item(tree
, proto_docsis_cmctrlrsp
, tvb
, 0, -1, ENC_NA
);
7380 cmctrlrsp_tree
= proto_item_add_subtree (it
, ett_docsis_cmctrlrsp
);
7381 proto_tree_add_item_ret_uint (cmctrlrsp_tree
, hf_docsis_mgt_tranid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &transid
);
7383 col_add_fstr (pinfo
->cinfo
, COL_INFO
,
7384 "CM Control Response: Transaction ID = %u", transid
);
7386 /* Call Dissector for Appendix C TLVs */
7387 next_tvb
= tvb_new_subset_remaining (tvb
, 2);
7388 dissect_cmctrlreq_tlv(next_tvb
, pinfo
, cmctrlrsp_tree
);
7389 return tvb_captured_length(tvb
);
7393 dissect_regreqmp (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
7396 proto_tree
*regreqmp_tree
;
7399 col_set_str(pinfo
->cinfo
, COL_INFO
, "REG-REQ-MP Message:");
7401 it
= proto_tree_add_item(tree
, proto_docsis_regreqmp
, tvb
, 0, -1, ENC_NA
);
7402 regreqmp_tree
= proto_item_add_subtree (it
, ett_docsis_regreqmp
);
7404 proto_tree_add_item (regreqmp_tree
, hf_docsis_regreqmp_sid
, tvb
, 0, 2, ENC_BIG_ENDIAN
);
7405 proto_tree_add_item (regreqmp_tree
, hf_docsis_regreqmp_number_of_fragments
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7406 proto_tree_add_item (regreqmp_tree
, hf_docsis_regreqmp_fragment_sequence_number
, tvb
, 3, 1, ENC_BIG_ENDIAN
);
7408 /* Call Dissector for Appendix C TLVs */
7409 next_tvb
= tvb_new_subset_remaining (tvb
, 4);
7410 call_dissector (docsis_tlv_handle
, next_tvb
, pinfo
, regreqmp_tree
);
7411 return tvb_captured_length(tvb
);
7415 dissect_regrspmp (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
7417 proto_item
*it
, *reassembled_item
;
7418 proto_tree
*regrspmp_tree
, *reassembled_tree
;
7419 unsigned sid
, number_of_fragments
, fragment_sequence_number
, id
;
7423 col_set_str(pinfo
->cinfo
, COL_INFO
, "REG-RSP-MP Message");
7424 /* Make sure embedded UCD does not overwrite REGRSPMP info */
7425 col_set_fence(pinfo
->cinfo
, COL_INFO
);
7427 it
= proto_tree_add_item(tree
, proto_docsis_regrspmp
, tvb
, 0, -1, ENC_NA
);
7428 regrspmp_tree
= proto_item_add_subtree (it
, ett_docsis_regrspmp
);
7430 proto_tree_add_item_ret_uint (regrspmp_tree
, hf_docsis_regrspmp_sid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &sid
);
7431 proto_tree_add_item (regrspmp_tree
, hf_docsis_regrspmp_response
, tvb
, 2, 1, ENC_BIG_ENDIAN
);
7432 proto_tree_add_item_ret_uint (regrspmp_tree
, hf_docsis_regrspmp_number_of_fragments
, tvb
, 3, 1, ENC_BIG_ENDIAN
, &number_of_fragments
);
7433 proto_tree_add_item_ret_uint (regrspmp_tree
, hf_docsis_regrspmp_fragment_sequence_number
, tvb
, 4, 1, ENC_BIG_ENDIAN
, &fragment_sequence_number
);
7435 col_add_fstr(pinfo
->cinfo
, COL_INFO
, " (fragment %d):", fragment_sequence_number
);
7436 /* Make sure embedded UCD does not overwrite REGRSPMP info */
7437 col_set_fence(pinfo
->cinfo
, COL_INFO
);
7439 if(number_of_fragments
> 1) {
7440 pinfo
->fragmented
= true;
7442 id
= (MGT_REG_RSP
<< 24) + sid
;
7443 fragment_head
* reassembled_tlv
= NULL
;
7444 reassembled_tlv
= fragment_add_seq_check(&docsis_tlv_reassembly_table
,
7446 id
, NULL
, /* ID for fragments belonging together */
7447 fragment_sequence_number
- 1, /* Sequence number starts at 0 */
7448 tvb_reported_length_remaining(tvb
, 5), /* fragment length - to the end */
7449 (fragment_sequence_number
!= number_of_fragments
)); /* More fragments? */
7451 if (reassembled_tlv
) {
7452 tvbuff_t
*tlv_tvb
= NULL
;
7454 reassembled_item
= proto_tree_add_item(regrspmp_tree
, hf_docsis_tlv_reassembled
, tvb
, 0, -1, ENC_NA
);
7455 reassembled_tree
= proto_item_add_subtree (reassembled_item
, ett_docsis_tlv_reassembled
);
7458 tlv_tvb
= process_reassembled_data(tvb
, 5, pinfo
, "Reassembled TLV", reassembled_tlv
, &docsis_tlv_frag_items
,
7459 NULL
, reassembled_tree
);
7461 if (tlv_tvb
&& tvb_reported_length(tlv_tvb
) > 0) {
7462 call_dissector (docsis_tlv_handle
, tlv_tvb
, pinfo
, reassembled_tree
);
7467 /* Call Dissector for Appendix C TLVs */
7468 next_tvb
= tvb_new_subset_remaining (tvb
, 5);
7469 call_dissector (docsis_tlv_handle
, next_tvb
, pinfo
, regrspmp_tree
);
7472 return tvb_captured_length(tvb
);
7476 dissect_emrsp_tlv (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
)
7478 proto_item
*it
, *tlv_item
;
7479 proto_tree
*tlv_tree
, *tlvtlv_tree
;
7484 it
= proto_tree_add_item(tree
, hf_docsis_emrsp_tlv_data
, tvb
, 0, tvb_reported_length(tvb
), ENC_NA
);
7485 tlv_tree
= proto_item_add_subtree (it
, ett_docsis_emrsp_tlv
);
7487 while (tvb_reported_length_remaining(tvb
, pos
) > 0)
7489 type
= tvb_get_uint8 (tvb
, pos
);
7490 length
= tvb_get_uint8 (tvb
, pos
+ 1);
7491 tlvtlv_tree
= proto_tree_add_subtree(tlv_tree
, tvb
, pos
, length
+ 2,
7492 ett_docsis_emrsp_tlvtlv
, &tlv_item
,
7493 val_to_str(type
, emrsp_tlv_vals
,
7494 "Unknown TLV (%u)"));
7495 proto_tree_add_item (tlvtlv_tree
, hf_docsis_emrsp_tlv_type
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
7497 proto_tree_add_item (tlvtlv_tree
, hf_docsis_emrsp_tlv_length
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
7503 case EM_HOLDOFF_TIMER
:
7504 proto_tree_add_item (tlvtlv_tree
, hf_docsis_emrsp_tlv_holdoff_timer
, tvb
, pos
, length
, ENC_BIG_ENDIAN
);
7507 proto_tree_add_item (tlvtlv_tree
, hf_docsis_emrsp_tlv_unknown
, tvb
, pos
- 2, length
+2, ENC_NA
);
7508 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown TLV: %u", type
);
7516 dissect_emreq (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
7519 proto_tree
*em_tree
;
7521 uint32_t trans_id
, req_power_mode
;
7523 it
= proto_tree_add_item(tree
, proto_docsis_emreq
, tvb
, 0, -1, ENC_NA
);
7524 em_tree
= proto_item_add_subtree (it
, ett_docsis_emreq
);
7525 proto_tree_add_item_ret_uint (em_tree
, hf_docsis_mgt_tranid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &trans_id
);
7526 proto_tree_add_item_ret_uint (em_tree
, hf_docsis_emreq_req_power_mode
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &req_power_mode
);
7527 proto_tree_add_item (em_tree
, hf_docsis_emreq_reserved
, tvb
, 3, 1, ENC_BIG_ENDIAN
);
7529 col_add_fstr (pinfo
->cinfo
, COL_INFO
, "EM-REQ: Transaction ID: %u, Requested Power Mode: %s (%u)", trans_id
,
7530 val_to_str(req_power_mode
, emreq_req_power_mode_vals
, "Unknown Requested Power Mode (%u)"), req_power_mode
);
7532 return tvb_captured_length(tvb
);
7536 dissect_emrsp (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
7539 proto_tree
*em_tree
;
7542 uint32_t trans_id
, rsp_code
;
7544 it
= proto_tree_add_item(tree
, proto_docsis_emrsp
, tvb
, 0, -1, ENC_NA
);
7545 em_tree
= proto_item_add_subtree (it
, ett_docsis_emrsp
);
7546 proto_tree_add_item_ret_uint (em_tree
, hf_docsis_mgt_tranid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &trans_id
);
7547 proto_tree_add_item_ret_uint (em_tree
, hf_docsis_emrsp_rsp_code
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &rsp_code
);
7548 proto_tree_add_item (em_tree
, hf_docsis_emrsp_reserved
, tvb
, 3, 1, ENC_BIG_ENDIAN
);
7550 col_add_fstr (pinfo
->cinfo
, COL_INFO
, "EM-RSP: Transaction ID: %u, Response Code: %s (%u)", trans_id
,
7551 val_to_str(rsp_code
, emrsp_rsp_code_vals
, "Unknown Response Code (%u)"), rsp_code
);
7553 /* Call Dissector TLVs */
7554 if(tvb_reported_length_remaining(tvb
, 4) > 0 )
7556 next_tvb
= tvb_new_subset_remaining(tvb
, 4);
7557 dissect_emrsp_tlv(next_tvb
, pinfo
, em_tree
);
7560 return tvb_captured_length(tvb
);
7564 dissect_subcarrier_assignment_range_list(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, uint16_t pos
, uint32_t len
)
7566 proto_item
* type_item
;
7567 uint32_t i
, subcarrier_assignment_type
;
7569 type_item
= proto_tree_add_item_ret_uint (tree
, hf_docsis_ocd_tlv_subc_assign_type
, tvb
, pos
, 1, ENC_BIG_ENDIAN
, &subcarrier_assignment_type
);
7570 proto_tree_add_item (tree
, hf_docsis_ocd_tlv_subc_assign_value
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
7571 proto_tree_add_item (tree
, hf_docsis_ocd_subc_assign_subc_type
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
7574 switch (subcarrier_assignment_type
) {
7575 case SUBCARRIER_ASSIGNMENT_RANGE_CONT
:
7576 case SUBCARRIER_ASSIGNMENT_RANGE_SKIPBY1
:
7577 proto_tree_add_item (tree
, hf_docsis_ocd_subc_assign_range
, tvb
, pos
, 4, ENC_BIG_ENDIAN
);
7579 case SUBCARRIER_ASSIGNMENT_LIST
:
7580 for (i
= 0; i
< len
/2; ++i
) {
7581 proto_tree_add_item (tree
, hf_docsis_ocd_subc_assign_index
, tvb
, pos
, 2, ENC_BIG_ENDIAN
);
7586 expert_add_info_format(pinfo
, type_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown subcarrier assignment type %d", subcarrier_assignment_type
);
7592 dissect_ocd_tlv (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
)
7594 proto_item
*it
, *tlv_item
, *tlv_len_item
;
7595 proto_tree
*tlv_tree
, *tlvtlv_tree
;
7600 it
= proto_tree_add_item(tree
, hf_docsis_ocd_tlv_data
, tvb
, 0, tvb_reported_length(tvb
), ENC_NA
);
7601 tlv_tree
= proto_item_add_subtree (it
, ett_docsis_ocd_tlv
);
7603 while (tvb_reported_length_remaining(tvb
, pos
) > 0)
7605 type
= tvb_get_uint8 (tvb
, pos
);
7606 tlvtlv_tree
= proto_tree_add_subtree(tlv_tree
, tvb
, pos
, -1,
7607 ett_docsis_ocd_tlvtlv
, &tlv_item
,
7608 val_to_str(type
, ocd_tlv_vals
,
7609 "Unknown TLV (%u)"));
7610 proto_tree_add_uint (tlvtlv_tree
, hf_docsis_ocd_type
, tvb
, pos
, 1, type
);
7612 tlv_len_item
= proto_tree_add_item_ret_uint (tlvtlv_tree
, hf_docsis_ocd_length
, tvb
, pos
, 1, ENC_NA
, &length
);
7614 proto_item_set_len(tlv_item
, length
+ 2);
7618 case DISCRETE_FOURIER_TRANSFORM_SIZE
:
7621 proto_tree_add_item (tlvtlv_tree
, hf_docsis_ocd_tlv_four_trans_size
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
7625 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
7631 proto_tree_add_item (tlvtlv_tree
, hf_docsis_ocd_tlv_cycl_pref
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
7635 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
7641 proto_tree_add_item (tlvtlv_tree
, hf_docsis_ocd_tlv_roll_off
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
7645 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
7648 case OFDM_SPECTRUM_LOCATION
:
7651 proto_tree_add_item (tlvtlv_tree
, hf_docsis_ocd_tlv_ofdm_spec_loc
, tvb
, pos
, 4, ENC_BIG_ENDIAN
);
7655 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
7658 case TIME_INTERLEAVING_DEPTH
:
7661 proto_tree_add_item (tlvtlv_tree
, hf_docsis_ocd_tlv_time_int_depth
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
7665 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
7668 case SUBCARRIER_ASSIGNMENT_RANGE_LIST
:
7671 dissect_subcarrier_assignment_range_list(tvb
, pinfo
, tlvtlv_tree
, pos
, length
);
7675 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
7678 case PRIMARY_CAPABILITY_INDICATOR
:
7681 proto_tree_add_item (tlvtlv_tree
, hf_docsis_ocd_tlv_prim_cap_ind
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
7685 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
7691 proto_tree_add_item (tlvtlv_tree
, hf_docsis_ocd_tlv_fdx_ind
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
7695 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
7699 proto_tree_add_item (tlvtlv_tree
, hf_docsis_ocd_tlv_unknown
, tvb
, pos
- 2, length
+2, ENC_NA
);
7707 dissect_ocd (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
7710 proto_tree
*ocd_tree
;
7711 tvbuff_t
*tlv_tvb
= NULL
;
7712 uint32_t downstream_channel_id
, configuration_change_count
, id
;
7714 it
= proto_tree_add_item(tree
, proto_docsis_ocd
, tvb
, 0, -1, ENC_NA
);
7715 ocd_tree
= proto_item_add_subtree (it
, ett_docsis_ocd
);
7717 proto_tree_add_item_ret_uint (ocd_tree
, hf_docsis_mgt_down_chid
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &downstream_channel_id
);
7718 proto_tree_add_item_ret_uint (ocd_tree
, hf_docsis_ocd_ccc
, tvb
, 1, 1, ENC_BIG_ENDIAN
, &configuration_change_count
);
7720 col_add_fstr (pinfo
->cinfo
, COL_INFO
, "OCD: DS CH ID: %u, CCC: %u", downstream_channel_id
, configuration_change_count
);
7722 id
= (downstream_channel_id
<< 16) + configuration_change_count
;
7723 tlv_tvb
= dissect_multipart(tvb
, pinfo
, ocd_tree
, data
, MGT_OCD
, id
, 2);
7724 if (tlv_tvb
!= NULL
&& tvb_captured_length(tlv_tvb
))
7725 dissect_ocd_tlv(tlv_tvb
, pinfo
, ocd_tree
);
7726 return tvb_captured_length(tvb
);
7730 dissect_dpd_subcarrier_assignment_range_list(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, unsigned pos
, unsigned len
)
7732 uint32_t i
, subcarrier_assignment_type
;
7733 proto_item
* type_item
;
7734 unsigned modulation
;
7736 type_item
= proto_tree_add_item_ret_uint (tree
, hf_docsis_dpd_tlv_subc_assign_type
, tvb
, pos
, 1, ENC_BIG_ENDIAN
, &subcarrier_assignment_type
);
7737 proto_tree_add_item (tree
, hf_docsis_dpd_tlv_subc_assign_value
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
7738 proto_tree_add_item (tree
, hf_docsis_dpd_tlv_subc_assign_reserved
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
7739 proto_tree_add_item_ret_uint (tree
, hf_docsis_dpd_tlv_subc_assign_modulation
, tvb
, pos
, 1, ENC_BIG_ENDIAN
, &modulation
);
7740 col_append_str(pinfo
->cinfo
, COL_INFO
, val_to_str(modulation
, docsis_dpd_subc_assign_modulation_str
, "unknown(%u)"));
7743 switch (subcarrier_assignment_type
)
7745 case SUBCARRIER_ASSIGNMENT_RANGE_CONT
:
7746 case SUBCARRIER_ASSIGNMENT_RANGE_SKIPBY1
:
7747 proto_tree_add_item (tree
, hf_docsis_dpd_subc_assign_range
, tvb
, pos
, 4, ENC_BIG_ENDIAN
);
7749 case SUBCARRIER_ASSIGNMENT_LIST
:
7750 for (i
= 0; i
< len
/2; ++i
) {
7751 proto_tree_add_item (tree
, hf_docsis_dpd_subc_assign_index
, tvb
, pos
, 2, ENC_BIG_ENDIAN
);
7756 expert_add_info_format(pinfo
, type_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown subcarrier assignment type: %u", subcarrier_assignment_type
);
7762 dissect_dpd_subcarrier_assignment_vector(tvbuff_t
* tvb
, proto_tree
* tree
, unsigned start
, unsigned len
)
7764 uint32_t subcarrier_assignment_vector_oddness
;
7765 unsigned vector_index
;
7767 proto_tree_add_item_ret_uint (tree
, hf_docsis_dpd_tlv_subc_assign_vector_oddness
, tvb
, start
, 1, ENC_BIG_ENDIAN
, &subcarrier_assignment_vector_oddness
);
7768 proto_tree_add_item (tree
, hf_docsis_dpd_tlv_subc_assign_vector_reserved
, tvb
, start
, 1, ENC_BIG_ENDIAN
);
7769 proto_tree_add_item (tree
, hf_docsis_dpd_tlv_subc_assign_vector_subc_start
, tvb
, start
, 2, ENC_BIG_ENDIAN
);
7771 for(vector_index
= 0; vector_index
< len
; ++vector_index
)
7773 proto_tree_add_item (tree
, hf_docsis_dpd_tlv_subc_assign_vector_modulation_odd
, tvb
, start
+ 2 + vector_index
, 1, ENC_BIG_ENDIAN
);
7774 if (!((vector_index
== len
-1) && subcarrier_assignment_vector_oddness
))
7776 proto_tree_add_item (tree
, hf_docsis_dpd_tlv_subc_assign_vector_modulation_even
, tvb
, start
+ 2 + vector_index
, 1, ENC_BIG_ENDIAN
);
7783 dissect_dpd_tlv (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
)
7785 proto_item
*it
, *tlv_item
, *tlv_len_item
;
7786 proto_tree
*tlv_tree
, *tlvtlv_tree
;
7790 unsigned first_subc_assign_list
= 1;
7792 it
= proto_tree_add_item(tree
, hf_docsis_dpd_tlv_data
, tvb
, 0, tvb_reported_length(tvb
), ENC_NA
);
7793 tlv_tree
= proto_item_add_subtree (it
, ett_docsis_dpd_tlv
);
7795 while (tvb_reported_length_remaining(tvb
, pos
) > 0)
7797 type
= tvb_get_uint8 (tvb
, pos
);
7798 if ( type
== SUBCARRIER_ASSIGNMENT_VECTOR
)
7800 /* For this type, length is 2 bytes instead of 1 */
7801 length
= tvb_get_ntohs (tvb
, pos
+ 1);
7803 length
= tvb_get_uint8 (tvb
, pos
+ 1);
7806 tlvtlv_tree
= proto_tree_add_subtree(tlv_tree
, tvb
, pos
, length
+ 2,
7807 ett_docsis_dpd_tlvtlv
, &tlv_item
,
7808 val_to_str(type
, dpd_tlv_vals
,
7809 "Unknown TLV (%u)"));
7810 proto_tree_add_uint (tlvtlv_tree
, hf_docsis_dpd_type
, tvb
, pos
, 1, type
);
7812 if (type
== SUBCARRIER_ASSIGNMENT_VECTOR
)
7814 /* For this type, length is 2 bytes instead of 1 */
7815 tlv_len_item
= proto_tree_add_item (tlvtlv_tree
, hf_docsis_dpd_length
, tvb
, pos
, 2, ENC_BIG_ENDIAN
);
7818 tlv_len_item
= proto_tree_add_item (tlvtlv_tree
, hf_docsis_dpd_length
, tvb
, pos
, 1, ENC_NA
);
7824 case SUBCARRIER_ASSIGNMENT_RANGE_LIST
:
7827 if(first_subc_assign_list
) {
7828 col_append_str(pinfo
->cinfo
, COL_INFO
, ", Modulation: ");
7829 first_subc_assign_list
= 0;
7831 col_append_str(pinfo
->cinfo
, COL_INFO
, " | ");
7833 dissect_dpd_subcarrier_assignment_range_list(tvb
, pinfo
, tlvtlv_tree
, pos
, length
);
7837 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
7840 case SUBCARRIER_ASSIGNMENT_VECTOR
:
7843 dissect_dpd_subcarrier_assignment_vector(tvb
, tlvtlv_tree
, pos
, length
);
7847 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
7851 proto_tree_add_item (tlvtlv_tree
, hf_docsis_dpd_tlv_unknown
, tvb
, pos
- 2, length
+2, ENC_NA
);
7852 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown TLV: %u", type
);
7860 dissect_dpd (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
7863 proto_tree
*dpd_tree
;
7866 uint32_t downstream_channel_id
, profile_identifier
, configuration_change_count
;
7868 it
= proto_tree_add_item(tree
, proto_docsis_dpd
, tvb
, 0, -1, ENC_NA
);
7869 dpd_tree
= proto_item_add_subtree (it
, ett_docsis_dpd
);
7870 proto_tree_add_item_ret_uint (dpd_tree
, hf_docsis_mgt_down_chid
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &downstream_channel_id
);
7871 proto_tree_add_item_ret_uint (dpd_tree
, hf_docsis_dpd_prof_id
, tvb
, 1, 1, ENC_BIG_ENDIAN
, &profile_identifier
);
7872 proto_tree_add_item_ret_uint (dpd_tree
, hf_docsis_dpd_ccc
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &configuration_change_count
);
7874 col_add_fstr (pinfo
->cinfo
, COL_INFO
, "DPD: DS CH ID: %u, Profile ID: %u, CCC: %u", downstream_channel_id
, profile_identifier
, configuration_change_count
);
7876 /* Call Dissector TLVs */
7877 next_tvb
= tvb_new_subset_remaining(tvb
, 3);
7878 dissect_dpd_tlv(next_tvb
, pinfo
, dpd_tree
);
7880 return tvb_captured_length(tvb
);
7884 dissect_type51ucd(tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
7886 return dissect_any_ucd(tvb
, pinfo
, tree
, proto_docsis_type51ucd
, MGT_TYPE51UCD
);
7890 dissect_optreq_tlv_rxmer_thresholding_parameters (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
)
7892 proto_item
*it
, *tlv_item
, *tlv_len_item
;
7893 proto_tree
*tlv_tree
, *tlvtlv_tree
;
7898 it
= proto_tree_add_item(tree
, hf_docsis_optreq_tlv_rxmer_thresh_data
, tvb
, 0, tvb_reported_length(tvb
), ENC_NA
);
7899 tlv_tree
= proto_item_add_subtree (it
, ett_docsis_optreq_tlv_rxmer_thresh_params
);
7901 while (tvb_reported_length_remaining(tvb
, pos
) > 0)
7903 type
= tvb_get_uint8 (tvb
, pos
);
7904 length
= tvb_get_uint8 (tvb
, pos
+ 1);
7905 tlvtlv_tree
= proto_tree_add_subtree(tlv_tree
, tvb
, pos
, length
+ 2,
7906 ett_docsis_optreq_tlv_rxmer_thresh_params_tlv
, &tlv_item
,
7907 val_to_str(type
, optreq_tlv_rxmer_thresh_params_vals
,
7908 "Unknown TLV (%u)"));
7909 proto_tree_add_uint (tlvtlv_tree
, hf_docsis_optreq_xmer_thresh_params_type
, tvb
, pos
, 1, type
);
7911 tlv_len_item
= proto_tree_add_item (tlvtlv_tree
, hf_docsis_optreq_xmer_thresh_params_length
, tvb
, pos
, 1, ENC_NA
);
7917 case OPT_REQ_RXMER_THRESH_PARAMS_MODULATION_ORDER
:
7920 proto_tree_add_item(tlvtlv_tree
, hf_docsis_optreq_tlv_rxmer_thresh_data_mod_order
, tvb
, pos
, length
, ENC_NA
);
7924 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
7928 proto_tree_add_item (tlvtlv_tree
, hf_docsis_optreq_tlv_unknown
, tvb
, pos
- 2, length
+2, ENC_NA
);
7929 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown TLV: %u", type
);
7937 dissect_optreq_tlv_trigger_definition (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
)
7939 proto_item
*it
, *tlv_item
, *tlv_len_item
, *subtree_item
;
7940 proto_tree
*tlv_tree
, *tlvtlv_tree
;
7942 unsigned length
, measurement_duration
;
7945 it
= proto_tree_add_item(tree
, hf_docsis_optreq_tlv_trigger_definition_data
, tvb
, 0, tvb_reported_length(tvb
), ENC_NA
);
7946 tlv_tree
= proto_item_add_subtree (it
, ett_docsis_optreq_tlv_trigger_definition_params
);
7948 while (tvb_reported_length_remaining(tvb
, pos
) > 0)
7950 type
= tvb_get_uint8 (tvb
, pos
);
7951 length
= tvb_get_uint8 (tvb
, pos
+ 1);
7952 tlvtlv_tree
= proto_tree_add_subtree(tlv_tree
, tvb
, pos
, length
+ 2,
7953 ett_docsis_optreq_tlv_trigger_definition_params_tlv
, &tlv_item
,
7954 val_to_str(type
, optreq_tlv_trigger_definition_vals
,
7955 "Unknown TLV (%u)"));
7956 proto_tree_add_uint (tlvtlv_tree
, hf_docsis_optreq_tlv_trigger_definition_data_type
,
7959 tlv_len_item
= proto_tree_add_item (tlvtlv_tree
, hf_docsis_optreq_tlv_trigger_definition_data_length
,
7960 tvb
, pos
, 1, ENC_NA
);
7965 case OPT_REQ_TRIGGER_DEFINITION_TRIGGER_TYPE
:
7968 proto_tree_add_item(tlvtlv_tree
, hf_docsis_optreq_tlv_trigger_definition_trigger_type
, tvb
, pos
, length
, ENC_NA
);
7972 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
7975 case OPT_REQ_TRIGGER_DEFINITION_MEASUREMENT_DURATION
:
7978 subtree_item
= proto_tree_add_item(tlvtlv_tree
, hf_docsis_optreq_tlv_trigger_definition_measure_duration
,
7979 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
7980 proto_item_append_text(subtree_item
, " OFDM Symbols");
7981 measurement_duration
= tvb_get_uint8 (tvb
, pos
);
7982 if (measurement_duration
> 1024)
7984 expert_add_info_format(pinfo
, subtree_item
, &ei_docsis_mgmt_opt_req_trigger_def_measure_duration
,
7985 "Measurement duration exceeds 1024 OFDM symbols: %u", measurement_duration
);
7990 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
7993 case OPT_REQ_TRIGGER_DEFINITION_TRIGGERING_SID
:
7996 proto_tree_add_item(tlvtlv_tree
, hf_docsis_optreq_tlv_trigger_definition_triggering_sid
,
7997 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
8001 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
8004 case OPT_REQ_TRIGGER_DEFINITION_US_CHANNEL_ID
:
8007 proto_tree_add_item(tlvtlv_tree
, hf_docsis_optreq_tlv_trigger_definition_us_chan_id
,
8008 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
8012 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
8015 case OPT_REQ_TRIGGER_DEFINITION_OUDP_SOUND_AMBIG_OFFSET
:
8018 subtree_item
= proto_tree_add_item(tlvtlv_tree
, hf_docsis_optreq_tlv_trigger_definition_sound_ambig_offset
,
8019 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
8020 proto_item_append_text(subtree_item
, " DOCSIS time ticks (10.24 MHz)");
8024 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
8027 case OPT_REQ_TRIGGER_DEFINITION_RXMER_TO_REPORT
:
8030 proto_tree_add_item(tlvtlv_tree
, hf_docsis_optreq_tlv_trigger_definition_rx_mer_to_report
,
8031 tvb
, pos
, length
, ENC_NA
);
8035 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
8038 case OPT_REQ_TRIGGER_DEFINITION_START_TIME
:
8041 proto_tree_add_item(tlvtlv_tree
, hf_docsis_optreq_tlv_trigger_definition_start_time
,
8042 tvb
, pos
, length
, ENC_BIG_ENDIAN
);
8046 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
8050 proto_tree_add_item (tlvtlv_tree
, hf_docsis_optreq_tlv_unknown
, tvb
, pos
- 2, length
+2, ENC_NA
);
8051 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown TLV: %u", type
);
8059 dissect_optreq_tlv (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
)
8061 proto_item
*it
, *tlv_item
, *tlv_len_item
;
8062 proto_tree
*tlv_tree
, *tlvtlv_tree
;
8068 it
= proto_tree_add_item(tree
, hf_docsis_optreq_tlv_data
, tvb
, 0, tvb_reported_length(tvb
), ENC_NA
);
8069 tlv_tree
= proto_item_add_subtree (it
, ett_docsis_optreq_tlv
);
8071 while (tvb_reported_length_remaining(tvb
, pos
) > 0)
8073 type
= tvb_get_uint8 (tvb
, pos
);
8074 length
= tvb_get_uint8 (tvb
, pos
+ 1);
8075 tlvtlv_tree
= proto_tree_add_subtree(tlv_tree
, tvb
, pos
, length
+ 2,
8076 ett_docsis_optreq_tlvtlv
, &tlv_item
,
8077 val_to_str(type
, optreq_tlv_vals
,
8078 "Unknown TLV (%u)"));
8079 proto_tree_add_uint (tlvtlv_tree
, hf_docsis_optreq_type
, tvb
, pos
, 1, type
);
8081 tlv_len_item
= proto_tree_add_item (tlvtlv_tree
, hf_docsis_optreq_length
, tvb
, pos
, 1, ENC_NA
);
8087 case OPT_REQ_REQ_STAT
:
8091 static int * const req_stat
[] = {
8092 &hf_docsis_optreq_reqstat_rxmer_stat_subc
,
8093 &hf_docsis_optreq_reqstat_rxmer_subc_threshold_comp
,
8094 &hf_docsis_optreq_reqstat_snr_marg_cand_prof
,
8095 &hf_docsis_optreq_reqstat_codew_stat_cand_prof
,
8096 &hf_docsis_optreq_reqstat_codew_thresh_comp_cand_prof
,
8097 &hf_docsis_optreq_reqstat_ncp_field_stat
,
8098 &hf_docsis_optreq_reqstat_ncp_crc_thresh_comp
,
8099 &hf_docsis_optreq_reqstat_reserved
,
8103 proto_tree_add_bitmask_list(tlvtlv_tree
, tvb
, pos
, length
, req_stat
, ENC_BIG_ENDIAN
);
8107 expert_add_info_format(pinfo
, tlv_len_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %u", length
);
8110 case OPT_REQ_RXMER_THRESH_PARAMS
:
8111 next_tvb
= tvb_new_subset_length(tvb
, pos
, length
);
8112 dissect_optreq_tlv_rxmer_thresholding_parameters(next_tvb
, pinfo
, tlvtlv_tree
);
8114 case OPT_REQ_TRIGGER_DEFINITION
:
8115 next_tvb
= tvb_new_subset_length(tvb
, pos
, length
);
8116 dissect_optreq_tlv_trigger_definition(next_tvb
, pinfo
, tlvtlv_tree
);
8119 proto_tree_add_item (tlvtlv_tree
, hf_docsis_optreq_tlv_unknown
, tvb
, pos
- 2, length
+2, ENC_NA
);
8120 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown TLV: %u", type
);
8128 dissect_optreq (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
8131 proto_tree
*opt_tree
;
8132 tvbuff_t
*tlv_tvb
= NULL
;
8134 uint32_t downstream_channel_id
, profile_identifier
, opcode
, id
;
8136 it
= proto_tree_add_item(tree
, proto_docsis_optreq
, tvb
, 0, -1, ENC_NA
);
8137 opt_tree
= proto_item_add_subtree (it
, ett_docsis_optreq
);
8138 proto_tree_add_item (opt_tree
, hf_docsis_optreq_reserved
, tvb
, 0, 2, ENC_BIG_ENDIAN
);
8139 proto_tree_add_item_ret_uint (opt_tree
, hf_docsis_mgt_down_chid
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &downstream_channel_id
);
8140 proto_tree_add_item_ret_uint (opt_tree
, hf_docsis_optreq_prof_id
, tvb
, 3, 1, ENC_BIG_ENDIAN
, &profile_identifier
);
8141 proto_tree_add_item_ret_uint (opt_tree
, hf_docsis_optreq_opcode
, tvb
, 4, 1, ENC_BIG_ENDIAN
, &opcode
);
8143 col_add_fstr (pinfo
->cinfo
, COL_INFO
, "OPT-REQ: DS CH ID: %u, Profile ID: %s (%u), Opcode: %s (%u)", downstream_channel_id
,
8144 val_to_str(profile_identifier
, profile_id_vals
, "Unknown Profile ID (%u)"), profile_identifier
,
8145 val_to_str(opcode
, opt_opcode_vals
, "Unknown Opcode (%u)"), opcode
);
8147 id
= (downstream_channel_id
<< 16) + profile_identifier
;
8148 tlv_tvb
= dissect_multipart(tvb
, pinfo
, opt_tree
, data
, MGT_OPT_REQ
, id
, 5);
8149 if (tlv_tvb
!= NULL
&& tvb_captured_length(tlv_tvb
))
8150 dissect_optreq_tlv(tlv_tvb
, pinfo
, opt_tree
);
8151 return tvb_captured_length(tvb
);
8155 dissect_optrsp_tlv_rxmer(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_item
*item
, proto_tree
*tree
, int pos
, int length
)
8157 proto_item
*tlv_item
;
8158 proto_tree
*tlv_tree
;
8160 int tlv_length
, end
= pos
+ length
, i
;
8162 static int *const ect_rba_subband_direction
[] = {
8163 &hf_docsis_optrsp_rxmer_ect_rba_subband_direction_sb0
,
8164 &hf_docsis_optrsp_rxmer_ect_rba_subband_direction_sb1
,
8165 &hf_docsis_optrsp_rxmer_ect_rba_subband_direction_sb2
,
8168 while (pos
+ 2 < end
)
8170 tlv_type
= tvb_get_uint8(tvb
, pos
);
8171 tlv_length
= tvb_get_ntohs(tvb
, pos
+ 1);
8172 tlv_item
= proto_tree_add_item(tree
, hf_docsis_optrsp_rxmer_tlv
, tvb
, pos
, tlv_length
+ 3, ENC_NA
);
8173 proto_item_set_text(tlv_item
, "%s", val_to_str(tlv_type
, optrsp_rxmer_vals
, "Unknown TLV %u"));
8174 if (tlv_type
== OPT_RSP_RXMER_SUBCARRIER
) // huge list
8175 tlv_tree
= proto_item_add_subtree(tlv_item
, ett_docsis_optrsp_rxmer_subcarrier_tlv
);
8177 tlv_tree
= proto_item_add_subtree(tlv_item
, ett_docsis_optrsp_rxmer_tlv
);
8178 proto_tree_add_item(tlv_tree
, hf_docsis_optrsp_rxmer_tlv_type
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
8179 proto_tree_add_item(tlv_tree
, hf_docsis_optrsp_rxmer_tlv_length
, tvb
, pos
+ 1, 2, ENC_BIG_ENDIAN
);
8184 case OPT_RSP_RXMER_SUBCARRIER
:
8185 for (i
= 0; i
< tlv_length
; ++i
)
8186 proto_tree_add_item(tlv_tree
, hf_docsis_optrsp_rxmer_subcarrier
, tvb
, pos
+ i
, 1, ENC_BIG_ENDIAN
);
8188 case OPT_RSP_RXMER_SUBCARRIER_THRESHOLD
:
8189 proto_tree_add_item(tlv_tree
, hf_docsis_optrsp_rxmer_subcarrier_threshold
, tvb
, pos
, tlv_length
, ENC_NA
);
8191 case OPT_RSP_RXMER_SUBCARRIER_THRESHOLD_COUNT
:
8192 if (tlv_length
== 2)
8193 proto_tree_add_item(tlv_tree
, hf_docsis_optrsp_rxmer_subcarrier_threshold_count
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
8195 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8197 case OPT_RSP_RXMER_SNR_MARGIN
:
8198 if (tlv_length
== 1)
8199 proto_tree_add_item(tlv_tree
, hf_docsis_optrsp_rxmer_snr_margin
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
8201 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8203 case OPT_RSP_RXMER_AVG
:
8204 if (tlv_length
== 1)
8205 proto_tree_add_item(tlv_tree
, hf_docsis_optrsp_rxmer_avg
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
8207 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8209 case OPT_RSP_RXMER_ECT_RBA_SUBBAND_DIRECTION
:
8210 if (tlv_length
== 1) {
8211 proto_tree_add_bitmask_with_flags(tlv_tree
, tvb
, pos
, hf_docsis_optrsp_rxmer_ect_rba_subband_direction
,
8212 ett_docsis_optrsp_rxmer_tlv
, ect_rba_subband_direction
, ENC_BIG_ENDIAN
, BMT_NO_APPEND
);
8213 proto_tree_add_bitmask_list(tlv_tree
, tvb
, pos
, tlv_length
, ect_rba_subband_direction
, ENC_BIG_ENDIAN
);
8215 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8218 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown TLV type: %u", tlv_type
);
8224 expert_add_info_format(pinfo
, item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", length
);
8228 dissect_optrsp_tlv_data_cw(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_item
*item
, proto_tree
*tree
, int pos
, int length
)
8230 proto_item
*tlv_item
;
8231 proto_tree
*tlv_tree
;
8233 int tlv_length
, end
= pos
+ length
;
8235 while (pos
+ 2 < end
)
8237 tlv_type
= tvb_get_uint8(tvb
, pos
);
8238 tlv_length
= tvb_get_ntohs(tvb
, pos
+ 1);
8239 tlv_item
= proto_tree_add_item(tree
, hf_docsis_optrsp_data_cw_tlv
, tvb
, pos
, tlv_length
+ 3, ENC_NA
);
8240 proto_item_set_text(tlv_item
, "%s", val_to_str(tlv_type
, optrsp_data_cw_vals
, "Unknown TLV %u"));
8241 tlv_tree
= proto_item_add_subtree(tlv_item
, ett_docsis_optrsp_data_cw_tlv
);
8242 proto_tree_add_item(tlv_tree
, hf_docsis_optrsp_data_cw_tlv_type
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
8243 proto_tree_add_item(tlv_tree
, hf_docsis_optrsp_data_cw_tlv_length
, tvb
, pos
+ 1, 2, ENC_BIG_ENDIAN
);
8248 case OPT_RSP_DATA_CW_COUNT
:
8249 if (tlv_length
== 4)
8250 proto_tree_add_item(tlv_tree
, hf_docsis_optrsp_data_cw_count
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
8252 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8254 case OPT_RSP_DATA_CW_CORRECTED
:
8255 if (tlv_length
== 4)
8256 proto_tree_add_item(tlv_tree
, hf_docsis_optrsp_data_cw_corrected
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
8258 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8260 case OPT_RSP_DATA_CW_UNCORRECTABLE
:
8261 if (tlv_length
== 4)
8262 proto_tree_add_item(tlv_tree
, hf_docsis_optrsp_data_cw_uncorrectable
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
8264 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8266 case OPT_RSP_DATA_CW_THRESHOLD_COMPARISON
:
8267 if (tlv_length
== 1)
8268 proto_tree_add_item(tlv_tree
, hf_docsis_optrsp_data_cw_threshold_comparison
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
8270 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8273 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown TLV type: %u", tlv_type
);
8279 expert_add_info_format(pinfo
, item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", length
);
8283 dissect_optrsp_tlv_ncp_fields(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_item
*item
, proto_tree
*tree
, int pos
, int length
)
8285 proto_item
*tlv_item
;
8286 proto_tree
*tlv_tree
;
8288 int tlv_length
, end
= pos
+ length
;
8290 while (pos
+ 2 < end
)
8292 tlv_type
= tvb_get_uint8(tvb
, pos
);
8293 tlv_length
= tvb_get_ntohs(tvb
, pos
+ 1);
8294 tlv_item
= proto_tree_add_item(tree
, hf_docsis_optrsp_ncp_fields_tlv
, tvb
, pos
, tlv_length
+ 3, ENC_NA
);
8295 proto_item_set_text(tlv_item
, "%s", val_to_str(tlv_type
, optrsp_ncp_fields_vals
, "Unknown TLV %u"));
8296 tlv_tree
= proto_item_add_subtree(tlv_item
, ett_docsis_optrsp_ncp_fields_tlv
);
8297 proto_tree_add_item(tlv_tree
, hf_docsis_optrsp_ncp_fields_tlv_type
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
8298 proto_tree_add_item(tlv_tree
, hf_docsis_optrsp_ncp_fields_tlv_length
, tvb
, pos
+ 1, 2, ENC_BIG_ENDIAN
);
8303 case OPT_RSP_NCP_FIELDS_COUNT
:
8304 if (tlv_length
== 4)
8305 proto_tree_add_item(tlv_tree
, hf_docsis_optrsp_ncp_fields_count
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
8307 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8309 case OPT_RSP_NCP_FIELDS_FAILURE
:
8310 if (tlv_length
== 4)
8311 proto_tree_add_item(tlv_tree
, hf_docsis_optrsp_ncp_fields_failure
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
8313 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8315 case OPT_RSP_NCP_FIELDS_THRESHOLD_COMPARISON
:
8316 if (tlv_length
== 1)
8317 proto_tree_add_item(tlv_tree
, hf_docsis_optrsp_ncp_fields_threshold_comparison
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
8319 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8322 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown TLV: %u", tlv_type
);
8328 expert_add_info_format(pinfo
, item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", length
);
8332 dissect_optrsp_tlv(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_item
*item
, proto_tree
*tree
, int pos
, int length
)
8334 proto_item
*tlv_item
;
8335 proto_tree
*tlv_tree
;
8337 int tlv_length
, end
= pos
+ length
;
8339 while (pos
+ 2 < end
)
8341 tlv_type
= tvb_get_uint8(tvb
, pos
);
8342 tlv_length
= tvb_get_ntohs(tvb
, pos
+ 1);
8343 tlv_item
= proto_tree_add_item(tree
, hf_docsis_optrsp_tlv
, tvb
, pos
, tlv_length
+ 3, ENC_NA
);
8344 proto_item_set_text(tlv_item
, "%s", val_to_str(tlv_type
, optrsp_tlv_vals
, "Unknown TLV %u"));
8345 tlv_tree
= proto_item_add_subtree(tlv_item
, ett_docsis_optrsp_tlv
);
8346 proto_tree_add_item(tlv_tree
, hf_docsis_optrsp_tlv_type
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
8347 proto_tree_add_item(tlv_tree
, hf_docsis_optrsp_tlv_length
, tvb
, pos
+ 1, 2, ENC_BIG_ENDIAN
);
8353 dissect_optrsp_tlv_rxmer(tvb
, pinfo
, tlv_item
, tlv_tree
, pos
, tlv_length
);
8355 case OPT_RSP_DATA_CW
:
8356 dissect_optrsp_tlv_data_cw(tvb
, pinfo
, tlv_item
, tlv_tree
, pos
, tlv_length
);
8358 case OPT_RSP_NCP_FIELDS
:
8359 dissect_optrsp_tlv_ncp_fields(tvb
, pinfo
, tlv_item
, tlv_tree
, pos
, tlv_length
);
8362 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown TLV type: %u", tlv_type
);
8368 expert_add_info_format(pinfo
, item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", length
);
8372 dissect_optrsp(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
8374 proto_item
*opt_item
;
8375 proto_tree
*opt_tree
;
8376 tvbuff_t
*tlv_tvb
= NULL
;
8378 uint32_t downstream_channel_id
, profile_identifier
, status
, id
;
8380 opt_item
= proto_tree_add_item(tree
, proto_docsis_optrsp
, tvb
, 0, -1, ENC_NA
);
8381 opt_tree
= proto_item_add_subtree(opt_item
, ett_docsis_optrsp
);
8382 proto_tree_add_item(opt_tree
, hf_docsis_optrsp_reserved
, tvb
, 0, 2, ENC_BIG_ENDIAN
);
8383 proto_tree_add_item_ret_uint(opt_tree
, hf_docsis_mgt_down_chid
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &downstream_channel_id
);
8384 proto_tree_add_item_ret_uint(opt_tree
, hf_docsis_optrsp_prof_id
, tvb
, 3, 1, ENC_BIG_ENDIAN
, &profile_identifier
);
8385 proto_tree_add_item_ret_uint(opt_tree
, hf_docsis_optrsp_status
, tvb
, 4, 1, ENC_BIG_ENDIAN
, &status
);
8387 col_add_fstr(pinfo
->cinfo
, COL_INFO
, "OPT-RSP: DS CH ID: %u, Profile ID: %s (%u), Status: %s (%u)", downstream_channel_id
,
8388 val_to_str(profile_identifier
, profile_id_vals
, "Unknown Profile ID (%u)"), profile_identifier
,
8389 val_to_str(status
, opt_status_vals
, "Unknown status (%u)"), status
);
8391 id
= (downstream_channel_id
<< 16) + profile_identifier
;
8392 tlv_tvb
= dissect_multipart(tvb
, pinfo
, opt_tree
, data
, MGT_OPT_RSP
, id
, 5);
8393 if (tlv_tvb
!= NULL
&& tvb_captured_length(tlv_tvb
))
8394 dissect_optrsp_tlv(tlv_tvb
, pinfo
, opt_item
, opt_tree
, 0, tvb_reported_length(tlv_tvb
));
8395 return tvb_captured_length(tvb
);
8399 dissect_optack (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
8402 proto_tree
*opt_tree
;
8404 uint32_t downstream_channel_id
, profile_identifier
;
8406 it
= proto_tree_add_item(tree
, proto_docsis_optack
, tvb
, 0, -1, ENC_NA
);
8407 opt_tree
= proto_item_add_subtree (it
, ett_docsis_optack
);
8408 proto_tree_add_item (opt_tree
, hf_docsis_optack_reserved
, tvb
, 0, 2, ENC_BIG_ENDIAN
);
8409 proto_tree_add_item_ret_uint (opt_tree
, hf_docsis_mgt_down_chid
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &downstream_channel_id
);
8410 proto_tree_add_item_ret_uint (opt_tree
, hf_docsis_optack_prof_id
, tvb
, 3, 1, ENC_BIG_ENDIAN
, &profile_identifier
);
8412 col_add_fstr (pinfo
->cinfo
, COL_INFO
, "OPT-ACK: DS CH ID: %u, Profile ID: %s (%u)", downstream_channel_id
,
8413 val_to_str(profile_identifier
, profile_id_vals
, "Unknown Profile ID (%u)"), profile_identifier
);
8415 return tvb_captured_length(tvb
);
8419 dissect_rba (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
8421 proto_item
*it
, *rba_direction_it
;
8422 proto_tree
*rba_tree
;
8424 uint32_t tg_id
, dcid
;
8425 uint32_t subband_index
, nr_of_subbands
;
8427 static int * const rba_control_byte
[] = {
8428 &hf_docsis_rba_resource_block_change_bit
,
8429 &hf_docsis_rba_expiration_time_valid_bit
,
8430 &hf_docsis_rba_control_byte_bitmask_rsvd
,
8434 it
= proto_tree_add_item(tree
, proto_docsis_rba
, tvb
, 0, -1, ENC_NA
);
8435 rba_tree
= proto_item_add_subtree (it
, ett_docsis_rba
);
8436 proto_tree_add_item_ret_uint (rba_tree
, hf_docsis_rba_tg_id
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &tg_id
);
8437 proto_tree_add_item (rba_tree
, hf_docsis_rba_ccc
, tvb
, 1, 1, ENC_BIG_ENDIAN
);
8438 proto_tree_add_item_ret_uint (rba_tree
, hf_docsis_rba_dcid
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &dcid
);
8439 proto_tree_add_bitmask (rba_tree
, tvb
, 3, hf_docsis_rba_control_byte_bitmask
, ett_docsis_rba_control_byte
, rba_control_byte
, ENC_BIG_ENDIAN
);
8440 proto_tree_add_item (rba_tree
, hf_docsis_rba_rba_time
, tvb
, 4, 4, ENC_BIG_ENDIAN
);
8441 proto_tree_add_item (rba_tree
, hf_docsis_rba_rba_expiration_time
, tvb
, 8, 4, ENC_BIG_ENDIAN
);
8442 proto_tree_add_item_ret_uint (rba_tree
, hf_docsis_rba_number_of_subbands
, tvb
, 12, 1, ENC_BIG_ENDIAN
, &nr_of_subbands
);
8443 for (subband_index
=0; subband_index
< nr_of_subbands
; ++subband_index
) {
8444 rba_direction_it
= proto_tree_add_item (rba_tree
, hf_docsis_rba_subband_direction
, tvb
, 13 + subband_index
, 1, ENC_BIG_ENDIAN
);
8445 proto_item_prepend_text(rba_direction_it
, "Sub-band %d: ", subband_index
);
8448 col_add_fstr (pinfo
->cinfo
, COL_INFO
, "RBA: TG_ID: %u, DCID: %u", tg_id
, dcid
);
8450 return tvb_captured_length(tvb
);
8454 dissect_cwt_us_encodings_tlv(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_item
*item
, proto_tree
*tree
, int pos
, int length
)
8456 proto_item
*tlv_item
;
8457 proto_tree
*tlv_tree
, *subtlv_tree
;
8459 int tlv_length
, end
= pos
+ length
, i
;
8461 while (pos
+ 1 < end
)
8463 tlv_type
= tvb_get_uint8(tvb
, pos
);
8464 tlv_length
= tvb_get_uint8(tvb
, pos
+ 1);
8465 tlv_item
= proto_tree_add_item(tree
, hf_docsis_cwt_us_encodings_tlv
, tvb
, pos
, tlv_length
+ 2, ENC_NA
);
8466 proto_item_set_text(tlv_item
, "%s", val_to_str(tlv_type
, cwt_us_encodings_tlv_vals
, "Unknown TLV %u"));
8467 tlv_tree
= proto_item_add_subtree(tlv_item
, ett_docsis_cwt_tlv
);
8468 proto_tree_add_item(tlv_tree
, hf_docsis_cwt_us_encodings_tlv_type
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
8469 proto_tree_add_item(tlv_tree
, hf_docsis_cwt_us_encodings_tlv_length
, tvb
, pos
+ 1, 1, ENC_BIG_ENDIAN
);
8474 case CWT_US_ENCODINGS_CID
:
8475 if (tlv_length
== 1)
8476 proto_tree_add_item(tlv_tree
, hf_docsis_cwt_us_encodings_cid
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
8478 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8480 case CWT_US_ENCODINGS_SC_INDEX
:
8481 subtlv_tree
= proto_tree_add_subtree(tlv_tree
, tvb
, pos
, length
, ett_docsis_cwt_subtlv
, NULL
,
8482 "Upstream Subcarrier Indices");
8483 for (i
= 0; i
+ 1 < tlv_length
; i
+= 2)
8484 proto_tree_add_item(subtlv_tree
, hf_docsis_cwt_us_encodings_sc_index
, tvb
, pos
+ i
, 2, ENC_BIG_ENDIAN
);
8485 if (i
!= tlv_length
)
8486 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8488 case CWT_US_ENCODINGS_POWER_BOOST
:
8489 if (tlv_length
== 1)
8490 proto_tree_add_item(tlv_tree
, hf_docsis_cwt_us_encodings_power_boost
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
8492 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8495 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown TLV: %u", tlv_type
);
8501 expert_add_info_format(pinfo
, item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", length
);
8505 dissect_cwt_tlv(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_item
*item
, proto_tree
*tree
, int pos
, int length
)
8507 proto_item
*tlv_item
;
8508 proto_tree
*tlv_tree
;
8510 int tlv_length
, end
= pos
+ length
;
8514 while (pos
+ 1 < end
)
8516 tlv_type
= tvb_get_uint8(tvb
, pos
);
8517 tlv_length
= tvb_get_uint8(tvb
, pos
+ 1);
8518 tlv_item
= proto_tree_add_item(tree
, hf_docsis_cwt_tlv
, tvb
, pos
, tlv_length
+ 2, ENC_NA
);
8519 proto_item_set_text(tlv_item
, "%s", val_to_str(tlv_type
, cwt_tlv_vals
, "Unknown TLV %u"));
8520 tlv_tree
= proto_item_add_subtree(tlv_item
, ett_docsis_cwt_tlv
);
8521 proto_tree_add_item(tlv_tree
, hf_docsis_cwt_tlv_type
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
8522 proto_tree_add_item(tlv_tree
, hf_docsis_cwt_tlv_length
, tvb
, pos
+ 1, 1, ENC_BIG_ENDIAN
);
8527 case CWT_PHASE_ROTATION
:
8528 if (tlv_length
== 1)
8529 proto_tree_add_item(tlv_tree
, hf_docsis_cwt_phase_rotation
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
8531 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8533 case CWT_MAX_DURATION
:
8534 if (tlv_length
== 2) {
8535 proto_tree_add_item_ret_uint(tlv_tree
, hf_docsis_cwt_max_duration
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
, &value
);
8536 if (value
< 1 || value
> 1000)
8537 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_cwt_out_of_range
, "Invalid CWT Maximum Duration: %i", value
);
8539 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8541 case CWT_US_ENCODINGS
:
8542 dissect_cwt_us_encodings_tlv(tvb
, pinfo
, tlv_item
, tlv_tree
, pos
, tlv_length
);
8545 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown TLV type: %u", tlv_type
);
8551 expert_add_info_format(pinfo
, item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", length
);
8555 dissect_cwt_req(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
8557 proto_item
*cwt_req_item
;
8558 proto_tree
*cwt_req_tree
;
8559 tvbuff_t
*tlv_tvb
= NULL
;
8561 uint32_t transaction_id
, sub_band_id
, op_code
, id
= 0;
8563 cwt_req_item
= proto_tree_add_item(tree
, proto_docsis_cwt_req
, tvb
, 0, -1, ENC_NA
);
8564 cwt_req_tree
= proto_item_add_subtree(cwt_req_item
, ett_docsis_cwt_req
);
8565 proto_tree_add_item_ret_uint(cwt_req_tree
, hf_docsis_cwt_trans_id
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &transaction_id
);
8566 proto_tree_add_item_ret_uint(cwt_req_tree
, hf_docsis_cwt_sub_band_id
, tvb
, 1, 1, ENC_BIG_ENDIAN
, &sub_band_id
);
8567 proto_tree_add_item_ret_uint(cwt_req_tree
, hf_docsis_cwt_op_code
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &op_code
);
8569 col_add_fstr(pinfo
->cinfo
, COL_INFO
, "CWT-REQ %s ID %u on sub-band %u",
8570 val_to_str(op_code
, cwt_op_code_vals
, "Unknown Op Code (%u)"),
8571 transaction_id
, sub_band_id
);
8573 id
= (transaction_id
<< 8) + sub_band_id
;
8574 tlv_tvb
= dissect_multipart(tvb
, pinfo
, cwt_req_tree
, data
, MGT_CWT_REQ
, id
, 3);
8575 if (tlv_tvb
!= NULL
&& tvb_captured_length(tlv_tvb
))
8576 dissect_cwt_tlv(tlv_tvb
, pinfo
, cwt_req_item
, cwt_req_tree
, 0, tvb_reported_length(tlv_tvb
));
8577 return tvb_captured_length(tvb
);
8581 dissect_cwt_rsp(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
8583 proto_item
*cwt_rsp_item
;
8584 proto_tree
*cwt_rsp_tree
;
8585 tvbuff_t
*tlv_tvb
= NULL
;
8587 uint32_t transaction_id
, sub_band_id
, op_code
, status
, id
= 0;
8589 cwt_rsp_item
= proto_tree_add_item(tree
, proto_docsis_cwt_rsp
, tvb
, 0, -1, ENC_NA
);
8590 cwt_rsp_tree
= proto_item_add_subtree(cwt_rsp_item
, ett_docsis_cwt_rsp
);
8591 proto_tree_add_item_ret_uint(cwt_rsp_tree
, hf_docsis_cwt_trans_id
, tvb
, 0, 1, ENC_BIG_ENDIAN
, &transaction_id
);
8592 proto_tree_add_item_ret_uint(cwt_rsp_tree
, hf_docsis_cwt_sub_band_id
, tvb
, 1, 1, ENC_BIG_ENDIAN
, &sub_band_id
);
8593 proto_tree_add_item_ret_uint(cwt_rsp_tree
, hf_docsis_cwt_op_code
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &op_code
);
8594 proto_tree_add_item_ret_uint(cwt_rsp_tree
, hf_docsis_cwt_status
, tvb
, 3, 1, ENC_BIG_ENDIAN
, &status
);
8596 col_add_fstr(pinfo
->cinfo
, COL_INFO
, "CWT-RSP %s ID %u on sub-band %u: %s",
8597 val_to_str(op_code
, cwt_op_code_vals
, "Unknown Op Code (%u)"),
8598 transaction_id
, sub_band_id
,
8599 val_to_str(op_code
, cwt_status_vals
, "Unknown Status (%u)"));
8601 id
= (transaction_id
<< 8) + sub_band_id
;
8602 tlv_tvb
= dissect_multipart(tvb
, pinfo
, cwt_rsp_tree
, data
, MGT_CWT_RSP
, id
, 4);
8603 if (tlv_tvb
!= NULL
&& tvb_captured_length(tlv_tvb
))
8604 dissect_cwt_tlv(tlv_tvb
, pinfo
, cwt_rsp_item
, cwt_rsp_tree
, 0, tvb_reported_length(tlv_tvb
));
8605 return tvb_captured_length(tvb
);
8609 dissect_ect_control_partial_service_tlv(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_item
*item
, proto_tree
*tree
, int pos
, int length
)
8611 proto_item
*tlv_item
;
8612 proto_tree
*tlv_tree
;
8614 int tlv_length
, end
= pos
+ length
, i
;
8616 while (pos
+ 1 < end
)
8618 tlv_type
= tvb_get_uint8(tvb
, pos
);
8619 tlv_length
= tvb_get_uint8(tvb
, pos
+ 1);
8620 tlv_item
= proto_tree_add_item(tree
, hf_docsis_ect_control_partial_service_tlv
, tvb
, pos
, tlv_length
+ 2, ENC_NA
);
8621 proto_item_set_text(tlv_item
, "%s", val_to_str(tlv_type
, ect_control_partial_service_tlv_vals
, "Unknown TLV %u"));
8622 tlv_tree
= proto_item_add_subtree(tlv_item
, ett_docsis_ect_tlv
);
8623 proto_tree_add_item(tlv_tree
, hf_docsis_ect_control_partial_service_tlv_type
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
8624 proto_tree_add_item(tlv_tree
, hf_docsis_ect_control_partial_service_tlv_length
, tvb
, pos
+ 1, 1, ENC_BIG_ENDIAN
);
8629 case ECT_CONTROL_PARTIAL_SERVICE_DCID
:
8630 for (i
= 0; i
< tlv_length
; ++i
)
8631 proto_tree_add_item(tlv_tree
, hf_docsis_ect_control_partial_service_dcid
, tvb
, pos
+ i
, 1, ENC_BIG_ENDIAN
);
8633 case ECT_CONTROL_PARTIAL_SERVICE_UCID
:
8634 for (i
= 0; i
< tlv_length
; ++i
)
8635 proto_tree_add_item(tlv_tree
, hf_docsis_ect_control_partial_service_ucid
, tvb
, pos
+ i
, 1, ENC_BIG_ENDIAN
);
8638 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown TLV: %u", tlv_type
);
8644 expert_add_info_format(pinfo
, item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", length
);
8648 dissect_ect_control_method_bg_tlv(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_item
*item
, proto_tree
*tree
, int pos
, int length
)
8650 proto_item
*tlv_item
;
8651 proto_tree
*tlv_tree
;
8653 int tlv_length
, end
= pos
+ length
;
8657 while (pos
+ 1 < end
)
8659 tlv_type
= tvb_get_uint8(tvb
, pos
);
8660 tlv_length
= tvb_get_uint8(tvb
, pos
+ 1);
8661 tlv_item
= proto_tree_add_item(tree
, hf_docsis_ect_control_method_bg_tlv
, tvb
, pos
, tlv_length
+ 2, ENC_NA
);
8662 proto_item_set_text(tlv_item
, "%s", val_to_str(tlv_type
, ect_control_method_bg_tlv_vals
, "Unknown TLV %u"));
8663 tlv_tree
= proto_item_add_subtree(tlv_item
, ett_docsis_ect_tlv
);
8664 proto_tree_add_item(tlv_tree
, hf_docsis_ect_control_method_bg_tlv_type
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
8665 proto_tree_add_item(tlv_tree
, hf_docsis_ect_control_method_bg_tlv_length
, tvb
, pos
+ 1, 1, ENC_BIG_ENDIAN
);
8670 case ECT_CONTROL_METHOD_BG_DURATION
:
8671 if (tlv_length
== 2) {
8672 proto_tree_add_item_ret_uint(tlv_tree
, hf_docsis_ect_control_method_bg_duration
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
, &value
);
8673 if (value
< 1 || value
> 1000)
8674 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_ect_control_out_of_range
, "Invalid ECT Background Duration: %i", value
);
8677 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8679 case ECT_CONTROL_METHOD_BG_PERIODICITY
:
8680 if (tlv_length
== 1) {
8681 proto_tree_add_item_ret_uint(tlv_tree
, hf_docsis_ect_control_method_bg_periodicity
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
, &value
);
8682 if (value
< 1 || value
> 30)
8683 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_ect_control_out_of_range
, "Invalid ECT Background Periodicity: %i", value
);
8686 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8688 case ECT_CONTROL_METHOD_BG_EXPIRATION_TIME
:
8689 if (tlv_length
== 1) {
8690 proto_tree_add_item_ret_uint(tlv_tree
, hf_docsis_ect_control_method_bg_expiration_time
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
, &value
);
8691 if (value
< 1 || value
> 255)
8692 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_ect_control_out_of_range
, "Invalid ECT Background Expiration Time: %i", value
);
8695 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8697 case ECT_CONTROL_METHOD_BG_START_TIME
:
8698 if (tlv_length
== 4)
8699 proto_tree_add_item(tlv_tree
, hf_docsis_ect_control_method_bg_start_time
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
8701 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8704 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown TLV: %u", tlv_type
);
8710 expert_add_info_format(pinfo
, item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", length
);
8714 dissect_ect_control_method_fg_tlv(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_item
*item
, proto_tree
*tree
, int pos
, int length
)
8716 proto_item
*tlv_item
;
8717 proto_tree
*tlv_tree
;
8719 int tlv_length
, end
= pos
+ length
;
8723 while (pos
+ 1 < end
)
8725 tlv_type
= tvb_get_uint8(tvb
, pos
);
8726 tlv_length
= tvb_get_uint8(tvb
, pos
+ 1);
8727 tlv_item
= proto_tree_add_item(tree
, hf_docsis_ect_control_method_fg_tlv
, tvb
, pos
, tlv_length
+ 2, ENC_NA
);
8728 proto_item_set_text(tlv_item
, "%s", val_to_str(tlv_type
, ect_control_method_fg_tlv_vals
, "Unknown TLV %u"));
8729 tlv_tree
= proto_item_add_subtree(tlv_item
, ett_docsis_ect_tlv
);
8730 proto_tree_add_item(tlv_tree
, hf_docsis_ect_control_method_fg_tlv_type
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
8731 proto_tree_add_item(tlv_tree
, hf_docsis_ect_control_method_fg_tlv_length
, tvb
, pos
+ 1, 1, ENC_BIG_ENDIAN
);
8736 case ECT_CONTROL_METHOD_FG_DURATION
:
8737 if (tlv_length
== 1) {
8738 proto_tree_add_item_ret_uint(tlv_tree
, hf_docsis_ect_control_method_fg_duration
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
, &value
);
8739 if (value
< 1 || value
> 128)
8740 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_ect_control_out_of_range
, "Invalid ECT Foreground Duration: %i", value
);
8743 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8745 case ECT_CONTROL_METHOD_FG_PERIODICITY
:
8746 if (tlv_length
== 1) {
8747 proto_tree_add_item_ret_uint(tlv_tree
, hf_docsis_ect_control_method_fg_periodicity
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
, &value
);
8748 if (value
< 1 || value
> 30)
8749 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_ect_control_out_of_range
, "Invalid ECT Foreground Periodicity: %i", value
);
8752 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8754 case ECT_CONTROL_METHOD_FG_EXPIRATION_TIME
:
8755 if (tlv_length
== 1) {
8756 proto_tree_add_item_ret_uint(tlv_tree
, hf_docsis_ect_control_method_fg_expiration_time
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
, &value
);
8757 if (value
< 1 || value
> 255)
8758 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_ect_control_out_of_range
, "Invalid ECT Foreground Expiration Time: %i", value
);
8761 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8763 case ECT_CONTROL_METHOD_FG_DS_ZBL
:
8764 if (tlv_length
== 1)
8765 proto_tree_add_item(tlv_tree
, hf_docsis_ect_control_method_fg_ds_zbl
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
8767 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8770 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown TLV: %u", tlv_type
);
8776 expert_add_info_format(pinfo
, item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", length
);
8780 dissect_ect_control_method_tlv(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_item
*item
, proto_tree
*tree
, int pos
, int length
)
8782 proto_item
*tlv_item
;
8783 proto_tree
*tlv_tree
;
8785 int tlv_length
, end
= pos
+ length
;
8787 while (pos
+ 1 < end
)
8789 tlv_type
= tvb_get_uint8(tvb
, pos
);
8790 tlv_length
= tvb_get_uint8(tvb
, pos
+ 1);
8791 tlv_item
= proto_tree_add_item(tree
, hf_docsis_ect_control_method_tlv
, tvb
, pos
, tlv_length
+ 2, ENC_NA
);
8792 proto_item_set_text(tlv_item
, "%s", val_to_str(tlv_type
, ect_control_method_tlv_vals
, "Unknown TLV %u"));
8793 tlv_tree
= proto_item_add_subtree(tlv_item
, ett_docsis_ect_tlv
);
8794 proto_tree_add_item(tlv_tree
, hf_docsis_ect_control_method_tlv_type
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
8795 proto_tree_add_item(tlv_tree
, hf_docsis_ect_control_method_tlv_length
, tvb
, pos
+ 1, 1, ENC_BIG_ENDIAN
);
8800 case ECT_CONTROL_METHOD_FG
:
8801 dissect_ect_control_method_fg_tlv(tvb
, pinfo
, tlv_item
, tlv_tree
, pos
, tlv_length
);
8803 case ECT_CONTROL_METHOD_BG
:
8804 dissect_ect_control_method_bg_tlv(tvb
, pinfo
, tlv_item
, tlv_tree
, pos
, tlv_length
);
8807 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown TLV: %u", tlv_type
);
8813 expert_add_info_format(pinfo
, item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", length
);
8817 dissect_ect_control_tlv(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_item
*item
, proto_tree
*tree
, int pos
, int length
)
8819 proto_item
*tlv_item
;
8820 proto_tree
*tlv_tree
;
8822 int tlv_length
, end
= pos
+ length
, i
;
8826 while (pos
+ 1 < end
)
8828 tlv_type
= tvb_get_uint8(tvb
, pos
);
8829 tlv_length
= tvb_get_uint8(tvb
, pos
+ 1);
8830 tlv_item
= proto_tree_add_item(tree
, hf_docsis_ect_control_tlv
, tvb
, pos
, tlv_length
+ 2, ENC_NA
);
8831 proto_item_set_text(tlv_item
, "%s", val_to_str(tlv_type
, ect_control_tlv_vals
, "Unknown TLV %u"));
8832 tlv_tree
= proto_item_add_subtree(tlv_item
, ett_docsis_ect_tlv
);
8833 proto_tree_add_item(tlv_tree
, hf_docsis_ect_control_tlv_type
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
8834 proto_tree_add_item(tlv_tree
, hf_docsis_ect_control_tlv_length
, tvb
, pos
+ 1, 1, ENC_BIG_ENDIAN
);
8839 case ECT_CONTROL_SUBBAND_DIRECTION
:
8840 for (i
= 0; i
< tlv_length
; ++i
)
8841 proto_tree_add_item(tlv_tree
, hf_docsis_ect_control_subband_direction
, tvb
, pos
+ i
, 1, ENC_BIG_ENDIAN
);
8843 case ECT_CONTROL_STATUS
:
8844 if (tlv_length
== 1)
8845 proto_tree_add_item(tlv_tree
, hf_docsis_ect_control_status
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
8847 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8849 case ECT_CONTROL_METHOD
:
8850 dissect_ect_control_method_tlv(tvb
, pinfo
, tlv_item
, tlv_tree
, pos
, tlv_length
);
8852 case ECT_CONTROL_PARTIAL_SERVICE
:
8853 dissect_ect_control_partial_service_tlv(tvb
, pinfo
, tlv_item
, tlv_tree
, pos
, tlv_length
);
8855 case ECT_CONTROL_DEFERRAL_TIME
:
8856 if (tlv_length
== 1)
8857 proto_tree_add_item(tlv_tree
, hf_docsis_ect_control_deferral_time
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
);
8859 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8861 case ECT_CONTROL_RXMER_DURATION
:
8862 if (tlv_length
== 1) {
8863 proto_tree_add_item_ret_uint(tlv_tree
, hf_docsis_ect_control_rxmer_duration
, tvb
, pos
, tlv_length
, ENC_BIG_ENDIAN
, &value
);
8864 if (value
< 1 || value
> 128)
8865 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_ect_control_out_of_range
, "Invalid RxMER Duration: %i symbols", value
);
8868 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", tlv_length
);
8871 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown TLV: %u", tlv_type
);
8877 expert_add_info_format(pinfo
, item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", length
);
8881 dissect_ect_tlv(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_item
*item
, proto_tree
*tree
, int pos
, int length
)
8883 proto_item
*tlv_item
;
8884 proto_tree
*tlv_tree
;
8886 int tlv_length
, end
= pos
+ length
;
8888 while (pos
+ 1 < end
)
8890 tlv_type
= tvb_get_uint8(tvb
, pos
);
8891 tlv_length
= tvb_get_uint8(tvb
, pos
+ 1);
8892 tlv_item
= proto_tree_add_item(tree
, hf_docsis_ect_tlv
, tvb
, pos
, tlv_length
+ 2, ENC_NA
);
8893 proto_item_set_text(tlv_item
, "%s", val_to_str(tlv_type
, ect_tlv_vals
, "Unknown TLV %u"));
8894 tlv_tree
= proto_item_add_subtree(tlv_item
, ett_docsis_ect_tlv
);
8895 proto_tree_add_item(tlv_tree
, hf_docsis_ect_tlv_type
, tvb
, pos
, 1, ENC_BIG_ENDIAN
);
8896 proto_tree_add_item(tlv_tree
, hf_docsis_ect_tlv_length
, tvb
, pos
+ 1, 1, ENC_BIG_ENDIAN
);
8902 dissect_ect_control_tlv(tvb
, pinfo
, tlv_item
, tlv_tree
, pos
, tlv_length
);
8905 expert_add_info_format(pinfo
, tlv_item
, &ei_docsis_mgmt_tlvtype_unknown
, "Unknown TLV type: %u", tlv_type
);
8911 expert_add_info_format(pinfo
, item
, &ei_docsis_mgmt_tlvlen_bad
, "Wrong TLV length: %i", length
);
8915 dissect_ect_req(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
8917 proto_item
*ect_req_item
;
8918 proto_tree
*ect_req_tree
;
8919 tvbuff_t
*tlv_tvb
= NULL
;
8921 uint32_t transaction_id
;
8923 ect_req_item
= proto_tree_add_item(tree
, proto_docsis_ect_req
, tvb
, 0, -1, ENC_NA
);
8924 ect_req_tree
= proto_item_add_subtree(ect_req_item
, ett_docsis_ect_req
);
8925 proto_tree_add_item_ret_uint(ect_req_tree
, hf_docsis_ect_trans_id
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &transaction_id
);
8927 col_add_fstr(pinfo
->cinfo
, COL_INFO
, "ECT-REQ ID %u", transaction_id
);
8929 tlv_tvb
= dissect_multipart(tvb
, pinfo
, ect_req_tree
, data
, MGT_ECT_REQ
, transaction_id
, 2);
8930 if (tlv_tvb
!= NULL
&& tvb_captured_length(tlv_tvb
))
8931 dissect_ect_tlv(tlv_tvb
, pinfo
, ect_req_item
, ect_req_tree
, 0, tvb_reported_length(tlv_tvb
));
8932 return tvb_captured_length(tvb
);
8936 dissect_ect_rsp(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
8938 proto_item
*ect_rsp_item
;
8939 proto_tree
*ect_rsp_tree
;
8940 tvbuff_t
*tlv_tvb
= NULL
;
8942 uint32_t transaction_id
, rsp_code
;
8944 ect_rsp_item
= proto_tree_add_item(tree
, proto_docsis_ect_rsp
, tvb
, 0, -1, ENC_NA
);
8945 ect_rsp_tree
= proto_item_add_subtree(ect_rsp_item
, ett_docsis_ect_rsp
);
8946 proto_tree_add_item_ret_uint(ect_rsp_tree
, hf_docsis_ect_trans_id
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &transaction_id
);
8947 proto_tree_add_item_ret_uint(ect_rsp_tree
, hf_docsis_ect_rsp_code
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &rsp_code
);
8949 col_add_fstr(pinfo
->cinfo
, COL_INFO
, "ECT-RSP ID %u: %s",
8951 val_to_str(rsp_code
, ect_rsp_code_vals
, "Unknown Response Code (%u)"));
8953 tlv_tvb
= dissect_multipart(tvb
, pinfo
, ect_rsp_tree
, data
, MGT_ECT_RSP
, transaction_id
, 3);
8954 if (tlv_tvb
!= NULL
&& tvb_captured_length(tlv_tvb
))
8955 dissect_ect_tlv(tlv_tvb
, pinfo
, ect_rsp_item
, ect_rsp_tree
, 0, tvb_reported_length(tlv_tvb
));
8956 return tvb_captured_length(tvb
);
8960 dissect_ext_rngreq (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
8963 proto_tree
*ext_rngreq_tree
;
8965 uint32_t sid
, downstream_channel_id
, upstream_channel_id
;
8967 it
= proto_tree_add_item(tree
, proto_docsis_ext_rngreq
, tvb
, 0, -1, ENC_NA
);
8968 ext_rngreq_tree
= proto_item_add_subtree (it
, ett_docsis_ext_rngreq
);
8969 proto_tree_add_item_ret_uint (ext_rngreq_tree
, hf_docsis_rngreq_sid
, tvb
, 0, 2, ENC_BIG_ENDIAN
, &sid
);
8970 proto_tree_add_item_ret_uint (ext_rngreq_tree
, hf_docsis_mgt_down_chid
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &downstream_channel_id
);
8971 proto_tree_add_item_ret_uint (ext_rngreq_tree
, hf_docsis_mgt_upstream_chid
, tvb
, 3, 1, ENC_BIG_ENDIAN
, &upstream_channel_id
);
8973 col_add_fstr (pinfo
->cinfo
, COL_INFO
, "EXT-RNG-REQ: SID: %u, DS CH ID: %u, US CH ID: %u", sid
, downstream_channel_id
, upstream_channel_id
);
8975 return tvb_captured_length(tvb
);
8979 dissect_dpr(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
8981 proto_item
*dpr_item
, *item
;
8982 proto_tree
*dpr_tree
;
8984 uint32_t dcid
, tg_id
, duration
;
8986 dpr_item
= proto_tree_add_item(tree
, proto_docsis_dpr
, tvb
, 0, -1, ENC_NA
);
8987 dpr_tree
= proto_item_add_subtree(dpr_item
, ett_docsis_dpr
);
8988 proto_tree_add_item(dpr_tree
, hf_docsis_dpr_carrier
, tvb
, 0, 1, ENC_BIG_ENDIAN
);
8989 proto_tree_add_item_ret_uint(dpr_tree
, hf_docsis_dpr_dcid
, tvb
, 1, 1, ENC_BIG_ENDIAN
, &dcid
);
8990 proto_tree_add_item_ret_uint(dpr_tree
, hf_docsis_dpr_tg_id
, tvb
, 2, 1, ENC_BIG_ENDIAN
, &tg_id
);
8991 proto_tree_add_item(dpr_tree
, hf_docsis_dpr_reserved
, tvb
, 3, 1, ENC_BIG_ENDIAN
);
8992 proto_tree_add_item(dpr_tree
, hf_docsis_dpr_start_time
, tvb
, 4, 4, ENC_BIG_ENDIAN
);
8993 item
= proto_tree_add_item_ret_uint(dpr_tree
, hf_docsis_dpr_duration
, tvb
, 8, 4, ENC_BIG_ENDIAN
, &duration
);
8994 if ((duration
& 0xff000000) > 0)
8995 expert_add_info_format(pinfo
, item
, &ei_docsis_dpr_out_of_range
, "Invalid DPR Duration: %u", duration
);
8997 col_add_fstr(pinfo
->cinfo
, COL_INFO
, "DPR DCID %u on TG ID %u", dcid
, tg_id
);
8999 return tvb_captured_length(tvb
);
9003 dissect_macmgmt (tvbuff_t
* tvb
, packet_info
* pinfo
, proto_tree
* tree
, void* data _U_
)
9005 uint32_t type
, version
, dsap
, ssap
, msg_len
;
9006 proto_item
*mgt_hdr_it
;
9007 proto_tree
*mgt_hdr_tree
;
9008 tvbuff_t
*payload_tvb
;
9011 col_set_str (pinfo
->cinfo
, COL_PROTOCOL
, "DOCSIS MGMT");
9013 col_clear(pinfo
->cinfo
, COL_INFO
);
9015 set_address_tvb (&pinfo
->dl_src
, AT_ETHER
, 6, tvb
, 6);
9016 copy_address_shallow(&pinfo
->src
, &pinfo
->dl_src
);
9017 set_address_tvb (&pinfo
->dl_dst
, AT_ETHER
, 6, tvb
, 0);
9018 copy_address_shallow(&pinfo
->dst
, &pinfo
->dl_dst
);
9020 static int * const multipart_field
[] = {
9021 &hf_docsis_mgt_multipart_number_of_fragments
,
9022 &hf_docsis_mgt_multipart_fragment_sequence_number
,
9026 //We need version and type for decoding of ssap and dsap field: in case of RNG-REQ, these fields can contain the Transmit Power Level.
9027 version
= tvb_get_uint8 (tvb
, 17);
9028 type
= tvb_get_uint8 (tvb
, 18);
9029 dsap
= tvb_get_uint8 (tvb
, 14);
9030 ssap
= tvb_get_uint8 (tvb
, 15);
9032 mgt_hdr_it
= proto_tree_add_item (tree
, proto_docsis_mgmt
, tvb
, 0, 20, ENC_NA
);
9033 mgt_hdr_tree
= proto_item_add_subtree (mgt_hdr_it
, ett_docsis_mgmt
);
9034 proto_tree_add_item (mgt_hdr_tree
, hf_docsis_mgt_dst_addr
, tvb
, 0, 6, ENC_NA
);
9035 proto_tree_add_item (mgt_hdr_tree
, hf_docsis_mgt_src_addr
, tvb
, 6, 6, ENC_NA
);
9036 proto_tree_add_item_ret_uint (mgt_hdr_tree
, hf_docsis_mgt_msg_len
, tvb
, 12, 2, ENC_BIG_ENDIAN
, &msg_len
);
9038 if ( ((type
== MGT_RNG_REQ
) || type
== MGT_B_INIT_RNG_REQ
)
9040 && !(ssap
==0 && dsap
== 0) ) {
9041 //RNG_REQ or BONDED_INIT_RNG_REQ with upstream transmit power reporting, sent to 3.1 CMTS
9042 proto_tree_add_item (mgt_hdr_tree
, hf_docsis_mgt_31_transmit_power
, tvb
, 14, 2, ENC_BIG_ENDIAN
);
9043 } else if (type
== MGT_EXT_RNG_REQ
) {
9044 //EXT_RNG_REQ with upstream transmit power reporting, sent to 4.0 CMTS
9045 proto_tree_add_item (mgt_hdr_tree
, hf_docsis_mgt_40_transmit_power
, tvb
, 14, 2, ENC_BIG_ENDIAN
);
9046 } else if ( ((type
== MGT_RNG_REQ
&& version
== 1) || (type
== MGT_B_INIT_RNG_REQ
&& version
== 4))
9048 //RNG_REQ or BONDED_INIT_RNG_REQ with upstream transmit power reporting, sent to 3.0 CMTS
9049 proto_tree_add_item (mgt_hdr_tree
, hf_docsis_mgt_dsap
, tvb
, 14, 1, ENC_BIG_ENDIAN
);
9050 proto_tree_add_item (mgt_hdr_tree
, hf_docsis_mgt_30_transmit_power
, tvb
, 15, 1, ENC_BIG_ENDIAN
);
9052 proto_tree_add_item (mgt_hdr_tree
, hf_docsis_mgt_dsap
, tvb
, 14, 1, ENC_BIG_ENDIAN
);
9053 proto_tree_add_item (mgt_hdr_tree
, hf_docsis_mgt_ssap
, tvb
, 15, 1, ENC_BIG_ENDIAN
);
9056 proto_tree_add_item (mgt_hdr_tree
, hf_docsis_mgt_control
, tvb
, 16, 1, ENC_BIG_ENDIAN
);
9057 proto_tree_add_item (mgt_hdr_tree
, hf_docsis_mgt_version
, tvb
, 17, 1, ENC_BIG_ENDIAN
);
9058 proto_tree_add_item (mgt_hdr_tree
, hf_docsis_mgt_type
, tvb
, 18, 1, ENC_BIG_ENDIAN
);
9060 p_add_proto_data(pinfo
->pool
, pinfo
, proto_docsis_mgmt
, KEY_MGMT_VERSION
, GUINT_TO_POINTER(version
));
9063 proto_tree_add_item (mgt_hdr_tree
, hf_docsis_mgt_rsvd
, tvb
, 19, 1, ENC_BIG_ENDIAN
);
9065 proto_tree_add_bitmask(mgt_hdr_tree
, tvb
, 19, hf_docsis_mgt_multipart
, ett_sub_tlv
, multipart_field
, ENC_BIG_ENDIAN
);
9066 multipart
= tvb_get_uint8 (tvb
, 19);
9067 p_add_proto_data(pinfo
->pool
, pinfo
, proto_docsis_mgmt
, KEY_MGMT_MULTIPART
, GUINT_TO_POINTER(multipart
));
9070 /* Code to Call subdissector */
9071 /* sub-dissectors are based on the type field */
9072 payload_tvb
= tvb_new_subset_length (tvb
, 20, msg_len
- 6);
9074 /* Special case: map needs version. Two types of MAPs exist, with some difference in encoding: MAPv1 and MAPv5. See also DOCSIS3.1 MULPI spec */
9075 if (type
== MGT_MAP
) {
9076 if (!dissector_try_uint(docsis_mgmt_dissector_table
, 256*version
+ type
, payload_tvb
, pinfo
, tree
)) {
9077 call_data_dissector(payload_tvb
, pinfo
, tree
);
9080 if (!dissector_try_uint(docsis_mgmt_dissector_table
, type
, payload_tvb
, pinfo
, tree
)) {
9081 call_data_dissector(payload_tvb
, pinfo
, tree
);
9085 return tvb_captured_length(tvb
);
9088 /* Register the protocol with Wireshark */
9090 proto_register_docsis_mgmt (void)
9092 static hf_register_info hf
[] = {
9094 {&hf_docsis_sync_cmts_timestamp
,
9095 {"CMTS Timestamp", "docsis_sync.cmts_timestamp",
9096 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
9097 "Sync CMTS Timestamp", HFILL
}
9100 {&hf_docsis_ucd_config_ch_cnt
,
9101 {"Config Change Count", "docsis_ucd.confcngcnt",
9102 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9103 "Configuration Change Count", HFILL
}
9105 {&hf_docsis_ucd_mini_slot_size
,
9106 {"Mini Slot Size (6.25us TimeTicks)", "docsis_ucd.mslotsize",
9107 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9110 {&hf_docsis_ucd_type
,
9111 {"Type", "docsis_ucd.type",
9112 FT_UINT8
, BASE_DEC
, VALS(channel_tlv_vals
), 0x0,
9113 "Channel TLV type", HFILL
}
9115 {&hf_docsis_ucd_length
,
9116 {"Length", "docsis_ucd.length",
9117 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9118 "Channel TLV length", HFILL
}
9120 {&hf_docsis_ucd_burst_type
,
9121 {"Type", "docsis_ucd.burst.tlvtype",
9122 FT_UINT8
, BASE_DEC
, VALS(burst_tlv_vals
), 0x0,
9123 "Burst TLV type", HFILL
}
9125 {&hf_docsis_ucd_burst_length
,
9126 {"Length", "docsis_ucd.burst.tlvlen",
9127 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9128 "Burst TLV length", HFILL
}
9130 {&hf_docsis_ucd_symbol_rate
,
9131 {"Symbol Rate (ksym/sec)", "docsis_ucd.symrate",
9132 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9135 {&hf_docsis_ucd_frequency
,
9136 {"Frequency (Hz)", "docsis_ucd.freq",
9137 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
9138 "Upstream Center Frequency", HFILL
}
9140 {&hf_docsis_ucd_preamble_pat
,
9141 {"Preamble Pattern", "docsis_ucd.preamble",
9142 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9143 "Preamble Superstring", HFILL
}
9145 {&hf_docsis_ucd_ext_preamble_pat
,
9146 {"Extended Preamble Pattern", "docsis_ucd.extpreamble",
9147 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9148 "Extended Preamble Superstring", HFILL
}
9150 {&hf_docsis_ucd_scdma_mode_enabled
,
9151 {"S-CDMA Mode Enabled", "docsis_ucd.scdma",
9152 FT_UINT8
, BASE_DEC
, VALS (on_off_vals
), 0x0,
9155 {&hf_docsis_ucd_scdma_spreading_interval
,
9156 {"SCDMA Spreading Interval", "docsis_ucd.scdmaspreadinginterval",
9157 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9160 {&hf_docsis_ucd_scdma_codes_per_mini_slot
,
9161 {"SCDMA Codes per mini slot", "docsis_ucd.scdmacodesperminislot",
9162 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9165 {&hf_docsis_ucd_scdma_active_codes
,
9166 {"SCDMA Active Codes", "docsis_ucd.scdmaactivecodes",
9167 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9170 {&hf_docsis_ucd_scdma_code_hopping_seed
,
9171 {"SCDMA Code Hopping Seed", "docsis_ucd.scdmacodehoppingseed",
9172 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9175 {&hf_docsis_ucd_scdma_us_ratio_num
,
9176 {"SCDMA US Ratio Numerator", "docsis_ucd.scdmausrationum",
9177 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9180 {&hf_docsis_ucd_scdma_us_ratio_denom
,
9181 {"SCDMA US Ratio Denominator", "docsis_ucd.scdmausratiodenom",
9182 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9185 {&hf_docsis_ucd_scdma_timestamp_snapshot
,
9186 {"SCDMA Timestamp Snapshot", "docsis_ucd.scdmatimestamp",
9187 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9190 {&hf_docsis_ucd_maintain_power_spectral_density
,
9191 {"Maintain Power Spectral Density", "docsis_ucd.maintpower",
9192 FT_UINT8
, BASE_DEC
, VALS (on_off_vals
), 0x0,
9195 {&hf_docsis_ucd_ranging_required
,
9196 {"Ranging Required", "docsis_ucd.rangingreq",
9197 FT_UINT8
, BASE_DEC
, VALS (ranging_req_vals
), 0x0,
9200 {&hf_docsis_ucd_max_scheduled_codes
,
9201 {"S-CDMA Max Scheduled Codes", "docsis_ucd.scdmamaxcodes",
9202 FT_UINT8
, BASE_DEC
, VALS (max_scheduled_codes_vals
), 0x0,
9205 {&hf_docsis_ucd_rnghoff_cm
,
9206 {"Ranging Hold-Off (CM)","docsis_ucd.rnghoffcm",
9207 FT_BOOLEAN
, 32, TFS(&tfs_allow_inhibit
), 0x1,
9210 {&hf_docsis_ucd_rnghoff_erouter
,
9211 {"Ranging Hold-Off (eRouter)",
9212 "docsis_ucd.rnghofferouter",
9213 FT_BOOLEAN
, 32, TFS(&tfs_allow_inhibit
), 0x2,
9216 {&hf_docsis_ucd_rnghoff_emta
,
9217 {"Ranging Hold-Off (eMTA or EDVA)",
9218 "docsis_ucd.rnghoffemta",
9219 FT_BOOLEAN
, 32, TFS(&tfs_allow_inhibit
), 0x4,
9222 {&hf_docsis_ucd_rnghoff_estb
,
9223 {"Ranging Hold-Off (DSG/eSTB)",
9224 "docsis_ucd.rnghoffestb",
9225 FT_BOOLEAN
, 32, TFS(&tfs_allow_inhibit
), 0x8,
9228 {&hf_docsis_ucd_rnghoff_rsvd
,
9230 "docsis_ucd.rnghoffrsvd",
9231 FT_UINT32
, BASE_HEX
, NULL
, 0xFFF0,
9234 {&hf_docsis_ucd_rnghoff_id_ext
,
9235 {"CM Ranging Class ID Extension",
9236 "docsis_ucd.rngidext",
9237 FT_UINT32
, BASE_HEX
, NULL
, 0xFFFF0000,
9240 {&hf_docsis_ucd_chan_class_id_cm
,
9241 {"Channel Class ID (CM)","docsis_ucd.classidcm",
9242 FT_UINT32
, BASE_DEC
, VALS (inhibit_allow_vals
), 0x1,
9245 {&hf_docsis_ucd_chan_class_id_erouter
,
9246 {"Channel Class ID (eRouter)",
9247 "docsis_ucd.classiderouter",
9248 FT_UINT32
, BASE_DEC
, VALS (inhibit_allow_vals
), 0x2,
9251 {&hf_docsis_ucd_chan_class_id_emta
,
9252 {"Channel Class ID (eMTA or EDVA)",
9253 "docsis_ucd.classidemta",
9254 FT_UINT32
, BASE_DEC
, VALS (inhibit_allow_vals
), 0x4,
9257 {&hf_docsis_ucd_chan_class_id_estb
,
9258 {"Channel Class ID (DSG/eSTB)",
9259 "docsis_ucd.classidestb",
9260 FT_UINT32
, BASE_DEC
, VALS (inhibit_allow_vals
), 0x8,
9263 {&hf_docsis_ucd_chan_class_id_rsvd
,
9265 "docsis_ucd.classidrsvd",
9266 FT_UINT32
, BASE_HEX
, NULL
, 0xFFF0,
9269 {&hf_docsis_ucd_chan_class_id_id_ext
,
9270 {"CM Ranging Class ID Extension",
9271 "docsis_ucd.classidext",
9272 FT_UINT32
, BASE_HEX
, NULL
, 0xFFFF0000,
9275 {&hf_docsis_ucd_change_ind_bitmask_subc_excl_band
,
9276 {"UCD Change Indicator Bitmask: Subcarrier Exclusion Band TLV", "docsis_ucd.burst.ucd_change_ind_bitmask_subc_excl_band",
9277 FT_BOOLEAN
, 8, TFS(&tfs_ucd_change_ind_vals
), 0x01,
9280 {&hf_docsis_ucd_change_ind_bitmask_unused_subc
,
9281 {"UCD Change Indicator Bitmask: Unused Subcarrier Specification TLV", "docsis_ucd.burst.ucd_change_ind_bitmask_unused_subc",
9282 FT_BOOLEAN
, 8, TFS(&tfs_ucd_change_ind_vals
), 0x02,
9285 {&hf_docsis_ucd_change_ind_bitmask_other_subc
,
9286 {"UCD Change Indicator Bitmask: Other than Subcarrier Exclusion Band and Unused Subcarrier Specification TLV", "docsis_ucd.burst.ucd_change_ind_bitmask_other_subc",
9287 FT_BOOLEAN
, 8, TFS(&tfs_ucd_change_ind_vals
), 0x04,
9290 {&hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc5
,
9291 {"UCD Change Indicator Bitmask: Burst Attributes associated with IUC5", "docsis_ucd.burst.ucd_change_ind_bitmask_burst_attr_iuc5",
9292 FT_BOOLEAN
, 8, TFS(&tfs_ucd_change_ind_vals
), 0x08,
9295 {&hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc6
,
9296 {"UCD Change Indicator Bitmask: Burst Attributes associated with IUC6", "docsis_ucd.burst.ucd_change_ind_bitmask_burst_attr_iuc6",
9297 FT_BOOLEAN
, 8, TFS(&tfs_ucd_change_ind_vals
), 0x10,
9300 {&hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc9
,
9301 {"UCD Change Indicator Bitmask: Burst Attributes associated with IUC9", "docsis_ucd.burst.ucd_change_ind_bitmask_burst_attr_iuc9",
9302 FT_BOOLEAN
, 8, TFS(&tfs_ucd_change_ind_vals
), 0x20,
9305 {&hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc10
,
9306 {"UCD Change Indicator Bitmask: Burst Attributes associated with IUC10", "docsis_ucd.burst.ucd_change_ind_bitmask_burst_attr_iuc10",
9307 FT_BOOLEAN
, 8, TFS(&tfs_ucd_change_ind_vals
), 0x40,
9310 {&hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc11
,
9311 {"UCD Change Indicator Bitmask: Burst Attributes associated with IUC11", "docsis_ucd.burst.ucd_change_ind_bitmask_burst_attr_iuc11",
9312 FT_BOOLEAN
, 8, TFS(&tfs_ucd_change_ind_vals
), 0x80,
9315 {&hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc12
,
9316 {"UCD Change Indicator Bitmask: Burst Attributes associated with IUC12", "docsis_ucd.burst.ucd_change_ind_bitmask_burst_attr_iuc12",
9317 FT_BOOLEAN
, 8, TFS(&tfs_ucd_change_ind_vals
), 0x01,
9320 {&hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc13
,
9321 {"UCD Change Indicator Bitmask: Burst Attributes associated with IUC13", "docsis_ucd.burst.ucd_change_ind_bitmask_burst_attr_iuc13",
9322 FT_BOOLEAN
, 8, TFS(&tfs_ucd_change_ind_vals
), 0x02,
9325 {&hf_docsis_ucd_change_ind_bitmask_burst_attr_iuc3_or_4
,
9326 {"UCD Change Indicator Bitmask: Burst Attributes associated with IUC3 or IUC4", "docsis_ucd.burst.ucd_change_ind_bitmask_burst_attr_iuc3_or_4",
9327 FT_BOOLEAN
, 8, TFS(&tfs_ucd_change_ind_vals
), 0x04,
9330 {&hf_docsis_ucd_change_ind_bitmask_reserved
,
9331 {"UCD Change Indicator Bitmask: Reserved", "docsis_ucd.burst.ucd_change_ind_bitmask_reserved",
9332 FT_UINT8
, BASE_HEX
, NULL
, 0xF8,
9335 {&hf_docsis_ucd_ofdma_timestamp_snapshot
,
9336 {"OFDMA Timestamp Snapshot", "docsis_ucd.ofdma_timestamp_snapshot",
9337 FT_BYTES
, BASE_NONE
, NULL
, 0x00,
9340 {&hf_docsis_ucd_ofdma_timestamp_snapshot_reserved
,
9341 {"OFDMA Timestamp Snapshot - Reserved", "docsis_ucd.ofdma_timestamp_snapshot_reserved",
9342 FT_UINT40
, BASE_HEX
, NULL
, 0xF000000000,
9345 {&hf_docsis_ucd_ofdma_timestamp_snapshot_d30timestamp
,
9346 {"OFDMA Timestamp Snapshot - D3.0 timestamp", "docsis_ucd.ofdma_timestamp_snapshot_d30timestamp",
9347 FT_UINT40
, BASE_HEX
, NULL
, 0x0FFFFFFFF0,
9350 {&hf_docsis_ucd_ofdma_timestamp_snapshot_4msbits_of_div20
,
9351 {"OFDMA Timestamp Snapshot - 4 Most Significant bits of div20 field", "docsis_ucd.ofdma_timestamp_snapshot_4msbits_of_div20",
9352 FT_UINT40
, BASE_HEX
, NULL
, 0x000000000F,
9355 {&hf_docsis_ucd_ofdma_timestamp_snapshot_minislot_count
,
9356 {"OFDMA Timestamp Snapshot - Minislot Count", "docsis_ucd.ofdma_timestamp_snapshot_minislot_count",
9357 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
9360 {&hf_docsis_ucd_ofdma_cyclic_prefix_size
,
9361 {"OFDMA Cyclic Prefix Size", "docsis_ucd.ofdma_cyclic_prefix_size",
9362 FT_UINT8
, BASE_DEC
, VALS(ofdma_cyclic_prefix_size_vals
), 0x00,
9365 {&hf_docsis_ucd_ofdma_rolloff_period_size
,
9366 {"OFDMA Rolloff Period Size", "docsis_ucd.ofdma_rolloff_period_size",
9367 FT_UINT8
, BASE_DEC
, VALS(ofdma_rolloff_period_size_vals
), 0x00,
9370 {&hf_docsis_ucd_subc_spacing
,
9371 {"Subcarrier Spacing", "docsis_ucd.subc_spacing",
9372 FT_UINT8
, BASE_DEC
, VALS(subc_spacing_vals
), 0x00,
9375 {&hf_docsis_ucd_cent_freq_subc0
,
9376 {"Center Frequency of Subcarrier 0", "docsis_ucd.cent_freq_subc0",
9377 FT_UINT32
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_hz
), 0x00,
9380 {&hf_docsis_ucd_subcarrier_range
,
9381 {"Subcarrier range", "docsis_ucd.subc_range",
9382 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(subc_assign_range
), 0x00,
9385 {&hf_docsis_ucd_symb_ofdma_frame
,
9386 {"Symbols in OFDMA frame", "docsis_ucd.symb_ofdma_frame",
9387 FT_UINT8
, BASE_DEC
, NULL
, 0x00,
9390 {&hf_docsis_ucd_rand_seed
,
9391 {"Randomization Seed", "docsis_ucd.rand_seed",
9392 FT_BYTES
, BASE_NONE
, NULL
, 0x00,
9395 {&hf_docsis_ucd_extended_us_channel
,
9396 {"Extended Upstream Channel", "docsis_ucd.extended_us_channel",
9397 FT_UINT8
, BASE_DEC
, VALS (extended_us_channel_vals
), 0x00,
9400 {&hf_docsis_ucd_iuc
,
9401 {"Interval Usage Code", "docsis_ucd.iuc",
9402 FT_UINT8
, BASE_DEC
, VALS (iuc_vals
), 0x0,
9405 {&hf_docsis_burst_mod_type
,
9406 {"Modulation Type", "docsis_ucd.burst.modtype",
9407 FT_UINT8
, BASE_DEC
, VALS (mod_vals
), 0x0,
9410 {&hf_docsis_burst_diff_encoding
,
9411 {"Differential Encoding", "docsis_ucd.burst.diffenc",
9412 FT_UINT8
, BASE_DEC
, VALS (on_off_vals
), 0x0,
9415 {&hf_docsis_burst_preamble_len
,
9416 {"Preamble Length (Bits)", "docsis_ucd.burst.preamble_len",
9417 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
9420 {&hf_docsis_burst_preamble_val_off
,
9421 {"Preamble Offset (Bits)", "docsis_ucd.burst.preamble_off",
9422 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
9425 {&hf_docsis_burst_fec
,
9426 {"FEC (T)", "docsis_ucd.burst.fec",
9427 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9428 "FEC (T) Codeword Parity Bits = 2^T", HFILL
}
9430 {&hf_docsis_burst_fec_codeword
,
9431 {"FEC Codeword Info bytes (k)", "docsis_ucd.burst.fec_codeword",
9432 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9435 {&hf_docsis_burst_scrambler_seed
,
9436 {"Scrambler Seed", "docsis_ucd.burst.scrambler_seed",
9437 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9438 "Burst Descriptor", HFILL
}
9440 {&hf_docsis_burst_max_burst
,
9441 {"Max Burst Size (Minislots)", "docsis_ucd.burst.maxburst",
9442 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9445 {&hf_docsis_burst_guard_time
,
9446 {"Guard Time Size (Symbol Times)", "docsis_ucd.burst.guardtime",
9447 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9450 {&hf_docsis_burst_last_cw_len
,
9451 {"Last Codeword Length", "docsis_ucd.burst.last_cw_len",
9452 FT_UINT8
, BASE_DEC
, VALS (last_cw_len_vals
), 0x0,
9455 {&hf_docsis_burst_scrambler_onoff
,
9456 {"Scrambler On/Off", "docsis_ucd.burst.scrambleronoff",
9457 FT_UINT8
, BASE_DEC
, VALS (on_off_vals
), 0x0,
9460 {&hf_docsis_rs_int_depth
,
9461 {"RS Interleaver Depth", "docsis_ucd.burst.rsintdepth",
9462 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9463 "R-S Interleaver Depth", HFILL
}
9465 {&hf_docsis_rs_int_block
,
9466 {"RS Interleaver Block Size", "docsis_ucd.burst.rsintblock",
9467 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9468 "R-S Interleaver Block", HFILL
}
9470 {&hf_docsis_preamble_type
,
9471 {"Preamble Type", "docsis_ucd.burst.preambletype",
9472 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9475 {&hf_docsis_ucd_scdma_scrambler_onoff
,
9476 {"Scrambler On/Off", "docsis_ucd.burst.scdmascrambleronoff",
9477 FT_UINT8
, BASE_DEC
, VALS (on_off_vals
), 0x0,
9478 "SCDMA Scrambler On/Off", HFILL
}
9480 {&hf_docsis_ucd_scdma_codes_per_subframe
,
9481 {"SCDMA Codes per Subframe", "docsis_ucd.burst.scdmacodespersubframe",
9482 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9485 {&hf_docsis_ucd_scdma_framer_int_step_size
,
9486 {"SCDMA Framer Interleaving Step Size", "docsis_ucd.burst.scdmaframerintstepsize",
9487 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9490 {&hf_docsis_ucd_tcm_enabled
,
9491 {"TCM Enabled", "docsis_ucd.burst.tcmenabled",
9492 FT_UINT8
, BASE_DEC
, VALS (on_off_vals
), 0x0,
9495 {&hf_docsis_ucd_active_code_hopping
,
9496 {"S-CDMA Selection Mode for Active Codes and Code Hopping", "docsis_ucd.selectcodehop",
9497 FT_UINT8
, BASE_DEC
, VALS (tlv20_vals
), 0x0,
9500 {&hf_docsis_ucd_scdma_selection_active_codes
,
9501 {"S-CDMA Selection String for Active Codes", "docsis_ucd.selectcode",
9502 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9505 {&hf_docsis_ucd_higher_ucd_for_same_ucid
,
9506 {"Higher UCD for the same UCID", "docsis_ucd.highucdpresent",
9507 FT_BOOLEAN
, 8, TFS(&type35ucd_tfs_present_not_present
), 0x1,
9510 {&hf_docsis_ucd_higher_ucd_for_same_ucid_resv
,
9511 {"Reserved", "docsis_ucd.highucdresv",
9512 FT_UINT8
, BASE_HEX
, NULL
, 0xFE,
9515 {&hf_docsis_subc_init_rang
,
9516 {"Subcarriers (Nir) Initial Ranging", "docsis_ucd.burst.subc_init_rang",
9517 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
9520 {&hf_docsis_subc_fine_rang
,
9521 {"Subcarriers (Nfr) Fine Ranging", "docsis_ucd.burst.subc_fine_rang",
9522 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
9525 {&hf_docsis_ofdma_prof_mod_order
,
9526 {"OFDMA Profile: modulation", "docsis_ucd.burst.ofma_prof_mod_order",
9527 FT_UINT8
, BASE_DEC
, VALS(ofdma_prof_mod_order
), 0xF0,
9530 {&hf_docsis_ofdma_prof_pilot_pattern
,
9531 {"OFDMA Profile: pilot pattern", "docsis_ucd.burst.ofma_prof_pilot_pattern",
9532 FT_UINT8
, BASE_DEC
, NULL
, 0x0F,
9535 {&hf_docsis_ofdma_prof_num_add_minislots
,
9536 {"OFDMA Profile: Additional Minislots that have identical bit-loading and pilot pattern index", "docsis_ucd.burst.ofma_prof_add_minislots",
9537 FT_UINT8
, BASE_DEC
, NULL
, 0x00,
9540 {&hf_docsis_ofdma_ir_pow_ctrl_start_pow
,
9541 {"OFDMA IR Power Control Starting Power Level", "docsis_ucd.burst.ofma_ir_pow_ctrl_start_pow",
9542 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(ofdma_ir_pow_ctrl_start_pow
), 0x00,
9545 {&hf_docsis_ofdma_ir_pow_ctrl_step_size
,
9546 {"OFDMA IR Power Control Step Size", "docsis_ucd.burst.ofma_ir_pow_ctrl_step_size",
9547 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(ofdma_ir_pow_ctrl_step_size
), 0x00,
9551 {&hf_docsis_map_ucd_count
,
9552 {"UCD Count", "docsis_map.ucdcount",
9553 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9554 "Map UCD Count", HFILL
}
9556 {&hf_docsis_map_numie
,
9557 {"Number of IE's", "docsis_map.numie",
9558 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9559 "Number of Information Elements", HFILL
}
9561 {&hf_docsis_map_numie_v5
,
9562 {"Number of IE's", "docsis_map.numie",
9563 FT_UINT16
, BASE_DEC
, NULL
, 0xFF80,
9564 "Number of Information Elements", HFILL
}
9566 {&hf_docsis_map_rsvd_v5
,
9567 {"Reserved [0x00]", "docsis_map.rsvd",
9568 FT_UINT8
, BASE_HEX
, NULL
, 0x70,
9569 "Reserved Byte", HFILL
}
9571 {&hf_docsis_map_cat
,
9572 {"CAT", "docsis_map.cat",
9573 FT_UINT8
, BASE_HEX
, NULL
, 0x0F,
9577 {&hf_docsis_map_alloc_start
,
9578 {"Alloc Start Time (minislots)", "docsis_map.allocstart",
9579 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
9582 {&hf_docsis_map_ack_time
,
9583 {"ACK Time (minislots)", "docsis_map.acktime",
9584 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
9587 {&hf_docsis_map_rng_start
,
9588 {"Ranging Backoff Start", "docsis_map.rng_start",
9589 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9592 {&hf_docsis_map_rng_end
,
9593 {"Ranging Backoff End", "docsis_map.rng_end",
9594 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9597 {&hf_docsis_map_data_start
,
9598 {"Data Backoff Start", "docsis_map.data_start",
9599 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9602 {&hf_docsis_map_data_end
,
9603 {"Data Backoff End", "docsis_map.data_end",
9604 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9608 {"Information Element", "docsis_map.ie",
9609 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
9612 {&hf_docsis_map_probe_ie
,
9613 {"Probe Information Element", "docsis_map.probe_ie",
9614 FT_UINT32
, BASE_HEX
, NULL
, 0x0,
9617 {&hf_docsis_map_rsvd
,
9618 {"Reserved", "docsis_map.rsvd",
9619 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
9620 "Reserved Byte", HFILL
}
9622 {&hf_docsis_map_sid
,
9623 {"Service Identifier", "docsis_map.sid",
9624 FT_UINT32
, BASE_DEC
, NULL
, 0xFFFC0000,
9627 {&hf_docsis_map_iuc
,
9628 {"Interval Usage Code", "docsis_map.iuc",
9629 FT_UINT32
, BASE_DEC
, VALS(iuc_vals
), 0x0003c000,
9632 {&hf_docsis_map_offset
,
9633 {"Offset", "docsis_map.offset",
9634 FT_UINT32
, BASE_DEC
, NULL
, 0x00003fff,
9637 {&hf_docsis_map_mer
,
9638 {"MER (CMTS RxMER Measurement)", "docsis_map.mer",
9639 FT_BOOLEAN
, 32, TFS(&tfs_on_off
), 0x00020000,
9643 {"PW (Power)", "docsis_map.pw",
9644 FT_BOOLEAN
, 32, TFS(&pw_vals
), MAP_PROBE_IE_PW_MASK
,
9648 {"EQ (Tx Equalization)", "docsis_map.eq",
9649 FT_BOOLEAN
, 32, TFS(&tfs_disabled_enabled
), 0x00008000,
9653 {"St (Stagger)", "docsis_map.st",
9654 FT_BOOLEAN
, 32, TFS(&tfs_yes_no
), MAP_PROBE_IE_ST_MASK
,
9657 {&hf_docsis_map_probe_frame
,
9658 {"Probe Frame", "docsis_map.probe_frame",
9659 FT_UINT32
, BASE_DEC
, NULL
, 0x00003000,
9662 {&hf_docsis_map_symbol_in_frame
,
9663 {"Symbol in Frame", "docsis_map.symbol_in_frame",
9664 FT_UINT32
, BASE_DEC
, NULL
, 0x00000fc0,
9667 {&hf_docsis_map_start_subc
,
9668 {"Start Subc", "docsis_map.start_subc",
9669 FT_UINT32
, BASE_DEC
, NULL
, 0x00000038,
9672 {&hf_docsis_map_subc_skip
,
9673 {"Subc Skip", "docsis_map.subc_skip",
9674 FT_UINT32
, BASE_DEC
, NULL
, 0x00000007,
9677 {&hf_docsis_map_ect
,
9678 {"ECT Control", "docsis_map.ect",
9679 FT_UINT32
, BASE_DEC
, VALS(map_ect_vals
), 0x00000007,
9684 {&hf_docsis_rngreq_sid_field_bit15
,
9685 {"SID field bit 15", "docsis_rngreq.sid_field_bit15",
9686 FT_BOOLEAN
, 8, TFS(&sid_field_bit15_tfs
), 0x80,
9689 {&hf_docsis_rngreq_sid_field_bit14
,
9690 {"SID field bit 14", "docsis_rngreq.sid_field_bit14",
9691 FT_BOOLEAN
, 8, TFS(&sid_field_bit14_tfs
), 0x40,
9694 {&hf_docsis_rngreq_sid_field_bit15_14
,
9695 {"SID field bit 15 to 14", "docsis_rngreq.sid_field_bit15_14",
9696 FT_UINT8
, BASE_HEX
, VALS(sid_field_bit15_14_vals
), 0xC0,
9699 {&hf_docsis_rngreq_sid
,
9700 {"Service Identifier", "docsis_rngreq.sid",
9701 FT_UINT16
, BASE_DEC
, NULL
, 0x3FFF,
9704 {&hf_docsis_rngreq_pend_compl
,
9705 {"Pending Till Complete", "docsis_rngreq.pendcomp",
9706 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9707 "Upstream Channel ID", HFILL
}
9710 {&hf_docsis_rngrsp_type
,
9711 {"Type", "docsis_rngrsp.type",
9712 FT_UINT8
, BASE_DEC
, VALS(rngrsp_tlv_vals
), 0x0,
9715 {&hf_docsis_rngrsp_length
,
9716 {"Length", "docsis_rngrsp.length",
9717 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
9718 "TLV Length", HFILL
}
9720 {&hf_docsis_rngrsp_sid
,
9721 {"Service Identifier", "docsis_rngrsp.sid",
9722 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
9725 {&hf_docsis_rngrsp_timing_adj
,
9726 {"Timing Adjust (6.25us/64)", "docsis_rngrsp.timingadj",
9727 FT_INT32
, BASE_DEC
, NULL
, 0x0,
9730 {&hf_docsis_rngrsp_power_adj
,
9731 {"Power Level Adjust (0.25dB units)", "docsis_rngrsp.poweradj",
9732 FT_INT8
, BASE_DEC
, NULL
, 0x0,
9735 {&hf_docsis_rngrsp_freq_adj
,
9736 {"Offset Freq Adjust (Hz)", "docsis_rngrsp.freqadj",
9737 FT_INT16
, BASE_DEC
, NULL
, 0x0,
9738 "Frequency Adjust", HFILL
}
9740 {&hf_docsis_rngrsp_xmit_eq_adj
,
9741 {"Transmit Equalization Adjust", "docsis_rngrsp.xmit_eq_adj",
9742 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9745 {&hf_docsis_rngrsp_ranging_status
,
9746 {"Ranging Status", "docsis_rngrsp.rng_stat",
9747 FT_UINT8
, BASE_DEC
, VALS (rng_stat_vals
), 0x0,
9750 {&hf_docsis_rngrsp_down_freq_over
,
9751 {"Downstream Frequency Override (Hz)", "docsis_rngrsp.freq_over",
9752 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
9755 {&hf_docsis_rngrsp_upstream_ch_over
,
9756 {"Upstream Channel ID Override", "docsis_rngrsp.chid_override",
9757 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9760 {&hf_docsis_rngrsp_xmit_eq_set
,
9761 {"Transmit Equalization Set", "docsis_rngrsp.xmit_eq_set",
9762 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9765 {&hf_docsis_rngrsp_rngrsp_t4_timeout_multiplier
,
9766 {"Multiplier of the default T4 Timeout", "docsis_rngrsp.t4_timeout_multiplier",
9767 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9768 "T4 Timeout Multiplier (the valid range is 1-10)", HFILL
}
9770 {&hf_docsis_rngrsp_dynamic_range_window_upper_edge
,
9771 {"Dynamic Range Window Upper Edge", "docsis_rngrsp.dynamic_range_window_upper_edge",
9772 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9773 "Dynamic Range Window Upper EDGE (in units of 0.25 db below the max allowable setting)", HFILL
}
9775 {&hf_docsis_rngrsp_tlv_unknown
,
9776 {"Unknown TLV", "docsis_rngrsp.tlv.unknown",
9777 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9780 {&hf_docsis_rngrsp_trans_eq_enc_scdma_tdma_main_tap_location
,
9781 {"Main Tap Location", "docsis_rngrsp.tlv.trans_eq_enc_scdma_tdma.main_tap_location",
9782 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9785 {&hf_docsis_rngrsp_trans_eq_enc_scdma_tdma_number_of_forward_taps_per_symbol
,
9786 {"Number of Forward Taps per Symbol", "docsis_rngrsp.tlv.trans_eq_enc_scdma_tdma.nr_of_forward_taps_per_symbol",
9787 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9790 {&hf_docsis_rngrsp_trans_eq_enc_scdma_tdma_number_of_forward_taps_n
,
9791 {"Number of Forward Taps (N)", "docsis_rngrsp.tlv.trans_eq_enc_scdma_tdma.nr_of_forward_taps_n",
9792 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9795 {&hf_docsis_rngrsp_trans_eq_enc_scdma_tdma_reserved
,
9796 {"Reserved", "docsis_rngrsp.tlv.trans_eq_enc_scdma_tdma.reserved",
9797 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9800 {&hf_docsis_rngrsp_trans_eq_data
,
9801 {"Transmit equalization data", "docsis_rngrsp.tlv.trans_eq_data",
9802 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9805 {&hf_docsis_rngrsp_trans_eq_enc_lowest_subc
,
9806 {"Lowest Subcarrier for this TLV", "docsis_rngrsp.tlv.trans_eq_enc_lowest_subc",
9807 FT_UINT24
, BASE_DEC
, NULL
, 0xFFF000,
9810 {&hf_docsis_rngrsp_trans_eq_enc_highest_subc
,
9811 {"Highest Subcarrier for this TLV", "docsis_rngrsp.tlv.trans_eq_enc_highest_subc",
9812 FT_UINT24
, BASE_DEC
, NULL
, 0x0FFF,
9815 {&hf_docsis_rngrsp_trans_eq_enc_coef_real
,
9816 {"Coefficient (real)", "docsis_rngrsp.tlv.trans_eq_enc_coef_real",
9817 FT_INT16
, BASE_CUSTOM
, CF_FUNC(two_compl_frac
), 0x0,
9820 {&hf_docsis_rngrsp_trans_eq_enc_coef_imag
,
9821 {"Coefficient (imag)", "docsis_rngrsp.tlv.trans_eq_enc_coef_imag",
9822 FT_INT16
, BASE_CUSTOM
, CF_FUNC(two_compl_frac
), 0x0,
9825 {&hf_docsis_rngrsp_commanded_power_data
,
9826 {"Commanded Power Data", "docsis_rngrsp.tlv.comm_pwr_data",
9827 FT_BYTES
, BASE_NONE
, NULL
, 0x00,
9830 {&hf_docsis_rngrsp_commanded_power_dynamic_range_window
,
9831 {"Dynamic Range Window", "docsis_rngrsp.tlv.comm_pwr_dyn_range_window",
9832 FT_INT8
, BASE_CUSTOM
, CF_FUNC(fourth_db
), 0x00,
9835 {&hf_docsis_rngrsp_commanded_power_ucid
,
9836 {"UCID", "docsis_rngrsp.tlv.comm_pwr_ucid",
9837 FT_UINT8
, BASE_DEC
, NULL
, 0x00,
9840 {&hf_docsis_rngrsp_commanded_power_trans_pow_lvl
,
9841 {"Transmit Power Level (quarter dBmV)", "docsis_rngrsp.tlv.comm_pwr_trans_pow_lvl",
9842 FT_INT16
, BASE_CUSTOM
, CF_FUNC(fourth_db
), 0x00,
9847 {&hf_docsis_regreq_sid
,
9848 {"Service Identifier", "docsis_regreq.sid",
9849 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
9853 {&hf_docsis_regrsp_sid
,
9854 {"Service Identifier", "docsis_regrsp.sid",
9855 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
9858 {&hf_docsis_regrsp_response
,
9859 {"Response Code", "docsis_regrsp.respnse",
9860 FT_UINT8
, BASE_DEC
|BASE_EXT_STRING
, &docsis_conf_code_ext
, 0x0,
9864 {&hf_docsis_bpkm_code
,
9865 {"Code", "docsis_bpkm.code",
9866 FT_UINT8
, BASE_DEC
, VALS (code_field_vals
), 0x0,
9869 {&hf_docsis_bpkm_ident
,
9870 {"Identifier", "docsis_bpkm.ident",
9871 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
9874 {&hf_docsis_bpkm_length
,
9875 {"Length", "docsis_bpkm.length",
9876 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
9879 {&hf_docsis_bpkmattr
,
9880 {"Attributes", "docsis_bpkm.attr",
9881 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
9884 {&hf_docsis_bpkmattr_tlv
,
9885 {"TLV", "docsis_bpkm.attr.tlv",
9886 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
9889 {&hf_docsis_bpkmattr_tlv_type
,
9890 {"Type", "docsis_bpkm.attr.tlv.type",
9891 FT_UINT8
, BASE_DEC
, VALS(bpkmattr_tlv_vals
), 0x0,
9894 {&hf_docsis_bpkmattr_tlv_length
,
9895 {"Length", "docsis_bpkm.attr.tlv.length",
9896 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
9899 {&hf_docsis_bpkmattr_serial_num
,
9900 {"Serial Number", "docsis_bpkm.attr.serialnum",
9901 FT_STRING
, BASE_NONE
, NULL
, 0x0,
9904 {&hf_docsis_bpkmattr_manf_id
,
9905 {"Manufacturer ID", "docsis_bpkm.attr.manfid",
9906 FT_UINT24
, BASE_HEX
, NULL
, 0x0,
9909 {&hf_docsis_bpkmattr_mac_addr
,
9910 {"MAC Address", "docsis_bpkm.attr.macaddr",
9911 FT_ETHER
, BASE_NONE
, NULL
, 0x0,
9914 {&hf_docsis_bpkmattr_rsa_pub_key
,
9915 {"RSA Public Key", "docsis_bpkm.attr.rsa_pub_key",
9916 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
9917 "DER-encoded RSA Public Key", HFILL
}
9919 {&hf_docsis_bpkmattr_cm_id
,
9920 {"CM Identification", "docsis_bpkm.attr.cmid",
9921 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
9924 {&hf_docsis_bpkmattr_display_str
,
9925 {"Display String", "docsis_bpkm.attr.dispstr",
9926 FT_STRING
, BASE_NONE
, NULL
, 0x0,
9929 {&hf_docsis_bpkmattr_auth_key
,
9930 {"Auth Key", "docsis_bpkm.attr.auth_key",
9931 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
9932 "Encrypted Authorization Key", HFILL
}
9934 {&hf_docsis_bpkmattr_tek
,
9935 {"Traffic Encryption Key", "docsis_bpkm.attr.tek",
9936 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
9937 "Encrypted Traffic Encryption Key", HFILL
}
9939 {&hf_docsis_bpkmattr_key_life
,
9940 {"Key Lifetime (s)", "docsis_bpkm.attr.keylife",
9941 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
9942 "Remaining key lifetime (s)", HFILL
}
9944 {&hf_docsis_bpkmattr_key_seq
,
9945 {"Key Sequence Number", "docsis_bpkm.attr.keyseq",
9946 FT_UINT8
, BASE_DEC
, NULL
, 0x0f,
9949 {&hf_docsis_bpkmattr_hmac_digest
,
9950 {"HMAC Digest", "docsis_bpkm.attr.hmacdigest",
9951 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9952 "HMAC Digest (160-bit keyed SHA-1 hash)", HFILL
}
9954 {&hf_docsis_bpkmattr_said
,
9955 {"SAID", "docsis_bpkm.attr.said",
9956 FT_UINT16
, BASE_DEC
, NULL
, 0x3fff,
9957 "Security Association ID", HFILL
}
9959 {&hf_docsis_bpkmattr_tek_params
,
9960 {"TEK Parameters", "docsis_bpkm.attr.tekparams",
9961 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
9964 {&hf_docsis_bpkmattr_cbc_iv
,
9965 {"CBC IV", "docsis_bpkm.attr.cbciv",
9966 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
9967 "Cypher Block Chaining initialization vector", HFILL
}
9969 {&hf_docsis_bpkmattr_error_code
,
9970 {"Error Code", "docsis_bpkm.attr.errcode",
9971 FT_UINT8
, BASE_DEC
, VALS (error_code_vals
), 0x0,
9974 {&hf_docsis_bpkmattr_ca_cert
,
9975 {"Device CA Certificate", "docsis_bpkm.attr.cacert",
9976 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
9977 "DER-encoded Device CA Certificate", HFILL
}
9979 {&hf_docsis_bpkmattr_cm_cert
,
9980 {"CM Certificate", "docsis_bpkm.attr.cmcert",
9981 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
9982 "DER-encoded CM Device Certificate", HFILL
}
9984 {&hf_docsis_bpkmattr_security_cap
,
9985 {"Security Capabilities", "docsis_bpkm.attr.seccap",
9986 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
9989 {&hf_docsis_bpkmattr_crypto_suite
,
9990 {"Cryptographic Suite", "docsis_bpkm.attr.cryptosuite",
9991 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
9994 {&hf_docsis_bpkmattr_crypto_suite_encr
,
9995 {"Encryption", "docsis_bpkm.attr.cryptosuite.encr",
9996 FT_UINT16
, BASE_HEX
, VALS(bpkm_crypto_suite_encr_vals
), 0xff00,
9997 "Data Encryption Algorithm", HFILL
}
9999 {&hf_docsis_bpkmattr_crypto_suite_auth
,
10000 {"Authentication", "docsis_bpkm.attr.cryptosuite.auth",
10001 FT_UINT16
, BASE_HEX
, VALS(bpkm_crypto_suite_auth_vals
), 0x00ff,
10002 "Data Authentication Algorithm", HFILL
}
10004 {&hf_docsis_bpkmattr_crypto_suite_list
,
10005 {"Cryptographic Suite List", "docsis_bpkm.attr.crypto_suite_lst",
10006 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
10009 {&hf_docsis_bpkmattr_bpi_version
,
10010 {"BPI Version", "docsis_bpkm.attr.bpiver",
10011 FT_UINT8
, BASE_DEC
, VALS (bpi_ver_vals
), 0x0,
10014 {&hf_docsis_bpkmattr_sa_descr
,
10015 {"SA Descriptor", "docsis_bpkm.attr.sadescr",
10016 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
10017 "Security Association Descriptor", HFILL
}
10019 {&hf_docsis_bpkmattr_sa_type
,
10020 {"SA Type", "docsis_bpkm.attr.satype",
10021 FT_UINT8
, BASE_DEC
, VALS(bpi_sa_vals
), 0x0,
10022 "Security Association Type", HFILL
}
10024 {&hf_docsis_bpkmattr_sa_query
,
10025 {"SA Query", "docsis_bpkm.attr.saquery",
10026 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
10027 "Security Association Query", HFILL
}
10029 {&hf_docsis_bpkmattr_sa_query_type
,
10030 {"SA Query Type", "docsis_bpkm.attr.saquery_type",
10031 FT_UINT8
, BASE_HEX
|BASE_RANGE_STRING
, RVALS(bpi_sa_query_type_vals
), 0x0,
10032 "Security Association Query Type", HFILL
}
10034 {&hf_docsis_bpkmattr_ip_address
,
10035 {"IP Address", "docsis_bpkm.attr.ipaddr",
10036 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
10039 {&hf_docsis_bpkmattr_download_param
,
10040 {"Download Parameters", "docsis_bpkm.attr.dnld_params",
10041 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
10044 {&hf_docsis_bpkmattr_cvc_root_ca_cert
,
10045 {"CVC Root CA Certificate (deprecated)", "docsis_bpkm.attr.cvc_root_ca_cert",
10046 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
10047 "DER-encoded CVC Root CA Certificate from the legacy PKI", HFILL
}
10049 {&hf_docsis_bpkmattr_cvc_ca_cert
,
10050 {"CVC CA Certificate (deprecated)", "docsis_bpkm.attr.cvc_ca_cert",
10051 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
10052 "DER-encoded CVC CA Certificate from the legacy PKI", HFILL
}
10054 {&hf_docsis_bpkmattr_dev_ca_cert
,
10055 {"Device CA Certificate", "docsis_bpkm.attr.dev_ca_cert",
10056 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
10057 "DER-encoded Device CA Certificate from the new PKI", HFILL
}
10059 {&hf_docsis_bpkmattr_root_ca_cert
,
10060 {"Root CA Certificate", "docsis_bpkm.attr.root_ca_cert",
10061 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
10062 "DER-encoded Root CA Certificate from the new PKI", HFILL
}
10064 {&hf_docsis_bpkmattr_cm_nonce
,
10065 {"CM Nonce", "docsis_bpkm.attr.cm_nonce",
10066 FT_UINT64
, BASE_HEX
, NULL
, 0x0,
10069 {&hf_docsis_bpkmattr_msg_signature
,
10070 {"Message Signature", "docsis_bpkm.attr.msg_signature",
10071 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
10072 "DER-encoded CMS Signature", HFILL
}
10074 {&hf_docsis_bpkmattr_key_exchange_share_field_id
,
10075 {"Key Exchange Share: Field ID", "docsis_bpkm.attr.key_exchange_share.field_id",
10076 FT_UINT16
, BASE_HEX
, VALS(bpkmattr_key_exchange_share_field_id_vals
), 0x0,
10079 {&hf_docsis_bpkmattr_key_exchange_share_key_share
,
10080 {"Key Exchange Share", "docsis_bpkm.attr.key_exchange_share.key_share",
10081 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
10084 {&hf_docsis_bpkmattr_allowed_bpi_versions
,
10085 {"Allowed BPI Versions", "docsis_bpkm.attr.allowed_bpi_versions",
10086 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
10089 {&hf_docsis_bpkmattr_allowed_bpi_version
,
10090 {"BPI Version", "docsis_bpkm.attr.allowed_bpi_version",
10091 FT_UINT8
, BASE_DEC
, VALS(bpi_ver_vals
), 0x0,
10094 {&hf_docsis_bpkmattr_ocsp_responses
,
10095 {"OCSP Responses", "docsis_bpkm.attr.ocsp_responses",
10096 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
10099 {&hf_docsis_bpkmattr_ocsp_response
,
10100 {"OCSP Response", "docsis_bpkm.attr.ocsp_response",
10101 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
10104 {&hf_docsis_bpkmattr_cmts_designation
,
10105 {"CMTS Designation", "docsis_bpkm.attr.cmts_designation",
10106 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
10109 {&hf_docsis_bpkmattr_cmts_designation_data_type
,
10110 {"DataType", "docsis_bpkm.attr.cmts_designation.data_type",
10111 FT_UINT8
, BASE_DEC
, VALS(bpkm_cmts_binding_vals
), 0x0,
10114 {&hf_docsis_bpkmattr_cmts_designation_certificate_fingerprint
,
10115 {"Certificate Fingerprint", "docsis_bpkm.attr.cmts_designation.certificate_fingerprint",
10116 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
10119 {&hf_docsis_bpkmattr_cmts_designation_common_name
,
10120 {"Common Name", "docsis_bpkm.attr.cmts_designation.common_name",
10121 FT_STRING
, BASE_NONE
, NULL
, 0x0,
10124 {&hf_docsis_bpkmattr_cmts_designation_org_unit
,
10125 {"Organizational Unit", "docsis_bpkm.attr.cmts_designation.org_unit",
10126 FT_STRING
, BASE_NONE
, NULL
, 0x0,
10129 {&hf_docsis_bpkmattr_cmts_designation_org_name
,
10130 {"Organization Name", "docsis_bpkm.attr.cmts_designation.org_name",
10131 FT_STRING
, BASE_NONE
, NULL
, 0x0,
10134 {&hf_docsis_bpkmattr_cmts_designation_serial_number
,
10135 {"Serial Number", "docsis_bpkm.attr.cmts_designation.serial_number",
10136 FT_STRING
, BASE_NONE
, NULL
, 0x0,
10139 {&hf_docsis_bpkmattr_cmts_designation_issuing_ca_fingerprint
,
10140 {"Issuing CA Fingerprint", "docsis_bpkm.attr.cmts_designation.issuing_ca_fingerprint",
10141 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
10144 {&hf_docsis_bpkmattr_cmts_designation_issuing_ca_common_name
,
10145 {"Issuing CA Common Name", "docsis_bpkm.attr.cmts_designation.issuing_ca_common_name",
10146 FT_STRING
, BASE_NONE
, NULL
, 0x0,
10149 {&hf_docsis_bpkmattr_cmts_designation_issuing_ca_org_unit
,
10150 {"Issuing CA Organizational Unit", "docsis_bpkm.attr.cmts_designation.issuing_ca_org_unit",
10151 FT_STRING
, BASE_NONE
, NULL
, 0x0,
10154 {&hf_docsis_bpkmattr_cmts_designation_issuing_ca_org_name
,
10155 {"Issuing CA Organization Name", "docsis_bpkm.attr.cmts_designation.issuing_ca_org_name",
10156 FT_STRING
, BASE_NONE
, NULL
, 0x0,
10159 {&hf_docsis_bpkmattr_cmts_designation_issuing_ca_serial_number
,
10160 {"Issuing CA Serial Number", "docsis_bpkm.attr.cmts_designation.issuing_ca_serial_number",
10161 FT_STRING
, BASE_NONE
, NULL
, 0x0,
10164 {&hf_docsis_bpkmattr_cm_status_code
,
10165 {"CM-Status Code", "docsis_bpkm.attr.cm_status_code",
10166 FT_UINT8
, BASE_DEC
, VALS(bpkm_cm_status_code_vals
), 0x0,
10169 {&hf_docsis_bpkmattr_detected_errors
,
10170 {"Detected Errors", "docsis_bpkm.attr.detected_errors",
10171 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10174 {&hf_docsis_bpkmattr_vendor_def
,
10175 {"Vendor Defined", "docsis_bpkm.attr.vendordef",
10176 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
10180 {&hf_docsis_regack_sid
,
10181 {"Service Identifier", "docsis_regack.sid",
10182 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10185 {&hf_docsis_regack_response
,
10186 {"Response Code", "docsis_regack.respnse",
10187 FT_UINT8
, BASE_DEC
|BASE_EXT_STRING
, &docsis_conf_code_ext
, 0x0,
10191 {&hf_docsis_dsarsp_response
,
10192 {"Confirmation Code", "docsis_dsarsp.confcode",
10193 FT_UINT8
, BASE_DEC
|BASE_EXT_STRING
, &docsis_conf_code_ext
, 0x0,
10196 {&hf_docsis_dsaack_response
,
10197 {"Confirmation Code", "docsis_dsaack.confcode",
10198 FT_UINT8
, BASE_DEC
|BASE_EXT_STRING
, &docsis_conf_code_ext
, 0x0,
10202 {&hf_docsis_dscrsp_response
,
10203 {"Confirmation Code", "docsis_dscrsp.confcode",
10204 FT_UINT8
, BASE_DEC
|BASE_EXT_STRING
, &docsis_conf_code_ext
, 0x0,
10207 {&hf_docsis_dscack_response
,
10208 {"Confirmation Code", "docsis_dscack.confcode",
10209 FT_UINT8
, BASE_DEC
|BASE_EXT_STRING
, &docsis_conf_code_ext
, 0x0,
10213 {&hf_docsis_dsdreq_rsvd
,
10214 {"Reserved", "docsis_dsdreq.rsvd",
10215 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
10218 {&hf_docsis_dsdreq_sfid
,
10219 {"Service Flow ID", "docsis_dsdreq.sfid",
10220 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
10224 {&hf_docsis_dsdrsp_confcode
,
10225 {"Confirmation Code", "docsis_dsdrsp.confcode",
10226 FT_UINT8
, BASE_DEC
|BASE_EXT_STRING
, &docsis_conf_code_ext
, 0x0,
10229 {&hf_docsis_dsdrsp_rsvd
,
10230 {"Reserved", "docsis_dsdrsp.rsvd",
10231 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10235 {&hf_docsis_dccreq_type
,
10238 "docsis_dccreq.tlvtype",
10239 FT_UINT8
, BASE_DEC
, VALS(dcc_tlv_vals
), 0x0,
10244 {&hf_docsis_dccreq_length
,
10247 "docsis_dccreq.tlvlen",
10248 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10253 {&hf_docsis_dccreq_tran_id
,
10256 "docsis_dccreq.tran_id",
10257 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10262 {&hf_docsis_dccreq_up_chan_id
,
10265 "docsis_dccreq.up_chan_id",
10266 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10271 {&hf_docsis_dcc_ds_params_subtype
,
10274 "docsis_dccreq.ds_tlvtype",
10275 FT_UINT8
, BASE_DEC
, VALS(ds_param_subtlv_vals
), 0x0,
10280 {&hf_docsis_dcc_ds_params_length
,
10283 "docsis_dccreq.ds_tlvlen",
10284 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10289 {&hf_docsis_dccreq_ds_freq
,
10292 "docsis_dccreq.ds_freq",
10293 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
10298 {&hf_docsis_dccreq_ds_mod_type
,
10301 "docsis_dccreq.ds_mod_type",
10302 FT_UINT8
, BASE_DEC
, VALS (ds_mod_type_vals
), 0x0,
10307 {&hf_docsis_dccreq_ds_sym_rate
,
10310 "docsis_dccreq.ds_sym_rate",
10311 FT_UINT8
, BASE_DEC
, VALS (ds_sym_rate_vals
), 0x0,
10316 {&hf_docsis_dccreq_ds_intlv_depth_i
,
10318 "Interleaver Depth I Value",
10319 "docsis_dccreq.ds_intlv_depth_i",
10320 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10325 {&hf_docsis_dccreq_ds_intlv_depth_j
,
10327 "Interleaver Depth J Value",
10328 "docsis_dccreq.ds_intlv_depth_j",
10329 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10334 {&hf_docsis_dccreq_ds_chan_id
,
10336 "Downstream Channel ID",
10337 "docsis_dccreq.ds_chan_id",
10338 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10343 {&hf_docsis_dccreq_ds_sync_sub
,
10345 "SYNC Substitution",
10346 "docsis_dccreq.ds_sync_sub",
10347 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10352 {&hf_docsis_dccreq_ds_ofdm_block_freq
,
10354 "OFDM Block Frequency",
10355 "docsis_dccreq.ds_ofdm_block_freq",
10356 FT_UINT32
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_hz
), 0x0,
10361 {&hf_docsis_dccreq_init_tech
,
10363 "Initialization Technique",
10364 "docsis_dccreq.init_tech",
10365 FT_UINT8
, BASE_DEC
, VALS (init_tech_vals
), 0x0,
10370 {&hf_docsis_dccreq_ucd_sub
,
10372 "UCD Substitution",
10373 "docsis_dccreq.ucd_sub",
10374 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
10379 {&hf_docsis_dccreq_said_sub_cur
,
10381 "SAID Sub - Current Value",
10382 "docsis_dccreq.said_sub_cur",
10383 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10388 {&hf_docsis_dccreq_said_sub_new
,
10390 "SAID Sub - New Value",
10391 "docsis_dccreq.said_sub_new",
10392 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10397 {&hf_docsis_dcc_sf_sub_subtype
,
10400 "docsis_dccreq.sf_tlvtype",
10401 FT_UINT8
, BASE_DEC
, VALS(sf_sub_subtlv_vals
), 0x0,
10406 {&hf_docsis_dcc_sf_sub_length
,
10409 "docsis_dccreq.sf_tlvlen",
10410 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10415 {&hf_docsis_dccreq_sf_sfid_cur
,
10417 "SF Sub - SFID Current Value",
10418 "docsis_dccreq.sf_sfid_cur",
10419 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
10424 {&hf_docsis_dccreq_sf_sfid_new
,
10426 "SF Sub - SFID New Value",
10427 "docsis_dccreq.sf_sfid_new",
10428 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
10433 {&hf_docsis_dccreq_sf_sid_cur
,
10435 "SF Sub - SID Current Value",
10436 "docsis_dccreq.sf_sid_cur",
10437 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10442 {&hf_docsis_dccreq_sf_sid_new
,
10444 "SF Sub - SID New Value",
10445 "docsis_dccreq.sf_sid_new",
10446 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10451 {&hf_docsis_dccreq_sf_unsol_grant_tref
,
10453 "SF Sub - Unsolicited Grant Time Reference",
10454 "docsis_dccreq.sf_unsol_grant_tref",
10455 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
10460 {&hf_docsis_dccreq_cmts_mac_addr
,
10462 "CMTS MAC Address",
10463 "docsis_dccreq.cmts_mac_addr",
10464 FT_ETHER
, BASE_NONE
, NULL
, 0x0,
10469 {&hf_docsis_dccreq_key_seq_num
,
10471 "Auth Key Sequence Number",
10472 "docsis_dccreq.key_seq_num",
10473 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10478 {&hf_docsis_dccreq_hmac_digest
,
10480 "HMAC-DigestNumber",
10481 "docsis_dccreq.hmac_digest",
10482 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
10488 {&hf_docsis_dccrsp_conf_code
,
10490 "Confirmation Code",
10491 "docsis_dccrsp.conf_code",
10492 FT_UINT8
, BASE_DEC
|BASE_EXT_STRING
, &docsis_conf_code_ext
, 0x0,
10497 {&hf_docsis_dccrsp_type
,
10500 "docsis_dccrsp.tlvtype",
10501 FT_UINT8
, BASE_DEC
, VALS(dccrsp_tlv_vals
), 0x0,
10506 {&hf_docsis_dccrsp_length
,
10509 "docsis_dccrsp.tlvlen",
10510 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10515 {&hf_docsis_dcc_cm_jump_subtype
,
10518 "docsis_dccrsp.cm_jump_tlvtype",
10519 FT_UINT8
, BASE_DEC
, VALS(cm_jump_subtlv_vals
), 0x0,
10524 {&hf_docsis_dcc_cm_jump_length
,
10527 "docsis_dccrsp.cm_jump_tlvlen",
10528 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10533 {&hf_docsis_dccrsp_cm_jump_time_length
,
10536 "docsis_dccrsp.cm_jump_time_length",
10537 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
10542 {&hf_docsis_dccrsp_cm_jump_time_start
,
10544 "Start Time of Jump",
10545 "docsis_dccrsp.cm_jump_time_start",
10546 FT_UINT64
, BASE_DEC
, NULL
, 0x0,
10551 {&hf_docsis_dccrsp_key_seq_num
,
10553 "Auth Key Sequence Number",
10554 "docsis_dccrsp.key_seq_num",
10555 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10560 {&hf_docsis_dccrsp_hmac_digest
,
10562 "HMAC-Digest Number",
10563 "docsis_dccrsp.hmac_digest",
10564 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
10570 {&hf_docsis_dccack_type
,
10573 "docsis_dccack.tlvtype",
10574 FT_UINT8
, BASE_DEC
, VALS(dccack_tlv_vals
), 0x0,
10579 {&hf_docsis_dccack_length
,
10582 "docsis_dccack.tlvlen",
10583 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10588 {&hf_docsis_dccack_key_seq_num
,
10590 "Auth Key Sequence Number",
10591 "docsis_dccack.key_seq_num",
10592 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10597 {&hf_docsis_dccack_hmac_digest
,
10599 "HMAC-DigestNumber",
10600 "docsis_dccack.hmac_digest",
10601 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
10607 {&hf_docsis_intrngreq_sid
,
10608 {"Service Identifier", "docsis_intrngreq.sid",
10609 FT_UINT16
, BASE_DEC
, NULL
, 0x3FFF,
10613 {&hf_docsis_dcd_config_ch_cnt
,
10615 "Configuration Change Count",
10616 "docsis_dcd.config_ch_cnt",
10617 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10622 {&hf_docsis_dcd_num_of_frag
,
10624 "Number of Fragments",
10625 "docsis_dcd.num_of_frag",
10626 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10631 {&hf_docsis_dcd_frag_sequence_num
,
10633 "Fragment Sequence Number",
10634 "docsis_dcd.frag_sequence_num",
10635 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10640 {&hf_docsis_dcd_type
,
10643 "docsis_dcd.tlvtype",
10644 FT_UINT8
, BASE_DEC
, VALS(dcd_tlv_vals
), 0x0,
10649 {&hf_docsis_dcd_length
,
10652 "docsis_dcd.tlvlen",
10653 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10658 {&hf_docsis_dcd_down_classifier_subtype
,
10661 "docsis_dcd.down_classifier_tlvtype",
10662 FT_UINT8
, BASE_DEC
, VALS(dcd_down_classifier_vals
), 0x0,
10667 {&hf_docsis_dcd_down_classifier_length
,
10670 "docsis_dcd.down_classifier_tlvlen",
10671 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10676 {&hf_docsis_dcd_cfr_id
,
10678 "Downstream Classifier ID",
10679 "docsis_dcd.cfr_id",
10680 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10685 {&hf_docsis_dcd_cfr_rule_pri
,
10687 "Downstream Classifier Rule Priority",
10688 "docsis_dcd.cfr_rule_pri",
10689 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10694 {&hf_docsis_dcd_cfr_ip_subtype
,
10697 "docsis_dcd.cfr_ip_tlvtype",
10698 FT_UINT8
, BASE_DEC
, VALS(dcd_cfr_ip_vals
), 0x0,
10703 {&hf_docsis_dcd_cfr_ip_length
,
10706 "docsis_dcd.cfr_ip_tlvlen",
10707 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10712 {&hf_docsis_dcd_cfr_ip_source_addr
,
10714 "Downstream Classifier IP Source Address",
10715 "docsis_dcd.cfr_ip_source_addr",
10716 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
10721 {&hf_docsis_dcd_cfr_ip_source_mask
,
10723 "Downstream Classifier IP Source Mask",
10724 "docsis_dcd.cfr_ip_source_mask",
10725 FT_IPv4
, BASE_NETMASK
, NULL
, 0x0,
10730 {&hf_docsis_dcd_cfr_ip_dest_addr
,
10732 "Downstream Classifier IP Destination Address",
10733 "docsis_dcd.cfr_ip_dest_addr",
10734 FT_IPv4
, BASE_NONE
, NULL
, 0x0,
10739 {&hf_docsis_dcd_cfr_ip_dest_mask
,
10741 "Downstream Classifier IP Destination Mask",
10742 "docsis_dcd.cfr_ip_dest_mask",
10743 FT_IPv4
, BASE_NETMASK
, NULL
, 0x0,
10744 "Downstream Classifier IP Destination Address",
10748 {&hf_docsis_dcd_cfr_tcpudp_srcport_start
,
10750 "Downstream Classifier IP TCP/UDP Source Port Start",
10751 "docsis_dcd.cfr_ip_tcpudp_srcport_start",
10752 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10757 {&hf_docsis_dcd_cfr_tcpudp_srcport_end
,
10759 "Downstream Classifier IP TCP/UDP Source Port End",
10760 "docsis_dcd.cfr_ip_tcpudp_srcport_end",
10761 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10766 {&hf_docsis_dcd_cfr_tcpudp_dstport_start
,
10768 "Downstream Classifier IP TCP/UDP Destination Port Start",
10769 "docsis_dcd.cfr_ip_tcpudp_dstport_start",
10770 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10775 {&hf_docsis_dcd_cfr_tcpudp_dstport_end
,
10777 "Downstream Classifier IP TCP/UDP Destination Port End",
10778 "docsis_dcd.cfr_ip_tcpudp_dstport_end",
10779 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10784 {&hf_docsis_dcd_rule_id
,
10787 "docsis_dcd.rule_id",
10788 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10793 {&hf_docsis_dcd_rule_pri
,
10795 "DSG Rule Priority",
10796 "docsis_dcd.rule_pri",
10797 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10802 {&hf_docsis_dcd_rule_ucid_list
,
10804 "DSG Rule UCID Range",
10805 "docsis_dcd.rule_ucid_list",
10806 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
10811 {&hf_docsis_dcd_clid_subtype
,
10814 "docsis_dcd.clid_tlvtype",
10815 FT_UINT8
, BASE_DEC
, VALS(dcd_clid_vals
), 0x0,
10820 {&hf_docsis_dcd_clid_length
,
10823 "docsis_dcd.clid_tlvlen",
10824 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10829 {&hf_docsis_dcd_clid_bcast_id
,
10831 "DSG Rule Client ID Broadcast ID",
10832 "docsis_dcd.clid_bcast_id",
10833 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10838 {&hf_docsis_dcd_clid_known_mac_addr
,
10840 "DSG Rule Client ID Known MAC Address",
10841 "docsis_dcd.clid_known_mac_addr",
10842 FT_ETHER
, BASE_NONE
, NULL
, 0x0,
10847 {&hf_docsis_dcd_clid_ca_sys_id
,
10849 "DSG Rule Client ID CA System ID",
10850 "docsis_dcd.clid_ca_sys_id",
10851 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10856 {&hf_docsis_dcd_clid_app_id
,
10858 "DSG Rule Client ID Application ID",
10859 "docsis_dcd.clid_app_id",
10860 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10865 {&hf_docsis_dcd_dsg_rule_subtype
,
10868 "docsis_dcd.rule_tlvtype",
10869 FT_UINT8
, BASE_DEC
, VALS(dcd_dsg_rule_vals
), 0x0,
10874 {&hf_docsis_dcd_dsg_rule_length
,
10877 "docsis_dcd.rule_tlvlen",
10878 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10883 {&hf_docsis_dcd_rule_tunl_addr
,
10885 "DSG Rule Tunnel MAC Address",
10886 "docsis_dcd.rule_tunl_addr",
10887 FT_ETHER
, BASE_NONE
, NULL
, 0x0,
10892 {&hf_docsis_dcd_rule_cfr_id
,
10894 "DSG Rule Classifier ID",
10895 "docsis_dcd.rule_cfr_id",
10896 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10901 {&hf_docsis_dcd_rule_vendor_spec
,
10903 "DSG Rule Vendor Specific Parameters",
10904 "docsis_dcd.rule_vendor_spec",
10905 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
10910 {&hf_docsis_dcd_cfg_subtype
,
10913 "docsis_dcd.cfg_tlvtype",
10914 FT_UINT8
, BASE_DEC
, VALS(dcd_cfg_vals
), 0x0,
10919 {&hf_docsis_dcd_cfg_length
,
10922 "docsis_dcd.cfg_tlvlen",
10923 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10928 {&hf_docsis_dcd_cfg_chan
,
10930 "DSG Configuration Channel",
10931 "docsis_dcd.cfg_chan",
10932 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
10937 {&hf_docsis_dcd_cfg_tdsg1
,
10939 "DSG Initialization Timeout (Tdsg1)",
10940 "docsis_dcd.cfg_tdsg1",
10941 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10946 {&hf_docsis_dcd_cfg_tdsg2
,
10948 "DSG Operational Timeout (Tdsg2)",
10949 "docsis_dcd.cfg_tdsg2",
10950 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10955 {&hf_docsis_dcd_cfg_tdsg3
,
10957 "DSG Two-Way Retry Timer (Tdsg3)",
10958 "docsis_dcd.cfg_tdsg3",
10959 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10964 {&hf_docsis_dcd_cfg_tdsg4
,
10966 "DSG One-Way Retry Timer (Tdsg4)",
10967 "docsis_dcd.cfg_tdsg4",
10968 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
10973 {&hf_docsis_dcd_cfg_vendor_spec
,
10975 "DSG Configuration Vendor Specific Parameters",
10976 "docsis_dcd.cfg_vendor_spec",
10977 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
10983 {&hf_docsis_mdd_ccc
,
10984 {"Configuration Change Count", "docsis_mdd.ccc",
10985 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10986 "MDD Configuration Change Count", HFILL
}
10988 {&hf_docsis_mdd_number_of_fragments
,
10989 {"Number of Fragments", "docsis_mdd.number_of_fragments",
10990 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10991 "MDD Number of Fragments", HFILL
}
10993 {&hf_docsis_mdd_fragment_sequence_number
,
10994 {"Fragment Sequence Number", "docsis_mdd.fragment_sequence_number",
10995 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
10996 "MDD Fragment Sequence Number", HFILL
}
10998 {&hf_docsis_mdd_current_channel_dcid
,
10999 {"Current Channel DCID", "docsis_mdd.current_channel_dcid",
11000 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11001 "MDD Current Channel DCID", HFILL
}
11003 {&hf_docsis_mdd_tlv
,
11004 {"TLV", "docsis_mdd.tlv",
11005 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
11008 {&hf_docsis_mdd_tlv_type
,
11009 {"Type", "docsis_mdd.tlv.type",
11010 FT_UINT8
, BASE_DEC
, VALS(mdd_tlv_vals
), 0x0,
11013 {&hf_docsis_mdd_tlv_length
,
11014 {"Length", "docsis_mdd.tlv.length",
11015 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11018 {&hf_docsis_mdd_ds_active_channel_list_subtype
,
11019 {"Type", "docsis_mdd.downstream_active_channel_list_tlvtype",
11020 FT_UINT8
, BASE_DEC
, VALS(mdd_ds_active_channel_list_vals
), 0x0,
11023 {&hf_docsis_mdd_ds_active_channel_list_length
,
11024 {"Length", "docsis_mdd.downstream_active_channel_list_tlvlen",
11025 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11028 {&hf_docsis_mdd_downstream_active_channel_list_channel_id
,
11029 {"Channel ID", "docsis_mdd.downstream_active_channel_list_channel_id",
11030 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11031 "MDD Downstream Active Channel List Channel ID", HFILL
}
11033 {&hf_docsis_mdd_downstream_active_channel_list_frequency
,
11034 {"Frequency", "docsis_mdd.downstream_active_channel_list_frequency",
11035 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
11036 "MDD Downstream Active Channel List Frequency", HFILL
}
11038 {&hf_docsis_mdd_downstream_active_channel_list_annex
,
11039 {"Annex", "docsis_mdd.downstream_active_channel_list_annex",
11040 FT_UINT8
, BASE_DEC
, VALS(J83_annex_vals
), 0xF0,
11041 "MDD Downstream Active Channel List Annex", HFILL
}
11043 {&hf_docsis_mdd_downstream_active_channel_list_modulation_order
,
11044 {"Modulation Order", "docsis_mdd.downstream_active_channel_list_modulation_order",
11045 FT_UINT8
, BASE_DEC
, VALS(modulation_order_vals
), 0x0F,
11046 "MDD Downstream Active Channel List Modulation Order", HFILL
}
11048 {&hf_docsis_mdd_downstream_active_channel_list_primary_capable
,
11049 {"Primary Capable", "docsis_mdd.downstream_active_channel_list_primary_capable",
11050 FT_UINT8
, BASE_DEC
, VALS(primary_capable_vals
), 0x0,
11051 "MDD Downstream Active Channel List Primary Capable", HFILL
}
11053 {&hf_docsis_mdd_cm_status_event_enable_bitmask
,
11054 {"CM-STATUS Event Enable Bitmask", "docsis_mdd.cm_status_event_enable_bitmask",
11055 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
11058 {&hf_docsis_mdd_cm_status_event_enable_bitmask_mdd_timeout
,
11059 {"MDD Timeout", "docsis_mdd.downstream_active_channel_list_mdd_timeout",
11060 FT_UINT16
, BASE_DEC
, NULL
, 0x0002,
11061 "MDD Downstream Active Channel List MDD Timeout", HFILL
}
11063 {&hf_docsis_mdd_cm_status_event_enable_bitmask_qam_fec_lock_failure
,
11064 {"QAM/FEC Lock Failure", "docsis_mdd.cm_status_event_enable_bitmask_qam_fec_lock_failure",
11065 FT_UINT16
, BASE_DEC
, NULL
, 0x0004,
11066 "MDD Downstream Active Channel List QAM/FEC Lock Failure", HFILL
}
11068 {&hf_docsis_mdd_cm_status_event_enable_bitmask_mdd_recovery
,
11069 {"MDD Recovery", "docsis_mdd.cm_status_event_enable_bitmask_mdd_recovery",
11070 FT_UINT16
, BASE_DEC
, NULL
, 0x0010,
11071 "CM-STATUS event MDD Recovery", HFILL
}
11073 {&hf_docsis_mdd_cm_status_event_enable_bitmask_qam_fec_lock_recovery
,
11074 {"QAM/FEC Lock Recovery", "docsis_mdd.cm_status_event_enable_bitmask_qam_fec_lock_recovery",
11075 FT_UINT16
, BASE_DEC
, NULL
, 0x0020,
11076 "CM-STATUS event QAM/FEC Lock Recovery", HFILL
}
11078 {&hf_docsis_mdd_downstream_active_channel_list_map_ucd_transport_indicator
,
11079 {"MAP and UCD transport indicator", "docsis_mdd.downstream_active_channel_list_map_ucd_transport_indicator",
11080 FT_UINT8
, BASE_DEC
, VALS(map_ucd_transport_indicator_vals
), 0x0,
11081 "MDD Downstream Active Channel List MAP and UCD Transport Indicator", HFILL
}
11083 {&hf_docsis_mdd_downstream_active_channel_list_fdx_sub_band_id
,
11084 {"Full Duplex Sub-band ID", "docsis_mdd.downstream_active_channel_list_fdx_subband_id",
11085 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11088 {&hf_docsis_mdd_downstream_active_channel_list_fdx_ds
,
11089 {"FDX Downstream", "docsis_mdd.downstream_active_channel_list_fdx_ds",
11090 FT_UINT8
, BASE_DEC
, VALS(mdd_downstream_active_channel_list_fdx_vals
), 0x0,
11091 "MDD Downstream Active Channel List FDX Downstream Indicator", HFILL
}
11093 {&hf_docsis_mdd_ofdm_plc_parameters
,
11094 {"OFDM PLC Parameters", "docsis_mdd.ofdm_plc_parameters",
11095 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
11098 {&hf_docsis_mdd_ofdm_plc_parameters_tukey_raised_cosine_window
,
11099 {"Tukey raised cosine window", "docsis_mdd.ofdm_plc_parameters_tukey_raised_cosine_window",
11100 FT_UINT8
, BASE_DEC
, VALS(tukey_raised_cosine_vals
), 0x07,
11101 "OFDM PLC Parameters Tukey raised cosine window", HFILL
}
11103 {&hf_docsis_mdd_ofdm_plc_parameters_cyclic_prefix
,
11104 {"Cyclic prefix", "docsis_mdd.ofdm_plc_parameters_cyclic_prefix",
11105 FT_UINT8
, BASE_DEC
, VALS(cyclic_prefix_vals
), 0x38,
11106 "OFDM PLC parameters Cyclic prefix", HFILL
}
11108 {&hf_docsis_mdd_ofdm_plc_parameters_sub_carrier_spacing
,
11109 {"Sub carrier spacing", "docsis_mdd.ofdm_plc_parameters_sub_carrier_spacing",
11110 FT_UINT8
, BASE_DEC
, VALS(spacing_vals
), 0x40,
11111 "OFDM PLC parameters Sub carrier spacing", HFILL
}
11113 {&hf_docsis_mdd_up_active_channel_list_subtype
,
11114 {"Type", "docsis_mdd.up_active_channel_list_tlvtype",
11115 FT_UINT8
, BASE_DEC
, VALS(mdd_up_active_channel_list_vals
), 0x0,
11118 {&hf_docsis_mdd_up_active_channel_list_length
,
11119 {"Length", "docsis_mdd.up_active_channel_list_tlvlen",
11120 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11123 {&hf_docsis_mdd_cm_status_event_enable_bitmask_t4_timeout
,
11124 {"T4 timeout", "docsis_mdd.cm_status_event_enable_bitmask_t4_timeout",
11125 FT_UINT16
, BASE_DEC
, NULL
, 0x0040,
11126 "CM-STATUS event T4 timeout", HFILL
}
11128 {&hf_docsis_mdd_cm_status_event_enable_bitmask_t3_retries_exceeded
,
11129 {"T3 Retries Exceeded", "docsis_mdd.cm_status_event_enable_bitmask_t3_retries_exceeded",
11130 FT_UINT16
, BASE_DEC
, NULL
, 0x0080,
11131 "CM-STATUS event T3 Retries Exceeded", HFILL
}
11133 {&hf_docsis_mdd_cm_status_event_enable_bitmask_successful_ranging_after_t3_retries_exceeded
,
11134 {"Successful Ranging after T3 Retries Exceeded", "docsis_mdd.cm_status_event_enable_bitmask_successful_ranging_after_t3_retries_exceeded",
11135 FT_UINT16
, BASE_DEC
, NULL
, 0x0100,
11136 "CM-STATUS event Successful Ranging after T3 Retries Exceeded", HFILL
}
11138 {&hf_docsis_mdd_mac_domain_downstream_service_group_channel_id
,
11139 {"Channel ID", "docsis_mdd.mac_domain_downstream_service_group_channel_id",
11140 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11141 "MDD MAC Domain Downstream Service Group Channel ID", HFILL
}
11143 {&hf_docsis_mdd_ds_service_group_subtype
,
11144 {"Type", "docsis_mdd.ds_service_group_type",
11145 FT_UINT8
, BASE_DEC
, VALS(mdd_ds_service_group_vals
), 0x0,
11148 {&hf_docsis_mdd_ds_service_group_length
,
11149 {"Length", "docsis_mdd.ds_service_group_length",
11150 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11153 {&hf_docsis_mdd_mac_domain_downstream_service_group_md_ds_sg_identifier
,
11154 {"MD-DS-SG Identifier", "docsis_mdd.mac_domain_downstream_service_group_md_ds_sg_identifier",
11155 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11156 "MDD MAC Domain Downstream Service Group MD-DS-SG Identifier", HFILL
}
11158 {&hf_docsis_mdd_downstream_ambiguity_resolution_frequency
,
11159 {"Frequency", "docsis_mdd.downstream_ambiguity_resolution_frequency",
11160 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
11161 "MDD Downstream Ambiguity Resolution frequency", HFILL
}
11163 {&hf_docsis_mdd_channel_profile_reporting_control_subtype
,
11164 {"Type", "docsis_mdd.channel_profile_reporting_control_type",
11165 FT_UINT8
, BASE_DEC
, VALS(mdd_channel_profile_reporting_control_vals
), 0x0,
11168 {&hf_docsis_mdd_channel_profile_reporting_control_length
,
11169 {"Length", "docsis_mdd.channel_profile_reporting_control_length",
11170 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11173 {&hf_docsis_mdd_rcp_center_frequency_spacing
,
11174 {"RCP Center Frequency Spacing", "docsis_mdd.rcp_center_frequency_spacing",
11175 FT_UINT8
, BASE_DEC
, VALS(rcp_center_frequency_spacing_vals
), 0x0,
11176 "MDD RCP Center Frequency Spacing", HFILL
}
11178 {&hf_docsis_mdd_verbose_rcp_reporting
,
11179 {"Verbose RCP reporting", "docsis_mdd.verbose_rcp_reporting",
11180 FT_UINT8
, BASE_DEC
, VALS(verbose_rcp_reporting_vals
), 0x0,
11181 "MDD Verbose RCP Reporting", HFILL
}
11183 {&hf_docsis_mdd_fragmented_rcp_transmission
,
11184 {"Fragmented RCP transmission", "docsis_mdd.fragmented_rcp_transmission",
11185 FT_UINT8
, BASE_DEC
, VALS(fragmented_rcp_transmission_vals
), 0x0,
11186 "MDD Fragmented RCP transmission", HFILL
}
11188 {&hf_docsis_mdd_ip_init_param_subtype
,
11189 {"Type", "docsis_mdd.ip_init_param_type",
11190 FT_UINT8
, BASE_DEC
, VALS(mdd_ip_init_param_vals
), 0x0,
11193 {&hf_docsis_mdd_ip_init_param_length
,
11194 {"Length", "docsis_mdd.ip_init_param_length",
11195 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11198 {&hf_docsis_mdd_ip_provisioning_mode
,
11199 {"IP Provisioning Mode", "docsis_mdd.ip_provisioning_mode",
11200 FT_UINT8
, BASE_DEC
, VALS(ip_provisioning_mode_vals
), 0x0,
11201 "MDD IP Provisioning Mode", HFILL
}
11203 {&hf_docsis_mdd_pre_registration_dsid
,
11204 {"Pre-registration DSID", "docsis_mdd.pre_registration_dsid",
11205 FT_UINT24
, BASE_DEC
, NULL
, 0x0FFFFF,
11206 "MDD Pre-registration DSID", HFILL
}
11208 {&hf_docsis_mdd_early_authentication_and_encryption
,
11209 {"Early Authentication and Encryption", "docsis_mdd.early_authentication_and_encryption",
11210 FT_UINT8
, BASE_DEC
, VALS(eae_vals
), 0x0,
11211 "MDD Early Authentication and Encryption", HFILL
}
11213 {&hf_docsis_mdd_upstream_active_channel_list_upstream_channel_id
,
11214 {"Upstream Channel ID", "docsis_mdd.upstream_active_channel_list_upstream_channel_id",
11215 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11216 "MDD Upstream Active Channel List - Upstream Channel ID", HFILL
}
11218 {&hf_docsis_mdd_upstream_active_channel_list_upstream_channel_priority
,
11219 {"Upstream Channel Priority", "docsis_mdd.upstream_active_channel_list_upstream_channel_priority",
11220 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11221 "MDD Upstream Active Channel List - Upstream Channel Priority", HFILL
}
11223 {&hf_docsis_mdd_upstream_active_channel_list_dschids_maps_ucds
,
11224 {"Downstream Channel(s) on which MAPs and UCDs for this Upstream Channel are sent", "docsis_mdd.upstream_active_channel_list_dschids_maps_ucds",
11225 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
11226 "MDD Upstream Active Channel List - Downstream Channel(s) on which MAPs and UCDs for this Upstream Channel are sent", HFILL
}
11228 {&hf_docsis_mdd_upstream_active_channel_list_dschids_maps_ucds_dschid
,
11229 {"Downstream Channel ID", "docsis_mdd.upstream_active_channel_list_dschids_maps_ucds.dschid",
11230 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11231 "MDD Upstream Active Channel List - ID of Downstream Channel on which MAPs and UCDs for this Upstream Channel are sent", HFILL
}
11233 {&hf_docsis_mdd_upstream_active_channel_list_fdx_upstream_channel
,
11234 {"FDX Upstream Channel", "docsis_mdd.upstream_active_channel_list_fdx_upstream_channel",
11235 FT_UINT8
, BASE_DEC
, VALS(extended_us_channel_vals
), 0x0,
11236 "MDD Upstream Active Channel List - FDX Upstream Channel", HFILL
}
11238 {&hf_docsis_mdd_upstream_active_channel_list_fdx_subband_id
,
11239 {"FDX Sub-band ID", "docsis_mdd.upstream_active_channel_list_fdx_subband_id",
11240 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11241 "MDD Upstream Active Channel List - FDX Sub-band ID", HFILL
}
11243 {&hf_docsis_mdd_upstream_ambiguity_resolution_channel_list_channel_id
,
11244 {"Channel ID", "docsis_mdd.upstream_ambiguity_resolution_channel_list_channel_id",
11245 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11246 "MDD MAC Domain Upstream Ambiguity Resolution Channel List Channel ID", HFILL
}
11248 {&hf_docsis_mdd_upstream_frequency_range
,
11249 {"Upstream Frequency Range", "docsis_mdd.upstream_frequency_range",
11250 FT_UINT8
, BASE_DEC
, VALS(upstream_frequency_range_vals
), 0x0,
11251 "MDD Upstream Frequency Range", HFILL
}
11253 {&hf_docsis_mdd_symbol_clock_locking_indicator
,
11254 {"Symbol Clock Locking Indicator", "docsis_mdd.symbol_clock_locking_indicator",
11255 FT_UINT8
, BASE_DEC
, VALS(symbol_clock_locking_indicator_vals
), 0x0,
11256 "MDD Symbol Clock Locking Indicator", HFILL
}
11258 {&hf_docsis_mdd_cm_status_event_control_subtype
,
11259 {"Type", "docsis_mdd.cm_status_event_control_type",
11260 FT_UINT8
, BASE_DEC
, VALS(mdd_cm_status_event_control_vals
), 0x0,
11263 {&hf_docsis_mdd_cm_status_event_control_length
,
11264 {"Length", "docsis_mdd.cm_status_event_control_length",
11265 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11268 {&hf_docsis_mdd_event_type
,
11269 {"Event Type", "docsis_mdd.event_type",
11270 FT_UINT8
, BASE_DEC
, VALS(symbol_cm_status_event_vals
), 0x0,
11271 "MDD CM-STATUS Event Type", HFILL
}
11273 {&hf_docsis_mdd_maximum_event_holdoff_timer
,
11274 {"Maximum Event Holdoff Timer (units of 20 ms)", "docsis_mdd.maximum_event_holdoff_timer",
11275 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11276 "MDD Maximum Event Holdoff Timer", HFILL
}
11278 {&hf_docsis_mdd_maximum_number_of_reports_per_event
,
11279 {"Maximum Number of Reports per Event", "docsis_mdd.maximum_number_of_reports_per_event",
11280 FT_UINT8
, BASE_DEC
|BASE_SPECIAL_VALS
, VALS(unique_unlimited
), 0x0,
11281 "MDD Maximum Number of Reports per Event", HFILL
}
11283 {&hf_docsis_mdd_upstream_transmit_power_reporting
,
11284 {"Upstream Transmit Power Reporting", "docsis_mdd.upstream_transmit_power_reporting",
11285 FT_UINT8
, BASE_DEC
, VALS(upstream_transmit_power_reporting_vals
), 0x0,
11286 "MDD Upstream Transmit Power Reporting", HFILL
}
11288 {&hf_docsis_mdd_dsg_da_to_dsid_subtype
,
11289 {"Type", "docsis_mdd.dsg_da_to_dsid_type",
11290 FT_UINT8
, BASE_DEC
, VALS(mdd_cm_dsg_da_to_dsid_vals
), 0x0,
11293 {&hf_docsis_mdd_dsg_da_to_dsid_length
,
11294 {"Length", "docsis_mdd.dsg_da_to_dsid_length",
11295 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11298 {&hf_docsis_mdd_dsg_da_to_dsid_association_da
,
11299 {"Destination Address", "docsis_mdd.dsg_da_to_dsid_association_da",
11300 FT_ETHER
, BASE_NONE
, NULL
, 0x0,
11301 "MDD DSG DA to DSID association Destination Address", HFILL
}
11303 {&hf_docsis_mdd_dsg_da_to_dsid_association_dsid
,
11304 {"DSID", "docsis_mdd.dsg_da_to_dsid_association_dsid",
11305 FT_UINT24
, BASE_DEC
, NULL
, 0x0FFFFF,
11306 "MDD MDD DSG DA to DSID association DSID", HFILL
}
11308 {&hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events
,
11309 {"CM-STATUS Event Enable Bitmask for Non-Channel-Specific Events", "docsis_mdd.cm_status_event_enable_non_channel_specific_events",
11310 FT_UINT16
, BASE_HEX
, NULL
, 0x0,
11313 {&hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events_sequence_out_of_range
,
11314 {"Sequence out of range", "docsis_mdd.cm_status_event_enable_non_channel_specific_events_sequence_out_of_range",
11315 FT_UINT16
, BASE_DEC
, NULL
, 0x0008,
11316 "CM-STATUS event non-channel-event Sequence out of range", HFILL
}
11318 {&hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events_cm_operating_on_battery_backup
,
11319 {"CM operating on battery backup", "docsis_mdd.cm_status_event_enable_non_channel_specific_events_cm_operating_on_battery_backup",
11320 FT_UINT16
, BASE_DEC
, NULL
, 0x0200,
11321 "CM-STATUS event non-channel-event Cm operating on battery backup", HFILL
}
11323 {&hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events_cm_returned_to_ac_power
,
11324 {"Returned to AC power", "docsis_mdd.cm_status_event_enable_non_channel_specific_events_cm_returned_to_ac_power",
11325 FT_UINT16
, BASE_DEC
, NULL
, 0x0400,
11326 "CM-STATUS event non-channel-event Cm returned to AC power", HFILL
}
11328 {&hf_docsis_mdd_extended_upstream_transmit_power_support
,
11329 { "Extended Upstream Transmit Power Support", "docsis_mdd.extended_upstream_transmit_power_support",
11330 FT_BOOLEAN
, BASE_NONE
, TFS(&tfs_on_off
), 0x0,
11331 "MDD Extended Upstream Transmit Power Support", HFILL
}
11333 {&hf_docsis_mdd_cmts_major_docsis_version
,
11334 { "CMTS Major DOCSIS Version (legacy)", "docsis_mdd.cmts_major_docsis_version",
11335 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11338 {&hf_docsis_mdd_cmts_minor_docsis_version
,
11339 { "CMTS Minor DOCSIS Version (legacy)", "docsis_mdd.cmts_minor_docsis_version",
11340 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11343 {&hf_docsis_mdd_docsis_version_tlv
,
11344 {"TLV", "docsis_mdd.docsis_version.tlv",
11345 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
11348 {&hf_docsis_mdd_docsis_version_tlv_type
,
11349 {"Type", "docsis_mdd.docsis_version.tlv.type",
11350 FT_UINT8
, BASE_DEC
, VALS(mdd_docsis_version_vals
), 0x0,
11353 {&hf_docsis_mdd_docsis_version_tlv_length
,
11354 {"Length", "docsis_mdd.docsis_version.tlv.length",
11355 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11358 {&hf_docsis_mdd_docsis_version_major_pre_40
,
11359 { "CMTS Pre-DOCSIS 4.0 Major DOCSIS Version", "docsis_mdd.docsis_version.major_pre_40",
11360 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11363 {&hf_docsis_mdd_docsis_version_minor_pre_40
,
11364 { "CMTS Pre-DOCSIS 4.0 Minor DOCSIS Version", "docsis_mdd.docsis_version.minor_pre_40",
11365 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11368 {&hf_docsis_mdd_docsis_version_major
,
11369 { "CMTS Major DOCSIS Version", "docsis_mdd.docsis_version.major",
11370 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11373 {&hf_docsis_mdd_docsis_version_minor
,
11374 { "CMTS Minor DOCSIS Version", "docsis_mdd.docsis_version.minor",
11375 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11378 {&hf_docsis_mdd_docsis_version_ext_spectrum_mode
,
11379 {"CMTS Extended Spectrum Mode of Operation", "docsis_mdd.docsis_version.ext_spectrum_mode",
11380 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
11383 {&hf_docsis_mdd_docsis_version_ext_spectrum_mode_fdd
,
11384 {"FDD", "docsis_mdd.docsis_version.fdd",
11385 FT_BOOLEAN
, 8, TFS(&tfs_enabled_disabled
), CMTS_DOCSIS_VERSION_EXT_SPECTRUM_MODE_FDD
,
11388 {&hf_docsis_mdd_docsis_version_ext_spectrum_mode_fdx
,
11389 {"FDX", "docsis_mdd.docsis_version.fdx",
11390 FT_BOOLEAN
, 8, TFS(&tfs_enabled_disabled
), CMTS_DOCSIS_VERSION_EXT_SPECTRUM_MODE_FDX
,
11393 {&hf_docsis_mdd_cm_periodic_maintenance_timeout_indicator
,
11394 { "CM periodic maintenance timeout indicator", "docsis_mdd.cm_periodic_maintenance_timeout_indicator",
11395 FT_UINT8
, BASE_DEC
, VALS(cm_periodic_maintenance_timeout_indicator_vals
), 0x0,
11398 {&hf_docsis_mdd_dls_broadcast_and_multicast_delivery_method
,
11399 { "DLS Broadcast and Multicast Delivery Method", "docsis_mdd.dls_broadcast_and_multicast_delivery_method",
11400 FT_UINT8
, BASE_DEC
, VALS(dls_broadcast_and_multicast_delivery_method_vals
), 0x0,
11403 {&hf_docsis_mdd_cm_status_event_d31_ofdm_prof_fail
,
11404 { "Downstream OFDM Profile Failure", "docsis_mdd.cm_status_event_d31_ofdm_prof_fail",
11405 FT_BOOLEAN
, 32, TFS(&tfs_enabled_disabled
), 0x00000001,
11408 {&hf_docsis_mdd_cm_status_event_d31_prim_down_chan_change
,
11409 { "Primary Downstream Channel Change", "docsis_mdd.cm_status_event_d31_prim_down_chan_change",
11410 FT_BOOLEAN
, 32, TFS(&tfs_enabled_disabled
), 0x00000002,
11413 {&hf_docsis_mdd_cm_status_event_d31_dpd_mismatch
,
11414 { "DPD Mismatch", "docsis_mdd.cm_status_event_d31_dpd_mismatch",
11415 FT_BOOLEAN
, 32, TFS(&tfs_enabled_disabled
), 0x00000004,
11418 {&hf_docsis_mdd_cm_status_event_d31_deprecated
,
11419 { "Deprecated", "docsis_mdd.cm_status_event_d31_deprecated",
11420 FT_BOOLEAN
, 32, TFS(&tfs_enabled_disabled
), 0x00000008,
11423 {&hf_docsis_mdd_cm_status_event_d31_ncp_prof_fail
,
11424 { "NCP Profile Failure", "docsis_mdd.cm_status_event_d31_ncp_prof_fail",
11425 FT_BOOLEAN
, 32, TFS(&tfs_enabled_disabled
), 0x00000010,
11428 {&hf_docsis_mdd_cm_status_event_d31_loss_fec_plc
,
11429 { "Loss of FEC lock on PLC", "docsis_mdd.cm_status_event_d31_loss_fec_plc",
11430 FT_BOOLEAN
, 32, TFS(&tfs_enabled_disabled
), 0x00000020,
11433 {&hf_docsis_mdd_cm_status_event_d31_ncp_prof_recover
,
11434 { "NCP Profile Recovery", "docsis_mdd.cm_status_event_d31_ncp_prof_recover",
11435 FT_BOOLEAN
, 32, TFS(&tfs_enabled_disabled
), 0x00000040,
11438 {&hf_docsis_mdd_cm_status_event_d31_fec_recover_on_plc
,
11439 { "FEC Recovery on PLC", "docsis_mdd.cm_status_event_d31_fec_recover_on_plc",
11440 FT_BOOLEAN
, 32, TFS(&tfs_enabled_disabled
), 0x00000080,
11443 {&hf_docsis_mdd_cm_status_event_d31_fec_recover_on_ofdm_prof
,
11444 { "FEC Recovery on OFDM Profile", "docsis_mdd.cm_status_event_d31_fec_recover_on_ofdm_prof",
11445 FT_BOOLEAN
, 32, TFS(&tfs_enabled_disabled
), 0x00000100,
11448 {&hf_docsis_mdd_cm_status_event_d31_ofdma_prof_fail
,
11449 { "OFDMA Profile Failure", "docsis_mdd.cm_status_event_d31_ofdma_prof_fail",
11450 FT_BOOLEAN
, 32, TFS(&tfs_enabled_disabled
), 0x00000200,
11453 {&hf_docsis_mdd_cm_status_event_d31_map_stor_overflow_ind
,
11454 { "MAP Storage Overflow Indicator", "docsis_mdd.cm_status_event_d31_map_stor_overflow_ind",
11455 FT_BOOLEAN
, 32, TFS(&tfs_enabled_disabled
), 0x00000400,
11458 {&hf_docsis_mdd_cm_status_event_d31_ofdm_map_stor_almost_full_ind
,
11459 { "MAP Storage Almost Full Indicator", "docsis_mdd.cm_status_event_d31_ofdm_map_stor_almost_full_ind",
11460 FT_BOOLEAN
, 32, TFS(&tfs_enabled_disabled
), 0x00000800,
11463 {&hf_docsis_mdd_cm_status_event_d31_reserved
,
11464 { "Reserved for future use", "docsis_mdd.cm_status_event_d31_reserved",
11465 FT_UINT32
, BASE_HEX
, NULL
, 0xFFFFF000,
11468 {&hf_docsis_mdd_diplexer_band_edge
,
11469 { "Diplexer Band Edge", "docsis_mdd.diplexer_band_edge",
11470 FT_UINT8
, BASE_DEC
, VALS(mdd_diplexer_band_edge_vals
), 0x0,
11473 {&hf_docsis_mdd_diplexer_band_edge_length
,
11474 {"Length", "docsis_mdd.diplexer_band_edge_length",
11475 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11478 {&hf_docsis_mdd_diplexer_us_upper_band_edge
,
11479 {"Diplexer Upstream Upper Band Edge", "docsis_mdd.diplexer_us_upper_band_edge",
11480 FT_UINT8
, BASE_DEC
, VALS(mdd_diplexer_us_upper_band_edge_vals
), 0x0,
11483 {&hf_docsis_mdd_diplexer_ds_lower_band_edge
,
11484 {"Diplexer Downstream Lower Band Edge", "docsis_mdd.diplexer_ds_lower_band_edge",
11485 FT_UINT8
, BASE_DEC
, VALS(mdd_diplexer_ds_lower_band_edge_vals
), 0x0,
11488 {&hf_docsis_mdd_diplexer_ds_upper_band_edge
,
11489 {"Diplexer Downstream Upper Band Edge", "docsis_mdd.diplexer_ds_upper_band_edge",
11490 FT_UINT8
, BASE_DEC
, VALS(mdd_diplexer_ds_upper_band_edge_vals
), 0x0,
11493 {&hf_docsis_mdd_diplexer_us_upper_band_edge_override
,
11494 {"Diplexer Upstream Upper Band Edge Override", "docsis_mdd.diplexer_us_upper_band_edge_override",
11495 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_mhz
), 0x0,
11498 {&hf_docsis_mdd_diplexer_ds_lower_band_edge_override
,
11499 {"Diplexer Downstream Lower Band Edge Override", "docsis_mdd.diplexer_ds_lower_band_edge_override",
11500 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_mhz
), 0x0,
11503 {&hf_docsis_mdd_diplexer_ds_upper_band_edge_override
,
11504 {"Diplexer Downstream Upper Band Edge Override", "docsis_mdd.diplexer_ds_upper_band_edge_override",
11505 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_mhz
), 0x0,
11508 /* MDD Advanced Band Plan Descriptor */
11509 {&hf_docsis_mdd_abp_tlv
,
11510 {"TLV", "docsis_mdd.advanced_band_plan.tlv",
11511 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
11514 {&hf_docsis_mdd_abp_tlv_type
,
11515 {"Type", "docsis_mdd.advanced_band_plan.tlv.type",
11516 FT_UINT8
, BASE_DEC
, VALS(mdd_abp_vals
), 0x0,
11519 {&hf_docsis_mdd_abp_tlv_length
,
11520 {"Length", "docsis_mdd.advanced_band_plan.tlv.length",
11521 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11524 {&hf_docsis_mdd_abp_sub_band_count
,
11525 {"Total number of sub-bands", "docsis_mdd.advanced_band_plan.subband_count",
11526 FT_UINT8
, BASE_DEC
, VALS(mdd_abp_sub_band_vals
), 0x0, NULL
, HFILL
}
11528 {&hf_docsis_mdd_abp_sub_band_width
,
11529 {"Full Duplex Sub-band Width", "docsis_mdd.advanced_band_plan.subband_width",
11530 FT_UINT8
, BASE_DEC
, VALS(mdd_abp_sub_band_width_vals
), 0x0, NULL
, HFILL
}
11533 {&hf_docsis_mdd_bpi_plus_tlv
,
11534 {"TLV", "docsis_mdd.bpi_plus.tlv",
11535 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
11538 {&hf_docsis_mdd_bpi_plus_tlv_type
,
11539 {"Type", "docsis_mdd.bpi_plus.tlv.type",
11540 FT_UINT8
, BASE_DEC
, VALS(mdd_bpi_plus_vals
), 0x0,
11543 {&hf_docsis_mdd_bpi_plus_tlv_length
,
11544 {"Length", "docsis_mdd.bpi_plus.tlv.length",
11545 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11548 {&hf_docsis_mdd_bpi_plus_version
,
11549 {"Version", "docsis_mdd.bpi_plus.version",
11550 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11551 "BPI+ Version Number", HFILL
}
11553 {&hf_docsis_mdd_bpi_plus_cfg
,
11554 {"Configuration", "docsis_mdd.bpi_plus.cfg",
11555 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
11556 "BPI+ Configuration Bitmask", HFILL
}
11558 {&hf_docsis_mdd_bpi_plus_cfg_eae
,
11559 {"Early Authentication and Encryption", "docsis_mdd.bpi_plus.eae",
11560 FT_BOOLEAN
, 8, TFS(&tfs_enabled_disabled
), 0x80,
11563 /* B_INIT_RNG_REQ */
11564 {&hf_docsis_bintrngreq_capflags
,
11565 {"Capability Flags", "docsis_bintrngreq.capflags",
11566 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
11569 {&hf_docsis_bintrngreq_capflags_frag
,
11570 {"Pre-3.0 Fragmentation", "docsis_bintrngreq.capflags.frag",
11571 FT_BOOLEAN
, 8, NULL
, (1<<7),
11572 "Pre-3.0 DOCSIS fragmentation is supported prior to registration", HFILL
}
11574 {&hf_docsis_bintrngreq_capflags_encrypt
,
11575 {"Early Auth. & Encrypt", "docsis_bintrngreq.capflags.encrypt",
11576 FT_BOOLEAN
, 8, NULL
, (1<<6),
11577 "Early Authentication and Encryption supported", HFILL
}
11579 {&hf_docsis_bintrngreq_mddsgid
,
11580 {"MD-DS-SG-ID", "docsis_bintrngreq.mddsgid",
11581 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
11582 "MAC Domain Downstream Service Group Identifier", HFILL
}
11585 {&hf_docsis_dbcreq_number_of_fragments
,
11586 {"Number of Fragments", "docsis_dbcreq.number_of_fragments",
11587 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
11590 {&hf_docsis_dbcreq_fragment_sequence_number
,
11591 {"Fragment Seq No", "docsis_dbcreq.fragment_sequence_number",
11592 FT_UINT8
, BASE_HEX_DEC
, NULL
, 0x0,
11596 {&hf_docsis_dbcrsp_conf_code
,
11597 {"Confirmation Code", "docsis_dbcrsp.conf_code",
11598 FT_UINT8
, BASE_DEC
|BASE_EXT_STRING
, &docsis_conf_code_ext
, 0x0,
11602 {&hf_docsis_dpv_flags
,
11603 {"Flags", "docsis_dpv.flags",
11604 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11607 {&hf_docsis_dpv_us_sf
,
11608 {"Upstream Service Flow ID", "docsis_dpv.us_sf",
11609 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
11613 {"N (Measurement avaraging factor)", "docsis_dpv.n",
11614 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11617 {&hf_docsis_dpv_start
,
11618 {"Start Reference Point", "docsis_dpv.start",
11619 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11622 {&hf_docsis_dpv_end
,
11623 {"End Reference Point", "docsis_dpv.end",
11624 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11627 {&hf_docsis_dpv_ts_start
,
11628 {"Timestamp Start", "docsis_dpv.ts_start",
11629 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
11632 {&hf_docsis_dpv_ts_end
,
11633 {"Timestamp End", "docsis_dpv.ts_end",
11634 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
11638 {&hf_docsis_cmstatus_e_t_mdd_t
,
11639 {"Event Type: Secondary Channel MDD timeout", "docsis_cmstatus.mdd_timeout", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11641 {&hf_docsis_cmstatus_e_t_qfl_f
,
11642 {"Event Type: QAM/FEC lock failure", "docsis_cmstatus.qam_fec_lock_failure", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11644 {&hf_docsis_cmstatus_e_t_s_o
,
11645 {"Event Type: Sequence out-of-range", "docsis_cmstatus.sequence_out_of_range", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11647 {&hf_docsis_cmstatus_e_t_mdd_r
,
11648 {"Event Type: Secondary Channel MDD Recovery", "docsis_cmstatus.mdd_recovery", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11650 {&hf_docsis_cmstatus_e_t_qfl_r
,
11651 {"Event Type: QAM/FEC Lock Recovery", "docsis_cmstatus.qam_fec_lock_recovery", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11653 {&hf_docsis_cmstatus_e_t_t4_t
,
11654 {"Event Type: T4 timeout", "docsis_cmstatus.t4_timeout", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11656 {&hf_docsis_cmstatus_e_t_t3_e
,
11657 {"Event Type: T3 retries exceeded", "docsis_cmstatus.t3_retries_exceeded", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11659 {&hf_docsis_cmstatus_e_t_rng_s
,
11660 {"Event Type: Successful ranging after T3 retries exceeded", "docsis_cmstatus.successful_ranging_after_t3_retries_exceeded", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11662 {&hf_docsis_cmstatus_e_t_cm_b
,
11663 {"Event Type: CM operating on battery backup", "docsis_cmstatus.cm_on_battery", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11665 {&hf_docsis_cmstatus_e_t_cm_a
,
11666 {"Event Type: CM returned to A/C power", "docsis_cmstatus.cm_on_ac_power", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11668 {&hf_docsis_cmstatus_e_t_mac_removal
,
11669 {"Event Type: MAC Removal event", "docsis_cmstatus.mac_removal", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11671 {&hf_docsis_cmstatus_e_t_ds_ofdm_profile_failure
,
11672 {"Event Type: DS OFDM profile failure", "docsis_cmstatus.ds_ofdm_profile_failure", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11674 {&hf_docsis_cmstatus_e_t_prim_ds_change
,
11675 {"Event Type: Primary Downstream Change", "docsis_cmstatus.primary_downstream_change", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11677 {&hf_docsis_cmstatus_e_t_dpd_mismatch
,
11678 {"Event Type: DPD Mismatch", "docsis_cmstatus.dpd_mismatch", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11680 {&hf_docsis_cmstatus_e_t_ncp_profile_failure
,
11681 {"Event Type: NCP Profile failure", "docsis_cmstatus.ncp_profile_failure", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11683 {&hf_docsis_cmstatus_e_t_plc_failure
,
11684 {"Event Type: PLC failure", "docsis_cmstatus.plc_failure", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11686 {&hf_docsis_cmstatus_e_t_ncp_profile_recovery
,
11687 {"Event Type: NCP profile recovery", "docsis_cmstatus.ncp_profile_recovery", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11689 {&hf_docsis_cmstatus_e_t_plc_recovery
,
11690 {"Event Type: PLC recovery", "docsis_cmstatus.plc_recovery", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11692 {&hf_docsis_cmstatus_e_t_ofdm_profile_recovery
,
11693 {"Event Type: OFDM profile recovery", "docsis_cmstatus.ofdm_profile_recovery", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11695 {&hf_docsis_cmstatus_e_t_ofdma_profile_failure
,
11696 {"Event Type: OFDMA profile failure", "docsis_cmstatus.ofdma_profile_failure", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11698 {&hf_docsis_cmstatus_e_t_map_storage_overflow_indicator
,
11699 {"Event Type: MAP Storage overflow indicator", "docsis_cmstatus.map_storage_overflow_indicator", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11701 {&hf_docsis_cmstatus_e_t_map_storage_almost_full_indicator
,
11702 {"Event Type: MAP Storage almost full indicator", "docsis_cmstatus.map_storage_almost_full_indicator", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11704 {&hf_docsis_cmstatus_e_t_unknown
,
11705 {"Unknown Event Type", "docsis_cmstatus.unknown_event_type", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11707 {&hf_docsis_cmstatus_status_event_descr
,
11708 {"Description", "docsis_cmstatus.status_event.description", FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
11710 {&hf_docsis_cmstatus_status_event_ds_ch_id
,
11711 {"Downstream Channel ID", "docsis_cmstatus.status_event.ds_chid", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11713 {&hf_docsis_cmstatus_status_event_us_ch_id
,
11714 {"Upstream Channel ID", "docsis_cmstatus.status_event.us_chid", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11716 {&hf_docsis_cmstatus_status_event_dsid
,
11717 {"DSID", "docsis_cmstatus.status_event.dsid", FT_UINT24
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11719 {&hf_docsis_cmstatus_status_event_mac_address
,
11720 {"MAC Address", "docsis_cmstatus.status_event.mac_address", FT_ETHER
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
11722 {&hf_docsis_cmstatus_status_event_ds_ofdm_profile_id
,
11723 {"Downstream OFDM Profile ID", "docsis_cmstatus.status_event.ds_ofdm_profile_id", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11725 {&hf_docsis_cmstatus_status_event_us_ofdma_profile_id
,
11726 {"US OFDMA Profile ID", "docsis_cmstatus.status_event.us_ofdma_profile_id", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11728 {&hf_docsis_cmstatus_tlv_data
,
11729 {"TLV Data", "docsis_cmstatus.tlv_data", FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0, NULL
, HFILL
}
11731 {&hf_docsis_cmstatus_type
,
11732 {"Type", "docsis_cmstatus.type", FT_UINT8
, BASE_DEC
, VALS(cmstatus_tlv_vals
), 0x0, NULL
, HFILL
}
11734 {&hf_docsis_cmstatus_length
,
11735 {"Length", "docsis_cmstatus.length", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11737 {&hf_docsis_cmstatus_status_event_tlv_data
,
11738 {"Status Event TLV Data", "docsis_cmstatus.status_event.tlv_data", FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0, NULL
, HFILL
}
11740 {&hf_docsis_cmstatus_status_event_type
,
11741 {"Status Event Type", "docsis_cmstatus.status_event.type", FT_UINT8
, BASE_DEC
, VALS(cmstatus_status_event_tlv_vals
), 0x0, NULL
, HFILL
}
11743 {&hf_docsis_cmstatus_status_event_length
,
11744 {"Status Event Length", "docsis_cmstatus.status_event.length", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11748 {&hf_docsis_cmctrl_tlv_mute
,
11749 {"Upstream Channel RF Mute", "docsis_cmctrl.mute",
11750 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11753 {&hf_docsis_cmctrl_tlv_mute_timeout
,
11754 {"RF Mute Timeout Interval", "docsis_cmctrl.mute_timeout",
11755 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
11758 {&hf_docsis_cmctrl_tlv_reinit
,
11759 {"CM Reinitialize", "docsis_cmctrl.reinit",
11760 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11763 {&hf_docsis_cmctrl_tlv_disable_fwd
,
11764 {"Disable Forwarding", "docsis_cmctrl.disable_fwd",
11765 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11768 {&hf_docsis_cmctrl_tlv_ds_event
,
11769 {"Override Downstream Events", "docsis_cmctrl.ds_event",
11770 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
11773 {&hf_docsis_cmctrl_tlv_us_event
,
11774 {"Override Upstream Events", "docsis_cmctrl.us_event",
11775 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
11778 {&hf_docsis_cmctrl_tlv_event
,
11779 {"Override Non-Channel-Specific Events", "docsis_cmctrl.event",
11780 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
11783 {&hf_docsis_cmctrlreq_tlv_data
,
11784 {"TLV Data", "docsis_cmctrl.tlv_data",
11785 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
11788 {&hf_docsis_cmctrlreq_type
,
11789 {"Type", "docsis_cmctrl.tlv_type",
11790 FT_UINT8
, BASE_DEC
, VALS(cmctrlreq_tlv_vals
), 0x0,
11793 {&hf_docsis_cmctrlreq_length
,
11794 {"Length", "docsis_cmctrl.tlv_length",
11795 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11798 {&hf_docsis_cmctrlreq_us_type
,
11799 {"Type", "docsis_cmctrl.us_event_type",
11800 FT_UINT8
, BASE_DEC
, VALS(cmctrlreq_us_tlv_vals
), 0x0,
11803 {&hf_docsis_cmctrlreq_us_length
,
11804 {"Length", "docsis_cmctrl.us_event_length",
11805 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11808 {&hf_docsis_cmctrl_us_event_ch_id
,
11809 {"Upstream Channel ID", "docsis_cmctrl.us_event.chid",
11810 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11813 {&hf_docsis_cmctrl_us_event_mask
,
11814 {"Upstream Status Event Enable Bitmask", "docsis_cmctrl.us_event.mask",
11815 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
11818 {&hf_docsis_cmctrl_ds_type
,
11819 {"Type", "docsis_cmctrl.ds_event_type",
11820 FT_UINT8
, BASE_DEC
, VALS(cmctrlreq_ds_tlv_vals
), 0x0,
11823 {&hf_docsis_cmctrl_ds_length
,
11824 {"Length", "docsis_cmctrl.ds_event_length",
11825 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11828 {&hf_docsis_cmctrl_ds_event_ch_id
,
11829 {"Downstream Channel ID", "docsis_cmctrl.ds_event.chid",
11830 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11833 {&hf_docsis_cmctrl_ds_event_mask
,
11834 {"Downstream Status Event Enable Bitmask", "docsis_cmctrl.ds_event.mask",
11835 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
11839 {&hf_docsis_regreqmp_sid
,
11840 {"Sid", "docsis_regreqmp.sid",
11841 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11842 "Reg-Req-Mp Sid", HFILL
}
11844 {&hf_docsis_regreqmp_number_of_fragments
,
11845 {"Number of Fragments", "docsis_regreqmp.number_of_fragments",
11846 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11847 "Reg-Req-Mp Number of Fragments", HFILL
}
11849 {&hf_docsis_regreqmp_fragment_sequence_number
,
11850 {"Fragment Sequence Number", "docsis_regreqmp.fragment_sequence_number",
11851 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11852 "Reg-Req-Mp Fragment Sequence Number", HFILL
}
11855 {&hf_docsis_regrspmp_sid
,
11856 {"Sid", "docsis_regrspmp.sid",
11857 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11858 "Reg-Rsp-Mp Sid", HFILL
}
11860 {&hf_docsis_regrspmp_response
,
11861 {"Response", "docsis_regrspmp.response",
11862 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11863 "Reg-Rsp-Mp Response", HFILL
}
11865 {&hf_docsis_regrspmp_number_of_fragments
,
11866 {"Number of Fragments", "docsis_regrspmp.number_of_fragments",
11867 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11868 "Reg-Rsp-Mp Number of Fragments", HFILL
}
11870 {&hf_docsis_regrspmp_fragment_sequence_number
,
11871 {"Fragment Sequence Number", "docsis_regrspmp.fragment_sequence_number",
11872 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11873 "Reg-Rsp-Mp Fragment Sequence Number", HFILL
}
11876 {&hf_docsis_emrsp_tlv_data
,
11877 {"Energy Management TLV data", "docsis_emrsp.tlv_data",
11878 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
11881 {&hf_docsis_emrsp_tlv_type
,
11882 {"Energy Management TLV Type", "docsis_emrsp.tlv.type",
11883 FT_UINT8
, BASE_DEC
, VALS(emrsp_tlv_vals
), 0x0,
11886 {&hf_docsis_emrsp_tlv_length
,
11887 {"Energy Management TLV Length", "docsis_emrsp.tlv.length",
11888 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
11891 {&hf_docsis_emrsp_tlv_holdoff_timer
,
11892 {"Hold-Off Timer", "docsis_emrsp.tlv.holdoff_timer",
11893 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
11896 {&hf_docsis_emreq_req_power_mode
,
11897 {"Requested Power Mode", "docsis_emreq.req_power_mode",
11898 FT_UINT8
, BASE_DEC
, VALS(emreq_req_power_mode_vals
), 0x0,
11901 {&hf_docsis_emreq_reserved
,
11902 {"Reserved", "docsis_emreq.reserved",
11903 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
11906 {&hf_docsis_emrsp_rsp_code
,
11907 {"Response Code", "docsis_emrsp.resp_code",
11908 FT_UINT8
, BASE_DEC
, VALS(emrsp_rsp_code_vals
), 0x0,
11911 {&hf_docsis_emrsp_reserved
,
11912 {"Reserved", "docsis_emrsp.reserved",
11913 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
11916 {&hf_docsis_emrsp_tlv_unknown
,
11917 {"Unknown TLV", "docsis_emrsp.unknown_tlv",
11918 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
11922 {&hf_docsis_ocd_tlv_unknown
,
11923 {"Unknown TLV", "docsis_ocd.unknown_tlv", FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
11925 {&hf_docsis_ocd_ccc
,
11926 {"Configuration Change Count", "docsis_ocd.ccc", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11928 {&hf_docsis_ocd_tlv_four_trans_size
,
11929 {"Discrete Fourier Transform Size", "docsis_ocd.tlv.four_trans_size", FT_UINT8
, BASE_DEC
, VALS (docsis_ocd_four_trans_size
), 0x0, NULL
, HFILL
}
11931 {&hf_docsis_ocd_tlv_cycl_pref
,
11932 {"Cyclic Prefix", "docsis_ocd.tlv.cyc_pref", FT_UINT8
, BASE_DEC
, VALS (docsis_ocd_cyc_prefix
), 0x0, NULL
, HFILL
}
11934 {&hf_docsis_ocd_tlv_roll_off
,
11935 {"Roll Off", "docsis_ocd.tlv.roll_off", FT_UINT8
, BASE_DEC
, VALS (docsis_ocd_roll_off
), 0x0, NULL
, HFILL
}
11937 {&hf_docsis_ocd_tlv_ofdm_spec_loc
,
11938 {"OFDM Spectrum Location", "docsis_ocd.tlv.ofdm_spec_loc", FT_UINT32
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_hz
), 0x0, NULL
, HFILL
}
11940 {&hf_docsis_ocd_tlv_time_int_depth
,
11941 {"Time Interleaving Depth", "docsis_ocd.tlv.time_int_depth", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11943 {&hf_docsis_ocd_tlv_prim_cap_ind
,
11944 {"Primary Capable Indicator", "docsis_ocd.tlv.prim_cap_ind", FT_UINT8
, BASE_DEC
, VALS(docsis_ocd_prim_cap_ind_str
), 0x0, NULL
, HFILL
}
11946 {&hf_docsis_ocd_tlv_fdx_ind
,
11947 {"FDX Indicator", "docsis_ocd.tlv.fdx_indicator", FT_UINT8
, BASE_DEC
, VALS(docsis_ocd_fdx_ind_str
), 0x0, NULL
, HFILL
}
11949 {&hf_docsis_ocd_tlv_subc_assign_type
,
11950 {"Assignment type", "docsis_ocd.tlv.subc_assign.type", FT_UINT8
, BASE_DEC
, VALS(docsis_ocd_subc_assign_type_str
), 0xC0, NULL
, HFILL
}
11952 {&hf_docsis_ocd_tlv_subc_assign_value
,
11953 {"Assignment value", "docsis_ocd.tlv.subc_assign.value", FT_UINT8
, BASE_DEC
, VALS(docsis_ocd_subc_assign_value_str
), 0x20, NULL
, HFILL
}
11955 {&hf_docsis_ocd_subc_assign_subc_type
,
11956 {"Subcarrier Type", "docsis_ocd.tlv.subc_assign.subc_type", FT_UINT8
, BASE_DEC
, VALS(docsis_ocd_subc_assign_subc_type_str
), 0x1F, NULL
, HFILL
}
11958 {&hf_docsis_ocd_subc_assign_range
,
11959 {"Subcarrier index range", "docsis_ocd.tlv.subc_assign.range", FT_UINT32
, BASE_CUSTOM
, CF_FUNC(subc_assign_range
), 0x00, NULL
, HFILL
}
11961 {&hf_docsis_ocd_subc_assign_index
,
11962 {"Subcarrier index", "docsis_ocd.tlv.subc_assign.index", FT_UINT16
, BASE_DEC
, NULL
, 0x00, NULL
, HFILL
}
11964 {&hf_docsis_ocd_tlv_data
,
11965 {"TLV Data", "docsis_ocd.tlv_data", FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0, NULL
, HFILL
}
11967 {&hf_docsis_ocd_type
,
11968 {"Type", "docsis_ocd.type", FT_UINT8
, BASE_DEC
, VALS(ocd_tlv_vals
), 0x0, NULL
, HFILL
}
11970 {&hf_docsis_ocd_length
,
11971 {"Length", "docsis_ocd.length", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11974 {&hf_docsis_dpd_tlv_unknown
,
11975 {"Unknown TLV", "docsis_dpd.unknown_tlv",
11976 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
11979 {&hf_docsis_dpd_prof_id
,
11980 {"Profile Identifier", "docsis_dpd.prof_id", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11982 {&hf_docsis_dpd_ccc
,
11983 {"Configuration Change Count", "docsis_dpd.ccc", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
11985 {&hf_docsis_dpd_tlv_subc_assign_type
,
11986 {"Subcarrier Assignment Type", "docsis_dpd.tlv.subc_assign.type", FT_UINT8
, BASE_DEC
, VALS(docsis_dpd_subc_assign_type_str
), 0xC0, NULL
, HFILL
}
11988 {&hf_docsis_dpd_tlv_subc_assign_value
,
11989 {"Subcarrier Assignment Value", "docsis_dpd.tlv.subc_assign.value", FT_UINT8
, BASE_DEC
, VALS(docsis_dpd_subc_assign_value_str
), 0x20, NULL
, HFILL
}
11991 {&hf_docsis_dpd_tlv_subc_assign_reserved
,
11992 {"reserved", "docsis_dpd.tlv.subc_assign.reserved", FT_UINT8
, BASE_DEC
, NULL
, 0x10, NULL
, HFILL
}
11994 {&hf_docsis_dpd_tlv_subc_assign_modulation
,
11995 {"Subcarrier Assignment Modulation", "docsis_dpd.tlv.subc_assign.modulation", FT_UINT8
, BASE_DEC
, VALS(docsis_dpd_subc_assign_modulation_str
), 0x0F, NULL
, HFILL
}
11997 {&hf_docsis_dpd_subc_assign_range
,
11998 {"Subcarrier index range", "docsis_dpd.tlv.subc_assign.range", FT_UINT32
, BASE_CUSTOM
, CF_FUNC(subc_assign_range
), 0x00, NULL
, HFILL
}
12000 {&hf_docsis_dpd_subc_assign_index
,
12001 {"Subcarrier index", "docsis_dpd.tlv.subc_assign.index", FT_UINT16
, BASE_DEC
, NULL
, 0x00, NULL
, HFILL
}
12003 {&hf_docsis_dpd_tlv_subc_assign_vector_oddness
,
12004 {"Odd or even", "docsis_dpd.tlv.subc_assign_vect.oddness", FT_UINT8
, BASE_DEC
, VALS(docsis_dpd_tlv_subc_assign_vector_oddness_str
), 0x80, NULL
, HFILL
}
12006 {&hf_docsis_dpd_tlv_subc_assign_vector_reserved
,
12007 {"Reserved", "docsis_dpd.tlv.subc_assign_vect.reserved", FT_UINT8
, BASE_DEC
, NULL
, 0x60, NULL
, HFILL
}
12009 {&hf_docsis_dpd_tlv_subc_assign_vector_subc_start
,
12010 {"Subcarrier start", "docsis_dpd.tlv.subc_assign_vect.subc_start", FT_UINT16
, BASE_DEC
, NULL
, 0x1FFF, NULL
, HFILL
}
12012 {&hf_docsis_dpd_tlv_subc_assign_vector_modulation_odd
,
12013 {"Modulation", "docsis_dpd.tlv.subc_assign_vect.modulation", FT_UINT8
, BASE_DEC
, VALS(docsis_dpd_tlv_subc_assign_vector_modulation_str
), 0xF0, NULL
, HFILL
}
12015 {&hf_docsis_dpd_tlv_subc_assign_vector_modulation_even
,
12016 {"Modulation", "docsis_dpd.tlv.subc_assign_vect.modulation", FT_UINT8
, BASE_DEC
, VALS(docsis_dpd_tlv_subc_assign_vector_modulation_str
), 0x0F, NULL
, HFILL
}
12018 {&hf_docsis_dpd_tlv_data
,
12019 {"TLV Data", "docsis_dpd.tlv_data", FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0, NULL
, HFILL
}
12021 {&hf_docsis_dpd_type
,
12022 {"Type", "docsis_dpd.type" ,FT_UINT8
, BASE_DEC
, VALS(dpd_tlv_vals
), 0x0, NULL
, HFILL
}
12024 {&hf_docsis_dpd_length
,
12025 {"Length", "docsis_dpd.length", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12028 {&hf_docsis_optreq_tlv_unknown
,
12029 {"Unknown TLV", "docsis_optreq.unknown_tlv", FT_BYTES
, BASE_NONE
, NULL
, 0x0, NULL
, HFILL
}
12031 {&hf_docsis_optreq_reserved
,
12032 {"Reserved", "docsis_optreq.reserved", FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
12034 {&hf_docsis_optreq_prof_id
,
12035 {"Profile Identifier", "docsis_optreq.prof_id", FT_UINT8
, BASE_DEC
, VALS(profile_id_vals
), 0x0, NULL
, HFILL
}
12037 {&hf_docsis_optreq_opcode
,
12038 {"Opcode", "docsis_optreq.opcode", FT_UINT8
, BASE_DEC
, VALS(opt_opcode_vals
), 0x0, NULL
, HFILL
}
12040 {&hf_docsis_optreq_tlv_data
,
12041 {"TLV Data", "docsis_optreq.tlv_data", FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0, NULL
, HFILL
}
12043 {&hf_docsis_optreq_type
,
12044 {"Type", "docsis_optreq.type", FT_UINT8
, BASE_DEC
, VALS(optreq_tlv_vals
), 0x0, NULL
, HFILL
}
12046 {&hf_docsis_optreq_length
,
12047 {"Length", "docsis_optreq.length", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12049 {&hf_docsis_optreq_reqstat_rxmer_stat_subc
,
12050 {"RxMER Statistics per subcarrier", "docsis_optreq.reqstat.rxmer_stat_per_subcarrier", FT_BOOLEAN
, 32, TFS(&tfs_requested_not_requested
), 0x1, NULL
, HFILL
}
12052 {&hf_docsis_optreq_reqstat_rxmer_subc_threshold_comp
,
12053 {"RxMER per Subcarrier Threshold Comparison for Candidate Profile", "docsis_optreq.reqstat.rxmer_per_subcarrier_thresh_comp", FT_BOOLEAN
, 32, TFS(&tfs_requested_not_requested
), 0x2, NULL
, HFILL
}
12055 {&hf_docsis_optreq_reqstat_snr_marg_cand_prof
,
12056 {"SNR Margin for Candidate Profile", "docsis_optreq.reqstat.snr_marg_cand_prof", FT_BOOLEAN
, 32, TFS(&tfs_requested_not_requested
), 0x4, NULL
, HFILL
}
12058 {&hf_docsis_optreq_reqstat_codew_stat_cand_prof
,
12059 {"Codeword Statistics for Candidate Profile", "docsis_optreq.reqstat.codew_stat_cand_prof", FT_BOOLEAN
, 32, TFS(&tfs_requested_not_requested
), 0x8, NULL
, HFILL
}
12061 {&hf_docsis_optreq_reqstat_codew_thresh_comp_cand_prof
,
12062 {"Codeword Threshold Comparison for Candidate Profile", "docsis_optreq.reqstat.codew_thresh_comp_cand_prof", FT_BOOLEAN
, 32, TFS(&tfs_requested_not_requested
), 0x00000010, NULL
, HFILL
}
12064 {&hf_docsis_optreq_reqstat_ncp_field_stat
,
12065 {"NCP Field Statistics", "docsis_optreq.reqstat.ncp_field_stats", FT_BOOLEAN
, 32, TFS(&tfs_requested_not_requested
), 0x00000020, NULL
, HFILL
}
12067 {&hf_docsis_optreq_reqstat_ncp_crc_thresh_comp
,
12068 {"NCP CRC Threshold Comparison", "docsis_optreq.reqstat.ncp_crc_thresh_comp", FT_BOOLEAN
, 32, TFS(&tfs_requested_not_requested
), 0x00000040, NULL
, HFILL
}
12070 {&hf_docsis_optreq_reqstat_reserved
,
12071 {"Reserved", "docsis_optreq.reqstat.reserved", FT_BOOLEAN
, 32, TFS(&tfs_requested_not_requested
), 0x00000080, NULL
, HFILL
}
12073 {&hf_docsis_optreq_tlv_rxmer_thresh_data
,
12074 {"TLV Data", "docsis_optreq.rxmer_thresh_params.tlv_data", FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0, NULL
, HFILL
}
12076 {&hf_docsis_optreq_xmer_thresh_params_type
,
12077 {"Type", "docsis_optreq.rxmer_thres_params.type", FT_UINT8
, BASE_DEC
, VALS(optreq_tlv_rxmer_thresh_params_vals
), 0x0, NULL
, HFILL
}
12079 {&hf_docsis_optreq_xmer_thresh_params_length
,
12080 {"Length", "docsis_optreq.rxmer_thres_params.length", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12082 {&hf_docsis_optreq_tlv_rxmer_thresh_data_mod_order
,
12083 {"Modulation Order", "docsis_optreq.rxmer_thres_params.mod_order", FT_UINT8
, BASE_DEC
, VALS(opreq_tlv_rxmer_thresh_params_mod_order
), 0x0, NULL
, HFILL
}
12085 {&hf_docsis_optreq_tlv_trigger_definition_data
,
12086 {"TLV Data", "docsis_optreq.trigger_definition.tlv_data", FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0, NULL
, HFILL
}
12088 {&hf_docsis_optreq_tlv_trigger_definition_data_type
,
12089 {"Type", "docsis_optreq.trigger_definition.type", FT_UINT8
, BASE_DEC
, VALS(optreq_tlv_trigger_definition_vals
), 0x0, NULL
, HFILL
}
12091 {&hf_docsis_optreq_tlv_trigger_definition_data_length
,
12092 {"Length", "docsis_optreq.trigger_definition.length", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12094 {&hf_docsis_optreq_tlv_trigger_definition_trigger_type
,
12095 {"Trigger Type", "docsis_optreq.trigger_definition.trigger_type", FT_UINT8
, BASE_DEC
, VALS(optreq_tlv_triggered_definition_trigger_type_vals
), 0x0, NULL
, HFILL
}
12097 {&hf_docsis_optreq_tlv_trigger_definition_measure_duration
,
12098 {"Measurement Duration", "docsis_optreq.trigger_definition.measurement_duration", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12100 {&hf_docsis_optreq_tlv_trigger_definition_triggering_sid
,
12101 {"Triggering SID", "docsis_optreq.trigger_definition.triggering_sid", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12103 {&hf_docsis_optreq_tlv_trigger_definition_us_chan_id
,
12104 {"US Channel ID", "docsis_optreq.trigger_definition.us_chan_id", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12106 {&hf_docsis_optreq_tlv_trigger_definition_sound_ambig_offset
,
12107 {"OUDP Sounding Ambiguity Offset", "docsis_optreq.trigger_definition.sound_ambig_offset", FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12109 {&hf_docsis_optreq_tlv_trigger_definition_rx_mer_to_report
,
12110 {"RxMER Measurement to Report", "docsis_optreq.trigger_definition.rx_mer_to_report", FT_UINT8
, BASE_DEC
, VALS(optreq_tlv_triggered_definition_rx_mer_to_report_vals
), 0x0, NULL
, HFILL
}
12112 {&hf_docsis_optreq_tlv_trigger_definition_start_time
,
12113 {"Time-Triggered Start Time", "docsis_optreq.trigger_definition.start_time", FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12116 {&hf_docsis_optrsp_reserved
,
12117 {"Reserved", "docsis_optrsp.reserved",
12118 FT_UINT16
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
12120 {&hf_docsis_optrsp_prof_id
,
12121 {"Profile Identifier", "docsis_optrsp.prof_id",
12122 FT_UINT8
, BASE_DEC
, VALS(profile_id_vals
), 0x0, NULL
, HFILL
}
12124 {&hf_docsis_optrsp_status
,
12125 {"Status", "docsis_optrsp.status",
12126 FT_UINT8
, BASE_DEC
, VALS(opt_status_vals
), 0x0, NULL
, HFILL
}
12128 {&hf_docsis_optrsp_tlv
,
12129 {"TLV", "docsis_optrsp.tlv",
12130 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0, NULL
, HFILL
}
12132 {&hf_docsis_optrsp_tlv_type
,
12133 {"Type", "docsis_optrsp.tlv.type",
12134 FT_UINT8
, BASE_DEC
, VALS(optrsp_tlv_vals
), 0x0, "OPT-RSP TLV type", HFILL
}
12136 {&hf_docsis_optrsp_tlv_length
,
12137 {"Length", "docsis_optrsp.tlv.length",
12138 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12140 {&hf_docsis_optrsp_rxmer_tlv
,
12141 {"TLV", "docsis_optrsp.rxmer_snr_margin.tlv",
12142 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0, NULL
, HFILL
}
12144 {&hf_docsis_optrsp_rxmer_tlv_type
,
12145 {"Type", "docsis_optrsp.rxmer_snr_margin.tlv.type",
12146 FT_UINT8
, BASE_DEC
, VALS(optrsp_rxmer_vals
), 0x0, NULL
, HFILL
}
12148 {&hf_docsis_optrsp_rxmer_tlv_length
,
12149 {"Length", "docsis_optrsp.rxmer_snr_margin.tlv.length",
12150 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12152 {&hf_docsis_optrsp_rxmer_subcarrier
,
12153 {"RxMER", "docsis_optrsp.rxmer_snr_margin.rxmer_per_subc",
12154 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(fourth_db
), 0x0, NULL
, HFILL
}
12156 {&hf_docsis_optrsp_rxmer_subcarrier_threshold
,
12157 {"Result", "docsis_optrsp.rxmer_snr_margin.threshold_per_subc",
12158 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
12159 "RxMER per Subcarrier Threshold Comparison Result", HFILL
}
12161 {&hf_docsis_optrsp_rxmer_subcarrier_threshold_count
,
12162 {"Number of Subcarriers", "docsis_optrsp.rxmer_snr_margin.threshold_count",
12163 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12164 "Number of Subcarriers whose RxMER is RxMER Margin below the RxMER Target", HFILL
}
12166 {&hf_docsis_optrsp_rxmer_snr_margin
,
12167 {"SNR Margin", "docsis_optrsp.rxmer_snr_margin.snr_margin",
12168 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(fourth_db
), 0x0, NULL
, HFILL
}
12170 {&hf_docsis_optrsp_rxmer_avg
,
12171 {"Average RxMER", "docsis_optrsp.rxmer_snr_margin.rxmer_avg",
12172 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(fourth_db
), 0x0, NULL
, HFILL
}
12174 {&hf_docsis_optrsp_rxmer_ect_rba_subband_direction
,
12175 {"ECT RxMER Probe-Triggered RBA Sub-band Direction Set", "docsis_optrsp.rxmer_snr_margin.ect_rba_subband_direction",
12176 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
12178 {&hf_docsis_optrsp_rxmer_ect_rba_subband_direction_sb0
,
12179 {"Direction Sub-band 0", "docsis_optrsp.rxmer_snr_margin.ect_rba_subband_direction.0",
12180 FT_BOOLEAN
, 8, TFS(&tfs_up_down
), 0x04, NULL
, HFILL
}
12182 {&hf_docsis_optrsp_rxmer_ect_rba_subband_direction_sb1
,
12183 {"Direction Sub-band 1", "docsis_optrsp.rxmer_snr_margin.ect_rba_subband_direction.1",
12184 FT_BOOLEAN
, 8, TFS(&tfs_up_down
), 0x02, NULL
, HFILL
}
12186 {&hf_docsis_optrsp_rxmer_ect_rba_subband_direction_sb2
,
12187 {"Direction Sub-band 2", "docsis_optrsp.rxmer_snr_margin.ect_rba_subband_direction.2",
12188 FT_BOOLEAN
, 8, TFS(&tfs_up_down
), 0x01, NULL
, HFILL
}
12190 {&hf_docsis_optrsp_data_cw_tlv
,
12191 {"TLV", "docsis_optrsp.data_cw.tlv",
12192 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0, NULL
, HFILL
}
12194 {&hf_docsis_optrsp_data_cw_tlv_type
,
12195 {"Type", "docsis_optrsp.data_cw.tlv.type",
12196 FT_UINT8
, BASE_DEC
, VALS(optrsp_data_cw_vals
), 0x0, NULL
, HFILL
}
12198 {&hf_docsis_optrsp_data_cw_tlv_length
,
12199 {"Length", "docsis_optrsp.data_cw.tlv.length",
12200 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12202 {&hf_docsis_optrsp_data_cw_count
,
12203 {"Codeword Count", "docsis_optrsp.data_cw.count",
12204 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12206 {&hf_docsis_optrsp_data_cw_corrected
,
12207 {"Corrected Codeword Count", "docsis_optrsp.data_cw.corrected",
12208 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12210 {&hf_docsis_optrsp_data_cw_uncorrectable
,
12211 {"Uncorrectable Codeword Count", "docsis_optrsp.data_cw.uncorrectable",
12212 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12214 {&hf_docsis_optrsp_data_cw_threshold_comparison
,
12215 {"Comparison Result", "docsis_optrsp.data_cw.threshold_comparison",
12216 FT_UINT8
, BASE_DEC
, VALS(optrsp_data_cw_threshold_comparison_vals
), 0x0,
12217 "Codeword Threshold Comparison Result for Candidate Profile", HFILL
}
12219 {&hf_docsis_optrsp_ncp_fields_tlv
,
12220 {"TLV", "docsis_optrsp.ncp_fields.tlv",
12221 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0, NULL
, HFILL
}
12223 {&hf_docsis_optrsp_ncp_fields_tlv_type
,
12224 {"Type", "docsis_optrsp.ncp_fields.tlv.type",
12225 FT_UINT8
, BASE_DEC
, VALS(optrsp_ncp_fields_vals
), 0x0, NULL
, HFILL
}
12227 {&hf_docsis_optrsp_ncp_fields_tlv_length
,
12228 {"Length", "docsis_optrsp.ncp_fields.tlv.length",
12229 FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12231 {&hf_docsis_optrsp_ncp_fields_count
,
12232 {"NCP Fields Count", "docsis_optrsp.ncp_fields.count",
12233 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12235 {&hf_docsis_optrsp_ncp_fields_failure
,
12236 {"NCP CRC Failure Count", "docsis_optrsp.ncp_fields.failure",
12237 FT_UINT32
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12239 {&hf_docsis_optrsp_ncp_fields_threshold_comparison
,
12240 {"Comparison Result", "docsis_optrsp.ncp_fields.threshold_comparison",
12241 FT_UINT8
, BASE_DEC
, VALS(optrsp_ncp_fields_threshold_comparison_vals
), 0x0,
12242 "NCP CRC Threshold Comparison Result", HFILL
12246 {&hf_docsis_optack_prof_id
,
12247 {"Profile Identifier", "docsis_optack.prof_id", FT_UINT8
, BASE_DEC
, VALS(profile_id_vals
), 0x0, NULL
, HFILL
}
12249 {&hf_docsis_optack_reserved
,
12250 {"Reserved", "docsis_optack.reserved", FT_UINT16
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12253 {&hf_docsis_rba_tg_id
,
12254 {"Transmission Group ID", "docsis_rba.tg_id", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12256 {&hf_docsis_rba_ccc
,
12257 {"Change Count", "docsis_rba.ccc", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12259 {&hf_docsis_rba_dcid
,
12260 {"Current Channel DCID", "docsis_rba.dcid", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12262 {&hf_docsis_rba_control_byte_bitmask
,
12263 {"Control byte bitmask", "docsis_rba.control_byte_bitmask", FT_UINT8
, BASE_HEX
, NULL
, 0x00, NULL
, HFILL
}
12265 {&hf_docsis_rba_resource_block_change_bit
,
12266 {"Resource Block Change bit", "docsis_rba.rb_change_bit", FT_UINT8
, BASE_HEX
, NULL
, 0x01, NULL
, HFILL
}
12268 {&hf_docsis_rba_expiration_time_valid_bit
,
12269 {"Expiration Time Valid bit", "docsis_rba.exp_time_valid_bit", FT_UINT8
, BASE_HEX
, NULL
, 0x02, NULL
, HFILL
}
12271 {&hf_docsis_rba_control_byte_bitmask_rsvd
,
12272 {"Control byte bitmask reserved", "docsis_rba.control_byte_bitmask_rsvd", FT_UINT8
, BASE_HEX
, NULL
, 0xFC, NULL
, HFILL
}
12274 {&hf_docsis_rba_rba_time
,
12275 {"RBA Time", "docsis_rba.rba_time", FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
12277 {&hf_docsis_rba_rba_expiration_time
,
12278 {"RBA Expiration Time", "docsis_rba.rba_expiration_time", FT_UINT32
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
12280 {&hf_docsis_rba_number_of_subbands
,
12281 {"Number of Sub-bands", "docsis_rba.nr_subbands", FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12283 {&hf_docsis_rba_subband_direction
,
12284 {"Sub-band direction", "docsis_rba.subband_direction", FT_UINT8
, BASE_DEC
, VALS(rba_subband_direction_vals
), 0x0, NULL
, HFILL
}
12286 /* CWT-REQ and CWT-RSP */
12287 {&hf_docsis_cwt_trans_id
,
12288 {"Transaction ID", "docsis_cwt.trans_id",
12289 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12291 {&hf_docsis_cwt_sub_band_id
,
12292 {"Sub-band ID", "docsis_cwt.subband_id",
12293 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12295 {&hf_docsis_cwt_op_code
,
12296 {"Operation Code", "docsis_cwt.op_code",
12297 FT_UINT8
, BASE_DEC
, VALS(cwt_op_code_vals
), 0x0, NULL
, HFILL
}
12299 {&hf_docsis_cwt_status
,
12300 {"Status", "docsis_cwt.status",
12301 FT_UINT8
, BASE_DEC
, VALS(cwt_status_vals
), 0x0, NULL
, HFILL
}
12303 {&hf_docsis_cwt_tlv
,
12304 {"TLV", "docsis_cwt.tlv",
12305 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0, NULL
, HFILL
}
12307 {&hf_docsis_cwt_tlv_type
,
12308 {"Type", "docsis_cwt.tlv.type",
12309 FT_UINT8
, BASE_DEC
, VALS(cwt_tlv_vals
), 0x0, NULL
, HFILL
}
12311 {&hf_docsis_cwt_tlv_length
,
12312 {"Length", "docsis_cwt.tlv.length",
12313 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12315 {&hf_docsis_cwt_phase_rotation
,
12316 {"Phase Rotation", "docsis_cwt.phase_rotation",
12317 FT_UINT8
, BASE_DEC
, VALS(cwt_phase_rotation_vals
), 0x0,
12320 {&hf_docsis_cwt_max_duration
,
12321 {"Maximum Duration", "docsis_cwt.max_duration",
12322 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_milliseconds
), 0x0,
12325 {&hf_docsis_cwt_us_encodings_tlv
,
12326 {"TLV", "docsis_cwt.us_encodings.tlv",
12327 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
12330 {&hf_docsis_cwt_us_encodings_tlv_type
,
12331 {"Type", "docsis_cwt.us_encodings.tlv.type",
12332 FT_UINT8
, BASE_DEC
, VALS(cwt_us_encodings_tlv_vals
), 0x0,
12335 {&hf_docsis_cwt_us_encodings_tlv_length
,
12336 {"Length", "docsis_cwt.us_encodings.tlv.length",
12337 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12340 {&hf_docsis_cwt_us_encodings_cid
,
12341 {"Extended Upstream Channel ID", "docsis_cwt.us_encodings.cid",
12342 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12345 {&hf_docsis_cwt_us_encodings_sc_index
,
12346 {"Upstream Subcarrier Index", "docsis_cwt.us_encodings.sc_index",
12347 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12350 {&hf_docsis_cwt_us_encodings_power_boost
,
12351 {"CWT Power Boost", "docsis_cwt.us_encodings.power_boost",
12352 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(fourth_db
), 0x0,
12355 /* ECT-REQ and ECT-RSP */
12356 {&hf_docsis_ect_trans_id
,
12357 {"Transaction ID", "docsis_ect.trans_id",
12358 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(ect_trans_id_val
), 0x0,
12361 {&hf_docsis_ect_rsp_code
,
12362 {"Response Code", "docsis_ect.rsp_code",
12363 FT_UINT8
, BASE_DEC
, VALS(ect_rsp_code_vals
), 0x0,
12366 {&hf_docsis_ect_tlv
,
12367 {"TLV", "docsis_ect.tlv",
12368 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
12371 {&hf_docsis_ect_tlv_type
,
12372 {"Type", "docsis_ect.tlv.type",
12373 FT_UINT8
, BASE_DEC
, VALS(ect_tlv_vals
), 0x0,
12376 {&hf_docsis_ect_tlv_length
,
12377 {"Length", "docsis_ect.tlv.length",
12378 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12381 {&hf_docsis_ect_control_tlv
,
12382 {"TLV", "docsis_ect.control.tlv",
12383 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
12386 {&hf_docsis_ect_control_tlv_type
,
12387 {"Type", "docsis_ect.control.tlv.type",
12388 FT_UINT8
, BASE_DEC
, VALS(ect_control_tlv_vals
), 0x0,
12391 {&hf_docsis_ect_control_tlv_length
,
12392 {"Length", "docsis_ect.control.tlv.length",
12393 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12396 {&hf_docsis_ect_control_subband_direction
,
12397 {"Direction", "docsis_ect.control.subband_direction",
12398 FT_UINT8
, BASE_DEC
, VALS(rba_subband_direction_vals
), 0x0,
12401 {&hf_docsis_ect_control_status
,
12402 {"Training Status", "docsis_ect.control.status",
12403 FT_UINT8
, BASE_DEC
, VALS(ect_control_status_vals
), 0x0,
12406 {&hf_docsis_ect_control_method_tlv
,
12407 {"TLV", "docsis_ect.control.method.tlv",
12408 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
12411 {&hf_docsis_ect_control_method_tlv_type
,
12412 {"Type", "docsis_ect.control.method.tlv.type",
12413 FT_UINT8
, BASE_DEC
, VALS(ect_control_method_tlv_vals
), 0x0,
12416 {&hf_docsis_ect_control_method_tlv_length
,
12417 {"Length", "docsis_ect.control.method.tlv.length",
12418 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12421 {&hf_docsis_ect_control_method_fg_tlv
,
12422 {"TLV", "docsis_ect.control.method.fg.tlv",
12423 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
12426 {&hf_docsis_ect_control_method_fg_tlv_type
,
12427 {"Type", "docsis_ect.control.method.fg.tlv.type",
12428 FT_UINT8
, BASE_DEC
, VALS(ect_control_method_fg_tlv_vals
), 0x0,
12431 {&hf_docsis_ect_control_method_fg_tlv_length
,
12432 {"Length", "docsis_ect.control.method.fg.tlv.length",
12433 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12436 {&hf_docsis_ect_control_method_fg_duration
,
12437 {"Duration", "docsis_ect.control.method.fg.duration",
12438 FT_UINT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_symbols
), 0x0,
12441 {&hf_docsis_ect_control_method_fg_periodicity
,
12442 {"Periodicity", "docsis_ect.control.method.fg.periodicity",
12443 FT_UINT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_seconds
), 0x0,
12446 {&hf_docsis_ect_control_method_fg_expiration_time
,
12447 {"Expiration Time", "docsis_ect.control.method.fg.expiration_time",
12448 FT_UINT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_seconds
), 0x0,
12451 {&hf_docsis_ect_control_method_fg_ds_zbl
,
12452 {"Downstream Zero Bit Loading", "docsis_ect.control.method.fg.ds_zbl",
12453 FT_UINT8
, BASE_DEC
, VALS(ect_ds_zbl_vals
), 0x0,
12456 {&hf_docsis_ect_control_method_bg_tlv
,
12457 {"TLV", "docsis_ect.control.method.bg.tlv",
12458 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
12461 {&hf_docsis_ect_control_method_bg_tlv_type
,
12462 {"Type", "docsis_ect.control.method.bg.tlv.type",
12463 FT_UINT8
, BASE_DEC
, VALS(ect_control_method_bg_tlv_vals
), 0x0,
12466 {&hf_docsis_ect_control_method_bg_tlv_length
,
12467 {"Length", "docsis_ect.control.method.bg.tlv.length",
12468 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12471 {&hf_docsis_ect_control_method_bg_duration
,
12472 {"Duration", "docsis_ect.control.method.bg.duration",
12473 FT_UINT16
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_milliseconds
), 0x0,
12476 {&hf_docsis_ect_control_method_bg_periodicity
,
12477 {"Periodicity", "docsis_ect.control.method.bg.periodicity",
12478 FT_UINT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_seconds
), 0x0,
12481 {&hf_docsis_ect_control_method_bg_expiration_time
,
12482 {"Expiration Time", "docsis_ect.control.method.bg.expiration_time",
12483 FT_UINT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_seconds
), 0x0,
12486 {&hf_docsis_ect_control_method_bg_start_time
,
12487 {"Start Time", "docsis_ect.control.method.bg.start_time",
12488 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
12491 {&hf_docsis_ect_control_partial_service_tlv
,
12492 {"TLV", "docsis_ect.control.partial_service.tlv",
12493 FT_BYTES
, BASE_NO_DISPLAY_VALUE
, NULL
, 0x0,
12496 {&hf_docsis_ect_control_partial_service_tlv_type
,
12497 {"Type", "docsis_ect.control.partial_service.tlv.type",
12498 FT_UINT8
, BASE_DEC
, VALS(ect_control_partial_service_tlv_vals
), 0x0,
12501 {&hf_docsis_ect_control_partial_service_tlv_length
,
12502 {"Length", "docsis_ect.control.partial_service.tlv.length",
12503 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12506 {&hf_docsis_ect_control_partial_service_dcid
,
12507 {"DCID", "docsis_ect.control.partial_service.dcid",
12508 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12511 {&hf_docsis_ect_control_partial_service_ucid
,
12512 {"UCID", "docsis_ect.control.partial_service.ucid",
12513 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12516 {&hf_docsis_ect_control_deferral_time
,
12517 {"Deferral Time", "docsis_ect.control.deferral_time",
12518 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(ect_deferral_time_val
), 0x0,
12521 {&hf_docsis_ect_control_rxmer_duration
,
12522 {"RxMER Duration", "docsis_ect.control.rxmer_duration",
12523 FT_UINT8
, BASE_DEC
|BASE_UNIT_STRING
, UNS(&units_symbols
), 0x0,
12527 {&hf_docsis_dpr_carrier
,
12528 {"Carrier DCID", "docsis_dpr.carrier",
12529 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12531 {&hf_docsis_dpr_dcid
,
12532 {"Protected DCID", "docsis_dpr.dcid",
12533 FT_UINT8
, BASE_DEC
, NULL
, 0x0, NULL
, HFILL
}
12535 {&hf_docsis_dpr_tg_id
,
12536 {"Protected TG ID", "docsis_dpr.tg_id",
12537 FT_UINT8
, BASE_DEC
|BASE_RANGE_STRING
, RVALS(dpr_tg_id_vals
), 0x0,
12540 {&hf_docsis_dpr_reserved
,
12541 {"Reserved", "docsis_dpr.reserved",
12542 FT_UINT8
, BASE_HEX
, NULL
, 0x0, NULL
, HFILL
}
12544 {&hf_docsis_dpr_start_time
,
12545 {"Start time", "docsis_dpr.start_time",
12546 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(d30_time_ticks
), 0x0,
12549 {&hf_docsis_dpr_duration
,
12550 {"Duration", "docsis_dpr.duration",
12551 FT_UINT32
, BASE_CUSTOM
, CF_FUNC(d30_time_ticks
), 0x0,
12554 /* MAC Management */
12555 {&hf_docsis_mgt_upstream_chid
,
12556 {"Upstream Channel ID", "docsis_mgmt.upchid",
12557 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12560 {&hf_docsis_mgt_down_chid
,
12561 {"Downstream Channel ID", "docsis_mgmt.downchid",
12562 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12563 "Management Message", HFILL
}
12565 {&hf_docsis_mgt_tranid
,
12566 {"Transaction ID", "docsis_mgmt.tranid",
12567 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12570 {&hf_docsis_mgt_dst_addr
,
12571 {"Destination Address", "docsis_mgmt.dst",
12572 FT_ETHER
, BASE_NONE
, NULL
, 0x0,
12575 {&hf_docsis_mgt_src_addr
,
12576 {"Source Address", "docsis_mgmt.src",
12577 FT_ETHER
, BASE_NONE
, NULL
, 0x0,
12580 {&hf_docsis_mgt_msg_len
,
12581 {"Message Length - DSAP to End (Bytes)", "docsis_mgmt.msglen",
12582 FT_UINT16
, BASE_DEC
, NULL
, 0x0,
12585 {&hf_docsis_mgt_dsap
,
12586 {"DSAP", "docsis_mgmt.dsap",
12587 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
12588 "Destination SAP", HFILL
}
12590 {&hf_docsis_mgt_ssap
,
12591 {"SSAP", "docsis_mgmt.ssap",
12592 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
12593 "Source SAP", HFILL
}
12595 {&hf_docsis_mgt_30_transmit_power
,
12596 {"Upstream Transmit Power, sent to 3.0 CMTS", "docsis_mgmt.30_transmit_power",
12597 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(fourth_db
), 0x0,
12600 {&hf_docsis_mgt_31_transmit_power
,
12601 {"Upstream Transmit Power, sent to 3.1 CMTS", "docsis_mgmt.31_transmit_power",
12602 FT_UINT16
, BASE_CUSTOM
, CF_FUNC(fourth_db
), 0x01FF,
12605 {&hf_docsis_mgt_40_transmit_power
,
12606 {"Upstream Transmit Power, sent to 4.0 CMTS", "docsis_mgmt.40_transmit_power",
12607 FT_INT16
, BASE_CUSTOM
, CF_FUNC(fourth_db
), 0x01FF,
12610 {&hf_docsis_mgt_control
,
12611 {"Control", "docsis_mgmt.control",
12612 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
12615 {&hf_docsis_mgt_version
,
12616 {"Version", "docsis_mgmt.version",
12617 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12620 {&hf_docsis_mgt_type
,
12621 {"Type", "docsis_mgmt.type",
12622 FT_UINT8
, BASE_DEC
, VALS (mgmt_type_vals
), 0x0,
12625 {&hf_docsis_mgt_rsvd
,
12626 {"Reserved", "docsis_mgmt.rsvd",
12627 FT_UINT8
, BASE_DEC
, NULL
, 0x0,
12630 {&hf_docsis_mgt_multipart
,
12631 {"Multipart", "docsis_mgmt.multipart",
12632 FT_UINT8
, BASE_HEX
, NULL
, 0x0,
12635 {&hf_docsis_mgt_multipart_number_of_fragments
,
12636 {"Multipart - Number of Fragments", "docsis_mgmt.multipart.number_of_fragments",
12637 FT_UINT8
, BASE_CUSTOM
, CF_FUNC(multipart_number_of_fragments
), 0xF0,
12640 {&hf_docsis_mgt_multipart_fragment_sequence_number
,
12641 {"Multipart - Fragment Sequence Number", "docsis_mgmt.multipart.fragment_sequence_number",
12642 FT_UINT8
, BASE_DEC
, NULL
, 0x0F,
12645 { &hf_docsis_tlv_fragment_overlap
,
12646 { "Fragment overlap", "docsis_mgmt.tlv.fragment.overlap",
12647 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
12648 "Fragment overlaps with other fragments", HFILL
}
12650 { &hf_docsis_tlv_fragment_overlap_conflict
,
12651 { "Conflicting data in fragment overlap", "docsis_mgmt.tlv.fragment.overlap.conflict",
12652 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
12653 "Overlapping fragments contained conflicting data", HFILL
}
12655 { &hf_docsis_tlv_fragment_multiple_tails
,
12656 { "Multiple tail fragments found", "docsis_mgmt.tlv.fragment.multipletails",
12657 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
12658 "Several tails were found when defragmenting the packet", HFILL
}
12660 { &hf_docsis_tlv_fragment_too_long_fragment
,
12661 { "Fragment too long", "docsis_mgmt.tlv.fragment.toolongfragment",
12662 FT_BOOLEAN
, BASE_NONE
, NULL
, 0x0,
12663 "Fragment contained data past end of packet", HFILL
}
12665 { &hf_docsis_tlv_fragment_error
,
12666 { "Defragmentation error", "docsis_mgmt.tlv.fragment.error",
12667 FT_FRAMENUM
, BASE_NONE
, NULL
, 0x0,
12668 "Defragmentation error due to illegal fragments", HFILL
}
12670 { &hf_docsis_tlv_fragment_count
,
12671 { "Fragment count", "docsis_mgmt.tlv.fragment.count",
12672 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
12675 { &hf_docsis_tlv_fragment
,
12676 { "TLV Fragment", "docsis_mgmt.tlv.fragment",
12677 FT_FRAMENUM
, BASE_NONE
, NULL
, 0x0,
12680 { &hf_docsis_tlv_fragments
,
12681 { "TLV Fragments", "docsis_mgmt.tlv.fragments",
12682 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
12685 { &hf_docsis_tlv_reassembled_in
,
12686 { "Reassembled TLV in frame", "docsis_mgmt.tlv.reassembled_in",
12687 FT_FRAMENUM
, BASE_NONE
, NULL
, 0x0,
12688 "This TLV packet is reassembled in this frame", HFILL
}
12690 { &hf_docsis_tlv_reassembled_length
,
12691 { "Reassembled TLV length", "docsis_mgmt.tlv.reassembled.length",
12692 FT_UINT32
, BASE_DEC
, NULL
, 0x0,
12693 "The total length of the reassembled payload", HFILL
}
12695 { &hf_docsis_tlv_reassembled_data
,
12696 { "Reassembled TLV data", "docsis_mgmt.tlv.reassembled.data",
12697 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
12698 "The reassembled payload", HFILL
}
12700 { &hf_docsis_tlv_reassembled
,
12701 { "Reassembled TLV", "docsis_mgmt.tlv.reassembled",
12702 FT_BYTES
, BASE_NONE
, NULL
, 0x0,
12707 static int *ett
[] = {
12711 &ett_docsis_burst_tlv
,
12713 &ett_docsis_map_ie
,
12714 &ett_docsis_map_probe_ie
,
12715 &ett_docsis_rngreq
,
12716 &ett_docsis_rngrsp
,
12717 &ett_docsis_rngrsptlv
,
12718 &ett_docsis_rngrsp_tlv_transmit_equalization_encodings
,
12719 &ett_docsis_rngrsp_tlv_transmit_equalization_encodings_coef
,
12720 &ett_docsis_rngrsp_tlv_commanded_power
,
12721 &ett_docsis_rngrsp_tlv_commanded_power_subtlv
,
12722 &ett_docsis_regreq
,
12723 &ett_docsis_regrsp
,
12724 &ett_docsis_uccreq
,
12725 &ett_docsis_uccrsp
,
12726 &ett_docsis_bpkmreq
,
12727 &ett_docsis_bpkmrsp
,
12728 &ett_docsis_bpkmattr
,
12729 &ett_docsis_bpkmattr_tlv
,
12730 &ett_docsis_bpkmattr_cmid
,
12731 &ett_docsis_bpkmattr_scap
,
12732 &ett_docsis_bpkmattr_crypto_suite
,
12733 &ett_docsis_bpkmattr_crypto_suite_list
,
12734 &ett_docsis_bpkmattr_allowed_bpi_versions
,
12735 &ett_docsis_bpkmattr_ocsp_responses
,
12736 &ett_docsis_bpkmattr_cmts_designation
,
12737 &ett_docsis_bpkmattr_tekp
,
12738 &ett_docsis_bpkmattr_sadsc
,
12739 &ett_docsis_bpkmattr_saqry
,
12740 &ett_docsis_bpkmattr_dnld
,
12741 &ett_docsis_regack
,
12742 &ett_docsis_dsareq
,
12743 &ett_docsis_dsarsp
,
12744 &ett_docsis_dsaack
,
12745 &ett_docsis_dscreq
,
12746 &ett_docsis_dscrsp
,
12747 &ett_docsis_dscack
,
12748 &ett_docsis_dsdreq
,
12749 &ett_docsis_dsdrsp
,
12750 &ett_docsis_dccreq
,
12751 &ett_docsis_dccreq_sf_sub
,
12752 &ett_docsis_dccreq_ds_params
,
12753 &ett_docsis_dccreq_tlv
,
12754 &ett_docsis_dccrsp
,
12755 &ett_docsis_dccrsp_cm_jump_time
,
12756 &ett_docsis_dccrsp_tlv
,
12757 &ett_docsis_dccack
,
12758 &ett_docsis_dccack_tlv
,
12759 &ett_docsis_intrngreq
,
12761 &ett_docsis_dcd_cfr
,
12762 &ett_docsis_dcd_cfr_ip
,
12763 &ett_docsis_dcd_rule
,
12764 &ett_docsis_dcd_clid
,
12765 &ett_docsis_dcd_cfg
,
12766 &ett_docsis_dcd_tlv
,
12770 &ett_docsis_mdd_cm_status_ev_en_for_docsis31
,
12771 &ett_docsis_mdd_ds_active_channel_list
,
12772 &ett_docsis_mdd_ds_service_group
,
12773 &ett_docsis_mdd_channel_profile_reporting_control
,
12774 &ett_docsis_mdd_ip_init_param
,
12775 &ett_docsis_mdd_up_active_channel_list
,
12776 &ett_docsis_mdd_upstream_active_channel_list_dschids_maps_ucds_dschids
,
12777 &ett_docsis_mdd_cm_status_event_control
,
12778 &ett_docsis_mdd_dsg_da_to_dsid
,
12779 &ett_docsis_mdd_docsis_version
,
12780 &ett_docsis_mdd_docsis_version_tlv
,
12781 &ett_docsis_mdd_diplexer_band_edge
,
12782 &ett_docsis_mdd_advanced_band_plan
,
12783 &ett_docsis_mdd_bpi_plus
,
12784 &ett_docsis_bintrngreq
,
12785 &ett_docsis_dbcreq
,
12786 &ett_docsis_dbcrsp
,
12787 &ett_docsis_dbcack
,
12788 &ett_docsis_dpvreq
,
12789 &ett_docsis_dpvrsp
,
12790 &ett_docsis_cmstatus
,
12791 &ett_docsis_cmstatus_tlv
,
12792 &ett_docsis_cmstatus_tlvtlv
,
12793 &ett_docsis_cmstatus_status_event_tlv
,
12794 &ett_docsis_cmstatus_status_event_tlvtlv
,
12795 &ett_docsis_cmstatusack
,
12796 &ett_docsis_cmctrlreq
,
12797 &ett_docsis_cmctrlreq_tlv
,
12798 &ett_docsis_cmctrlreq_tlvtlv
,
12799 &ett_docsis_cmctrl_tlv_us_event
,
12800 &ett_docsis_cmctrl_tlv_ds_event
,
12801 &ett_docsis_cmctrlrsp
,
12802 &ett_docsis_regreqmp
,
12803 &ett_docsis_regrspmp
,
12806 &ett_docsis_emrsp_tlv
,
12807 &ett_docsis_emrsp_tlvtlv
,
12809 &ett_docsis_ocd_tlv
,
12810 &ett_docsis_ocd_tlvtlv
,
12812 &ett_docsis_dpd_tlv
,
12813 &ett_docsis_dpd_tlvtlv
,
12814 &ett_docsis_dpd_tlv_subcarrier_assignment
,
12815 &ett_docsis_dpd_tlv_subcarrier_assignment_vector
,
12816 &ett_docsis_optreq
,
12817 &ett_docsis_optreq_tlv
,
12818 &ett_docsis_optreq_tlvtlv
,
12819 &ett_docsis_optreq_tlv_rxmer_thresh_params
,
12820 &ett_docsis_optreq_tlv_rxmer_thresh_params_tlv
,
12821 &ett_docsis_optreq_tlv_trigger_definition_params
,
12822 &ett_docsis_optreq_tlv_trigger_definition_params_tlv
,
12823 &ett_docsis_optrsp
,
12824 &ett_docsis_optrsp_tlv
,
12825 &ett_docsis_optrsp_rxmer_tlv
,
12826 &ett_docsis_optrsp_rxmer_subcarrier_tlv
,
12827 &ett_docsis_optrsp_data_cw_tlv
,
12828 &ett_docsis_optrsp_ncp_fields_tlv
,
12829 &ett_docsis_optack
,
12831 &ett_docsis_rba_control_byte
,
12832 &ett_docsis_cwt_req
,
12833 &ett_docsis_cwt_rsp
,
12834 &ett_docsis_cwt_tlv
,
12835 &ett_docsis_cwt_subtlv
,
12836 &ett_docsis_ect_req
,
12837 &ett_docsis_ect_rsp
,
12838 &ett_docsis_ect_tlv
,
12839 &ett_docsis_ext_rngreq
,
12843 &ett_docsis_tlv_fragment
,
12844 &ett_docsis_tlv_fragments
,
12845 &ett_docsis_tlv_reassembled
12848 static ei_register_info ei
[] = {
12849 {&ei_docsis_mgmt_tlvlen_bad
, {"docsis_mgmt.tlvlenbad", PI_MALFORMED
, PI_ERROR
, "Bad TLV length", EXPFILL
}},
12850 {&ei_docsis_mgmt_tlvtype_unknown
, { "docsis_mgmt.tlvtypeunknown", PI_PROTOCOL
, PI_WARN
, "Unknown TLV type", EXPFILL
}},
12851 {&ei_docsis_mgmt_version_unknown
, { "docsis_mgmt.versionunknown", PI_PROTOCOL
, PI_WARN
, "Unknown mac management version", EXPFILL
}},
12852 {&ei_docsis_mgmt_opt_req_trigger_def_measure_duration
, { "docsis_mgmt.optreq_trigger_def.wrongduration", PI_PROTOCOL
, PI_WARN
, "Wrong duration of FDX-triggered OPT-REQ", EXPFILL
}},
12853 {&ei_docsis_cwt_out_of_range
, {"docsis_cwt.out_of_range", PI_PROTOCOL
, PI_WARN
, "CWT value out-of-range", EXPFILL
}},
12854 {&ei_docsis_ect_control_out_of_range
, {"docsis_ect.control.out_of_range", PI_PROTOCOL
, PI_WARN
, "ECT Control value out-of-range", EXPFILL
}},
12855 {&ei_docsis_dpr_out_of_range
, {"docsis_dpr.out_of_range", PI_PROTOCOL
, PI_WARN
, "DPR Duration out-of-range", EXPFILL
}}
12858 expert_module_t
* expert_docsis_mgmt
;
12860 proto_docsis_mgmt
= proto_register_protocol ("DOCSIS MAC Management", "DOCSIS MAC MGMT", "docsis_mgmt");
12862 proto_register_field_array (proto_docsis_mgmt
, hf
, array_length (hf
));
12863 proto_register_subtree_array (ett
, array_length (ett
));
12864 expert_docsis_mgmt
= expert_register_protocol(proto_docsis_mgmt
);
12865 expert_register_field_array(expert_docsis_mgmt
, ei
, array_length(ei
));
12867 docsis_mgmt_dissector_table
= register_dissector_table ("docsis_mgmt",
12868 "DOCSIS MAC Management", proto_docsis_mgmt
,
12869 FT_UINT8
, BASE_DEC
);
12871 /* Register MAC Management commands as their own protocols so we can get the name of the option */
12872 proto_docsis_sync
= proto_register_protocol_in_name_only("DOCSIS Synchronisation Message", "SYNC Message", "docsis_sync", proto_docsis_mgmt
, FT_BYTES
);
12873 proto_docsis_ucd
= proto_register_protocol_in_name_only("DOCSIS Upstream Channel Descriptor", "DOCSIS UCD", "docsis_ucd", proto_docsis_mgmt
, FT_BYTES
);
12874 proto_docsis_map_v1
= proto_register_protocol_in_name_only("DOCSIS Upstream Bandwidth Allocation - version 1", "DOCSIS MAP", "docsis_map", proto_docsis_mgmt
, FT_BYTES
);
12875 proto_docsis_map_v5
= proto_register_protocol_in_name_only("DOCSIS Upstream Bandwidth Allocation - version 5", "DOCSIS MAP", "docsis_map", proto_docsis_mgmt
, FT_BYTES
);
12876 proto_docsis_rngreq
= proto_register_protocol_in_name_only("DOCSIS Range Request Message", "DOCSIS RNG-REQ", "docsis_rngreq", proto_docsis_mgmt
, FT_BYTES
);
12877 proto_docsis_rngrsp
= proto_register_protocol_in_name_only("DOCSIS Ranging Response", "DOCSIS RNG-RSP", "docsis_rngrsp", proto_docsis_mgmt
, FT_BYTES
);
12878 proto_docsis_regreq
= proto_register_protocol_in_name_only("DOCSIS Registration Requests", "DOCSIS REG-REQ", "docsis_regreq", proto_docsis_mgmt
, FT_BYTES
);
12879 proto_docsis_regrsp
= proto_register_protocol_in_name_only("DOCSIS Registration Responses", "DOCSIS REG-RSP", "docsis_regrsp", proto_docsis_mgmt
, FT_BYTES
);
12880 proto_docsis_uccreq
= proto_register_protocol_in_name_only("DOCSIS Upstream Channel Change Request", "DOCSIS UCC-REQ", "docsis_uccreq", proto_docsis_mgmt
, FT_BYTES
);
12881 proto_docsis_uccrsp
= proto_register_protocol_in_name_only("DOCSIS Upstream Channel Change Response", "DOCSIS UCC-RSP", "docsis_uccrsp", proto_docsis_mgmt
, FT_BYTES
);
12882 proto_docsis_bpkmreq
= proto_register_protocol_in_name_only("DOCSIS Baseline Privacy Key Management Request", "DOCSIS BPKM-REQ", "docsis_bpkm.req", proto_docsis_mgmt
, FT_BYTES
);
12883 proto_docsis_bpkmrsp
= proto_register_protocol_in_name_only("DOCSIS Baseline Privacy Key Management Response", "DOCSIS BPKM-RSP", "docsis_bpkm.rsp", proto_docsis_mgmt
, FT_BYTES
);
12884 proto_docsis_regack
= proto_register_protocol_in_name_only("DOCSIS Registration Acknowledge", "DOCSIS REG-ACK", "docsis_regack", proto_docsis_mgmt
, FT_BYTES
);
12885 proto_docsis_dsareq
= proto_register_protocol_in_name_only("DOCSIS Dynamic Service Addition Request", "DOCSIS DSA-REQ", "docsis_dsareq", proto_docsis_mgmt
, FT_BYTES
);
12886 proto_docsis_dsarsp
= proto_register_protocol_in_name_only("DOCSIS Dynamic Service Addition Response", "DOCSIS DSA-RSP", "docsis_dsarsp", proto_docsis_mgmt
, FT_BYTES
);
12887 proto_docsis_dsaack
= proto_register_protocol_in_name_only("DOCSIS Dynamic Service Addition Acknowledge", "DOCSIS DSA-ACK", "docsis_dsaack", proto_docsis_mgmt
, FT_BYTES
);
12888 proto_docsis_dscreq
= proto_register_protocol_in_name_only("DOCSIS Dynamic Service Change Request", "DOCSIS DSC-REQ", "docsis_dscreq", proto_docsis_mgmt
, FT_BYTES
);
12889 proto_docsis_dscrsp
= proto_register_protocol_in_name_only("DOCSIS Dynamic Service Change Response", "DOCSIS DSC-RSP", "docsis_dscrsp", proto_docsis_mgmt
, FT_BYTES
);
12890 proto_docsis_dscack
= proto_register_protocol_in_name_only("DOCSIS Dynamic Service Change Acknowledge", "DOCSIS DSC-ACK", "docsis_dscack", proto_docsis_mgmt
, FT_BYTES
);
12891 proto_docsis_dsdreq
= proto_register_protocol_in_name_only("DOCSIS Dynamic Service Delete Request", "DOCSIS DSD-REQ", "docsis_dsdreq", proto_docsis_mgmt
, FT_BYTES
);
12892 proto_docsis_dsdrsp
= proto_register_protocol_in_name_only("DOCSIS Dynamic Service Delete Response", "DOCSIS DSD-RSP", "docsis_dsdrsp", proto_docsis_mgmt
, FT_BYTES
);
12893 proto_docsis_dccreq
= proto_register_protocol_in_name_only("DOCSIS Downstream Channel Change Request", "DOCSIS DCC-REQ", "docsis_dccreq", proto_docsis_mgmt
, FT_BYTES
);
12894 proto_docsis_dccrsp
= proto_register_protocol_in_name_only("DOCSIS Downstream Channel Change Response", "DOCSIS DCC-RSP", "docsis_dccrsp", proto_docsis_mgmt
, FT_BYTES
);
12895 proto_docsis_dccack
= proto_register_protocol_in_name_only("DOCSIS Downstream Channel Change Acknowledge", "DOCSIS DCC-ACK", "docsis_dccack", proto_docsis_mgmt
, FT_BYTES
);
12896 proto_docsis_type29ucd
= proto_register_protocol_in_name_only("DOCSIS Upstream Channel Descriptor Type 29", "DOCSIS type29ucd", "docsis_type29ucd", proto_docsis_mgmt
, FT_BYTES
);
12897 proto_docsis_intrngreq
= proto_register_protocol_in_name_only("DOCSIS Initial Ranging Message", "DOCSIS INT-RNG-REQ", "docsis_intrngreq", proto_docsis_mgmt
, FT_BYTES
);
12898 proto_docsis_dcd
= proto_register_protocol_in_name_only("DOCSIS Downstream Channel Descriptor", "DOCSIS DCD", "docsis_dcd", proto_docsis_mgmt
, FT_BYTES
);
12899 proto_docsis_mdd
= proto_register_protocol_in_name_only("DOCSIS MAC Domain Description", "DOCSIS MDD", "docsis_mdd", proto_docsis_mgmt
, FT_BYTES
);
12900 proto_docsis_bintrngreq
= proto_register_protocol_in_name_only("DOCSIS Bonded Initial Ranging Message", "DOCSIS B-INT-RNG-REQ", "docsis_bintrngreq", proto_docsis_mgmt
, FT_BYTES
);
12901 proto_docsis_type35ucd
= proto_register_protocol_in_name_only("DOCSIS Upstream Channel Descriptor Type 35", "DOCSIS type35ucd", "docsis_type35ucd", proto_docsis_mgmt
, FT_BYTES
);
12902 proto_docsis_dbcreq
= proto_register_protocol_in_name_only("DOCSIS Dynamic Bonding Change Request", "DOCSIS DBC-REQ", "docsis_dbcreq", proto_docsis_mgmt
, FT_BYTES
);
12903 proto_docsis_dbcrsp
= proto_register_protocol_in_name_only("DOCSIS Dynamic Bonding Change Response", "DOCSIS DBC-RSP", "docsis_dbcrsp", proto_docsis_mgmt
, FT_BYTES
);
12904 proto_docsis_dbcack
= proto_register_protocol_in_name_only("DOCSIS Dynamic Bonding Change Acknowledge", "DOCSIS DBC-ACK", "docsis_dbcack", proto_docsis_mgmt
, FT_BYTES
);
12905 proto_docsis_dpvreq
= proto_register_protocol_in_name_only("DOCSIS Path Verify Request", "DOCSIS DPV-REQ", "docsis_dpv.req", proto_docsis_mgmt
, FT_BYTES
);
12906 proto_docsis_dpvrsp
= proto_register_protocol_in_name_only("DOCSIS Path Verify Response", "DOCSIS DPV-RSP", "docsis_dpv.rsp", proto_docsis_mgmt
, FT_BYTES
);
12907 proto_docsis_cmstatus
= proto_register_protocol_in_name_only("DOCSIS CM-STATUS Report", "DOCSIS CM-STATUS", "docsis_cmstatus", proto_docsis_mgmt
, FT_BYTES
);
12908 proto_docsis_cmstatusack
= proto_register_protocol_in_name_only("DOCSIS Status Report Acknowledge", "DOCSIS CM-STATUS-ACK", "docsis_cmstatusack", proto_docsis_mgmt
, FT_BYTES
);
12909 proto_docsis_cmctrlreq
= proto_register_protocol_in_name_only("DOCSIS CM Control Request", "DOCSIS CM-CTRL-REQ", "docsis_cmctrl.req", proto_docsis_mgmt
, FT_BYTES
);
12910 proto_docsis_cmctrlrsp
= proto_register_protocol_in_name_only("DOCSIS CM Control Response", "DOCSIS CM-CTRL-RSP", "docsis_cmctrlrsp", proto_docsis_mgmt
, FT_BYTES
);
12911 proto_docsis_regreqmp
= proto_register_protocol_in_name_only("DOCSIS Registration Request Multipart", "DOCSIS Reg-Req-Mp", "docsis_regreqmp", proto_docsis_mgmt
, FT_BYTES
);
12912 proto_docsis_regrspmp
= proto_register_protocol_in_name_only("DOCSIS Registration Response Multipart", "DOCSIS Reg-Rsp-Mp", "docsis_regrspmp", proto_docsis_mgmt
, FT_BYTES
);
12913 proto_docsis_emreq
= proto_register_protocol_in_name_only("DOCSIS Energy Management Request", "DOCSIS EM-REQ", "docsis_emreq", proto_docsis_mgmt
, FT_BYTES
);
12914 proto_docsis_emrsp
= proto_register_protocol_in_name_only("DOCSIS Energy Management Response", "DOCSIS EM-RSP", "docsis_emrsp", proto_docsis_mgmt
, FT_BYTES
);
12915 proto_docsis_ocd
= proto_register_protocol_in_name_only("DOCSIS OFDM Channel Descriptor", "DOCSIS OCD", "docsis_ocd", proto_docsis_mgmt
, FT_BYTES
);
12916 proto_docsis_dpd
= proto_register_protocol_in_name_only("DOCSIS Downstream Profile Descriptor", "DOCSIS DPD", "docsis_dpd", proto_docsis_mgmt
, FT_BYTES
);
12917 proto_docsis_type51ucd
= proto_register_protocol_in_name_only("DOCSIS Upstream Channel Descriptor Type 51", "DOCSIS type51ucd", "docsis_type51ucd", proto_docsis_mgmt
, FT_BYTES
);
12918 proto_docsis_optreq
= proto_register_protocol_in_name_only("OFDM Downstream Profile Test Request", "DOCSIS OPT-REQ", "docsis_optreq", proto_docsis_mgmt
, FT_BYTES
);
12919 proto_docsis_optrsp
= proto_register_protocol_in_name_only("OFDM Downstream Profile Test Response", "DOCSIS OPT-RSP", "docsis_optrsp", proto_docsis_mgmt
, FT_BYTES
);
12920 proto_docsis_optack
= proto_register_protocol_in_name_only("OFDM Downstream Profile Test Acknowledge", "DOCSIS OPT-ACK", "docsis_optack", proto_docsis_mgmt
, FT_BYTES
);
12921 proto_docsis_rba
= proto_register_protocol_in_name_only("DOCSIS Resource Block Assignment Message", "DOCSIS RBA", "docsis_rba", proto_docsis_mgmt
, FT_BYTES
);
12922 proto_docsis_cwt_req
= proto_register_protocol_in_name_only("DOCSIS IG Discovery CW Test Request", "DOCSIS CWT-REQ", "docsis_cwt.req", proto_docsis_mgmt
, FT_BYTES
);
12923 proto_docsis_cwt_rsp
= proto_register_protocol_in_name_only("DOCSIS IG Discovery CW Test Response", "DOCSIS CWT-RSP", "docsis_cwt.rsp", proto_docsis_mgmt
, FT_BYTES
);
12924 proto_docsis_ect_req
= proto_register_protocol_in_name_only("DOCSIS CM Echo Cancellation Training Request", "DOCSIS ECT-REQ", "docsis_ect.req", proto_docsis_mgmt
, FT_BYTES
);
12925 proto_docsis_ect_rsp
= proto_register_protocol_in_name_only("DOCSIS CM Echo Cancellation Training Response", "DOCSIS ECT-RSP", "docsis_ect.rsp", proto_docsis_mgmt
, FT_BYTES
);
12926 proto_docsis_ext_rngreq
= proto_register_protocol_in_name_only("DOCSIS Extended Range Request Message", "DOCSIS EXT-RNG-REQ", "docsis_ext_rngreq", proto_docsis_mgmt
, FT_BYTES
);
12927 proto_docsis_dpr
= proto_register_protocol_in_name_only("DOCSIS Downstream Protection", "DOCSIS DPR", "docsis_dpr", proto_docsis_mgmt
, FT_BYTES
);
12929 register_dissector ("docsis_mgmt", dissect_macmgmt
, proto_docsis_mgmt
);
12930 docsis_ucd_handle
= register_dissector ("docsis_ucd", dissect_ucd
, proto_docsis_ucd
);
12931 docsis_rba_handle
= register_dissector ("docsis_rba", dissect_rba
, proto_docsis_rba
);
12935 proto_reg_handoff_docsis_mgmt (void)
12937 /* Create dissection function handles for all MAC Management commands */
12938 dissector_add_uint ("docsis_mgmt", MGT_SYNC
, create_dissector_handle( dissect_sync
, proto_docsis_sync
));
12939 dissector_add_uint ("docsis_mgmt", MGT_UCD
, docsis_ucd_handle
);
12940 dissector_add_uint ("docsis_mgmt", 256*MAP_v1
+ MGT_MAP
, create_dissector_handle( dissect_map_v1
, proto_docsis_map_v1
));
12941 dissector_add_uint ("docsis_mgmt", 256*MAP_v5
+ MGT_MAP
, create_dissector_handle( dissect_map_v5
, proto_docsis_map_v5
));
12942 dissector_add_uint ("docsis_mgmt", MGT_RNG_REQ
, create_dissector_handle( dissect_rngreq
, proto_docsis_rngreq
));
12943 dissector_add_uint ("docsis_mgmt", MGT_RNG_RSP
, create_dissector_handle( dissect_rngrsp
, proto_docsis_rngrsp
));
12944 dissector_add_uint ("docsis_mgmt", MGT_REG_REQ
, create_dissector_handle( dissect_regreq
, proto_docsis_regreq
));
12945 dissector_add_uint ("docsis_mgmt", MGT_REG_RSP
, create_dissector_handle( dissect_regrsp
, proto_docsis_regrsp
));
12946 dissector_add_uint ("docsis_mgmt", MGT_UCC_REQ
, create_dissector_handle( dissect_uccreq
, proto_docsis_uccreq
));
12947 dissector_add_uint ("docsis_mgmt", MGT_UCC_RSP
, create_dissector_handle( dissect_uccrsp
, proto_docsis_uccrsp
));
12948 dissector_add_uint ("docsis_mgmt", MGT_BPKM_REQ
, create_dissector_handle( dissect_bpkmreq
, proto_docsis_bpkmreq
));
12949 dissector_add_uint ("docsis_mgmt", MGT_BPKM_RSP
, create_dissector_handle( dissect_bpkmrsp
, proto_docsis_bpkmrsp
));
12950 dissector_add_uint ("docsis_mgmt", MGT_REG_ACK
, create_dissector_handle( dissect_regack
, proto_docsis_regack
));
12951 dissector_add_uint ("docsis_mgmt", MGT_DSA_REQ
, create_dissector_handle( dissect_dsareq
, proto_docsis_dsareq
));
12952 dissector_add_uint ("docsis_mgmt", MGT_DSA_RSP
, create_dissector_handle( dissect_dsarsp
, proto_docsis_dsarsp
));
12953 dissector_add_uint ("docsis_mgmt", MGT_DSA_ACK
, create_dissector_handle( dissect_dsaack
, proto_docsis_dsaack
));
12954 dissector_add_uint ("docsis_mgmt", MGT_DSC_REQ
, create_dissector_handle( dissect_dscreq
, proto_docsis_dscreq
));
12955 dissector_add_uint ("docsis_mgmt", MGT_DSC_RSP
, create_dissector_handle( dissect_dscrsp
, proto_docsis_dscrsp
));
12956 dissector_add_uint ("docsis_mgmt", MGT_DSC_ACK
, create_dissector_handle( dissect_dscack
, proto_docsis_dscack
));
12957 dissector_add_uint ("docsis_mgmt", MGT_DSD_REQ
, create_dissector_handle( dissect_dsdreq
, proto_docsis_dsdreq
));
12958 dissector_add_uint ("docsis_mgmt", MGT_DSD_RSP
, create_dissector_handle( dissect_dsdrsp
, proto_docsis_dsdrsp
));
12959 dissector_add_uint ("docsis_mgmt", MGT_DCC_REQ
, create_dissector_handle( dissect_dccreq
, proto_docsis_dccreq
));
12960 dissector_add_uint ("docsis_mgmt", MGT_DCC_RSP
, create_dissector_handle( dissect_dccrsp
, proto_docsis_dccrsp
));
12961 dissector_add_uint ("docsis_mgmt", MGT_DCC_ACK
, create_dissector_handle( dissect_dccack
, proto_docsis_dccack
));
12962 dissector_add_uint ("docsis_mgmt", MGT_TYPE29UCD
, create_dissector_handle( dissect_type29ucd
, proto_docsis_type29ucd
));
12963 dissector_add_uint ("docsis_mgmt", MGT_INIT_RNG_REQ
, create_dissector_handle( dissect_intrngreq
, proto_docsis_intrngreq
));
12964 dissector_add_uint ("docsis_mgmt", MGT_DS_CH_DESC
, create_dissector_handle( dissect_dcd
, proto_docsis_dcd
));
12965 dissector_add_uint ("docsis_mgmt", MGT_MDD
, create_dissector_handle( dissect_mdd
, proto_docsis_mdd
));
12966 dissector_add_uint ("docsis_mgmt", MGT_B_INIT_RNG_REQ
, create_dissector_handle( dissect_bintrngreq
, proto_docsis_bintrngreq
));
12967 dissector_add_uint ("docsis_mgmt", MGT_TYPE35UCD
, create_dissector_handle( dissect_type35ucd
, proto_docsis_type35ucd
));
12968 dissector_add_uint ("docsis_mgmt", MGT_DBC_REQ
, create_dissector_handle( dissect_dbcreq
, proto_docsis_dbcreq
));
12969 dissector_add_uint ("docsis_mgmt", MGT_DBC_RSP
, create_dissector_handle( dissect_dbcrsp
, proto_docsis_dbcrsp
));
12970 dissector_add_uint ("docsis_mgmt", MGT_DBC_ACK
, create_dissector_handle( dissect_dbcack
, proto_docsis_dbcack
));
12971 dissector_add_uint ("docsis_mgmt", MGT_DPV_REQ
, create_dissector_handle( dissect_dpvreq
, proto_docsis_dpvreq
));
12972 dissector_add_uint ("docsis_mgmt", MGT_DPV_RSP
, create_dissector_handle( dissect_dpvrsp
, proto_docsis_dpvrsp
));
12973 dissector_add_uint ("docsis_mgmt", MGT_CM_STATUS
, create_dissector_handle( dissect_cmstatus
, proto_docsis_cmstatus
));
12974 dissector_add_uint ("docsis_mgmt", MGT_CM_STATUS_ACK
, create_dissector_handle( dissect_cmstatusack
, proto_docsis_cmstatusack
));
12975 dissector_add_uint ("docsis_mgmt", MGT_CM_CTRL_REQ
, create_dissector_handle( dissect_cmctrlreq
, proto_docsis_cmctrlreq
));
12976 dissector_add_uint ("docsis_mgmt", MGT_CM_CTRL_RSP
, create_dissector_handle( dissect_cmctrlrsp
, proto_docsis_cmctrlrsp
));
12977 dissector_add_uint ("docsis_mgmt", MGT_REG_REQ_MP
, create_dissector_handle( dissect_regreqmp
, proto_docsis_regreqmp
));
12978 dissector_add_uint ("docsis_mgmt", MGT_REG_RSP_MP
, create_dissector_handle( dissect_regrspmp
, proto_docsis_regrspmp
));
12979 dissector_add_uint ("docsis_mgmt", MGT_EM_REQ
, create_dissector_handle( dissect_emreq
, proto_docsis_emreq
));
12980 dissector_add_uint ("docsis_mgmt", MGT_EM_RSP
, create_dissector_handle( dissect_emrsp
, proto_docsis_emrsp
));
12981 dissector_add_uint ("docsis_mgmt", MGT_OCD
, create_dissector_handle( dissect_ocd
, proto_docsis_ocd
));
12982 dissector_add_uint ("docsis_mgmt", MGT_DPD
, create_dissector_handle( dissect_dpd
, proto_docsis_dpd
));
12983 dissector_add_uint ("docsis_mgmt", MGT_TYPE51UCD
, create_dissector_handle( dissect_type51ucd
, proto_docsis_type51ucd
));
12984 dissector_add_uint ("docsis_mgmt", MGT_OPT_REQ
, create_dissector_handle( dissect_optreq
, proto_docsis_optreq
));
12985 dissector_add_uint ("docsis_mgmt", MGT_OPT_RSP
, create_dissector_handle( dissect_optrsp
, proto_docsis_optrsp
));
12986 dissector_add_uint ("docsis_mgmt", MGT_OPT_ACK
, create_dissector_handle( dissect_optack
, proto_docsis_optack
));
12987 dissector_add_uint ("docsis_mgmt", MGT_RBA_SW
, docsis_rba_handle
);
12988 dissector_add_uint ("docsis_mgmt", MGT_RBA_HW
, docsis_rba_handle
);
12989 dissector_add_uint ("docsis_mgmt", MGT_CWT_REQ
, create_dissector_handle(dissect_cwt_req
, proto_docsis_cwt_req
));
12990 dissector_add_uint ("docsis_mgmt", MGT_CWT_RSP
, create_dissector_handle(dissect_cwt_rsp
, proto_docsis_cwt_rsp
));
12991 dissector_add_uint ("docsis_mgmt", MGT_ECT_REQ
, create_dissector_handle(dissect_ect_req
, proto_docsis_ect_req
));
12992 dissector_add_uint ("docsis_mgmt", MGT_ECT_RSP
, create_dissector_handle(dissect_ect_rsp
, proto_docsis_ect_rsp
));
12993 dissector_add_uint ("docsis_mgmt", MGT_EXT_RNG_REQ
, create_dissector_handle( dissect_ext_rngreq
, proto_docsis_ext_rngreq
));
12994 dissector_add_uint ("docsis_mgmt", MGT_DPR
, create_dissector_handle(dissect_dpr
, proto_docsis_dpr
));
12995 dissector_add_uint ("docsis_mgmt", MGT_BPKM_REQ_V5
, create_dissector_handle(dissect_bpkmreq
, proto_docsis_bpkmreq
));
12996 dissector_add_uint ("docsis_mgmt", MGT_BPKM_RSP_V5
, create_dissector_handle(dissect_bpkmrsp
, proto_docsis_bpkmrsp
));
12998 docsis_tlv_handle
= find_dissector ("docsis_tlv");
13000 reassembly_table_register(&docsis_tlv_reassembly_table
, &addresses_reassembly_table_functions
);
13004 * Editor modelines - https://www.wireshark.org/tools/modelines.html
13007 * c-basic-offset: 2
13009 * indent-tabs-mode: nil
13012 * ex: set shiftwidth=2 tabstop=8 expandtab:
13013 * :indentSize=2:tabSize=8:noTabs=true: