📄 plugins-wimax-msg_reg_req.c
字号:
{
&hf_reg_mca_flow_control,
{
"MCA flow control", "wimax.reg.mca_flow_control",
FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL
}
},
{
&hf_reg_mcast_polling_cids,
{
"Multicast polling group CID support", "wimax.reg.mcast_polling_cids",
FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL
}
},
{
&hf_reg_tlv_t_27_handover_mdho_ul_multiple,
{
"MDHO UL Multiple transmission", "wimax.reg.mdh_ul_multiple",
FT_BOOLEAN, 8, TFS(&tfs_supported), 0x10, "", HFILL
}
},
{
&hf_reg_tlv_t_27_handover_mdho_dl_monitoring_maps,
{
"MDHO DL soft combining with monitoring MAPs from active BSs", "wimax.reg.mdho_dl_monitor_maps",
FT_BOOLEAN, 8, TFS(&tfs_supported), 0x08, "", HFILL
}
},
{
&hf_reg_tlv_t_27_handover_mdho_dl_monitoring_single_map,
{
"MDHO DL soft Combining with monitoring single MAP from anchor BS", "wimax.reg.mdho_dl_monitor_single_map",
FT_BOOLEAN, 8, TFS(&tfs_supported), 0x04, "", HFILL
}
},
{
&hf_reg_tlv_t_43_mimo_mode_feedback_extended_subheader,
{
"MIMO mode feedback request extended subheader", "wimax.reg.mimo_mode_feedback_request_extended_subheader",
FT_UINT24, BASE_DEC, VALS(tfs_support), 0x2000, "", HFILL
}
},
{
&hf_reg_tlv_t_43_mini_feedback_extended_subheader,
{
"Mini-feedback extended subheader", "wimax.reg.mini_feedback_extended_subheader",
FT_UINT24, BASE_DEC, VALS(tfs_support), 0x8000, "", HFILL
}
},
{
&hf_reg_tlv_t_31_mobility_handover,
{
"Mobility (handover)", "wimax.reg.mobility_handover",
FT_BOOLEAN, 8, TFS(&tfs_supported), 0x01, "", HFILL
}
},
{
&hf_reg_tlv_t_31_mobility_idle_mode,
{
"Idle mode", "wimax.reg.mobility_idle_mode",
FT_BOOLEAN, 8, TFS(&tfs_supported), 0x04, "", HFILL
}
},
{
&hf_reg_tlv_t_31_mobility_sleep_mode,
{
"Sleep mode", "wimax.reg.mobility_sleep_mode",
FT_BOOLEAN, 8, TFS(&tfs_supported), 0x02, "", HFILL
}
},
{
&hf_reg_num_dl_trans_cid,
{
"Number of Downlink transport CIDs the SS can support", "wimax.reg.dl_cids_supported",
FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL
}
},
{
&hf_reg_tlv_t_21_packing_support,
{
"Packing support", "wimax.reg.packing.support",
FT_BOOLEAN, 8, TFS(&tfs_supported), 0x01, "", HFILL
}
},
{
&hf_reg_tlv_t_43_pdu_sn_long_extended_subheader,
{
"PDU SN (long) extended subheader", "wimax.reg.pdu_sn_long_extended_subheader",
FT_UINT24, BASE_DEC, VALS(tfs_support), 0x40000, "", HFILL
}
},
{
&hf_reg_tlv_t_43_pdu_sn_short_extended_subheader,
{
"PDU SN (short) extended subheader", "wimax.reg.pdu_sn_short_extended_subheader",
FT_UINT24, BASE_DEC, VALS(tfs_support), 0x20000, "", HFILL
}
},
{
&hf_reg_phs,
{
"PHS support", "wimax.reg.phs",
FT_UINT8, BASE_DEC, VALS(vals_reg_phs_support), 0x0, "", HFILL
}
},
{
&hf_reg_tlv_t_43_phy_channel_report_header_support,
{
"PHY channel report header support", "wimax.reg.phy_channel_report_header_support",
FT_UINT24, BASE_DEC, VALS(tfs_support), 0x8, "", HFILL
}
},
{
&hf_reg_tlv_t_43_reserved,
{
"Reserved", "wimax.reg.reserved",
FT_UINT24, BASE_DEC, NULL, 0xf80000, "", HFILL
}
},
{
&hf_reg_tlv_t_43_sdu_sn_extended_subheader_support_and_parameter,
{
"SDU_SN extended subheader support", "wimax.reg.sdu_sn_extended_subheader_support",
FT_UINT24, BASE_DEC, VALS(tfs_support), 0x80, "", HFILL
}
},
{
&hf_reg_tlv_t_43_sdu_sn_parameter,
{
"SDU_SN parameter", "wimax.reg.sdu_sn_parameter",
FT_UINT24, BASE_DEC, NULL, 0x700, "", HFILL
}
},
{
&hf_reg_tlv_t_43_sn_report_header_support,
{
"SN report header support", "wimax.reg.sn_report_header_support",
FT_UINT24, BASE_DEC, VALS(tfs_support), 0x20, "", HFILL
}
},
{
&hf_reg_tlv_t_43_sn_request_extended_subheader,
{
"SN request extended subheader", "wimax.reg.sn_request_extended_subheader",
FT_UINT24, BASE_DEC, VALS(tfs_support), 0x10000, "", HFILL
}
},
{
&hf_reg_ss_mgmt_support,
{
"SS management support", "wimax.reg.ss_mgmt_support",
FT_BOOLEAN, 8, TFS(&tfs_reg_ss_mgmt_support), 0x0, "", HFILL
}
},
{
&hf_reg_ul_cids,
{
"Number of Uplink transport CIDs the SS can support", "wimax.reg.ul_cids_supported",
FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL
}
},
{
&hf_reg_tlv_t_43_ul_tx_power_report_extended_subheader,
{
"UL Tx power report extended subheader", "wimax.reg.ul_tx_power_report_extended_subheader",
FT_UINT24, BASE_DEC, VALS(tfs_support), 0x4000, "", HFILL
}
},
{
&hf_tlv_type,
{
"Unknown TLV Type", "wimax.reg.unknown_tlv_type",
FT_BYTES, BASE_NONE, NULL, 0x00, "", HFILL
}
},
{
&hf_reg_req_message_type,
{
"MAC Management Message Type", "wimax.macmgtmsgtype.reg_req",
FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL
}
},
{
&hf_reg_invalid_tlv,
{
"Invalid TLV", "wimax.reg_req.invalid_tlv",
FT_BYTES, BASE_HEX, NULL, 0, "", HFILL
}
},
{
&hf_reg_tlv_t_20_1_max_mac_level_data_per_dl_frame,
{
"Maximum MAC level DL data per frame", "wimax.reg_req.max_mac_dl_data",
FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL
}
},
{
&hf_reg_tlv_t_20_2_max_mac_level_data_per_ul_frame,
{
"Maximum MAC level UL data per frame", "wimax.reg_req.max_mac_ul_data",
FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL
}
},
{
&hf_reg_req_min_time_for_inter_fa,
{
"Minimum time for inter-FA HO, default=3", "wimax.reg_req.min_time_for_inter_fa",
FT_UINT8, BASE_HEX, NULL, 0xF0, "", HFILL
}
},
{
&hf_reg_req_min_time_for_intra_fa,
{
"Minimum time for intra-FA HO, default=2", "wimax.reg_req.min_time_for_intra_fa",
FT_UINT8, BASE_HEX, NULL, 0x0F, "", HFILL
}
},
{
&hf_reg_req_tlv_t_45_ms_periodic_ranging_timer,
{
"MS periodic ranging timer information", "wimax.reg_req.ms_periodic_ranging_timer_info",
FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL
}
},
{ /* IPv4 Mask */
&hf_ms_previous_ip_address_v4,
{
"MS Previous IP address", "wimax.reg_req.ms_prev_ip_addr_v4",
FT_IPv4, BASE_NONE, NULL, 0x0, "", HFILL
}
},
{ /* IPv6 Source Address */
&hf_ms_previous_ip_address_v6,
{
"MS Previous IP address", "wimax.reg_req.ms_prev_ip_addr_v6",
FT_IPv6, BASE_NONE, NULL, 0x0, "", HFILL
}
},
{
&hf_reg_req_secondary_mgmt_cid,
{
"Secondary Management CID", "wimax.reg_req.secondary_mgmt_cid",
FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL
}
},
{
&hf_reg_req_tlv_t_32_sleep_mode_recovery_time,
{
"Frames required for the MS to switch from sleep to awake-mode", "wimax.reg_req.sleep_recovery",
FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL
}
}
};
/* Decode REG-REQ sub-TLV's. */
void dissect_extended_tlv(proto_tree *reg_req_tree, gint tlv_type, tvbuff_t *tvb, guint tlv_offset, guint tlv_len, packet_info *pinfo, guint offset, gint proto_registry)
{
proto_item *tlv_item = NULL;
proto_tree *tlv_tree = NULL;
proto_tree *sub_tree = NULL;
guint tvb_len;
tlv_info_t tlv_info;
guint tlv_end;
guint length;
guint nblocks;
/* Get the tvb reported length */
tvb_len = tvb_reported_length(tvb);
/* get the TLV information */
init_tlv_info(&tlv_info, tvb, offset);
#ifdef WIMAX_16E_2005
switch (tlv_type) {
case REG_ARQ_PARAMETERS:
/* display ARQ Service Flow Encodings info */
/* add subtree */
tlv_tree = add_protocol_subtree(&tlv_info, ett_mac_mgmt_msg_reg_req_decoder, reg_req_tree, proto_registry, tvb, tlv_offset, tlv_len, "ARQ Service Flow Encodings (%u byte(s))", tlv_len);
/* decode and display the DL Service Flow Encodings */
wimax_service_flow_encodings_decoder(tvb_new_subset(tvb, tlv_offset, tlv_len, tlv_len), pinfo, tlv_tree);
break;
case REG_SS_MGMT_SUPPORT:
tlv_tree = add_tlv_subtree(&tlv_info, ett_mac_mgmt_msg_reg_req_decoder, reg_req_tree, hf_reg_ss_mgmt_support, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_ss_mgmt_support, tvb, tlv_offset, 1, FALSE);
break;
case REG_IP_MGMT_MODE:
tlv_tree = add_tlv_subtree(&tlv_info, ett_mac_mgmt_msg_reg_req_decoder, reg_req_tree, hf_reg_ip_mgmt_mode, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_ip_mgmt_mode, tvb, tlv_offset, 1, FALSE);
break;
case REG_IP_VERSION:
tlv_tree = add_tlv_subtree(&tlv_info, ett_mac_mgmt_msg_reg_req_decoder, reg_req_tree, hf_reg_ip_version, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_ip_version, tvb, tlv_offset, 1, FALSE);
break;
case REG_UL_TRANSPORT_CIDS_SUPPORTED:
tlv_tree = add_tlv_subtree(&tlv_info, ett_mac_mgmt_msg_reg_req_decoder, reg_req_tree, hf_reg_ul_cids, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_ul_cids, tvb, tlv_offset, tlv_len, FALSE);
break;
case REG_IP_PHS_SDU_ENCAP:
/* add TLV subtree */
tlv_tree = add_protocol_subtree(&tlv_info, ett_mac_mgmt_msg_reg_req_decoder, reg_req_tree, proto_registry, tvb, tlv_offset, tlv_len, "Classification/PHS options and SDU encapsulation support 0x%04x", tvb_get_ntohs(tvb, tlv_offset));
#ifdef WIMAX_16E_2005
if (tlv_len == 2){
proto_tree_add_item(tlv_tree, hf_reg_encap_atm_2, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_ipv4_2, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_ipv6_2, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_802_3_2, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_802_1q_2, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_ipv4_802_3_2, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_ipv6_802_3_2, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_ipv4_802_1q_2, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_ipv6_802_1q_2, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_packet_8023_ethernet_and_rohc_header_compression_2, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_packet_8023_ethernet_and_ecrtp_header_compression_2, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_packet_ip_rohc_header_compression_2, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_packet_ip_ecrtp_header_compression_2, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_rsvd_2, tvb, tlv_offset, tlv_len, FALSE);
} else if(tlv_len == 4){
proto_tree_add_item(tlv_tree, hf_reg_encap_atm_4, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_ipv4_4, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_ipv6_4, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_802_3_4, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_802_1q_4, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_ipv4_802_3_4, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_ipv6_802_3_4, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_ipv4_802_1q_4, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_ipv6_802_1q_4, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_packet_8023_ethernet_and_rohc_header_compression_4, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_packet_8023_ethernet_and_ecrtp_header_compression_4, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_packet_ip_rohc_header_compression_4, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_packet_ip_ecrtp_header_compression_4, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_encap_rsvd_4, tvb, tlv_offset, tlv_len, FALSE);
}
#endif
break;
case REG_MAX_CLASSIFIERS_SUPPORTED:
tlv_tree = add_tlv_subtree(&tlv_info, ett_mac_mgmt_msg_reg_req_decoder, reg_req_tree, hf_reg_max_classifiers, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_max_classifiers, tvb, tlv_offset, 2, FALSE);
break;
case REG_PHS_SUPPORT:
tlv_tree = add_tlv_subtree(&tlv_info, ett_mac_mgmt_msg_reg_req_decoder, reg_req_tree, hf_reg_phs, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_phs, tvb, tlv_offset, 1, FALSE);
break;
case REG_ARQ_SUPPORT:
tlv_tree = add_tlv_subtree(&tlv_info, ett_mac_mgmt_msg_reg_req_decoder, reg_req_tree, hf_reg_arq, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_arq, tvb, tlv_offset, 1, FALSE);
break;
case REG_DSX_FLOW_CONTROL:
tlv_tree = add_tlv_subtree(&tlv_info, ett_mac_mgmt_msg_reg_req_decoder, reg_req_tree, hf_reg_dsx_flow_control, tvb, tlv_offset, tlv_len, FALSE);
tlv_item = proto_tree_add_item(tlv_tree, hf_reg_dsx_flow_control, tvb, tlv_offset, 1, FALSE);
if (tvb_get_guint8(tvb, tlv_offset) == 0) {
proto_item_append_text(tlv_item, " (no limit)");
}
break;
case REG_MAC_CRC_SUPPORT:
if (!include_cor2_changes) {
proto_tree_add_item(reg_req_tree, hf_reg_mac_crc_support, tvb, tlv_offset, 1, FALSE);
tlv_tree = add_tlv_subtree(&tlv_info, ett_mac_mgmt_msg_reg_req_decoder, reg_req_tree, hf_reg_mac_crc_support, tvb, tlv_offset, tlv_len, FALSE);
proto_tree_add_item(tlv_tree, hf_reg_mac_crc_support, tvb, tlv_offset, 1, FALSE);
} else {
/* Unknown TLV Type */
tlv_tree = add_tlv_subtree(&tlv_info, ett_mac_mgmt_msg_reg_req_decoder, reg_req_tree, proto_registry, tvb, tlv_offset, (tvb_len - tlv_offset), FALSE);
proto_tree_add_item(tlv_tree, hf_tlv_type, tvb, tlv_offset, (tvb_len - tlv_offset), FALSE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -