⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plugins-wimax-msg_reg_req.c

📁 Intel的WIMAX代码,主要是mac层code
💻 C
📖 第 1 页 / 共 4 页
字号:
	{
		&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 + -