From e67ce21f81e51d677917bd7fb6572797e1487099 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Valverde?= Date: Sat, 11 Dec 2021 14:30:37 +0000 Subject: [PATCH] Netlink nl80211: Convert to normal proto tree API --- epan/dissectors/packet-netlink-nl80211.c | 1511 ++++++++++++---------- tools/generate-nl80211-fields.py | 30 +- 2 files changed, 878 insertions(+), 663 deletions(-) diff --git a/epan/dissectors/packet-netlink-nl80211.c b/epan/dissectors/packet-netlink-nl80211.c index f570ffedf5..08eef601ba 100644 --- a/epan/dissectors/packet-netlink-nl80211.c +++ b/epan/dissectors/packet-netlink-nl80211.c @@ -3167,417 +3167,109 @@ static const value_string ws_nl80211_obss_pd_attributes_vals[] = { }; static value_string_ext ws_nl80211_obss_pd_attributes_vals_ext = VALUE_STRING_EXT_INIT(ws_nl80211_obss_pd_attributes_vals); -static header_field_info hfi_nl80211_commands = - { "Command", "nl80211.cmd", FT_UINT8, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_commands_vals_ext), 0x00, "Generic Netlink Command", HFILL }; - -static header_field_info hfi_nl80211_attrs = - { "Attribute Type", "nl80211.attr_type", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_attrs_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_iftype = - { "Attribute Type", "nl80211.iftype", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_iftype_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_sta_flags = - { "Attribute Type", "nl80211.sta_flags", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_sta_flags_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_sta_p2p_ps_status = - { "Attribute Value", "nl80211.sta_p2p_ps_status", FT_UINT8, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_sta_p2p_ps_status_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_he_gi = - { "Attribute Type", "nl80211.he_gi", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_he_gi_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_he_ru_alloc = - { "Attribute Type", "nl80211.he_ru_alloc", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_he_ru_alloc_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_rate_info = - { "Attribute Type", "nl80211.rate_info", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_rate_info_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_sta_bss_param = - { "Attribute Type", "nl80211.sta_bss_param", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_sta_bss_param_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_sta_info = - { "Attribute Type", "nl80211.sta_info", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_sta_info_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_tid_stats = - { "Attribute Type", "nl80211.tid_stats", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_tid_stats_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_txq_stats = - { "Attribute Type", "nl80211.txq_stats", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_txq_stats_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_mpath_flags = - { "Attribute Type", "nl80211.mpath_flags", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_mpath_flags_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_mpath_info = - { "Attribute Type", "nl80211.mpath_info", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_mpath_info_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_band_iftype_attr = - { "Attribute Type", "nl80211.band_iftype_attr", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_band_iftype_attr_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_band_attr = - { "Attribute Type", "nl80211.band_attr", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_band_attr_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_wmm_rule = - { "Attribute Type", "nl80211.wmm_rule", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_wmm_rule_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_frequency_attr = - { "Attribute Type", "nl80211.frequency_attr", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_frequency_attr_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_bitrate_attr = - { "Attribute Type", "nl80211.bitrate_attr", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_bitrate_attr_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_reg_initiator = - { "Attribute Value", "nl80211.reg_initiator", FT_UINT8, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_reg_initiator_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_reg_type = - { "Attribute Value", "nl80211.reg_type", FT_UINT8, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_reg_type_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_reg_rule_attr = - { "Attribute Type", "nl80211.reg_rule_attr", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_reg_rule_attr_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_sched_scan_match_attr = - { "Attribute Type", "nl80211.sched_scan_match_attr", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_sched_scan_match_attr_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_reg_rule_flags = - { "Attribute Type", "nl80211.reg_rule_flags", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_reg_rule_flags_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_dfs_regions = - { "Attribute Value", "nl80211.dfs_regions", FT_UINT8, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_dfs_regions_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_user_reg_hint_type = - { "Attribute Value", "nl80211.user_reg_hint_type", FT_UINT32, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_user_reg_hint_type_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_survey_info = - { "Attribute Type", "nl80211.survey_info", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_survey_info_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_mntr_flags = - { "Attribute Type", "nl80211.mntr_flags", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_mntr_flags_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_mesh_power_mode = - { "Attribute Value", "nl80211.mesh_power_mode", FT_UINT32, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_mesh_power_mode_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_meshconf_params = - { "Attribute Type", "nl80211.meshconf_params", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_meshconf_params_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_mesh_setup_params = - { "Attribute Type", "nl80211.mesh_setup_params", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_mesh_setup_params_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_txq_attr = - { "Attribute Type", "nl80211.txq_attr", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_txq_attr_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_ac = - { "Attribute Type", "nl80211.ac", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_ac_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_channel_type = - { "Attribute Value", "nl80211.channel_type", FT_UINT32, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_channel_type_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_key_mode = - { "Attribute Type", "nl80211.key_mode", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_key_mode_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_chan_width = - { "Attribute Value", "nl80211.chan_width", FT_UINT32, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_chan_width_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_bss_scan_width = - { "Attribute Value", "nl80211.bss_scan_width", FT_UINT32, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_bss_scan_width_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_bss = - { "Attribute Type", "nl80211.bss", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_bss_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_bss_status = - { "Attribute Value", "nl80211.bss_status", FT_UINT32, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_bss_status_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_auth_type = - { "Attribute Value", "nl80211.auth_type", FT_UINT32, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_auth_type_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_key_type = - { "Attribute Value", "nl80211.key_type", FT_UINT32, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_key_type_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_mfp = - { "Attribute Value", "nl80211.mfp", FT_UINT32, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_mfp_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_wpa_versions = - { "Attribute Type", "nl80211.wpa_versions", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_wpa_versions_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_key_default_types = - { "Attribute Type", "nl80211.key_default_types", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_key_default_types_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_key_attributes = - { "Attribute Type", "nl80211.key_attributes", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_key_attributes_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_tx_rate_attributes = - { "Attribute Type", "nl80211.tx_rate_attributes", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_tx_rate_attributes_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_txrate_gi = - { "Attribute Type", "nl80211.txrate_gi", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_txrate_gi_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_band = - { "Attribute Type", "nl80211.band", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_band_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_ps_state = - { "Attribute Value", "nl80211.ps_state", FT_UINT32, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_ps_state_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_attr_cqm = - { "Attribute Type", "nl80211.attr_cqm", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_attr_cqm_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_cqm_rssi_threshold_event = - { "Attribute Type", "nl80211.cqm_rssi_threshold_event", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_cqm_rssi_threshold_event_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_tx_power_setting = - { "Attribute Value", "nl80211.tx_power_setting", FT_UINT32, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_tx_power_setting_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_packet_pattern_attr = - { "Attribute Type", "nl80211.packet_pattern_attr", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_packet_pattern_attr_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_wowlan_triggers = - { "Attribute Type", "nl80211.wowlan_triggers", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_wowlan_triggers_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_wowlan_tcp_attrs = - { "Attribute Type", "nl80211.wowlan_tcp_attrs", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_wowlan_tcp_attrs_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_attr_coalesce_rule = - { "Attribute Type", "nl80211.attr_coalesce_rule", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_attr_coalesce_rule_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_coalesce_condition = - { "Attribute Type", "nl80211.coalesce_condition", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_coalesce_condition_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_iface_limit_attrs = - { "Attribute Type", "nl80211.iface_limit_attrs", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_iface_limit_attrs_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_if_combination_attrs = - { "Attribute Type", "nl80211.if_combination_attrs", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_if_combination_attrs_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_plink_state = - { "Attribute Value", "nl80211.plink_state", FT_UINT8, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_plink_state_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_plink_actions = - { "Attribute Value", "nl80211.plink_actions", FT_UINT8, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_plink_actions_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_rekey_data = - { "Attribute Type", "nl80211.rekey_data", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_rekey_data_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_hidden_ssid = - { "Attribute Type", "nl80211.hidden_ssid", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_hidden_ssid_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_sta_wme_attr = - { "Attribute Type", "nl80211.sta_wme_attr", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_sta_wme_attr_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_pmksa_candidate_attr = - { "Attribute Type", "nl80211.pmksa_candidate_attr", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_pmksa_candidate_attr_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_tdls_operation = - { "Attribute Value", "nl80211.tdls_operation", FT_UINT8, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_tdls_operation_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_feature_flags = - { "Attribute Type", "nl80211.feature_flags", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_feature_flags_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_ext_feature_index = - { "Attribute Type", "nl80211.ext_feature_index", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_ext_feature_index_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_probe_resp_offload_support_attr = - { "Attribute Type", "nl80211.probe_resp_offload_support_attr", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_probe_resp_offload_support_attr_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_connect_failed_reason = - { "Attribute Value", "nl80211.connect_failed_reason", FT_UINT32, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_connect_failed_reason_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_timeout_reason = - { "Attribute Value", "nl80211.timeout_reason", FT_UINT32, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_timeout_reason_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_scan_flags = - { "Attribute Type", "nl80211.scan_flags", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_scan_flags_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_acl_policy = - { "Attribute Value", "nl80211.acl_policy", FT_UINT32, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_acl_policy_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_smps_mode = - { "Attribute Value", "nl80211.smps_mode", FT_UINT8, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_smps_mode_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_radar_event = - { "Attribute Value", "nl80211.radar_event", FT_UINT32, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_radar_event_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_dfs_state = - { "Attribute Type", "nl80211.dfs_state", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_dfs_state_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_protocol_features = - { "Attribute Type", "nl80211.protocol_features", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_protocol_features_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_crit_proto_id = - { "Attribute Value", "nl80211.crit_proto_id", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_crit_proto_id_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_rxmgmt_flags = - { "Attribute Type", "nl80211.rxmgmt_flags", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_rxmgmt_flags_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_tdls_peer_capability = - { "Attribute Type", "nl80211.tdls_peer_capability", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_tdls_peer_capability_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_sched_scan_plan = - { "Attribute Type", "nl80211.sched_scan_plan", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_sched_scan_plan_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_bss_select_attr = - { "Attribute Type", "nl80211.bss_select_attr", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_bss_select_attr_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_nan_function_type = - { "Attribute Type", "nl80211.nan_function_type", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_nan_function_type_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_nan_publish_type = - { "Attribute Type", "nl80211.nan_publish_type", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_nan_publish_type_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_nan_func_term_reason = - { "Attribute Type", "nl80211.nan_func_term_reason", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_nan_func_term_reason_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_nan_func_attributes = - { "Attribute Type", "nl80211.nan_func_attributes", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_nan_func_attributes_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_nan_srf_attributes = - { "Attribute Type", "nl80211.nan_srf_attributes", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_nan_srf_attributes_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_nan_match_attributes = - { "Attribute Type", "nl80211.nan_match_attributes", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_nan_match_attributes_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_external_auth_action = - { "Attribute Value", "nl80211.external_auth_action", FT_UINT32, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_external_auth_action_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_ftm_responder_attributes = - { "Attribute Type", "nl80211.ftm_responder_attributes", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_ftm_responder_attributes_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_ftm_responder_stats = - { "Attribute Type", "nl80211.ftm_responder_stats", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_ftm_responder_stats_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_preamble = - { "Attribute Type", "nl80211.preamble", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_preamble_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_peer_measurement_type = - { "Attribute Type", "nl80211.peer_measurement_type", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_peer_measurement_type_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_peer_measurement_status = - { "Attribute Type", "nl80211.peer_measurement_status", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_peer_measurement_status_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_peer_measurement_req = - { "Attribute Type", "nl80211.peer_measurement_req", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_peer_measurement_req_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_peer_measurement_resp = - { "Attribute Type", "nl80211.peer_measurement_resp", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_peer_measurement_resp_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_peer_measurement_peer_attrs = - { "Attribute Type", "nl80211.peer_measurement_peer_attrs", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_peer_measurement_peer_attrs_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_peer_measurement_attrs = - { "Attribute Type", "nl80211.peer_measurement_attrs", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_peer_measurement_attrs_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_peer_measurement_ftm_capa = - { "Attribute Type", "nl80211.peer_measurement_ftm_capa", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_peer_measurement_ftm_capa_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_peer_measurement_ftm_req = - { "Attribute Type", "nl80211.peer_measurement_ftm_req", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_peer_measurement_ftm_req_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_peer_measurement_ftm_failure_reasons = - { "Attribute Type", "nl80211.peer_measurement_ftm_failure_reasons", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_peer_measurement_ftm_failure_reasons_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_peer_measurement_ftm_resp = - { "Attribute Type", "nl80211.peer_measurement_ftm_resp", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_peer_measurement_ftm_resp_vals_ext), 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_obss_pd_attributes = - { "Attribute Type", "nl80211.obss_pd_attributes", FT_UINT16, BASE_DEC | BASE_EXT_STRING, - VALS_EXT_PTR(&ws_nl80211_obss_pd_attributes_vals_ext), 0x00, NULL, HFILL }; +static gint hf_nl80211_commands = -1; +static gint hf_nl80211_attrs = -1; +static gint hf_nl80211_iftype = -1; +static gint hf_nl80211_sta_flags = -1; +static gint hf_nl80211_sta_p2p_ps_status = -1; +static gint hf_nl80211_he_gi = -1; +static gint hf_nl80211_he_ru_alloc = -1; +static gint hf_nl80211_rate_info = -1; +static gint hf_nl80211_sta_bss_param = -1; +static gint hf_nl80211_sta_info = -1; +static gint hf_nl80211_tid_stats = -1; +static gint hf_nl80211_txq_stats = -1; +static gint hf_nl80211_mpath_flags = -1; +static gint hf_nl80211_mpath_info = -1; +static gint hf_nl80211_band_iftype_attr = -1; +static gint hf_nl80211_band_attr = -1; +static gint hf_nl80211_wmm_rule = -1; +static gint hf_nl80211_frequency_attr = -1; +static gint hf_nl80211_bitrate_attr = -1; +static gint hf_nl80211_reg_initiator = -1; +static gint hf_nl80211_reg_type = -1; +static gint hf_nl80211_reg_rule_attr = -1; +static gint hf_nl80211_sched_scan_match_attr = -1; +static gint hf_nl80211_reg_rule_flags = -1; +static gint hf_nl80211_dfs_regions = -1; +static gint hf_nl80211_user_reg_hint_type = -1; +static gint hf_nl80211_survey_info = -1; +static gint hf_nl80211_mntr_flags = -1; +static gint hf_nl80211_mesh_power_mode = -1; +static gint hf_nl80211_meshconf_params = -1; +static gint hf_nl80211_mesh_setup_params = -1; +static gint hf_nl80211_txq_attr = -1; +static gint hf_nl80211_ac = -1; +static gint hf_nl80211_channel_type = -1; +static gint hf_nl80211_key_mode = -1; +static gint hf_nl80211_chan_width = -1; +static gint hf_nl80211_bss_scan_width = -1; +static gint hf_nl80211_bss = -1; +static gint hf_nl80211_bss_status = -1; +static gint hf_nl80211_auth_type = -1; +static gint hf_nl80211_key_type = -1; +static gint hf_nl80211_mfp = -1; +static gint hf_nl80211_wpa_versions = -1; +static gint hf_nl80211_key_default_types = -1; +static gint hf_nl80211_key_attributes = -1; +static gint hf_nl80211_tx_rate_attributes = -1; +static gint hf_nl80211_txrate_gi = -1; +static gint hf_nl80211_band = -1; +static gint hf_nl80211_ps_state = -1; +static gint hf_nl80211_attr_cqm = -1; +static gint hf_nl80211_cqm_rssi_threshold_event = -1; +static gint hf_nl80211_tx_power_setting = -1; +static gint hf_nl80211_packet_pattern_attr = -1; +static gint hf_nl80211_wowlan_triggers = -1; +static gint hf_nl80211_wowlan_tcp_attrs = -1; +static gint hf_nl80211_attr_coalesce_rule = -1; +static gint hf_nl80211_coalesce_condition = -1; +static gint hf_nl80211_iface_limit_attrs = -1; +static gint hf_nl80211_if_combination_attrs = -1; +static gint hf_nl80211_plink_state = -1; +static gint hf_plink_actions = -1; +static gint hf_nl80211_rekey_data = -1; +static gint hf_nl80211_hidden_ssid = -1; +static gint hf_nl80211_sta_wme_attr = -1; +static gint hf_nl80211_pmksa_candidate_attr = -1; +static gint hf_nl80211_tdls_operation = -1; +static gint hf_nl80211_feature_flags = -1; +static gint hf_nl80211_ext_feature_index = -1; +static gint hf_nl80211_probe_resp_offload_support_attr = -1; +static gint hf_nl80211_connect_failed_reason = -1; +static gint hf_nl80211_timeout_reason = -1; +static gint hf_nl80211_scan_flags = -1; +static gint hf_nl80211_acl_policy = -1; +static gint hf_nl80211_smps_mode = -1; +static gint hf_nl80211_radar_event = -1; +static gint hf_nl80211_dfs_state = -1; +static gint hf_nl80211_protocol_features = -1; +static gint hf_nl80211_crit_proto_id = -1; +static gint hf_nl80211_rxmgmt_flags = -1; +static gint hf_nl80211_tdls_peer_capability = -1; +static gint hf_nl80211_sched_scan_plan = -1; +static gint hf_nl80211_bss_select_attr = -1; +static gint hf_nl80211_nan_function_type = -1; +static gint hf_nl80211_nan_publish_type = -1; +static gint hf_nl80211_nan_func_term_reason = -1; +static gint hf_nl80211_nan_func_attributes = -1; +static gint hf_nl80211_nan_srf_attributes = -1; +static gint hf_nl80211_nan_match_attributes = -1; +static gint hf_nl80211_external_auth_action = -1; +static gint hf_nl80211_ftm_responder_attributes = -1; +static gint hf_nl80211_ftm_responder_stats = -1; +static gint hf_nl80211_preamble = -1; +static gint hf_nl80211_peer_measurement_type = -1; +static gint hf_nl80211_peer_measurement_status = -1; +static gint hf_nl80211_peer_measurement_req = -1; +static gint hf_nl80211_peer_measurement_resp = -1; +static gint hf_nl80211_peer_measurement_peer_attrs = -1; +static gint hf_nl80211_peer_measurement_attrs = -1; +static gint hf_nl80211_peer_measurement_ftm_capa = -1; +static gint hf_nl80211_peer_measurement_ftm_req = -1; +static gint hf_nl80211_peer_measurement_ftm_failure_reasons = -1; +static gint hf_nl80211_peer_measurement_ftm_resp = -1; +static gint hf_nl80211_obss_pd_attributes = -1; static gint ett_nl80211_commands = -1; static gint ett_nl80211_attrs = -1; @@ -3689,48 +3381,20 @@ static int proto_netlink_nl80211; static dissector_handle_t netlink_nl80211_handle; -static header_field_info *hfi_netlink_nl80211 = NULL; +static int hf_nl80211_attr_value = -1; +static int hf_nl80211_attr_value16 = -1; +static int hf_nl80211_attr_value32 = -1; +static int hf_nl80211_attr_value64 = -1; +static int hf_nl80211_wiphy_name = -1; +static int hf_nl80211_ifname = -1; +static int hf_nl80211_mac = -1; +static int hf_nl80211_alpha2 = -1; +static int hf_nl80211_dbm = -1; static gint ett_nl80211 = -1; static gint ett_nl80211_frame = -1; static gint ett_nl80211_tag = -1; -static header_field_info hfi_nl80211_attr_value = - { "Attribute Value", "nl80211.attr_value", FT_BYTES, BASE_NONE, - NULL, 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_attr_value16 = - { "Attribute Value", "nl80211.attr_value16", FT_UINT16, BASE_HEX_DEC, - NULL, 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_attr_value32 = - { "Attribute Value", "nl80211.attr_value32", FT_UINT32, BASE_HEX_DEC, - NULL, 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_attr_value64 = - { "Attribute Value", "nl80211.attr_value64", FT_UINT64, BASE_HEX_DEC, - NULL, 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_wiphy_name = - { "Wiphy Name", "nl80211.wiphy_name", FT_STRINGZ, BASE_NONE, - NULL, 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_ifname = - { "Interface Name", "nl80211.ifname", FT_STRINGZ, BASE_NONE, - NULL, 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_mac = - { "MAC address", "nl80211.mac", FT_ETHER, BASE_NONE, - NULL, 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_alpha2 = - { "Alpha2", "nl80211.alpha2", FT_STRINGZ, BASE_NONE, - NULL, 0x00, NULL, HFILL }; - -static header_field_info hfi_nl80211_dbm = - { "dBm", "nl80211.dbm", FT_INT32, BASE_DEC, - NULL, 0x00, NULL, HFILL }; - static int dissect_nl80211_generic(tvbuff_t *tvb, void *data _U_, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type _U_, int offset, int len) { @@ -3741,13 +3405,13 @@ dissect_nl80211_generic(tvbuff_t *tvb, void *data _U_, struct packet_netlink_dat */ if (len) { if (len == 2) { - proto_tree_add_item(tree, hfi_nl80211_attr_value16.id, tvb, offset, len, nl_data->encoding); + proto_tree_add_item(tree, hf_nl80211_attr_value16, tvb, offset, len, nl_data->encoding); } else if (len == 4) { - proto_tree_add_item(tree, hfi_nl80211_attr_value32.id, tvb, offset, len, nl_data->encoding); + proto_tree_add_item(tree, hf_nl80211_attr_value32, tvb, offset, len, nl_data->encoding); } else if (len == 8) { - proto_tree_add_item(tree, hfi_nl80211_attr_value64.id, tvb, offset, len, nl_data->encoding); + proto_tree_add_item(tree, hf_nl80211_attr_value64, tvb, offset, len, nl_data->encoding); } else { - proto_tree_add_item(tree, hfi_nl80211_attr_value.id, tvb, offset, len, nl_data->encoding); + proto_tree_add_item(tree, hf_nl80211_attr_value, tvb, offset, len, nl_data->encoding); } offset += len; } @@ -3756,7 +3420,7 @@ dissect_nl80211_generic(tvbuff_t *tvb, void *data _U_, struct packet_netlink_dat struct attr_lookup { unsigned int attr_type; - header_field_info* hfi; + int *hfptr; gint* ett; int (*func)(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len); }; @@ -3765,11 +3429,11 @@ static int dissect_nested_attr(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len, const struct attr_lookup *nested) { netlink_nl80211_info_t *info = (netlink_nl80211_info_t *)data; - for (int i = 0; nested[i].hfi; i++) { + for (int i = 0; nested[i].attr_type != 0; i++) { if (nested[i].attr_type != (nla_type & NLA_TYPE_MASK)) { continue; } - offset = dissect_netlink_attributes(tvb, nested[i].hfi->id, *nested[i].ett, info, + offset = dissect_netlink_attributes(tvb, *nested[i].hfptr, *nested[i].ett, info, nl_data, tree, offset, len, nested[i].func ? nested[i].func : dissect_nl80211_generic); break; @@ -3781,11 +3445,11 @@ static int dissect_nested_attr_array(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len, const struct attr_lookup *nested_arr) { netlink_nl80211_info_t *info = (netlink_nl80211_info_t *)data; - for (int i = 0; nested_arr[i].hfi; i++) { + for (int i = 0; nested_arr[i].attr_type != 0; i++) { if (nested_arr[i].attr_type != (nla_type & NLA_TYPE_MASK)) { continue; } - offset = dissect_netlink_attributes_array(tvb, nested_arr[i].hfi->id, *nested_arr[i].ett, + offset = dissect_netlink_attributes_array(tvb, *nested_arr[i].hfptr, *nested_arr[i].ett, *nested_arr[i].ett, info, nl_data, tree, offset, len, nested_arr[i].func ? @@ -3798,11 +3462,11 @@ dissect_nested_attr_array(tvbuff_t *tvb, void *data, struct packet_netlink_data static int dissect_value(tvbuff_t *tvb, void *data _U_, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len, const struct attr_lookup *values) { - for (int i = 0; values[i].hfi; i++) { + for (int i = 0; values[i].attr_type != 0; i++) { if (values[i].attr_type != (nla_type & NLA_TYPE_MASK)) { continue; } - proto_tree_add_item(tree, values[i].hfi->id, tvb, offset, len, nl_data->encoding); + proto_tree_add_item(tree, *values[i].hfptr, tvb, offset, len, nl_data->encoding); return offset + len; } return offset; @@ -3837,8 +3501,8 @@ static int dissect_nl80211_frequency_attr(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { static const struct attr_lookup nested[] = { - { WS_NL80211_FREQUENCY_ATTR_DFS_STATE, &hfi_nl80211_dfs_state, &ett_nl80211_dfs_state, NULL}, - { WS_NL80211_FREQUENCY_ATTR_WMM, &hfi_nl80211_wmm_rule, &ett_nl80211_wmm_rule, NULL}, + { WS_NL80211_FREQUENCY_ATTR_DFS_STATE, &hf_nl80211_dfs_state, &ett_nl80211_dfs_state, NULL}, + { WS_NL80211_FREQUENCY_ATTR_WMM, &hf_nl80211_wmm_rule, &ett_nl80211_wmm_rule, NULL}, { 0, NULL, NULL, NULL } }; enum ws_nl80211_frequency_attr type = (enum ws_nl80211_frequency_attr) nla_type & NLA_TYPE_MASK; @@ -3861,9 +3525,9 @@ static int dissect_nl80211_band_attr(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { static const struct attr_lookup nested_arr[] = { - { WS_NL80211_BAND_ATTR_FREQS, &hfi_nl80211_frequency_attr, &ett_nl80211_frequency_attr, dissect_nl80211_frequency_attr }, - { WS_NL80211_BAND_ATTR_RATES, &hfi_nl80211_bitrate_attr, &ett_nl80211_bitrate_attr, NULL }, - { WS_NL80211_BAND_ATTR_IFTYPE_DATA, &hfi_nl80211_band_iftype_attr, &ett_nl80211_band_iftype_attr, NULL }, + { WS_NL80211_BAND_ATTR_FREQS, &hf_nl80211_frequency_attr, &ett_nl80211_frequency_attr, dissect_nl80211_frequency_attr }, + { WS_NL80211_BAND_ATTR_RATES, &hf_nl80211_bitrate_attr, &ett_nl80211_bitrate_attr, NULL }, + { WS_NL80211_BAND_ATTR_IFTYPE_DATA, &hf_nl80211_band_iftype_attr, &ett_nl80211_band_iftype_attr, NULL }, { 0, NULL, NULL, NULL } }; enum ws_nl80211_band_attr type = (enum ws_nl80211_band_attr) nla_type & NLA_TYPE_MASK; @@ -3887,8 +3551,8 @@ static int dissect_nl80211_bss(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { static const struct attr_lookup values[] = { - { WS_NL80211_BSS_STATUS, &hfi_nl80211_bss_status, NULL, NULL }, - { WS_NL80211_BSS_CHAN_WIDTH, &hfi_nl80211_bss_scan_width, NULL, NULL }, + { WS_NL80211_BSS_STATUS, &hf_nl80211_bss_status, NULL, NULL }, + { WS_NL80211_BSS_CHAN_WIDTH, &hf_nl80211_bss_scan_width, NULL, NULL }, { 0, NULL, NULL, NULL } }; enum ws_nl80211_bss type = (enum ws_nl80211_bss) nla_type & NLA_TYPE_MASK; @@ -3916,7 +3580,7 @@ static int dissect_nl80211_tid_stats(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { static const struct attr_lookup nested[] = { - { WS_NL80211_TID_STATS_TXQ_STATS, &hfi_nl80211_txq_stats, &ett_nl80211_txq_stats, NULL}, + { WS_NL80211_TID_STATS_TXQ_STATS, &hf_nl80211_txq_stats, &ett_nl80211_txq_stats, NULL}, { 0, NULL, NULL, NULL } }; @@ -3939,13 +3603,13 @@ static int dissect_nl80211_sta_info(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { static const struct attr_lookup nested[] = { - { WS_NL80211_STA_INFO_TX_BITRATE, &hfi_nl80211_rate_info, &ett_nl80211_rate_info, NULL}, - { WS_NL80211_STA_INFO_RX_BITRATE, &hfi_nl80211_rate_info, &ett_nl80211_rate_info, NULL}, - { WS_NL80211_STA_INFO_BSS_PARAM, &hfi_nl80211_sta_bss_param, &ett_nl80211_sta_bss_param, NULL }, + { WS_NL80211_STA_INFO_TX_BITRATE, &hf_nl80211_rate_info, &ett_nl80211_rate_info, NULL}, + { WS_NL80211_STA_INFO_RX_BITRATE, &hf_nl80211_rate_info, &ett_nl80211_rate_info, NULL}, + { WS_NL80211_STA_INFO_BSS_PARAM, &hf_nl80211_sta_bss_param, &ett_nl80211_sta_bss_param, NULL }, { 0, NULL, NULL, NULL } }; static const struct attr_lookup nested_arr[] = { - { WS_NL80211_STA_INFO_TID_STATS, &hfi_nl80211_tid_stats, &ett_nl80211_tid_stats, dissect_nl80211_tid_stats}, + { WS_NL80211_STA_INFO_TID_STATS, &hf_nl80211_tid_stats, &ett_nl80211_tid_stats, dissect_nl80211_tid_stats}, { 0, NULL, NULL, NULL } }; @@ -3964,7 +3628,7 @@ dissect_nl80211_sta_info(tvbuff_t *tvb, void *data, struct packet_netlink_data * case WS_NL80211_STA_INFO_BEACON_SIGNAL_AVG: case WS_NL80211_STA_INFO_ACK_SIGNAL: case WS_NL80211_STA_INFO_ACK_SIGNAL_AVG: - proto_tree_add_item(tree, hfi_nl80211_dbm.id, tvb, offset, len, nl_data->encoding); + proto_tree_add_item(tree, hf_nl80211_dbm, tvb, offset, len, nl_data->encoding); offset += len; break; default: @@ -3980,71 +3644,71 @@ static int dissect_nl80211_attrs(tvbuff_t *tvb, void *data, struct packet_netlink_data *nl_data, proto_tree *tree, int nla_type, int offset, int len) { static const struct attr_lookup nested[] = { - { WS_NL80211_ATTR_SUPPORTED_IFTYPES, &hfi_nl80211_iftype, &ett_nl80211_iftype, NULL }, - { WS_NL80211_ATTR_STA_FLAGS, &hfi_nl80211_sta_flags, &ett_nl80211_sta_flags, NULL }, - { WS_NL80211_ATTR_STA_INFO, &hfi_nl80211_sta_info, &ett_nl80211_sta_info, dissect_nl80211_sta_info }, - { WS_NL80211_ATTR_MPATH_INFO, &hfi_nl80211_mpath_info, &ett_nl80211_mpath_info, NULL }, - { WS_NL80211_ATTR_MNTR_FLAGS, &hfi_nl80211_mntr_flags, &ett_nl80211_mntr_flags, NULL }, - { WS_NL80211_ATTR_BSS, &hfi_nl80211_bss, &ett_nl80211_bss, dissect_nl80211_bss }, - { WS_NL80211_ATTR_KEY, &hfi_nl80211_key_attributes, &ett_nl80211_key_attributes, NULL }, - { WS_NL80211_ATTR_SURVEY_INFO, &hfi_nl80211_survey_info, &ett_nl80211_survey_info, NULL }, - { WS_NL80211_ATTR_FREQ_BEFORE, &hfi_nl80211_frequency_attr, &ett_nl80211_frequency_attr, NULL }, - { WS_NL80211_ATTR_FREQ_AFTER, &hfi_nl80211_frequency_attr, &ett_nl80211_frequency_attr, NULL }, - { WS_NL80211_ATTR_TX_RATES, &hfi_nl80211_tx_rate_attributes, &ett_nl80211_tx_rate_attributes, NULL }, - { WS_NL80211_ATTR_CQM, &hfi_nl80211_attr_cqm, &ett_nl80211_attr_cqm, NULL }, - { WS_NL80211_ATTR_KEY_DEFAULT_TYPES, &hfi_nl80211_key_default_types, &ett_nl80211_key_default_types, NULL }, - { WS_NL80211_ATTR_MESH_SETUP, &hfi_nl80211_mesh_setup_params, &ett_nl80211_mesh_setup_params, NULL }, - { WS_NL80211_ATTR_MESH_CONFIG, &hfi_nl80211_meshconf_params, &ett_nl80211_meshconf_params, NULL }, - { WS_NL80211_ATTR_SCHED_SCAN_MATCH, &hfi_nl80211_sched_scan_match_attr, &ett_nl80211_sched_scan_match_attr, NULL }, - { WS_NL80211_ATTR_INTERFACE_COMBINATIONS, &hfi_nl80211_if_combination_attrs, &ett_nl80211_if_combination_attrs, NULL }, - { WS_NL80211_ATTR_REKEY_DATA, &hfi_nl80211_rekey_data, &ett_nl80211_rekey_data, NULL }, - { WS_NL80211_ATTR_STA_WME, &hfi_nl80211_sta_wme_attr, &ett_nl80211_sta_wme_attr, NULL }, - { WS_NL80211_ATTR_PMKSA_CANDIDATE, &hfi_nl80211_pmksa_candidate_attr, &ett_nl80211_pmksa_candidate_attr, NULL }, - { WS_NL80211_ATTR_SCHED_SCAN_PLANS, &hfi_nl80211_sched_scan_plan, &ett_nl80211_sched_scan_plan, NULL }, - { WS_NL80211_ATTR_BSS_SELECT, &hfi_nl80211_bss_select_attr, &ett_nl80211_bss_select_attr, NULL }, - { WS_NL80211_ATTR_IFTYPE_EXT_CAPA, &hfi_nl80211_attrs, &ett_nl80211_attrs, dissect_nl80211_attrs }, - { WS_NL80211_ATTR_NAN_FUNC, &hfi_nl80211_nan_func_attributes, &ett_nl80211_nan_func_attributes, NULL }, - { WS_NL80211_ATTR_NAN_MATCH, &hfi_nl80211_nan_match_attributes, &ett_nl80211_nan_match_attributes, NULL }, - { WS_NL80211_ATTR_TXQ_STATS, &hfi_nl80211_txq_stats, &ett_nl80211_txq_stats, NULL }, + { WS_NL80211_ATTR_SUPPORTED_IFTYPES, &hf_nl80211_iftype, &ett_nl80211_iftype, NULL }, + { WS_NL80211_ATTR_STA_FLAGS, &hf_nl80211_sta_flags, &ett_nl80211_sta_flags, NULL }, + { WS_NL80211_ATTR_STA_INFO, &hf_nl80211_sta_info, &ett_nl80211_sta_info, dissect_nl80211_sta_info }, + { WS_NL80211_ATTR_MPATH_INFO, &hf_nl80211_mpath_info, &ett_nl80211_mpath_info, NULL }, + { WS_NL80211_ATTR_MNTR_FLAGS, &hf_nl80211_mntr_flags, &ett_nl80211_mntr_flags, NULL }, + { WS_NL80211_ATTR_BSS, &hf_nl80211_bss, &ett_nl80211_bss, dissect_nl80211_bss }, + { WS_NL80211_ATTR_KEY, &hf_nl80211_key_attributes, &ett_nl80211_key_attributes, NULL }, + { WS_NL80211_ATTR_SURVEY_INFO, &hf_nl80211_survey_info, &ett_nl80211_survey_info, NULL }, + { WS_NL80211_ATTR_FREQ_BEFORE, &hf_nl80211_frequency_attr, &ett_nl80211_frequency_attr, NULL }, + { WS_NL80211_ATTR_FREQ_AFTER, &hf_nl80211_frequency_attr, &ett_nl80211_frequency_attr, NULL }, + { WS_NL80211_ATTR_TX_RATES, &hf_nl80211_tx_rate_attributes, &ett_nl80211_tx_rate_attributes, NULL }, + { WS_NL80211_ATTR_CQM, &hf_nl80211_attr_cqm, &ett_nl80211_attr_cqm, NULL }, + { WS_NL80211_ATTR_KEY_DEFAULT_TYPES, &hf_nl80211_key_default_types, &ett_nl80211_key_default_types, NULL }, + { WS_NL80211_ATTR_MESH_SETUP, &hf_nl80211_mesh_setup_params, &ett_nl80211_mesh_setup_params, NULL }, + { WS_NL80211_ATTR_MESH_CONFIG, &hf_nl80211_meshconf_params, &ett_nl80211_meshconf_params, NULL }, + { WS_NL80211_ATTR_SCHED_SCAN_MATCH, &hf_nl80211_sched_scan_match_attr, &ett_nl80211_sched_scan_match_attr, NULL }, + { WS_NL80211_ATTR_INTERFACE_COMBINATIONS, &hf_nl80211_if_combination_attrs, &ett_nl80211_if_combination_attrs, NULL }, + { WS_NL80211_ATTR_REKEY_DATA, &hf_nl80211_rekey_data, &ett_nl80211_rekey_data, NULL }, + { WS_NL80211_ATTR_STA_WME, &hf_nl80211_sta_wme_attr, &ett_nl80211_sta_wme_attr, NULL }, + { WS_NL80211_ATTR_PMKSA_CANDIDATE, &hf_nl80211_pmksa_candidate_attr, &ett_nl80211_pmksa_candidate_attr, NULL }, + { WS_NL80211_ATTR_SCHED_SCAN_PLANS, &hf_nl80211_sched_scan_plan, &ett_nl80211_sched_scan_plan, NULL }, + { WS_NL80211_ATTR_BSS_SELECT, &hf_nl80211_bss_select_attr, &ett_nl80211_bss_select_attr, NULL }, + { WS_NL80211_ATTR_IFTYPE_EXT_CAPA, &hf_nl80211_attrs, &ett_nl80211_attrs, dissect_nl80211_attrs }, + { WS_NL80211_ATTR_NAN_FUNC, &hf_nl80211_nan_func_attributes, &ett_nl80211_nan_func_attributes, NULL }, + { WS_NL80211_ATTR_NAN_MATCH, &hf_nl80211_nan_match_attributes, &ett_nl80211_nan_match_attributes, NULL }, + { WS_NL80211_ATTR_TXQ_STATS, &hf_nl80211_txq_stats, &ett_nl80211_txq_stats, NULL }, { 0, NULL, NULL, NULL } }; static const struct attr_lookup nested_arr[] = { - { WS_NL80211_ATTR_WIPHY_TXQ_PARAMS, &hfi_nl80211_txq_attr, &ett_nl80211_txq_attr, NULL }, - { WS_NL80211_ATTR_WIPHY_BANDS, &hfi_nl80211_band_attr, &ett_nl80211_band_attr, dissect_nl80211_band_attr }, - { WS_NL80211_ATTR_REG_RULES, &hfi_nl80211_reg_rule_attr, &ett_nl80211_reg_rule_attr, NULL }, + { WS_NL80211_ATTR_WIPHY_TXQ_PARAMS, &hf_nl80211_txq_attr, &ett_nl80211_txq_attr, NULL }, + { WS_NL80211_ATTR_WIPHY_BANDS, &hf_nl80211_band_attr, &ett_nl80211_band_attr, dissect_nl80211_band_attr }, + { WS_NL80211_ATTR_REG_RULES, &hf_nl80211_reg_rule_attr, &ett_nl80211_reg_rule_attr, NULL }, { 0, NULL, NULL, NULL } }; static const struct attr_lookup values[] = { - { WS_NL80211_ATTR_CHANNEL_WIDTH, &hfi_nl80211_chan_width, NULL, NULL }, - { WS_NL80211_ATTR_WIPHY_NAME, &hfi_nl80211_wiphy_name, NULL, NULL }, - { WS_NL80211_ATTR_WIPHY_CHANNEL_TYPE, &hfi_nl80211_channel_type, NULL, NULL }, - { WS_NL80211_ATTR_IFNAME, &hfi_nl80211_ifname, NULL, NULL }, - { WS_NL80211_ATTR_IFTYPE, &hfi_nl80211_iftype, NULL, NULL }, - { WS_NL80211_ATTR_MAC, &hfi_nl80211_mac, NULL, NULL }, - { WS_NL80211_ATTR_STA_PLINK_ACTION, &hfi_plink_actions, NULL, NULL }, - { WS_NL80211_ATTR_MPATH_INFO, &hfi_nl80211_mpath_info, NULL, NULL }, - { WS_NL80211_ATTR_REG_ALPHA2, &hfi_nl80211_alpha2, NULL, NULL }, - { WS_NL80211_ATTR_REG_INITIATOR, &hfi_nl80211_reg_initiator, NULL, NULL }, - { WS_NL80211_ATTR_REG_TYPE, &hfi_nl80211_reg_type, NULL, NULL }, - { WS_NL80211_ATTR_AUTH_TYPE, &hfi_nl80211_auth_type, NULL, NULL }, - { WS_NL80211_ATTR_KEY_TYPE, &hfi_nl80211_key_type, NULL, NULL }, - { WS_NL80211_ATTR_USE_MFP, &hfi_nl80211_mfp, NULL, NULL }, - { WS_NL80211_ATTR_PS_STATE, &hfi_nl80211_ps_state, NULL, NULL }, - { WS_NL80211_ATTR_WIPHY_TX_POWER_SETTING, &hfi_nl80211_tx_power_setting, NULL, NULL }, - { WS_NL80211_ATTR_STA_PLINK_STATE, &hfi_nl80211_plink_state, NULL, NULL }, - { WS_NL80211_ATTR_TDLS_OPERATION, &hfi_nl80211_tdls_operation, NULL, NULL }, - { WS_NL80211_ATTR_DFS_REGION, &hfi_nl80211_dfs_regions, NULL, NULL }, - { WS_NL80211_ATTR_RX_SIGNAL_DBM, &hfi_nl80211_dbm, NULL, NULL}, - { WS_NL80211_ATTR_USER_REG_HINT_TYPE, &hfi_nl80211_user_reg_hint_type, NULL, NULL }, - { WS_NL80211_ATTR_CONN_FAILED_REASON, &hfi_nl80211_connect_failed_reason, NULL, NULL }, - { WS_NL80211_ATTR_LOCAL_MESH_POWER_MODE, &hfi_nl80211_mesh_power_mode, NULL, NULL }, - { WS_NL80211_ATTR_ACL_POLICY, &hfi_nl80211_acl_policy, NULL, NULL }, - { WS_NL80211_ATTR_RADAR_EVENT, &hfi_nl80211_radar_event, NULL, NULL }, - { WS_NL80211_ATTR_CRIT_PROT_ID, &hfi_nl80211_crit_proto_id, NULL, NULL }, - { WS_NL80211_ATTR_SMPS_MODE, &hfi_nl80211_smps_mode, NULL, NULL }, - { WS_NL80211_ATTR_STA_SUPPORT_P2P_PS, &hfi_nl80211_sta_p2p_ps_status, NULL, NULL }, - { WS_NL80211_ATTR_TIMEOUT_REASON, &hfi_nl80211_timeout_reason, NULL, NULL }, - { WS_NL80211_ATTR_EXTERNAL_AUTH_ACTION, &hfi_nl80211_external_auth_action, NULL, NULL }, + { WS_NL80211_ATTR_CHANNEL_WIDTH, &hf_nl80211_chan_width, NULL, NULL }, + { WS_NL80211_ATTR_WIPHY_NAME, &hf_nl80211_wiphy_name, NULL, NULL }, + { WS_NL80211_ATTR_WIPHY_CHANNEL_TYPE, &hf_nl80211_channel_type, NULL, NULL }, + { WS_NL80211_ATTR_IFNAME, &hf_nl80211_ifname, NULL, NULL }, + { WS_NL80211_ATTR_IFTYPE, &hf_nl80211_iftype, NULL, NULL }, + { WS_NL80211_ATTR_MAC, &hf_nl80211_mac, NULL, NULL }, + { WS_NL80211_ATTR_STA_PLINK_ACTION, &hf_plink_actions, NULL, NULL }, + { WS_NL80211_ATTR_MPATH_INFO, &hf_nl80211_mpath_info, NULL, NULL }, + { WS_NL80211_ATTR_REG_ALPHA2, &hf_nl80211_alpha2, NULL, NULL }, + { WS_NL80211_ATTR_REG_INITIATOR, &hf_nl80211_reg_initiator, NULL, NULL }, + { WS_NL80211_ATTR_REG_TYPE, &hf_nl80211_reg_type, NULL, NULL }, + { WS_NL80211_ATTR_AUTH_TYPE, &hf_nl80211_auth_type, NULL, NULL }, + { WS_NL80211_ATTR_KEY_TYPE, &hf_nl80211_key_type, NULL, NULL }, + { WS_NL80211_ATTR_USE_MFP, &hf_nl80211_mfp, NULL, NULL }, + { WS_NL80211_ATTR_PS_STATE, &hf_nl80211_ps_state, NULL, NULL }, + { WS_NL80211_ATTR_WIPHY_TX_POWER_SETTING, &hf_nl80211_tx_power_setting, NULL, NULL }, + { WS_NL80211_ATTR_STA_PLINK_STATE, &hf_nl80211_plink_state, NULL, NULL }, + { WS_NL80211_ATTR_TDLS_OPERATION, &hf_nl80211_tdls_operation, NULL, NULL }, + { WS_NL80211_ATTR_DFS_REGION, &hf_nl80211_dfs_regions, NULL, NULL }, + { WS_NL80211_ATTR_RX_SIGNAL_DBM, &hf_nl80211_dbm, NULL, NULL}, + { WS_NL80211_ATTR_USER_REG_HINT_TYPE, &hf_nl80211_user_reg_hint_type, NULL, NULL }, + { WS_NL80211_ATTR_CONN_FAILED_REASON, &hf_nl80211_connect_failed_reason, NULL, NULL }, + { WS_NL80211_ATTR_LOCAL_MESH_POWER_MODE, &hf_nl80211_mesh_power_mode, NULL, NULL }, + { WS_NL80211_ATTR_ACL_POLICY, &hf_nl80211_acl_policy, NULL, NULL }, + { WS_NL80211_ATTR_RADAR_EVENT, &hf_nl80211_radar_event, NULL, NULL }, + { WS_NL80211_ATTR_CRIT_PROT_ID, &hf_nl80211_crit_proto_id, NULL, NULL }, + { WS_NL80211_ATTR_SMPS_MODE, &hf_nl80211_smps_mode, NULL, NULL }, + { WS_NL80211_ATTR_STA_SUPPORT_P2P_PS, &hf_nl80211_sta_p2p_ps_status, NULL, NULL }, + { WS_NL80211_ATTR_TIMEOUT_REASON, &hf_nl80211_timeout_reason, NULL, NULL }, + { WS_NL80211_ATTR_EXTERNAL_AUTH_ACTION, &hf_nl80211_external_auth_action, NULL, NULL }, { 0, NULL, NULL, NULL } }; enum ws_nl80211_attrs type = (enum ws_nl80211_attrs) nla_type & NLA_TYPE_MASK; @@ -4108,7 +3772,7 @@ dissect_netlink_nl80211(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi col_set_str(pinfo->cinfo, COL_PROTOCOL, "nl80211"); col_clear(pinfo->cinfo, COL_INFO); - offset = dissect_genl_header(tvb, genl_info, genl_info->nl_data, hfi_nl80211_commands.id); + offset = dissect_genl_header(tvb, genl_info, genl_info->nl_data, hf_nl80211_commands); /* Return if command has no payload */ if (!tvb_reported_length_remaining(tvb, offset)) @@ -4120,7 +3784,7 @@ dissect_netlink_nl80211(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi pi = proto_tree_add_item(tree, proto_netlink_nl80211, tvb, offset, -1, ENC_NA); nlmsg_tree = proto_item_add_subtree(pi, ett_nl80211); - offset = dissect_netlink_attributes_to_end(tvb, hfi_nl80211_attrs.id, ett_nl80211_attrs, &info, genl_info->nl_data, nlmsg_tree, offset, dissect_nl80211_attrs); + offset = dissect_netlink_attributes_to_end(tvb, hf_nl80211_attrs, ett_nl80211_attrs, &info, genl_info->nl_data, nlmsg_tree, offset, dissect_nl80211_attrs); return offset; } @@ -4128,121 +3792,672 @@ dissect_netlink_nl80211(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi void proto_register_netlink_nl80211(void) { - static header_field_info *hfi[] = { - &hfi_nl80211_attr_value, - &hfi_nl80211_attr_value16, - &hfi_nl80211_attr_value32, - &hfi_nl80211_attr_value64, - &hfi_nl80211_wiphy_name, - &hfi_nl80211_ifname, - &hfi_nl80211_mac, - &hfi_nl80211_alpha2, - &hfi_nl80211_dbm, + static hf_register_info hf[] = { + { &hf_nl80211_attr_value, + { "Attribute Value", "nl80211.attr_value", + FT_BYTES, BASE_NONE, NULL, 0x00, + NULL, HFILL } + }, + { &hf_nl80211_attr_value16, + { "Attribute Value", "nl80211.attr_value16", + FT_UINT16, BASE_HEX_DEC, NULL, 0x00, + NULL, HFILL } + }, + { &hf_nl80211_attr_value32, + { "Attribute Value", "nl80211.attr_value32", + FT_UINT32, BASE_HEX_DEC, NULL, 0x00, + NULL, HFILL } + }, + { &hf_nl80211_attr_value64, + { "Attribute Value", "nl80211.attr_value64", + FT_UINT64, BASE_HEX_DEC, NULL, 0x00, + NULL, HFILL } + }, + { &hf_nl80211_wiphy_name, + { "Wiphy Name", "nl80211.wiphy_name", + FT_STRINGZ, BASE_NONE, NULL, 0x00, + NULL, HFILL } + }, + { &hf_nl80211_ifname, + { "Interface Name", "nl80211.ifname", + FT_STRINGZ, BASE_NONE, NULL, 0x00, + NULL, HFILL } + }, + { &hf_nl80211_mac, + { "MAC address", "nl80211.mac", + FT_ETHER, BASE_NONE, NULL, 0x00, + NULL, HFILL } + }, + { &hf_nl80211_alpha2, + { "Alpha2", "nl80211.alpha2", + FT_STRINGZ, BASE_NONE, NULL, 0x00, + NULL, HFILL } + }, + { &hf_nl80211_dbm, + { "dBm", "nl80211.dbm", + FT_INT32, BASE_DEC, NULL, 0x00, + NULL, HFILL } + }, /* Extracted using tools/generate-nl80211-fields.py */ /* Definitions from linux/nl80211.h {{{ */ - &hfi_nl80211_commands, - &hfi_nl80211_attrs, - &hfi_nl80211_iftype, - &hfi_nl80211_sta_flags, - &hfi_nl80211_sta_p2p_ps_status, - &hfi_nl80211_he_gi, - &hfi_nl80211_he_ru_alloc, - &hfi_nl80211_rate_info, - &hfi_nl80211_sta_bss_param, - &hfi_nl80211_sta_info, - &hfi_nl80211_tid_stats, - &hfi_nl80211_txq_stats, - &hfi_nl80211_mpath_flags, - &hfi_nl80211_mpath_info, - &hfi_nl80211_band_iftype_attr, - &hfi_nl80211_band_attr, - &hfi_nl80211_wmm_rule, - &hfi_nl80211_frequency_attr, - &hfi_nl80211_bitrate_attr, - &hfi_nl80211_reg_initiator, - &hfi_nl80211_reg_type, - &hfi_nl80211_reg_rule_attr, - &hfi_nl80211_sched_scan_match_attr, - &hfi_nl80211_reg_rule_flags, - &hfi_nl80211_dfs_regions, - &hfi_nl80211_user_reg_hint_type, - &hfi_nl80211_survey_info, - &hfi_nl80211_mntr_flags, - &hfi_nl80211_mesh_power_mode, - &hfi_nl80211_meshconf_params, - &hfi_nl80211_mesh_setup_params, - &hfi_nl80211_txq_attr, - &hfi_nl80211_ac, - &hfi_nl80211_channel_type, - &hfi_nl80211_key_mode, - &hfi_nl80211_chan_width, - &hfi_nl80211_bss_scan_width, - &hfi_nl80211_bss, - &hfi_nl80211_bss_status, - &hfi_nl80211_auth_type, - &hfi_nl80211_key_type, - &hfi_nl80211_mfp, - &hfi_nl80211_wpa_versions, - &hfi_nl80211_key_default_types, - &hfi_nl80211_key_attributes, - &hfi_nl80211_tx_rate_attributes, - &hfi_nl80211_txrate_gi, - &hfi_nl80211_band, - &hfi_nl80211_ps_state, - &hfi_nl80211_attr_cqm, - &hfi_nl80211_cqm_rssi_threshold_event, - &hfi_nl80211_tx_power_setting, - &hfi_nl80211_packet_pattern_attr, - &hfi_nl80211_wowlan_triggers, - &hfi_nl80211_wowlan_tcp_attrs, - &hfi_nl80211_attr_coalesce_rule, - &hfi_nl80211_coalesce_condition, - &hfi_nl80211_iface_limit_attrs, - &hfi_nl80211_if_combination_attrs, - &hfi_nl80211_plink_state, - &hfi_plink_actions, - &hfi_nl80211_rekey_data, - &hfi_nl80211_hidden_ssid, - &hfi_nl80211_sta_wme_attr, - &hfi_nl80211_pmksa_candidate_attr, - &hfi_nl80211_tdls_operation, - &hfi_nl80211_feature_flags, - &hfi_nl80211_ext_feature_index, - &hfi_nl80211_probe_resp_offload_support_attr, - &hfi_nl80211_connect_failed_reason, - &hfi_nl80211_timeout_reason, - &hfi_nl80211_scan_flags, - &hfi_nl80211_acl_policy, - &hfi_nl80211_smps_mode, - &hfi_nl80211_radar_event, - &hfi_nl80211_dfs_state, - &hfi_nl80211_protocol_features, - &hfi_nl80211_crit_proto_id, - &hfi_nl80211_rxmgmt_flags, - &hfi_nl80211_tdls_peer_capability, - &hfi_nl80211_sched_scan_plan, - &hfi_nl80211_bss_select_attr, - &hfi_nl80211_nan_function_type, - &hfi_nl80211_nan_publish_type, - &hfi_nl80211_nan_func_term_reason, - &hfi_nl80211_nan_func_attributes, - &hfi_nl80211_nan_srf_attributes, - &hfi_nl80211_nan_match_attributes, - &hfi_nl80211_external_auth_action, - &hfi_nl80211_ftm_responder_attributes, - &hfi_nl80211_ftm_responder_stats, - &hfi_nl80211_preamble, - &hfi_nl80211_peer_measurement_type, - &hfi_nl80211_peer_measurement_status, - &hfi_nl80211_peer_measurement_req, - &hfi_nl80211_peer_measurement_resp, - &hfi_nl80211_peer_measurement_peer_attrs, - &hfi_nl80211_peer_measurement_attrs, - &hfi_nl80211_peer_measurement_ftm_capa, - &hfi_nl80211_peer_measurement_ftm_req, - &hfi_nl80211_peer_measurement_ftm_failure_reasons, - &hfi_nl80211_peer_measurement_ftm_resp, - &hfi_nl80211_obss_pd_attributes, + { &hf_nl80211_commands, + { "Command", "nl80211.cmd", + FT_UINT8, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_commands_vals_ext), 0x00, + "Generic Netlink Command", HFILL }, + }, + { &hf_nl80211_attrs, + { "Attribute Type", "nl80211.attr_type", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_attrs_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_iftype, + { "Attribute Type", "nl80211.iftype", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_iftype_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_sta_flags, + { "Attribute Type", "nl80211.sta_flags", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_sta_flags_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_sta_p2p_ps_status, + { "Attribute Value", "nl80211.sta_p2p_ps_status", + FT_UINT8, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_sta_p2p_ps_status_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_he_gi, + { "Attribute Type", "nl80211.he_gi", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_he_gi_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_he_ru_alloc, + { "Attribute Type", "nl80211.he_ru_alloc", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_he_ru_alloc_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_rate_info, + { "Attribute Type", "nl80211.rate_info", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_rate_info_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_sta_bss_param, + { "Attribute Type", "nl80211.sta_bss_param", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_sta_bss_param_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_sta_info, + { "Attribute Type", "nl80211.sta_info", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_sta_info_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_tid_stats, + { "Attribute Type", "nl80211.tid_stats", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_tid_stats_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_txq_stats, + { "Attribute Type", "nl80211.txq_stats", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_txq_stats_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_mpath_flags, + { "Attribute Type", "nl80211.mpath_flags", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_mpath_flags_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_mpath_info, + { "Attribute Type", "nl80211.mpath_info", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_mpath_info_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_band_iftype_attr, + { "Attribute Type", "nl80211.band_iftype_attr", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_band_iftype_attr_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_band_attr, + { "Attribute Type", "nl80211.band_attr", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_band_attr_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_wmm_rule, + { "Attribute Type", "nl80211.wmm_rule", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_wmm_rule_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_frequency_attr, + { "Attribute Type", "nl80211.frequency_attr", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_frequency_attr_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_bitrate_attr, + { "Attribute Type", "nl80211.bitrate_attr", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_bitrate_attr_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_reg_initiator, + { "Attribute Value", "nl80211.reg_initiator", + FT_UINT8, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_reg_initiator_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_reg_type, + { "Attribute Value", "nl80211.reg_type", + FT_UINT8, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_reg_type_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_reg_rule_attr, + { "Attribute Type", "nl80211.reg_rule_attr", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_reg_rule_attr_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_sched_scan_match_attr, + { "Attribute Type", "nl80211.sched_scan_match_attr", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_sched_scan_match_attr_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_reg_rule_flags, + { "Attribute Type", "nl80211.reg_rule_flags", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_reg_rule_flags_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_dfs_regions, + { "Attribute Value", "nl80211.dfs_regions", + FT_UINT8, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_dfs_regions_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_user_reg_hint_type, + { "Attribute Value", "nl80211.user_reg_hint_type", + FT_UINT32, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_user_reg_hint_type_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_survey_info, + { "Attribute Type", "nl80211.survey_info", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_survey_info_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_mntr_flags, + { "Attribute Type", "nl80211.mntr_flags", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_mntr_flags_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_mesh_power_mode, + { "Attribute Value", "nl80211.mesh_power_mode", + FT_UINT32, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_mesh_power_mode_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_meshconf_params, + { "Attribute Type", "nl80211.meshconf_params", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_meshconf_params_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_mesh_setup_params, + { "Attribute Type", "nl80211.mesh_setup_params", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_mesh_setup_params_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_txq_attr, + { "Attribute Type", "nl80211.txq_attr", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_txq_attr_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_ac, + { "Attribute Type", "nl80211.ac", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_ac_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_channel_type, + { "Attribute Value", "nl80211.channel_type", + FT_UINT32, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_channel_type_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_key_mode, + { "Attribute Type", "nl80211.key_mode", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_key_mode_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_chan_width, + { "Attribute Value", "nl80211.chan_width", + FT_UINT32, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_chan_width_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_bss_scan_width, + { "Attribute Value", "nl80211.bss_scan_width", + FT_UINT32, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_bss_scan_width_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_bss, + { "Attribute Type", "nl80211.bss", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_bss_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_bss_status, + { "Attribute Value", "nl80211.bss_status", + FT_UINT32, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_bss_status_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_auth_type, + { "Attribute Value", "nl80211.auth_type", + FT_UINT32, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_auth_type_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_key_type, + { "Attribute Value", "nl80211.key_type", + FT_UINT32, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_key_type_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_mfp, + { "Attribute Value", "nl80211.mfp", + FT_UINT32, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_mfp_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_wpa_versions, + { "Attribute Type", "nl80211.wpa_versions", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_wpa_versions_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_key_default_types, + { "Attribute Type", "nl80211.key_default_types", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_key_default_types_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_key_attributes, + { "Attribute Type", "nl80211.key_attributes", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_key_attributes_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_tx_rate_attributes, + { "Attribute Type", "nl80211.tx_rate_attributes", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_tx_rate_attributes_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_txrate_gi, + { "Attribute Type", "nl80211.txrate_gi", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_txrate_gi_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_band, + { "Attribute Type", "nl80211.band", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_band_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_ps_state, + { "Attribute Value", "nl80211.ps_state", + FT_UINT32, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_ps_state_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_attr_cqm, + { "Attribute Type", "nl80211.attr_cqm", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_attr_cqm_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_cqm_rssi_threshold_event, + { "Attribute Type", "nl80211.cqm_rssi_threshold_event", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_cqm_rssi_threshold_event_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_tx_power_setting, + { "Attribute Value", "nl80211.tx_power_setting", + FT_UINT32, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_tx_power_setting_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_packet_pattern_attr, + { "Attribute Type", "nl80211.packet_pattern_attr", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_packet_pattern_attr_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_wowlan_triggers, + { "Attribute Type", "nl80211.wowlan_triggers", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_wowlan_triggers_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_wowlan_tcp_attrs, + { "Attribute Type", "nl80211.wowlan_tcp_attrs", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_wowlan_tcp_attrs_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_attr_coalesce_rule, + { "Attribute Type", "nl80211.attr_coalesce_rule", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_attr_coalesce_rule_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_coalesce_condition, + { "Attribute Type", "nl80211.coalesce_condition", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_coalesce_condition_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_iface_limit_attrs, + { "Attribute Type", "nl80211.iface_limit_attrs", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_iface_limit_attrs_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_if_combination_attrs, + { "Attribute Type", "nl80211.if_combination_attrs", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_if_combination_attrs_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_plink_state, + { "Attribute Value", "nl80211.plink_state", + FT_UINT8, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_plink_state_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_plink_actions, + { "Attribute Value", "nl80211.plink_actions", + FT_UINT8, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_plink_actions_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_rekey_data, + { "Attribute Type", "nl80211.rekey_data", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_rekey_data_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_hidden_ssid, + { "Attribute Type", "nl80211.hidden_ssid", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_hidden_ssid_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_sta_wme_attr, + { "Attribute Type", "nl80211.sta_wme_attr", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_sta_wme_attr_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_pmksa_candidate_attr, + { "Attribute Type", "nl80211.pmksa_candidate_attr", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_pmksa_candidate_attr_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_tdls_operation, + { "Attribute Value", "nl80211.tdls_operation", + FT_UINT8, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_tdls_operation_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_feature_flags, + { "Attribute Type", "nl80211.feature_flags", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_feature_flags_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_ext_feature_index, + { "Attribute Type", "nl80211.ext_feature_index", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_ext_feature_index_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_probe_resp_offload_support_attr, + { "Attribute Type", "nl80211.probe_resp_offload_support_attr", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_probe_resp_offload_support_attr_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_connect_failed_reason, + { "Attribute Value", "nl80211.connect_failed_reason", + FT_UINT32, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_connect_failed_reason_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_timeout_reason, + { "Attribute Value", "nl80211.timeout_reason", + FT_UINT32, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_timeout_reason_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_scan_flags, + { "Attribute Type", "nl80211.scan_flags", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_scan_flags_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_acl_policy, + { "Attribute Value", "nl80211.acl_policy", + FT_UINT32, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_acl_policy_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_smps_mode, + { "Attribute Value", "nl80211.smps_mode", + FT_UINT8, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_smps_mode_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_radar_event, + { "Attribute Value", "nl80211.radar_event", + FT_UINT32, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_radar_event_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_dfs_state, + { "Attribute Type", "nl80211.dfs_state", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_dfs_state_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_protocol_features, + { "Attribute Type", "nl80211.protocol_features", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_protocol_features_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_crit_proto_id, + { "Attribute Value", "nl80211.crit_proto_id", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_crit_proto_id_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_rxmgmt_flags, + { "Attribute Type", "nl80211.rxmgmt_flags", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_rxmgmt_flags_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_tdls_peer_capability, + { "Attribute Type", "nl80211.tdls_peer_capability", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_tdls_peer_capability_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_sched_scan_plan, + { "Attribute Type", "nl80211.sched_scan_plan", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_sched_scan_plan_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_bss_select_attr, + { "Attribute Type", "nl80211.bss_select_attr", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_bss_select_attr_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_nan_function_type, + { "Attribute Type", "nl80211.nan_function_type", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_nan_function_type_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_nan_publish_type, + { "Attribute Type", "nl80211.nan_publish_type", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_nan_publish_type_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_nan_func_term_reason, + { "Attribute Type", "nl80211.nan_func_term_reason", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_nan_func_term_reason_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_nan_func_attributes, + { "Attribute Type", "nl80211.nan_func_attributes", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_nan_func_attributes_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_nan_srf_attributes, + { "Attribute Type", "nl80211.nan_srf_attributes", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_nan_srf_attributes_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_nan_match_attributes, + { "Attribute Type", "nl80211.nan_match_attributes", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_nan_match_attributes_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_external_auth_action, + { "Attribute Value", "nl80211.external_auth_action", + FT_UINT32, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_external_auth_action_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_ftm_responder_attributes, + { "Attribute Type", "nl80211.ftm_responder_attributes", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_ftm_responder_attributes_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_ftm_responder_stats, + { "Attribute Type", "nl80211.ftm_responder_stats", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_ftm_responder_stats_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_preamble, + { "Attribute Type", "nl80211.preamble", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_preamble_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_peer_measurement_type, + { "Attribute Type", "nl80211.peer_measurement_type", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_peer_measurement_type_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_peer_measurement_status, + { "Attribute Type", "nl80211.peer_measurement_status", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_peer_measurement_status_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_peer_measurement_req, + { "Attribute Type", "nl80211.peer_measurement_req", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_peer_measurement_req_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_peer_measurement_resp, + { "Attribute Type", "nl80211.peer_measurement_resp", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_peer_measurement_resp_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_peer_measurement_peer_attrs, + { "Attribute Type", "nl80211.peer_measurement_peer_attrs", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_peer_measurement_peer_attrs_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_peer_measurement_attrs, + { "Attribute Type", "nl80211.peer_measurement_attrs", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_peer_measurement_attrs_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_peer_measurement_ftm_capa, + { "Attribute Type", "nl80211.peer_measurement_ftm_capa", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_peer_measurement_ftm_capa_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_peer_measurement_ftm_req, + { "Attribute Type", "nl80211.peer_measurement_ftm_req", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_peer_measurement_ftm_req_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_peer_measurement_ftm_failure_reasons, + { "Attribute Type", "nl80211.peer_measurement_ftm_failure_reasons", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_peer_measurement_ftm_failure_reasons_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_peer_measurement_ftm_resp, + { "Attribute Type", "nl80211.peer_measurement_ftm_resp", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_peer_measurement_ftm_resp_vals_ext), 0x00, + NULL, HFILL }, + }, + { &hf_nl80211_obss_pd_attributes, + { "Attribute Type", "nl80211.obss_pd_attributes", + FT_UINT16, BASE_DEC | BASE_EXT_STRING, + VALS_EXT_PTR(&ws_nl80211_obss_pd_attributes_vals_ext), 0x00, + NULL, HFILL }, + }, /* }}} */ }; @@ -4359,9 +4574,7 @@ proto_register_netlink_nl80211(void) }; proto_netlink_nl80211 = proto_register_protocol("Linux 802.11 Netlink", "nl80211", "nl80211"); - hfi_netlink_nl80211 = proto_registrar_get_nth(proto_netlink_nl80211); - - proto_register_fields_manual(proto_netlink_nl80211, hfi, array_length(hfi)); + proto_register_field_array(proto_netlink_nl80211, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); netlink_nl80211_handle = create_dissector_handle(dissect_netlink_nl80211, proto_netlink_nl80211); diff --git a/tools/generate-nl80211-fields.py b/tools/generate-nl80211-fields.py index 1dbef2e910..dfa8faaf62 100755 --- a/tools/generate-nl80211-fields.py +++ b/tools/generate-nl80211-fields.py @@ -168,7 +168,11 @@ def remove_prefix(prefix, text): return text[len(prefix):] return text -def make_hfi(name, indent): +def make_hf_defs(name, indent): + code = 'static gint hf_%s = -1;' % name + return code + +def make_hf(name, indent): (field_name, field_type, field_blurb) = EXPORT_ENUMS.get(name) field_abbrev = name @@ -189,20 +193,18 @@ def make_hfi(name, indent): field_abbrev = rename_fields[name] field_abbrev = remove_prefix('nl80211_', field_abbrev) - code = 'static header_field_info hfi_%s =\n' % name - code += indent + '{ "%s", "nl80211.%s", %s, BASE_DEC | BASE_EXT_STRING,\n' % \ - (field_name, field_abbrev, field_type) - code += indent + ' VALS_EXT_PTR(&ws_%s_vals_ext), 0x00, %s, HFILL };\n' % (name, field_blurb) + code = indent + indent + '{ &hf_%s,\n' % name + code += indent*3 + '{ "%s", "nl80211.%s",\n' % (field_name, field_abbrev) + code += indent*3 + ' %s, BASE_DEC | BASE_EXT_STRING,\n' % (field_type) + code += indent*3 + ' VALS_EXT_PTR(&ws_%s_vals_ext), 0x00,\n' % (name) + code += indent*3 + ' %s, HFILL },\n' % (field_blurb) + code += indent + indent + '},' return code def make_ett_defs(name, indent): code = 'static gint ett_%s = -1;' % name return code -def make_hfi_init(name, indent): - code = indent + indent + '&hfi_%s,' % name - return code - def make_ett(name, indent): code = indent + indent + '&ett_%s,' % name return code @@ -317,19 +319,19 @@ def main(): "Could not parse data, found %d/%d results" % \ (len(enums), len(EXPORT_ENUMS)) - code_enums, code_vals, code_hfi, code_ett_defs, code_hfi_init, code_ett = '', '', '', '', '', '' + code_enums, code_vals, code_hf_defs, code_ett_defs, code_hf, code_ett = '', '', '', '', '', '' for enum_name, enum_values, expressions in enums: code_enums += make_enum(enum_name, enum_values, expressions, indent) + '\n' code_vals += make_value_string(enum_name, enum_values, indent) + '\n' - code_hfi += make_hfi(enum_name, indent) + '\n' + code_hf_defs += make_hf_defs(enum_name, indent) + '\n' code_ett_defs += make_ett_defs(enum_name, indent) + '\n' - code_hfi_init += make_hfi_init(enum_name, indent) + '\n' + code_hf += make_hf(enum_name, indent) + '\n' code_ett += make_ett(enum_name, indent) + '\n' - code_top = code_enums + code_vals + code_hfi + code_ett_defs + code_top = code_enums + code_vals + code_hf_defs + '\n' + code_ett_defs code_top = code_top.rstrip("\n") + "\n" - code = [code_top, code_hfi_init, code_ett] + code = [code_top, code_hf, code_ett] update = False if args.update: