aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/docsis/packet-mdd.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/docsis/packet-mdd.c')
-rw-r--r--plugins/docsis/packet-mdd.c1198
1 files changed, 0 insertions, 1198 deletions
diff --git a/plugins/docsis/packet-mdd.c b/plugins/docsis/packet-mdd.c
deleted file mode 100644
index 5573f9da04..0000000000
--- a/plugins/docsis/packet-mdd.c
+++ /dev/null
@@ -1,1198 +0,0 @@
-/* packet-mdd.c
- *
- * Routines for MDD Message dissection
- * Copyright 2014, Adrian Simionov <adrian.simionov@arrisi.com>
- * Copyright 2007, Bruno Verstuyft <bruno.verstuyft@excentis.com>
- *
- * Wireshark - Network traffic analyzer
- * By Gerald Combs <gerald@wireshark.org>
- * Copyright 1998 Gerald Combs
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include "config.h"
-
-#include <epan/packet.h>
-
-#define DOWNSTREAM_ACTIVE_CHANNEL_LIST 1
-#define MAC_DOMAIN_DOWNSTREAM_SERVICE_GROUP 2
-#define DOWNSTREAM_AMBIGUITY_RESOLUTION_FREQUENCY_LIST 3
-#define RECEIVE_CHANNEL_PROFILE_REPORTING_CONTROL 4
-#define IP_INITIALIZATION_PARAMETERS 5
-#define EARLY_AUTHENTICATION_AND_ENCRYPTION 6
-#define UPSTREAM_ACTIVE_CHANNEL_LIST 7
-#define UPSTREAM_AMBIGUITY_RESOLUTION_CHANNEL_LIST 8
-#define UPSTREAM_FREQUENCY_RANGE 9
-#define SYMBOL_CLOCK_LOCKING_INDICATOR 10
-#define CM_STATUS_EVENT_CONTROL 11
-#define UPSTREAM_TRANSMIT_POWER_REPORTING 12
-#define DSG_DA_TO_DSID_ASSOCIATION_ENTRY 13
-#define CM_STATUS_EVENT_ENABLE_NON_CHANNEL_SPECIFIC_EVENTS 15
-#define EXTENDED_UPSTREAM_TRANSMIT_POWER_SUPPORT 16
-
-/*Downstream Active Channel List*/
-#define DOWNSTREAM_ACTIVE_CHANNEL_LIST_CHANNEL_ID 1
-#define DOWNSTREAM_ACTIVE_CHANNEL_LIST_FREQUENCY 2
-#define DOWNSTREAM_ACTIVE_CHANNEL_LIST_MODULATION_ORDER_ANNEX 3
-#define DOWNSTREAM_ACTIVE_CHANNEL_LIST_PRIMARY_CAPABLE 4
-#define DOWNSTREAM_ACTIVE_CHANNEL_LIST_CM_STATUS_EVENT_ENABLE_BITMASK 5
-#define DOWNSTREAM_ACTIVE_CHANNEL_LIST_MAP_UCD_TRANSPORT_INDICATOR 6
-#define DOWNSTREAM_ACTIVE_CHANNEL_LIST_OFDM_PLC_PARAMETERS 7
-
-/*Mac Domain Downstream Service Group*/
-#define MAC_DOMAIN_DOWNSTREAM_SERVICE_GROUP_MD_DS_SG_IDENTIFIER 1
-#define MAC_DOMAIN_DOWNSTREAM_SERVICE_GROUP_CHANNEL_IDS 2
-
-/*Modulation Orders*/
-#define QAM64 0
-#define QAM256 1
-
-/*Annexes*/
-#define J83_ANNEX_A 0
-#define J83_ANNEX_B 1
-#define J83_ANNEX_C 2
-
-/*Primary Capable*/
-#define NOT_PRIMARY_CAPABLE 0
-#define PRIMARY_CAPABLE 1
-
-/*Can carry MAP and UCD*/
-#define CANNOT_CARRY_MAP_UCD 0
-#define CAN_CARRY_MAP_UCD 1
-
-/*Receive Channel Profile Reporting Control*/
-#define RCP_CENTER_FREQUENCY_SPACING 1
-#define VERBOSE_RCP_REPORTING 2
-
-/*Frequency spacing*/
-#define ASSUME_6MHZ_CENTER_FREQUENCY_SPACING 0
-#define ASSUME_8MHZ_CENTER_FREQUENCY_SPACING 1
-
-/*Verbose RCP reporting*/
-#define RCP_NO_VERBOSE_REPORTING 0
-#define RCP_VERBOSE_REPORTING 1
-
-/*Sub-TLVs for IP Initialization Parameters*/
-#define IP_PROVISIONING_MODE 1
-#define PRE_REGISTRATION_DSID 2
-
-/*IP Provisioning Modes*/
-#define IPv4_ONLY 0
-#define IPv6_ONLY 1
-#define IP_ALTERNATE 2
-#define DUAL_STACK 3
-
-/*Early authentication and encryption*/
-#define EAE_DISABLED 0
-#define EAE_ENABLED 1
-
-/*Upstream Active Channel List*/
-#define UPSTREAM_ACTIVE_CHANNEL_LIST_UPSTREAM_CHANNEL_ID 1
-#define UPSTREAM_ACTIVE_CHANNEL_LIST_CM_STATUS_EVENT_ENABLE_BITMASK 2
-
-/*Upstream Frequency Range*/
-#define STANDARD_UPSTREAM_FREQUENCY_RANGE 0
-#define EXTENDED_UPSTREAM_FREQUENCY_RANGE 1
-
-/*Symbol Clock Locking Indicator*/
-#define NOT_LOCKED_TO_MASTER_CLOCK 0
-#define LOCKED_TO_MASTER_CLOCK 1
-
-/*CM-STATUS Event Control */
-#define EVENT_TYPE_CODE 1
-#define MAXIMUM_EVENT_HOLDOFF_TIMER 2
-#define MAXIMUM_NUMBER_OF_REPORTS_PER_EVENT 3
-
-/*CM-STATUS Events*/
-#define SECONDARY_CHANNEL_MDD_TIMEOUT 1
-#define QAM_FEC_LOCK_FAILURE 2
-#define SEQUENCE_OUT_OF_RANGE 3
-#define MDD_RECOVERY 4
-#define QAM_FEC_LOCK_RECOVERY 5
-#define T4_TIMEOUT 6
-#define T3_RETRIES_EXCEEDED 7
-#define SUCCESFUL_RANGING_AFTER_T3_RETRIES_EXCEEDED 8
-#define CM_OPERATING_ON_BATTERY_BACKUP 9
-#define CM_RETURNED_TO_AC_POWER 10
-
-/*Upstream Transmit Power Reporting*/
-#define CM_DOESNT_REPORT_TRANSMIT_POWER 0
-#define CM_REPORTS_TRANSMIT_POWER 1
-
-/*Dsg DA to DSID association entry*/
-#define DSG_DA_TO_DSID_ASSOCIATION_DA 1
-#define DSG_DA_TO_DSID_ASSOCIATION_DSID 2
-
-/* Define Tukey raised cosine window */
-#define TUKEY_0TS 0
-#define TUKEY_64TS 1
-#define TUKEY_128TS 2
-#define TUKEY_192TS 3
-#define TUKEY_256TS 4
-
-/* Define Cyclic prefix */
-#define CYCLIC_PREFIX_192_TS 0
-#define CYCLIC_PREFIX_256_TS 1
-#define CYCLIC_PREFIX_512_TS 2
-#define CYCLIC_PREFIX_768_TS 3
-#define CYCLIC_PREFIX_1024_TS 4
-
-/* Define Sub carrier spacing */
-#define SPACING_25KHZ 0
-#define SPACING_50KHZ 1
-
-void proto_register_docsis_mdd(void);
-void proto_reg_handoff_docsis_mdd(void);
-
-static const value_string J83_annex_vals[] = {
- {J83_ANNEX_A, "J.83 Annex A"},
- {J83_ANNEX_B, "J.83 Annex B"},
- {J83_ANNEX_C, "J.83 Annex C"},
- {0, NULL}
-};
-
-static const value_string modulation_order_vals[] = {
- {QAM64, "64 QAM"},
- {QAM256, "256 QAM"},
- {0, NULL}
-};
-
-static const value_string primary_capable_vals[] = {
- {NOT_PRIMARY_CAPABLE, "Channel is not primary-capable"},
- {PRIMARY_CAPABLE, "channel is primary-capable"},
- {0, NULL}
-};
-
-static const value_string map_ucd_transport_indicator_vals[] = {
- {CANNOT_CARRY_MAP_UCD, "Channel cannot carry MAPs and UCDs for the MAC domain for which the MDD is sent"},
- {CAN_CARRY_MAP_UCD, "Channel can carry MAPs and UCDs for the MAC domain for which the MDD is sent"},
- {0, NULL}
-};
-
-static const value_string tukey_raised_cosine_vals[] = {
- {TUKEY_0TS, "0 microseconds (0 * Ts)"},
- {TUKEY_64TS, "0.3125 microseconds (64 * Ts)"},
- {TUKEY_128TS, "0.625 microseconds (128 * Ts)"},
- {TUKEY_192TS, "0.9375 microseconds (192 * Ts)"},
- {TUKEY_256TS, "1.25 microseconds (256 * Ts)"},
- {0, NULL}
-};
-
-static const value_string cyclic_prefix_vals[] = {
- {CYCLIC_PREFIX_192_TS, "0.9375 microseconds (192 * Ts)"},
- {CYCLIC_PREFIX_256_TS, "1.25 microseconds (256 * Ts)"},
- {CYCLIC_PREFIX_512_TS, "2.5 microseconds (512 * Ts) 3"},
- {CYCLIC_PREFIX_768_TS, "3.75 microseconds (768 * Ts)"},
- {CYCLIC_PREFIX_1024_TS, "5 microseconds (1024 * Ts)"},
- {0, NULL}
-};
-
-static const value_string spacing_vals[] = {
- {SPACING_25KHZ, "25Khz"},
- {SPACING_50KHZ, "50Khz"},
- {0, NULL}
-};
-
-static const value_string mdd_tlv_vals[] = {
- {DOWNSTREAM_ACTIVE_CHANNEL_LIST, "Downstream Active Channel List"},
- {MAC_DOMAIN_DOWNSTREAM_SERVICE_GROUP, "Mac Domain Downstream Service Group"},
- {DOWNSTREAM_AMBIGUITY_RESOLUTION_FREQUENCY_LIST, "Downstream Ambiguity Resolution Frequency List "},
- {RECEIVE_CHANNEL_PROFILE_REPORTING_CONTROL , "Receive Channel Profile Reporting Control"},
- {IP_INITIALIZATION_PARAMETERS , "IP Initialization Parameters"},
- {EARLY_AUTHENTICATION_AND_ENCRYPTION , "Early Authentication and Encryption"},
- {UPSTREAM_ACTIVE_CHANNEL_LIST , "Upstream Active Channel List"},
- {UPSTREAM_AMBIGUITY_RESOLUTION_CHANNEL_LIST , "Upstream Ambiguity Resolution Channel List"},
- {UPSTREAM_FREQUENCY_RANGE , "Upstream Frequency Range"},
- {SYMBOL_CLOCK_LOCKING_INDICATOR , "Symbol Clock Locking Indicator"},
- {CM_STATUS_EVENT_CONTROL , "CM-STATUS Event Control"},
- {UPSTREAM_TRANSMIT_POWER_REPORTING , "Upstream Transmit Power Reporting"},
- {DSG_DA_TO_DSID_ASSOCIATION_ENTRY , "DSG DA-to-DSID Association Entry"},
- {CM_STATUS_EVENT_ENABLE_NON_CHANNEL_SPECIFIC_EVENTS , "CM-STATUS Event Enable for Non-Channel-Specific-Events"},
- {EXTENDED_UPSTREAM_TRANSMIT_POWER_SUPPORT , "Extended Upstream Transmit Power Support"},
- {0, NULL}
-};
-
-
-static const value_string rpc_center_frequency_spacing_vals[] = {
- {ASSUME_6MHZ_CENTER_FREQUENCY_SPACING , "CM MUST report only Receive Channel Profiles assuming 6 MHz center frequency spacing"},
- {ASSUME_8MHZ_CENTER_FREQUENCY_SPACING , "CM MUST report only Receive Channel Profiles assuming 8 MHz center frequency spacing"},
- {0, NULL}
-};
-
-static const value_string verbose_rpc_reporting_vals[] = {
- {RCP_NO_VERBOSE_REPORTING , "CM MUST NOT provide verbose reporting of all its Receive Channel Profile(s) (both standard profiles and manufacturers profiles)."},
- {RCP_VERBOSE_REPORTING , "CM MUST provide verbose reporting of Receive Channel Profile(s) (both standard profiles and manufacturers profiles)."},
- {0, NULL}
-};
-
-static const value_string ip_provisioning_mode_vals[] = {
- {IPv4_ONLY , "IPv4 Only"},
- {IPv6_ONLY , "IPv6 Only"},
- {IP_ALTERNATE, "Alternate"},
- {DUAL_STACK , "Dual Stack"},
- {0, NULL}
-};
-
-static const value_string eae_vals[] = {
- {EAE_DISABLED , "early authentication and encryption disabled"},
- {EAE_ENABLED , "early authentication and encryption enabled"},
- {0, NULL}
-};
-
-static const value_string upstream_frequency_range_vals[] = {
- {STANDARD_UPSTREAM_FREQUENCY_RANGE, "Standard Upstream Frequency Range"},
- {EXTENDED_UPSTREAM_FREQUENCY_RANGE, "Extended Upstream Frequency Range"},
- {0, NULL}
-};
-
-static const value_string symbol_clock_locking_indicator_vals[] = {
- {NOT_LOCKED_TO_MASTER_CLOCK, "Symbol Clock is not locked to Master Clock"},
- {LOCKED_TO_MASTER_CLOCK, "Symbol Clock is locked to Master Clock"},
- {0, NULL}
-};
-
-static const value_string symbol_cm_status_event_vals[] = {
- {SECONDARY_CHANNEL_MDD_TIMEOUT, "Secondary Channel MDD timeout"},
- {QAM_FEC_LOCK_FAILURE, "Qam FEC Lock Failure"},
- {SEQUENCE_OUT_OF_RANGE, "Sequence out of Range"},
- {MDD_RECOVERY, "MDD Recovery"},
- {QAM_FEC_LOCK_RECOVERY, "Qam FEC Lock Recovery"},
- {T4_TIMEOUT, "T4 Timeout"},
- {T3_RETRIES_EXCEEDED, "T3 Retries Exceeded"},
- {SUCCESFUL_RANGING_AFTER_T3_RETRIES_EXCEEDED, "Successful ranging after T3 Retries Exceeded"},
- {CM_OPERATING_ON_BATTERY_BACKUP, "CM Operating on Battery Backup"},
- {CM_RETURNED_TO_AC_POWER, "CM Returned to AC Power"},
- {0, NULL}
-};
-
-static const value_string upstream_transmit_power_reporting_vals[] = {
- {CM_DOESNT_REPORT_TRANSMIT_POWER, "CM does not report transmit power in RNG-REQ, INIT-RNG-REQ, and B-INIT-RNG-REQ messages"},
- {CM_REPORTS_TRANSMIT_POWER, "CM reports transmit power in RNG-REQ, INIT-RNG-REQ, and B-INIT-RNG-REQ messages"},
- {0, NULL}
-};
-
-static const value_string mdd_ds_active_channel_list_vals[] = {
- {DOWNSTREAM_ACTIVE_CHANNEL_LIST_CHANNEL_ID, "Channel ID"},
- {DOWNSTREAM_ACTIVE_CHANNEL_LIST_FREQUENCY, "Frequency"},
- {DOWNSTREAM_ACTIVE_CHANNEL_LIST_MODULATION_ORDER_ANNEX, "Annex/Modulation Order"},
- {DOWNSTREAM_ACTIVE_CHANNEL_LIST_PRIMARY_CAPABLE, "Primary Capable"},
- {DOWNSTREAM_ACTIVE_CHANNEL_LIST_CM_STATUS_EVENT_ENABLE_BITMASK, "CM-STATUS Event Enable Bitmask"},
- {DOWNSTREAM_ACTIVE_CHANNEL_LIST_MAP_UCD_TRANSPORT_INDICATOR, "MAP and UCD transport indicator"},
- {DOWNSTREAM_ACTIVE_CHANNEL_LIST_OFDM_PLC_PARAMETERS, "OFDM PLC Parameters"},
- {0, NULL}
-};
-
-static const value_string mdd_ds_service_group_vals[] = {
- {MAC_DOMAIN_DOWNSTREAM_SERVICE_GROUP_MD_DS_SG_IDENTIFIER, "MD-DS-SG Identifier"},
- {MAC_DOMAIN_DOWNSTREAM_SERVICE_GROUP_CHANNEL_IDS, "Channel Ids"},
- {0, NULL}
-};
-
-static const value_string mdd_channel_profile_reporting_control_vals[] = {
- {RCP_CENTER_FREQUENCY_SPACING, "RPC Center Frequency Spacing"},
- {VERBOSE_RCP_REPORTING, "Verbose RCP reporting"},
- {0, NULL}
-};
-
-static const value_string mdd_ip_init_param_vals[] = {
- {IP_PROVISIONING_MODE, "IP Provisioning Mode"},
- {PRE_REGISTRATION_DSID, "Pre-registration DSID"},
- {0, NULL}
-};
-
-static const value_string mdd_up_active_channel_list_vals[] = {
- {UPSTREAM_ACTIVE_CHANNEL_LIST_UPSTREAM_CHANNEL_ID, "Upstream Channel Id"},
- {UPSTREAM_ACTIVE_CHANNEL_LIST_CM_STATUS_EVENT_ENABLE_BITMASK, "CM-STATUS Event Enable Bitmask"},
- {0, NULL}
-};
-
-static const value_string mdd_cm_status_event_control_vals[] = {
- {EVENT_TYPE_CODE, "Event Type"},
- {MAXIMUM_EVENT_HOLDOFF_TIMER, "Maximum Event Holdoff Timer"},
- {MAXIMUM_NUMBER_OF_REPORTS_PER_EVENT, "Maximum Number of Reports per Event"},
- {0, NULL}
-};
-
-static const value_string mdd_cm_dsg_da_to_dsid_vals[] = {
- {DSG_DA_TO_DSID_ASSOCIATION_DA, "Destination Address"},
- {DSG_DA_TO_DSID_ASSOCIATION_DSID, "DSID"},
- {0, NULL}
-};
-
-static const value_string unique_unlimited[] = {
- { 0, "Unlimited" },
- {0, NULL}
-};
-
-
-/* Windows does not allow data copy between dlls */
-const true_false_string mdd_tfs_on_off = { "On", "Off" };
-
-/* Initialize the protocol and registered fields */
-static int proto_docsis_mdd = -1;
-static int hf_docsis_mdd_ccc = -1;
-static int hf_docsis_mdd_number_of_fragments = -1;
-static int hf_docsis_mdd_fragment_sequence_number = -1;
-static int hf_docsis_mdd_current_channel_dcid = -1;
-
-static int hf_docsis_mdd_ds_active_channel_list_subtype = -1;
-static int hf_docsis_mdd_ds_active_channel_list_length = -1;
-static int hf_docsis_mdd_downstream_active_channel_list_channel_id = -1;
-static int hf_docsis_mdd_downstream_active_channel_list_frequency = -1;
-static int hf_docsis_mdd_downstream_active_channel_list_annex = -1;
-static int hf_docsis_mdd_downstream_active_channel_list_modulation_order = -1;
-static int hf_docsis_mdd_downstream_active_channel_list_primary_capable = -1;
-static int hf_docsis_mdd_downstream_active_channel_list_map_ucd_transport_indicator = -1;
-
-static int hf_docsis_mdd_cm_status_event_enable_bitmask = -1;
-static int hf_docsis_mdd_cm_status_event_enable_bitmask_mdd_timeout = -1;
-static int hf_docsis_mdd_cm_status_event_enable_bitmask_qam_fec_lock_failure = -1;
-static int hf_docsis_mdd_cm_status_event_enable_bitmask_mdd_recovery = -1;
-static int hf_docsis_mdd_cm_status_event_enable_bitmask_qam_fec_lock_recovery = -1;
-static int hf_docsis_mdd_ofdm_plc_parameters = -1;
-static int hf_docsis_mdd_ofdm_plc_parameters_tukey_raised_cosine_window = -1;
-static int hf_docsis_mdd_ofdm_plc_parameters_cyclic_prefix = -1;
-static int hf_docsis_mdd_ofdm_plc_parameters_sub_carrier_spacing = -1;
-static int hf_docsis_mdd_up_active_channel_list_subtype = -1;
-static int hf_docsis_mdd_up_active_channel_list_length = -1;
-static int hf_docsis_mdd_cm_status_event_enable_bitmask_t4_timeout = -1;
-static int hf_docsis_mdd_cm_status_event_enable_bitmask_t3_retries_exceeded = -1;
-static int hf_docsis_mdd_cm_status_event_enable_bitmask_successful_ranging_after_t3_retries_exceeded = -1;
-
-static int hf_docsis_mdd_ds_service_group_subtype = -1;
-static int hf_docsis_mdd_ds_service_group_length = -1;
-static int hf_docsis_mdd_mac_domain_downstream_service_group_md_ds_sg_identifier = -1;
-static int hf_docsis_mdd_mac_domain_downstream_service_group_channel_id = -1;
-
-static int hf_docsis_mdd_type = -1;
-static int hf_docsis_mdd_length = -1;
-static int hf_docsis_mdd_downstream_ambiguity_resolution_frequency = -1;
-
-static int hf_docsis_mdd_channel_profile_reporting_control_subtype = -1;
-static int hf_docsis_mdd_channel_profile_reporting_control_length = -1;
-static int hf_docsis_mdd_rpc_center_frequency_spacing = -1;
-static int hf_docsis_mdd_verbose_rcp_reporting = -1;
-
-static int hf_docsis_mdd_ip_init_param_subtype = -1;
-static int hf_docsis_mdd_ip_init_param_length = -1;
-static int hf_docsis_mdd_ip_provisioning_mode = -1;
-static int hf_docsis_mdd_pre_registration_dsid = -1;
-
-static int hf_docsis_mdd_early_authentication_and_encryption = -1;
-
-static int hf_docsis_mdd_upstream_active_channel_list_upstream_channel_id = -1;
-
-static int hf_docsis_mdd_upstream_ambiguity_resolution_channel_list_channel_id = -1;
-
-static int hf_docsis_mdd_upstream_frequency_range = -1;
-
-static int hf_docsis_mdd_symbol_clock_locking_indicator = -1;
-
-static int hf_docsis_mdd_cm_status_event_control_subtype = -1;
-static int hf_docsis_mdd_cm_status_event_control_length = -1;
-static int hf_docsis_mdd_event_type = -1;
-
-static int hf_docsis_mdd_maximum_event_holdoff_timer = -1;
-
-static int hf_docsis_mdd_maximum_number_of_reports_per_event = -1;
-static int hf_docsis_mdd_upstream_transmit_power_reporting = -1;
-
-static int hf_docsis_mdd_dsg_da_to_dsid_subtype = -1;
-static int hf_docsis_mdd_dsg_da_to_dsid_length = -1;
-static int hf_docsis_mdd_dsg_da_to_dsid_association_da = -1;
-static int hf_docsis_mdd_dsg_da_to_dsid_association_dsid = -1;
-
-static int hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events = -1;
-static int hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events_sequence_out_of_range = -1;
-static int hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events_cm_operating_on_battery_backup = -1;
-static int hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events_cm_returned_to_ac_power = -1;
-
-static int hf_docsis_mdd_extended_upstream_transmit_power_support = -1;
-
-/* Initialize the subtree pointers */
-static gint ett_docsis_mdd = -1;
-static gint ett_tlv = -1;
-static gint ett_sub_tlv = -1;
-static gint ett_docsis_mdd_ds_active_channel_list = -1;
-static gint ett_docsis_mdd_ds_service_group = -1;
-static gint ett_docsis_mdd_channel_profile_reporting_control = -1;
-static gint ett_docsis_mdd_ip_init_param = -1;
-static gint ett_docsis_mdd_up_active_channel_list = -1;
-static gint ett_docsis_mdd_cm_status_event_control = -1;
-static gint ett_docsis_mdd_dsg_da_to_dsid = -1;
-
-static dissector_handle_t docsis_mdd_handle;
-
-/* Dissection */
-static void
-dissect_mdd_ds_active_channel_list(tvbuff_t * tvb, packet_info* pinfo _U_, proto_tree * tree, int start, guint16 len)
-{
- guint8 type;
- guint32 length;
- proto_tree *mdd_tree;
- proto_item *mdd_item;
- int pos;
- static const int * order_annex[] = {
- &hf_docsis_mdd_downstream_active_channel_list_modulation_order,
- &hf_docsis_mdd_downstream_active_channel_list_annex,
- NULL
- };
- static const int * cm_status_event[] = {
- &hf_docsis_mdd_cm_status_event_enable_bitmask_mdd_timeout,
- &hf_docsis_mdd_cm_status_event_enable_bitmask_qam_fec_lock_failure,
- &hf_docsis_mdd_cm_status_event_enable_bitmask_mdd_recovery,
- &hf_docsis_mdd_cm_status_event_enable_bitmask_qam_fec_lock_recovery,
- NULL
- };
- static const int * ofdm_plc_parameters[] = {
- &hf_docsis_mdd_ofdm_plc_parameters_tukey_raised_cosine_window,
- &hf_docsis_mdd_ofdm_plc_parameters_cyclic_prefix,
- &hf_docsis_mdd_ofdm_plc_parameters_sub_carrier_spacing,
- NULL
- };
-
- pos = start;
- while ( pos < ( start + len) )
- {
- type = tvb_get_guint8 (tvb, pos);
- mdd_tree = proto_tree_add_subtree(tree, tvb, pos, -1,
- ett_docsis_mdd_ds_active_channel_list, &mdd_item,
- val_to_str(type, mdd_ds_active_channel_list_vals,
- "Unknown TLV (%u)"));
- proto_tree_add_uint (mdd_tree, hf_docsis_mdd_ds_active_channel_list_subtype, tvb, pos, 1, type);
- pos++;
- proto_tree_add_item_ret_uint (mdd_tree, hf_docsis_mdd_ds_active_channel_list_length, tvb, pos, 1, ENC_NA, &length);
- pos++;
- proto_item_set_len(mdd_item, length + 2);
-
- switch(type)
- {
- case DOWNSTREAM_ACTIVE_CHANNEL_LIST_CHANNEL_ID:
- proto_tree_add_item (mdd_tree, hf_docsis_mdd_downstream_active_channel_list_channel_id, tvb, pos, 1, ENC_BIG_ENDIAN);
- break;
- case DOWNSTREAM_ACTIVE_CHANNEL_LIST_FREQUENCY:
- proto_tree_add_item (mdd_tree, hf_docsis_mdd_downstream_active_channel_list_frequency, tvb, pos, 4, ENC_BIG_ENDIAN);
- break;
- case DOWNSTREAM_ACTIVE_CHANNEL_LIST_MODULATION_ORDER_ANNEX:
- proto_tree_add_bitmask_list(mdd_tree, tvb, pos, 1, order_annex, ENC_BIG_ENDIAN);
- break;
- case DOWNSTREAM_ACTIVE_CHANNEL_LIST_PRIMARY_CAPABLE:
- proto_tree_add_item (mdd_tree, hf_docsis_mdd_downstream_active_channel_list_primary_capable, tvb, pos, 1, ENC_BIG_ENDIAN);
- break;
- case DOWNSTREAM_ACTIVE_CHANNEL_LIST_CM_STATUS_EVENT_ENABLE_BITMASK:
- 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);
- break;
- case DOWNSTREAM_ACTIVE_CHANNEL_LIST_MAP_UCD_TRANSPORT_INDICATOR:
- proto_tree_add_item (mdd_tree, hf_docsis_mdd_downstream_active_channel_list_map_ucd_transport_indicator, tvb, pos, 1, ENC_BIG_ENDIAN);
- break;
- case DOWNSTREAM_ACTIVE_CHANNEL_LIST_OFDM_PLC_PARAMETERS:
- proto_tree_add_bitmask(mdd_tree, tvb, pos, hf_docsis_mdd_ofdm_plc_parameters, ett_sub_tlv, ofdm_plc_parameters, ENC_BIG_ENDIAN);
- break;
- }
-
- pos += length;
- }
-}
-
-static void
-dissect_mdd_ds_service_group(tvbuff_t * tvb, packet_info* pinfo _U_, proto_tree * tree, int start, guint16 len)
-{
- guint8 type;
- guint32 i, length;
- proto_tree *mdd_tree;
- proto_item *mdd_item;
- int pos;
-
- pos = start;
- while ( pos < ( start + len) )
- {
- type = tvb_get_guint8 (tvb, pos);
- mdd_tree = proto_tree_add_subtree(tree, tvb, pos, -1,
- ett_docsis_mdd_ds_service_group, &mdd_item,
- val_to_str(type, mdd_ds_service_group_vals,
- "Unknown TLV (%u)"));
- proto_tree_add_uint (mdd_tree, hf_docsis_mdd_ds_service_group_subtype, tvb, pos, 1, type);
- pos++;
- proto_tree_add_item_ret_uint (mdd_tree, hf_docsis_mdd_ds_service_group_length, tvb, pos, 1, ENC_NA, &length);
- pos++;
- proto_item_set_len(mdd_item, length + 2);
-
- switch(type)
- {
- case MAC_DOMAIN_DOWNSTREAM_SERVICE_GROUP_MD_DS_SG_IDENTIFIER:
- proto_tree_add_item (mdd_tree, hf_docsis_mdd_mac_domain_downstream_service_group_md_ds_sg_identifier, tvb, pos, 1, ENC_BIG_ENDIAN);
- break;
- case MAC_DOMAIN_DOWNSTREAM_SERVICE_GROUP_CHANNEL_IDS:
- for (i = 0; i < length; i++) {
- proto_tree_add_item (mdd_tree, hf_docsis_mdd_mac_domain_downstream_service_group_channel_id, tvb, pos + i , 1, ENC_BIG_ENDIAN);
- }
- break;
- }
-
- pos += length;
- }
-}
-
-static void
-dissect_mdd_channel_profile_reporting_control(tvbuff_t * tvb, packet_info* pinfo _U_, proto_tree * tree, int start, guint16 len)
-{
- guint8 type;
- guint32 length;
- proto_tree *mdd_tree;
- proto_item *mdd_item;
- int pos;
-
- pos = start;
- while ( pos < ( start + len) )
- {
- type = tvb_get_guint8 (tvb, pos);
- mdd_tree = proto_tree_add_subtree(tree, tvb, pos, -1,
- ett_docsis_mdd_channel_profile_reporting_control, &mdd_item,
- val_to_str(type, mdd_channel_profile_reporting_control_vals,
- "Unknown TLV (%u)"));
- proto_tree_add_uint (mdd_tree, hf_docsis_mdd_channel_profile_reporting_control_subtype, tvb, pos, 1, type);
- pos++;
- proto_tree_add_item_ret_uint (mdd_tree, hf_docsis_mdd_channel_profile_reporting_control_length, tvb, pos, 1, ENC_NA, &length);
- pos++;
- proto_item_set_len(mdd_item, length + 2);
-
- switch(type)
- {
- case RCP_CENTER_FREQUENCY_SPACING:
- proto_tree_add_item (mdd_tree, hf_docsis_mdd_rpc_center_frequency_spacing, tvb, pos, 1, ENC_BIG_ENDIAN);
- break;
- case VERBOSE_RCP_REPORTING:
- proto_tree_add_item (mdd_tree, hf_docsis_mdd_verbose_rcp_reporting, tvb, pos, 1, ENC_BIG_ENDIAN);
- break;
- }
-
- pos += length;
- }
-}
-
-static void
-dissect_mdd_ip_init_param(tvbuff_t * tvb, packet_info* pinfo _U_, proto_tree * tree, int start, guint16 len)
-{
- guint8 type;
- guint32 length;
- proto_tree *mdd_tree;
- proto_item *mdd_item;
- int pos;
-
- pos = start;
- while ( pos < ( start + len) )
- {
- type = tvb_get_guint8 (tvb, pos);
- mdd_tree = proto_tree_add_subtree(tree, tvb, pos, -1,
- ett_docsis_mdd_ip_init_param, &mdd_item,
- val_to_str(type, mdd_ip_init_param_vals,
- "Unknown TLV (%u)"));
- proto_tree_add_uint (mdd_tree, hf_docsis_mdd_ip_init_param_subtype, tvb, pos, 1, type);
- pos++;
- proto_tree_add_item_ret_uint (mdd_tree, hf_docsis_mdd_ip_init_param_length, tvb, pos, 1, ENC_NA, &length);
- pos++;
- proto_item_set_len(mdd_item, length + 2);
-
- switch(type)
- {
- case IP_PROVISIONING_MODE:
- proto_tree_add_item (mdd_tree, hf_docsis_mdd_ip_provisioning_mode, tvb, pos, 1, ENC_BIG_ENDIAN);
- break;
- case PRE_REGISTRATION_DSID:
- proto_tree_add_item (mdd_tree, hf_docsis_mdd_pre_registration_dsid, tvb, pos, 3, ENC_BIG_ENDIAN);
- break;
- }
-
- pos += length;
- }
-}
-
-static void
-dissect_mdd_upstream_active_channel_list(tvbuff_t * tvb, packet_info* pinfo _U_, proto_tree * tree, int start, guint16 len)
-{
- guint8 type;
- guint32 length;
- proto_tree *mdd_tree;
- proto_item *mdd_item;
- int pos;
- static const int * cm_status_event[] = {
- &hf_docsis_mdd_cm_status_event_enable_bitmask_t4_timeout,
- &hf_docsis_mdd_cm_status_event_enable_bitmask_t3_retries_exceeded,
- &hf_docsis_mdd_cm_status_event_enable_bitmask_successful_ranging_after_t3_retries_exceeded,
- NULL
- };
-
- pos = start;
- while ( pos < ( start + len) )
- {
- type = tvb_get_guint8 (tvb, pos);
- mdd_tree = proto_tree_add_subtree(tree, tvb, pos, -1,
- ett_docsis_mdd_up_active_channel_list, &mdd_item,
- val_to_str(type, mdd_up_active_channel_list_vals,
- "Unknown TLV (%u)"));
- proto_tree_add_uint (mdd_tree, hf_docsis_mdd_up_active_channel_list_subtype, tvb, pos, 1, type);
- pos++;
- proto_tree_add_item_ret_uint (mdd_tree, hf_docsis_mdd_up_active_channel_list_length, tvb, pos, 1, ENC_NA, &length);
- pos++;
- proto_item_set_len(mdd_item, length + 2);
-
- switch(type)
- {
- case UPSTREAM_ACTIVE_CHANNEL_LIST_UPSTREAM_CHANNEL_ID:
- proto_tree_add_item (mdd_tree, hf_docsis_mdd_upstream_active_channel_list_upstream_channel_id, tvb, pos, 1, ENC_BIG_ENDIAN);
- break;
- case UPSTREAM_ACTIVE_CHANNEL_LIST_CM_STATUS_EVENT_ENABLE_BITMASK:
- 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);
- break;
- }
-
- pos += length;
- }
-}
-
-static void
-dissect_mdd_cm_status_event_control(tvbuff_t * tvb, packet_info* pinfo _U_, proto_tree * tree, int start, guint16 len)
-{
- guint8 type;
- guint32 length, timer;
- proto_tree *mdd_tree;
- proto_item *mdd_item, *text_item;
- int pos;
-
- pos = start;
- while ( pos < ( start + len) )
- {
- type = tvb_get_guint8 (tvb, pos);
- mdd_tree = proto_tree_add_subtree(tree, tvb, pos, -1,
- ett_docsis_mdd_cm_status_event_control, &mdd_item,
- val_to_str(type, mdd_cm_status_event_control_vals,
- "Unknown TLV (%u)"));
- proto_tree_add_uint (mdd_tree, hf_docsis_mdd_cm_status_event_control_subtype, tvb, pos, 1, type);
- pos++;
- proto_tree_add_item_ret_uint (mdd_tree, hf_docsis_mdd_cm_status_event_control_length, tvb, pos, 1, ENC_NA, &length);
- pos++;
- proto_item_set_len(mdd_item, length + 2);
-
- switch(type)
- {
- case EVENT_TYPE_CODE:
- proto_tree_add_item (mdd_tree, hf_docsis_mdd_event_type, tvb, pos, 1, ENC_BIG_ENDIAN);
- break;
- case MAXIMUM_EVENT_HOLDOFF_TIMER:
- text_item = proto_tree_add_item_ret_uint (mdd_tree, hf_docsis_mdd_maximum_event_holdoff_timer, tvb, pos, 2, ENC_BIG_ENDIAN, &timer);
- proto_item_append_text(text_item, " (%d ms)", timer * 20);
- break;
- case MAXIMUM_NUMBER_OF_REPORTS_PER_EVENT:
- proto_tree_add_item (mdd_tree, hf_docsis_mdd_maximum_number_of_reports_per_event, tvb, pos, 1, ENC_BIG_ENDIAN);
- break;
- }
-
- pos += length;
- }
-}
-
-static void
-dissect_mdd_dsg_da_to_dsid(tvbuff_t * tvb, packet_info* pinfo _U_, proto_tree * tree, int start, guint16 len)
-{
- guint8 type;
- guint32 length;
- proto_tree *mdd_tree;
- proto_item *mdd_item;
- int pos;
-
- pos = start;
- while ( pos < ( start + len) )
- {
- type = tvb_get_guint8 (tvb, pos);
- mdd_tree = proto_tree_add_subtree(tree, tvb, pos, -1,
- ett_docsis_mdd_dsg_da_to_dsid, &mdd_item,
- val_to_str(type, mdd_cm_dsg_da_to_dsid_vals,
- "Unknown TLV (%u)"));
- proto_tree_add_uint (mdd_tree, hf_docsis_mdd_dsg_da_to_dsid_subtype, tvb, pos, 1, type);
- pos++;
- proto_tree_add_item_ret_uint (mdd_tree, hf_docsis_mdd_dsg_da_to_dsid_length, tvb, pos, 1, ENC_NA, &length);
- pos++;
- proto_item_set_len(mdd_item, length + 2);
-
- switch(type)
- {
- case DSG_DA_TO_DSID_ASSOCIATION_DA:
- proto_tree_add_item (mdd_tree, hf_docsis_mdd_dsg_da_to_dsid_association_da, tvb, pos, 6, ENC_NA);
- break;
- case DSG_DA_TO_DSID_ASSOCIATION_DSID:
- proto_tree_add_item (mdd_tree, hf_docsis_mdd_dsg_da_to_dsid_association_dsid, tvb, pos, 3, ENC_BIG_ENDIAN);
- break;
- }
-
- pos += length;
- }
-}
-
-static int
-dissect_mdd (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* data _U_)
-{
- proto_item *it;
- proto_tree *mdd_tree;
-
- int pos;
- guint8 type;
- guint32 i, length;
- proto_tree *tlv_tree;
- proto_item *tlv_item;
- static const int * non_channel_events[] = {
- &hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events_sequence_out_of_range,
- &hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events_cm_operating_on_battery_backup,
- &hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events_cm_returned_to_ac_power,
- NULL
- };
-
- col_set_str(pinfo->cinfo, COL_INFO, "MDD Message:");
-
- it = proto_tree_add_protocol_format (tree, proto_docsis_mdd, tvb, 0, -1,"MDD Message");
- mdd_tree = proto_item_add_subtree (it, ett_docsis_mdd);
-
- proto_tree_add_item (mdd_tree, hf_docsis_mdd_ccc, tvb, 0, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (mdd_tree, hf_docsis_mdd_number_of_fragments, tvb, 1, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (mdd_tree, hf_docsis_mdd_fragment_sequence_number, tvb, 2, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item (mdd_tree, hf_docsis_mdd_current_channel_dcid, tvb, 3, 1, ENC_BIG_ENDIAN);
-
- /*TLVs...*/
- pos = 4;
- while (tvb_reported_length_remaining(tvb, pos) > 0)
- {
- type = tvb_get_guint8 (tvb, pos);
- tlv_tree = proto_tree_add_subtree(mdd_tree, tvb, pos, -1,
- ett_tlv, &tlv_item,
- val_to_str(type, mdd_tlv_vals,
- "Unknown TLV (%u)"));
- proto_tree_add_uint (tlv_tree, hf_docsis_mdd_type, tvb, pos, 1, type);
- pos++;
- proto_tree_add_item_ret_uint (tlv_tree, hf_docsis_mdd_length, tvb, pos, 1, ENC_NA, &length);
- pos++;
- proto_item_set_len(tlv_item, length + 2);
-
- switch(type)
- {
- case DOWNSTREAM_ACTIVE_CHANNEL_LIST:
- dissect_mdd_ds_active_channel_list(tvb, pinfo, tlv_tree, pos, length );
- break;
- case MAC_DOMAIN_DOWNSTREAM_SERVICE_GROUP:
- dissect_mdd_ds_service_group(tvb, pinfo, tlv_tree, pos, length );
- break;
- case DOWNSTREAM_AMBIGUITY_RESOLUTION_FREQUENCY_LIST:
- for (i = 0; i < length; i+=4) {
- proto_tree_add_item (tlv_tree, hf_docsis_mdd_downstream_ambiguity_resolution_frequency, tvb, pos + i, 4, ENC_BIG_ENDIAN);
- }
- break;
- case RECEIVE_CHANNEL_PROFILE_REPORTING_CONTROL:
- dissect_mdd_channel_profile_reporting_control(tvb, pinfo, tlv_tree, pos, length );
- break;
- case IP_INITIALIZATION_PARAMETERS:
- dissect_mdd_ip_init_param(tvb, pinfo, tlv_tree, pos, length );
- break;
- case EARLY_AUTHENTICATION_AND_ENCRYPTION:
- proto_tree_add_item (tlv_tree, hf_docsis_mdd_early_authentication_and_encryption, tvb, pos, 1, ENC_BIG_ENDIAN);
- break;
- case UPSTREAM_ACTIVE_CHANNEL_LIST:
- dissect_mdd_upstream_active_channel_list(tvb, pinfo, tlv_tree, pos, length );
- break;
- case UPSTREAM_AMBIGUITY_RESOLUTION_CHANNEL_LIST:
- for (i = 0; i < length; i++) {
- proto_tree_add_item (tlv_tree, hf_docsis_mdd_upstream_ambiguity_resolution_channel_list_channel_id, tvb, pos + i , 1, ENC_BIG_ENDIAN);
- }
- break;
- case UPSTREAM_FREQUENCY_RANGE:
- proto_tree_add_item (tlv_tree, hf_docsis_mdd_upstream_frequency_range, tvb, pos, 1, ENC_BIG_ENDIAN);
- break;
- case SYMBOL_CLOCK_LOCKING_INDICATOR:
- proto_tree_add_item (tlv_tree, hf_docsis_mdd_symbol_clock_locking_indicator, tvb, pos, 1, ENC_BIG_ENDIAN);
- break;
- case CM_STATUS_EVENT_CONTROL:
- dissect_mdd_cm_status_event_control(tvb, pinfo, tlv_tree, pos, length );
- break;
- case UPSTREAM_TRANSMIT_POWER_REPORTING:
- proto_tree_add_item (tlv_tree, hf_docsis_mdd_upstream_transmit_power_reporting, tvb, pos, 1, ENC_BIG_ENDIAN);
- break;
- case DSG_DA_TO_DSID_ASSOCIATION_ENTRY:
- dissect_mdd_dsg_da_to_dsid(tvb, pinfo, tlv_tree, pos, length );
- break;
- case CM_STATUS_EVENT_ENABLE_NON_CHANNEL_SPECIFIC_EVENTS:
- 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);
- break;
- case EXTENDED_UPSTREAM_TRANSMIT_POWER_SUPPORT:
- proto_tree_add_item (tlv_tree, hf_docsis_mdd_extended_upstream_transmit_power_support, tvb, pos, 1, ENC_BIG_ENDIAN);
- break;
- }
-
- pos += length;
- }
-
- return tvb_captured_length(tvb);
-}
-
-/* Register the protocol with Wireshark */
-void proto_register_docsis_mdd (void)
-{
- /* Setup list of header fields See Section 1.6.1 for details*/
- static hf_register_info hf[] = {
- {&hf_docsis_mdd_ccc,
- {"Configuration Change Count", "docsis_mdd.ccc",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Mdd Configuration Change Count", HFILL}
- },
- {&hf_docsis_mdd_number_of_fragments,
- {"Number of Fragments", "docsis_mdd.number_of_fragments",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Mdd Number of Fragments", HFILL}
- },
- {&hf_docsis_mdd_fragment_sequence_number,
- {"Fragment Sequence Number", "docsis_mdd.fragment_sequence_number",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Mdd Fragment Sequence Number", HFILL}
- },
- {&hf_docsis_mdd_current_channel_dcid,
- {"Current Channel DCID", "docsis_mdd.current_channel_dcid",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Mdd Current Channel DCID", HFILL}
- },
- {&hf_docsis_mdd_ds_active_channel_list_subtype,
- {"Type", "docsis_mdd.downstream_active_channel_list_tlvtype",
- FT_UINT8, BASE_DEC, VALS(mdd_ds_active_channel_list_vals), 0x0,
- NULL, HFILL}
- },
- {&hf_docsis_mdd_ds_active_channel_list_length,
- {"Length", "docsis_mdd.downstream_active_channel_list_tlvlen",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- {&hf_docsis_mdd_downstream_active_channel_list_channel_id,
- {"Channel ID", "docsis_mdd.downstream_active_channel_list_channel_id",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Mdd Downstream Active Channel List Channel ID", HFILL}
- },
- {&hf_docsis_mdd_downstream_active_channel_list_frequency,
- {"Frequency", "docsis_mdd.downstream_active_channel_list_frequency",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Mdd Downstream Active Channel List Frequency", HFILL}
- },
- {&hf_docsis_mdd_downstream_active_channel_list_annex,
- {"Annex", "docsis_mdd.downstream_active_channel_list_annex",
- FT_UINT8, BASE_DEC, VALS(J83_annex_vals), 0xF0,
- "Mdd Downstream Active Channel List Annex", HFILL}
- },
- {&hf_docsis_mdd_downstream_active_channel_list_modulation_order,
- {"Modulation Order", "docsis_mdd.downstream_active_channel_list_modulation_order",
- FT_UINT8, BASE_DEC, VALS(modulation_order_vals), 0x0F,
- "Mdd Downstream Active Channel List Modulation Order", HFILL}
- },
- {&hf_docsis_mdd_downstream_active_channel_list_primary_capable,
- {"Primary Capable", "docsis_mdd.downstream_active_channel_list_primary_capable",
- FT_UINT8, BASE_DEC, VALS(primary_capable_vals), 0x0,
- "Mdd Downstream Active Channel List Primary Capable", HFILL}
- },
- {&hf_docsis_mdd_cm_status_event_enable_bitmask,
- {"CM-STATUS Event Enable Bitmask", "docsis_mdd.cm_status_event_enable_bitmask",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL}
- },
- {&hf_docsis_mdd_cm_status_event_enable_bitmask_mdd_timeout,
- {"MDD Timeout", "docsis_mdd.downstream_active_channel_list_mdd_timeout",
- FT_UINT16, BASE_DEC, NULL, 0x0002,
- "Mdd Downstream Active Channel List MDD Timeout", HFILL}
- },
- {&hf_docsis_mdd_cm_status_event_enable_bitmask_qam_fec_lock_failure,
- {"QAM/FEC Lock Failure", "docsis_mdd.cm_status_event_enable_bitmask_qam_fec_lock_failure",
- FT_UINT16, BASE_DEC, NULL, 0x0004,
- "Mdd Downstream Active Channel List QAM/FEC Lock Failure", HFILL}
- },
- {&hf_docsis_mdd_cm_status_event_enable_bitmask_mdd_recovery,
- {"MDD Recovery", "docsis_mdd.cm_status_event_enable_bitmask_mdd_recovery",
- FT_UINT16, BASE_DEC, NULL, 0x0010,
- "CM-STATUS event MDD Recovery", HFILL}
- },
- {&hf_docsis_mdd_cm_status_event_enable_bitmask_qam_fec_lock_recovery,
- {"QAM/FEC Lock Recovery", "docsis_mdd.cm_status_event_enable_bitmask_qam_fec_lock_recovery",
- FT_UINT16, BASE_DEC, NULL, 0x0020,
- "CM-STATUS event QAM/FEC Lock Recovery", HFILL}
- },
- {&hf_docsis_mdd_downstream_active_channel_list_map_ucd_transport_indicator,
- {"MAP and UCD transport indicator", "docsis_mdd.downstream_active_channel_list_map_ucd_transport_indicator",
- FT_UINT8, BASE_DEC, VALS(map_ucd_transport_indicator_vals), 0x0,
- "Mdd Downstream Active Channel List MAP and UCD Transport Indicator", HFILL}
- },
- {&hf_docsis_mdd_ofdm_plc_parameters,
- {"OFDM PLC Parameters", "docsis_mdd.ofdm_plc_parameters",
- FT_UINT8, BASE_HEX, NULL, 0x0,
- NULL, HFILL}
- },
- {&hf_docsis_mdd_ofdm_plc_parameters_tukey_raised_cosine_window,
- {"Tukey raised cosine window", "docsis_mdd.ofdm_plc_parameters_tukey_raised_cosine_window",
- FT_UINT8, BASE_DEC, VALS(tukey_raised_cosine_vals), 0x07,
- "OFDM PLC Parameters Tukey raised cosine window", HFILL}
- },
- {&hf_docsis_mdd_ofdm_plc_parameters_cyclic_prefix,
- {"Cyclic prefix", "docsis_mdd.ofdm_plc_parameters_cyclic_prefix",
- FT_UINT8, BASE_DEC, VALS(cyclic_prefix_vals), 0x38,
- "OFDM PLC parameters Cyclic prefix", HFILL}
- },
- {&hf_docsis_mdd_ofdm_plc_parameters_sub_carrier_spacing,
- {"Sub carrier spacing", "docsis_mdd.ofdm_plc_parameters_sub_carrier_spacing",
- FT_UINT8, BASE_DEC, VALS(spacing_vals), 0x40,
- "OFDM PLC parameters Sub carrier spacing", HFILL}
- },
- {&hf_docsis_mdd_up_active_channel_list_subtype,
- {"Type", "docsis_mdd.up_active_channel_list_tlvtype",
- FT_UINT8, BASE_DEC, VALS(mdd_up_active_channel_list_vals), 0x0,
- NULL, HFILL}
- },
- {&hf_docsis_mdd_up_active_channel_list_length,
- {"Length", "docsis_mdd.up_active_channel_list_tlvlen",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- {&hf_docsis_mdd_cm_status_event_enable_bitmask_t4_timeout,
- {"T4 timeout", "docsis_mdd.cm_status_event_enable_bitmask_t4_timeout",
- FT_UINT16, BASE_DEC, NULL, 0x0040,
- "CM-STATUS event T4 timeout", HFILL}
- },
- {&hf_docsis_mdd_cm_status_event_enable_bitmask_t3_retries_exceeded,
- {"T3 Retries Exceeded", "docsis_mdd.cm_status_event_enable_bitmask_t3_retries_exceeded",
- FT_UINT16, BASE_DEC, NULL, 0x0080,
- "CM-STATUS event T3 Retries Exceeded", HFILL}
- },
- {&hf_docsis_mdd_cm_status_event_enable_bitmask_successful_ranging_after_t3_retries_exceeded,
- {"Successful Ranging after T3 Retries Exceeded", "docsis_mdd.cm_status_event_enable_bitmask_successful_ranging_after_t3_retries_exceeded",
- FT_UINT16, BASE_DEC, NULL, 0x0100,
- "CM-STATUS event Successful Ranging after T3 Retries Exceeded", HFILL}
- },
- {&hf_docsis_mdd_mac_domain_downstream_service_group_channel_id,
- {"Channel Id", "docsis_mdd.mac_domain_downstream_service_group_channel_id",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Mdd Mac Domain Downstream Service Group Channel Id", HFILL}
- },
- {&hf_docsis_mdd_ds_service_group_subtype,
- {"Type", "docsis_mdd.ds_service_group_type",
- FT_UINT8, BASE_DEC, VALS(mdd_ds_service_group_vals), 0x0,
- NULL, HFILL}
- },
- {&hf_docsis_mdd_ds_service_group_length,
- {"Length", "docsis_mdd.ds_service_group_length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- {&hf_docsis_mdd_mac_domain_downstream_service_group_md_ds_sg_identifier,
- {"MD-DS-SG Identifier", "docsis_mdd.mac_domain_downstream_service_group_md_ds_sg_identifier",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Mdd Mac Domain Downstream Service Group MD-DS-SG Identifier", HFILL}
- },
- {&hf_docsis_mdd_type,
- {"Type", "docsis_mdd.type",
- FT_UINT8, BASE_DEC, VALS(mdd_tlv_vals), 0x0,
- NULL, HFILL}
- },
- {&hf_docsis_mdd_length,
- {"Length", "docsis_mdd.length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- {&hf_docsis_mdd_downstream_ambiguity_resolution_frequency,
- {"Frequency", "docsis_mdd.downstream_ambiguity_resolution_frequency",
- FT_UINT32, BASE_DEC, NULL, 0x0,
- "Mdd Downstream Ambiguity Resolution frequency", HFILL}
- },
- {&hf_docsis_mdd_channel_profile_reporting_control_subtype,
- {"Type", "docsis_mdd.channel_profile_reporting_control_type",
- FT_UINT8, BASE_DEC, VALS(mdd_channel_profile_reporting_control_vals), 0x0,
- NULL, HFILL}
- },
- {&hf_docsis_mdd_channel_profile_reporting_control_length,
- {"Length", "docsis_mdd.channel_profile_reporting_control_length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- {&hf_docsis_mdd_rpc_center_frequency_spacing,
- {"RPC Center Frequency Spacing", "docsis_mdd.rpc_center_frequency_spacing",
- FT_UINT8, BASE_DEC, VALS(rpc_center_frequency_spacing_vals), 0x0,
- "Mdd RPC Center Frequency Spacing", HFILL}
- },
- {&hf_docsis_mdd_verbose_rcp_reporting,
- {"Verbose RCP reporting", "docsis_mdd.verbose_rpc_reporting",
- FT_UINT8, BASE_DEC, VALS(verbose_rpc_reporting_vals), 0x0,
- "Mdd Verbose RPC Reporting", HFILL}
- },
- {&hf_docsis_mdd_ip_init_param_subtype,
- {"Type", "docsis_mdd.ip_init_param_type",
- FT_UINT8, BASE_DEC, VALS(mdd_ip_init_param_vals), 0x0,
- NULL, HFILL}
- },
- {&hf_docsis_mdd_ip_init_param_length,
- {"Length", "docsis_mdd.ip_init_param_length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- {&hf_docsis_mdd_ip_provisioning_mode,
- {"IP Provisioning Mode", "docsis_mdd.ip_provisioning_mode",
- FT_UINT8, BASE_DEC, VALS(ip_provisioning_mode_vals), 0x0,
- "Mdd IP Provisioning Mode", HFILL}
- },
- {&hf_docsis_mdd_pre_registration_dsid,
- {"Pre-registration DSID", "docsis_mdd.pre_registration_dsid",
- FT_UINT24, BASE_DEC, NULL, 0x0FFFFF,
- "Mdd Pre-registration DSID", HFILL}
- },
- {&hf_docsis_mdd_early_authentication_and_encryption,
- {"Early Authentication and Encryption", "docsis_mdd.early_authentication_and_encryption",
- FT_UINT8, BASE_DEC, VALS(eae_vals), 0x0,
- "Mdd Early Authentication and Encryption", HFILL}
- },
- {&hf_docsis_mdd_upstream_active_channel_list_upstream_channel_id,
- {"Upstream Channel Id", "docsis_mdd.upstream_active_channel_list_upstream_channel_id",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Mdd Upstream Active Channel List Upstream Channel Id", HFILL}
- },
- {&hf_docsis_mdd_upstream_ambiguity_resolution_channel_list_channel_id,
- {"Channel Id", "docsis_mdd.upstream_ambiguity_resolution_channel_list_channel_id",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Mdd Mac Domain Upstream Ambiguity Resolution Channel List Channel Id", HFILL}
- },
- {&hf_docsis_mdd_upstream_frequency_range,
- {"Upstream Frequency Range", "docsis_mdd.upstream_frequency_range",
- FT_UINT8, BASE_DEC, VALS(upstream_frequency_range_vals), 0x0,
- "Mdd Upstream Frequency Range", HFILL}
- },
- {&hf_docsis_mdd_symbol_clock_locking_indicator,
- {"Symbol Clock Locking Indicator", "docsis_mdd.symbol_clock_locking_indicator",
- FT_UINT8, BASE_DEC, VALS(symbol_clock_locking_indicator_vals), 0x0,
- "Mdd Symbol Clock Locking Indicator", HFILL}
- },
- {&hf_docsis_mdd_cm_status_event_control_subtype,
- {"Type", "docsis_mdd.cm_status_event_control_type",
- FT_UINT8, BASE_DEC, VALS(mdd_cm_status_event_control_vals), 0x0,
- NULL, HFILL}
- },
- {&hf_docsis_mdd_cm_status_event_control_length,
- {"Length", "docsis_mdd.cm_status_event_control_length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- {&hf_docsis_mdd_event_type,
- {"Event Type", "docsis_mdd.event_type",
- FT_UINT8, BASE_DEC, VALS(symbol_cm_status_event_vals), 0x0,
- "Mdd CM-STATUS Event Type", HFILL}
- },
- {&hf_docsis_mdd_maximum_event_holdoff_timer,
- {"Maximum Event Holdoff Timer (units of 20 ms)", "docsis_mdd.maximum_event_holdoff_timer",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- "Mdd Maximum Event Holdoff Timer", HFILL}
- },
- {&hf_docsis_mdd_maximum_number_of_reports_per_event,
- {"Maximum Number of Reports per Event", "docsis_mdd.maximum_number_of_reports_per_event",
- FT_UINT8, BASE_DEC|BASE_SPECIAL_VALS, VALS(unique_unlimited), 0x0,
- "Mdd Maximum Number of Reports per Event", HFILL}
- },
- {&hf_docsis_mdd_upstream_transmit_power_reporting,
- {"Upstream Transmit Power Reporting", "docsis_mdd.upstream_transmit_power_reporting",
- FT_UINT8, BASE_DEC, VALS(upstream_transmit_power_reporting_vals), 0x0,
- "Mdd Upstream Transmit Power Reporting", HFILL}
- },
- {&hf_docsis_mdd_dsg_da_to_dsid_subtype,
- {"Type", "docsis_mdd.dsg_da_to_dsid_type",
- FT_UINT8, BASE_DEC, VALS(mdd_cm_dsg_da_to_dsid_vals), 0x0,
- NULL, HFILL}
- },
- {&hf_docsis_mdd_dsg_da_to_dsid_length,
- {"Length", "docsis_mdd.dsg_da_to_dsid_length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- NULL, HFILL}
- },
- {&hf_docsis_mdd_dsg_da_to_dsid_association_da,
- {"Destination Address", "docsis_mdd.dsg_da_to_dsid_association_da",
- FT_ETHER, BASE_NONE, NULL, 0x0,
- "Mdd DSG DA to DSID association Destination Address", HFILL}
- },
- {&hf_docsis_mdd_dsg_da_to_dsid_association_dsid,
- {"DSID", "docsis_mdd.dsg_da_to_dsid_association_dsid",
- FT_UINT24, BASE_DEC, NULL, 0x0FFFFF,
- "Mdd Mdd DSG DA to DSID association DSID", HFILL}
- },
- {&hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events,
- {"CM-STATUS Event Enable Bitmask for Non-Channel-Specific Events", "docsis_mdd.cm_status_event_enable_non_channel_specific_events",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- NULL, HFILL}
- },
- {&hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events_sequence_out_of_range,
- {"Sequence out of range", "docsis_mdd.cm_status_event_enable_non_channel_specific_events_sequence_out_of_range",
- FT_UINT16, BASE_DEC, NULL, 0x0008,
- "CM-STATUS event non-channel-event Sequence out of range", HFILL}
- },
- {&hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events_cm_operating_on_battery_backup,
- {"CM operating on battery backup", "docsis_mdd.cm_status_event_enable_non_channel_specific_events_cm_operating_on_battery_backup",
- FT_UINT16, BASE_DEC, NULL, 0x0200,
- "CM-STATUS event non-channel-event Cm operating on battery backup", HFILL}
- },
- {&hf_docsis_mdd_cm_status_event_enable_non_channel_specific_events_cm_returned_to_ac_power,
- {"Returned to AC power", "docsis_mdd.cm_status_event_enable_non_channel_specific_events_cm_returned_to_ac_power",
- FT_UINT16, BASE_DEC, NULL, 0x0400,
- "CM-STATUS event non-channel-event Cm returned to AC power", HFILL}
- },
- {&hf_docsis_mdd_extended_upstream_transmit_power_support,
- { "Extended Upstream Transmit Power Support", "docsis_mdd.extended_upstream_transmit_power_support",
- FT_BOOLEAN, BASE_NONE, TFS(&mdd_tfs_on_off), 0x0,
- "Mdd Extended Upstream Transmit Power Support", HFILL}
- },
- };
-
- static gint *ett[] = {
- &ett_docsis_mdd,
- &ett_tlv,
- &ett_sub_tlv,
- &ett_docsis_mdd_ds_active_channel_list,
- &ett_docsis_mdd_ds_service_group,
- &ett_docsis_mdd_channel_profile_reporting_control,
- &ett_docsis_mdd_ip_init_param,
- &ett_docsis_mdd_up_active_channel_list,
- &ett_docsis_mdd_cm_status_event_control,
- &ett_docsis_mdd_dsg_da_to_dsid,
- };
-
- proto_docsis_mdd =
- proto_register_protocol ("DOCSIS Mac Domain Description",
- "DOCSIS Mdd", "docsis_mdd");
-
- proto_register_field_array (proto_docsis_mdd, hf, array_length (hf));
- proto_register_subtree_array (ett, array_length (ett));
-
- docsis_mdd_handle = register_dissector ("docsis_mdd", dissect_mdd, proto_docsis_mdd);
-}
-
-void
-proto_reg_handoff_docsis_mdd (void)
-{
- dissector_add_uint ("docsis_mgmt", 33, docsis_mdd_handle);
-}
-
-/*
- * Editor modelines - http://www.wireshark.org/tools/modelines.html
- *
- * Local Variables:
- * c-basic-offset: 2
- * tab-width: 8
- * indent-tabs-mode: nil
- * End:
- *
- * ex: set shiftwidth=2 tabstop=8 expandtab:
- * :indentSize=2:tabSize=8:noTabs=true:
- */