ieee80211-radiotap: Remove undefined S1G NDP and indent update

This commit is contained in:
WFA-achuang 2023-10-30 16:18:18 +08:00 committed by John Thacker
parent 35da15174b
commit d5eded157a
4 changed files with 128 additions and 994 deletions

View File

@ -498,9 +498,6 @@ struct ieee80211_radiotap_tlv {
#define IEEE80211_RADIOTAP_L_SIG_RATE_MASK 0x000F
#define IEEE80211_RADIOTAP_L_SIG_LENGTH_MASK 0xFFF0
/* TLV Definitions, start at 32 */
#define IEEE80211_RADIOTAP_TLV_S1G 32
/* For IEEE80211_RADIOTAP_TLV_S1G */
#define IEEE80211_RADIOTAP_TLV_S1G_S1G_PPDU_FORMAT_KNOWN 0x0001
#define IEEE80211_RADIOTAP_TLV_S1G_RESPONSE_INDICATION_KNOWN 0x0002

View File

@ -600,95 +600,6 @@ static int hf_radiotap_s1g_uplink_indication = -1;
static int hf_radiotap_s1g_rssi = -1;
static int hf_radiotap_s1g_reserved_3 = -1;
/* S1G NDP */
static int hf_radiotap_s1g_ndp_bytes = -1;
static int hf_radiotap_s1g_ndp_ctrl = -1;
static int hf_radiotap_s1g_ndp_mgmt = -1;
static int hf_radiotap_s1g_ndp_type_3bit = -1;
static int hf_radiotap_s1g_ndp_ack_1m = -1;
static int hf_radiotap_s1g_ndp_ack_1m_ack_id = -1;
static int hf_radiotap_s1g_ndp_ack_1m_more_data = -1;
static int hf_radiotap_s1g_ndp_ack_1m_idle_indication = -1;
static int hf_radiotap_s1g_ndp_ack_1m_duration = -1;
static int hf_radiotap_s1g_ndp_ack_1m_relayed_frame = -1;
static int hf_radiotap_s1g_ndp_ack_2m = -1;
static int hf_radiotap_s1g_ndp_ack_2m_ack_id = -1;
static int hf_radiotap_s1g_ndp_ack_2m_more_data = -1;
static int hf_radiotap_s1g_ndp_ack_2m_idle_indication = -1;
static int hf_radiotap_s1g_ndp_ack_2m_duration = -1;
static int hf_radiotap_s1g_ndp_ack_2m_relayed_frame = -1;
static int hf_radiotap_s1g_ndp_ack_2m_reserved = -1;
static int hf_radiotap_s1g_ndp_cts_1m = -1;
static int hf_radiotap_s1g_ndp_cts_cf_end_indic = -1;
static int hf_radiotap_s1g_ndp_cts_address_indic = -1;
static int hf_radiotap_s1g_ndp_cts_ra_partial_bssid = -1;
static int hf_radiotap_s1g_ndp_cts_duration_1m = -1;
static int hf_radiotap_s1g_ndp_cts_duration_2m = -1;
static int hf_radiotap_s1g_ndp_cts_early_sector_indic_1m = -1;
static int hf_radiotap_s1g_ndp_cts_2m = -1;
static int hf_radiotap_s1g_ndp_cts_early_sector_indic_2m = -1;
static int hf_radiotap_s1g_ndp_cts_bandwidth_indic_2m = -1;
static int hf_radiotap_s1g_ndp_cts_reserved = -1;
static int hf_radiotap_s1g_ndp_cf_end_1m = -1;
static int hf_radiotap_s1g_ndp_cf_end_partial_bssid = -1;
static int hf_radiotap_s1g_ndp_cf_end_duration_1m = -1;
static int hf_radiotap_s1g_ndp_cf_end_reserved_1m = -1;
static int hf_radiotap_s1g_ndp_cf_end_2m = -1;
static int hf_radiotap_s1g_ndp_cf_end_duration_2m = -1;
static int hf_radiotap_s1g_ndp_cf_end_reserved_2m = -1;
static int hf_radiotap_s1g_ndp_ps_poll_1m = -1;
static int hf_radiotap_s1g_ndp_ps_poll_ra = -1;
static int hf_radiotap_s1g_ndp_ps_poll_ta = -1;
static int hf_radiotap_s1g_ndp_ps_poll_preferred_mcs_1m = -1;
static int hf_radiotap_s1g_ndp_ps_poll_udi_1m = -1;
static int hf_radiotap_s1g_ndp_ps_poll_2m = -1;
static int hf_radiotap_s1g_ndp_ps_poll_preferred_mcs_2m = -1;
static int hf_radiotap_s1g_ndp_ps_poll_udi_2m = -1;
static int hf_radiotap_s1g_ndp_ps_poll_ack_1m = -1;
static int hf_radiotap_s1g_ndp_ps_poll_ack_id = -1;
static int hf_radiotap_s1g_ndp_ps_poll_ack_more_data = -1;
static int hf_radiotap_s1g_ndp_ps_poll_ack_idle_indication = -1;
static int hf_radiotap_s1g_ndp_ps_poll_ack_duration_1m = -1;
static int hf_radiotap_s1g_ndp_ps_poll_ack_reserved_1m = -1;
static int hf_radiotap_s1g_ndp_ps_poll_ack_2m = -1;
static int hf_radiotap_s1g_ndp_ps_poll_ack_id_2m = -1;
static int hf_radiotap_s1g_ndp_ps_poll_ack_more_data_2m = -1;
static int hf_radiotap_s1g_ndp_ps_poll_ack_idle_indication_2m = -1;
static int hf_radiotap_s1g_ndp_ps_poll_ack_duration_2m = -1;
static int hf_radiotap_s1g_ndp_ps_poll_ack_reserved_2m = -1;
static int hf_radiotap_s1g_ndp_block_ack_1m = -1;
static int hf_radiotap_s1g_ndp_block_ack_id_1m = -1;
static int hf_radiotap_s1g_ndp_block_ack_starting_sequence_control_1m = -1;
static int hf_radiotap_s1g_ndp_block_ack_bitmap_1m = -1;
static int hf_radiotap_s1g_ndp_block_ack_unused_1m = -1;
static int hf_radiotap_s1g_ndp_block_ack_2m = -1;
static int hf_radiotap_s1g_ndp_block_ack_id_2m = -1;
static int hf_radiotap_s1g_ndp_block_ack_starting_sequence_control_2m = -1;
static int hf_radiotap_s1g_ndp_block_ack_bitmap_2m = -1;
static int hf_radiotap_s1g_ndp_beamforming_report_poll = -1;
static int hf_radiotap_s1g_ndp_beamforming_ap_address = -1;
static int hf_radiotap_s1g_ndp_beamforming_non_ap_sta_address = -1;
static int hf_radiotap_s1g_ndp_beamforming_feedback_segment_bitmap = -1;
static int hf_radiotap_s1g_ndp_beamforming_reserved = -1;
static int hf_radiotap_s1g_ndp_paging_1m = -1;
static int hf_radiotap_s1g_ndp_paging_p_id = -1;
static int hf_radiotap_s1g_ndp_paging_apdi_partial_aid = -1;
static int hf_radiotap_s1g_ndp_paging_direction = -1;
static int hf_radiotap_s1g_ndp_paging_reserved_1m = -1;
static int hf_radiotap_s1g_ndp_paging_2m = -1;
static int hf_radiotap_s1g_ndp_paging_reserved_2m = -1;
static int hf_radiotap_s1g_ndp_probe_1m = -1;
static int hf_radiotap_s1g_ndp_probe_cssid_ano_present = -1;
static int hf_radiotap_s1g_ndp_probe_1m_cssid_ano = -1;
static int hf_radiotap_s1g_ndp_probe_1m_requested_response_type = -1;
static int hf_radiotap_s1g_ndp_probe_1m_reserved = -1;
static int hf_radiotap_s1g_ndp_probe_2m = -1;
static int hf_radiotap_s1g_ndp_probe_2m_cssid_ano = -1;
static int hf_radiotap_s1g_ndp_probe_2m_requested_response_type = -1;
static int hf_radiotap_s1g_ndp_1m_unused = -1;
static int hf_radiotap_s1g_ndp_2m_unused = -1;
static int hf_radiotap_s1g_ndp_bw = -1;
static gint ett_radiotap = -1;
static gint ett_radiotap_tlv = -1;
static gint ett_radiotap_present = -1;
@ -736,18 +647,6 @@ static gint ett_radiotap_s1g_known = -1;
static gint ett_radiotap_s1g_data_1 = -1;
static gint ett_radiotap_s1g_data_2 = -1;
/* S1G NDP */
static gint ett_s1g_ndp = -1;
static gint ett_s1g_ndp_ack = -1;
static gint ett_s1g_ndp_cts = -1;
static gint ett_s1g_ndp_cf_end = -1;
static gint ett_s1g_ndp_ps_poll = -1;
static gint ett_s1g_ndp_ps_poll_ack = -1;
static gint ett_s1g_ndp_block_ack = -1;
static gint ett_s1g_ndp_beamforming_report_poll = -1;
static gint ett_s1g_ndp_paging = -1;
static gint ett_s1g_ndp_probe = -1;
/* EHT */
static gint ett_radiotap_eht = -1;
static gint ett_radiotap_eht_known = -1;
@ -1974,22 +1873,17 @@ dissect_radiotap_he_mu_info(tvbuff_t *tvb, packet_info *pinfo _U_,
static const range_string zero_length_psdu_rsvals[] = {
{ 0, 0, "sounding PPDU" },
{ 1, 1, "reserved" },
{ 2, 2, "S1G NDP CMAC frame" },
{ 3, 254, "reserved" },
{ 2, 254, "reserved" },
{ 255, 255, "vendor-specific" },
{ 0, 0, NULL }
};
static int
dissect_s1g_ndp(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree);
static void
dissect_radiotap_0_length_psdu(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
int offset, struct ieee_802_11_phdr *phdr)
{
proto_tree *zero_len_tree = NULL;
guint32 psdu_type;
tvbuff_t *new_tvb = NULL;
zero_len_tree = proto_tree_add_subtree(tree, tvb, offset,
tvb_captured_length_remaining(tvb, offset),
@ -2011,13 +1905,6 @@ dissect_radiotap_0_length_psdu(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
phdr->zero_length_psdu_type = PHDR_802_11_DATA_NOT_CAPTURED;
break;
case 2:
phdr->has_zero_length_psdu_type = TRUE;
phdr->zero_length_psdu_type = PHDR_802_11_0_LENGTH_PSDU_S1G_NDP;
new_tvb = tvb_new_subset_length(tvb, offset, 6);
dissect_s1g_ndp(new_tvb, pinfo, zero_len_tree);
break;
case 0xff:
phdr->has_zero_length_psdu_type = TRUE;
phdr->zero_length_psdu_type = PHDR_802_11_0_LENGTH_PSDU_VENDOR_SPECIFIC;
@ -2057,394 +1944,6 @@ dissect_radiotap_l_sig(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
l_sig_data2_headers, ENC_LITTLE_ENDIAN);
}
/*
* Dissect an S1G NDP as it is currently. This is a 6-byte field, with the
* first byte looking like the first byte of the FCF, and coded using
* reserved values for the subtype. The remaining bytes are the NDP data,
* with the last two bits distinguishing between 1M and 2M.
*/
#define S1G_NDP_CTS_CF_END 0x00
#define S1G_NDP_PS_POLL 0x01
#define S1G_NDP_ACK 0x02
#define S1G_NDP_PS_POLL_ACK 0x03
#define S1G_NDP_BLOCK_ACK 0x04
#define S1G_NDP_BEAMFORMING_REPORT_POLL 0x05
#define S1G_NDP_PAGING 0x06
#define S1G_NDP_PROBE_REQ 0x07
static int * const ndp_ack_1m_headers[] = {
&hf_radiotap_s1g_ndp_type_3bit,
&hf_radiotap_s1g_ndp_ack_1m_ack_id,
&hf_radiotap_s1g_ndp_ack_1m_more_data,
&hf_radiotap_s1g_ndp_ack_1m_idle_indication,
&hf_radiotap_s1g_ndp_ack_1m_duration,
&hf_radiotap_s1g_ndp_ack_1m_relayed_frame,
&hf_radiotap_s1g_ndp_1m_unused,
&hf_radiotap_s1g_ndp_bw,
NULL
};
static int * const ndp_ack_2m_headers[] = {
&hf_radiotap_s1g_ndp_type_3bit,
&hf_radiotap_s1g_ndp_ack_2m_ack_id,
&hf_radiotap_s1g_ndp_ack_2m_more_data,
&hf_radiotap_s1g_ndp_ack_2m_idle_indication,
&hf_radiotap_s1g_ndp_ack_2m_duration,
&hf_radiotap_s1g_ndp_ack_2m_relayed_frame,
&hf_radiotap_s1g_ndp_ack_2m_reserved,
&hf_radiotap_s1g_ndp_2m_unused,
&hf_radiotap_s1g_ndp_bw,
NULL
};
static int * const ndp_probe_1m_headers[] = {
&hf_radiotap_s1g_ndp_type_3bit,
&hf_radiotap_s1g_ndp_probe_cssid_ano_present,
&hf_radiotap_s1g_ndp_probe_1m_cssid_ano,
&hf_radiotap_s1g_ndp_probe_1m_requested_response_type,
&hf_radiotap_s1g_ndp_probe_1m_reserved,
&hf_radiotap_s1g_ndp_1m_unused,
&hf_radiotap_s1g_ndp_bw,
NULL
};
static int * const ndp_probe_2m_headers[] = {
&hf_radiotap_s1g_ndp_type_3bit,
&hf_radiotap_s1g_ndp_probe_cssid_ano_present,
&hf_radiotap_s1g_ndp_probe_2m_cssid_ano,
&hf_radiotap_s1g_ndp_probe_2m_requested_response_type,
&hf_radiotap_s1g_ndp_2m_unused,
&hf_radiotap_s1g_ndp_bw,
NULL
};
static int * const ndp_cts_1m_headers[] = {
&hf_radiotap_s1g_ndp_type_3bit,
&hf_radiotap_s1g_ndp_cts_cf_end_indic,
&hf_radiotap_s1g_ndp_cts_address_indic,
&hf_radiotap_s1g_ndp_cts_ra_partial_bssid,
&hf_radiotap_s1g_ndp_cts_duration_1m,
&hf_radiotap_s1g_ndp_cts_early_sector_indic_1m,
&hf_radiotap_s1g_ndp_1m_unused,
&hf_radiotap_s1g_ndp_bw,
NULL
};
static int * const ndp_cts_2m_headers[] = {
&hf_radiotap_s1g_ndp_type_3bit,
&hf_radiotap_s1g_ndp_cts_cf_end_indic,
&hf_radiotap_s1g_ndp_cts_address_indic,
&hf_radiotap_s1g_ndp_cts_ra_partial_bssid,
&hf_radiotap_s1g_ndp_cts_duration_2m,
&hf_radiotap_s1g_ndp_cts_early_sector_indic_2m,
&hf_radiotap_s1g_ndp_cts_bandwidth_indic_2m,
&hf_radiotap_s1g_ndp_cts_reserved,
&hf_radiotap_s1g_ndp_2m_unused,
&hf_radiotap_s1g_ndp_bw,
NULL
};
static int * const ndp_cf_end_1m_headers[] = {
&hf_radiotap_s1g_ndp_type_3bit,
&hf_radiotap_s1g_ndp_cts_cf_end_indic,
&hf_radiotap_s1g_ndp_cf_end_partial_bssid,
&hf_radiotap_s1g_ndp_cf_end_duration_1m,
&hf_radiotap_s1g_ndp_cf_end_reserved_1m,
&hf_radiotap_s1g_ndp_1m_unused,
&hf_radiotap_s1g_ndp_bw,
NULL
};
static int * const ndp_cf_end_2m_headers[] = {
&hf_radiotap_s1g_ndp_type_3bit,
&hf_radiotap_s1g_ndp_cts_cf_end_indic,
&hf_radiotap_s1g_ndp_cf_end_partial_bssid,
&hf_radiotap_s1g_ndp_cf_end_duration_2m,
&hf_radiotap_s1g_ndp_cf_end_reserved_2m,
&hf_radiotap_s1g_ndp_1m_unused,
&hf_radiotap_s1g_ndp_bw,
NULL
};
static int * const ndp_ps_poll_1m_headers[] = {
&hf_radiotap_s1g_ndp_type_3bit,
&hf_radiotap_s1g_ndp_ps_poll_ra,
&hf_radiotap_s1g_ndp_ps_poll_ta,
&hf_radiotap_s1g_ndp_ps_poll_preferred_mcs_1m,
&hf_radiotap_s1g_ndp_ps_poll_udi_1m,
&hf_radiotap_s1g_ndp_1m_unused,
&hf_radiotap_s1g_ndp_bw,
NULL
};
static int * const ndp_ps_poll_2m_headers[] = {
&hf_radiotap_s1g_ndp_type_3bit,
&hf_radiotap_s1g_ndp_ps_poll_ra,
&hf_radiotap_s1g_ndp_ps_poll_ta,
&hf_radiotap_s1g_ndp_ps_poll_preferred_mcs_2m,
&hf_radiotap_s1g_ndp_ps_poll_udi_2m,
&hf_radiotap_s1g_ndp_2m_unused,
&hf_radiotap_s1g_ndp_bw,
NULL
};
static int * const ndp_ps_poll_ack_1m_headers[] = {
&hf_radiotap_s1g_ndp_type_3bit,
&hf_radiotap_s1g_ndp_ps_poll_ack_id,
&hf_radiotap_s1g_ndp_ps_poll_ack_more_data,
&hf_radiotap_s1g_ndp_ps_poll_ack_idle_indication,
&hf_radiotap_s1g_ndp_ps_poll_ack_duration_1m,
&hf_radiotap_s1g_ndp_ps_poll_ack_reserved_1m,
&hf_radiotap_s1g_ndp_1m_unused,
&hf_radiotap_s1g_ndp_bw,
NULL
};
static int * const ndp_ps_poll_ack_2m_headers[] = {
&hf_radiotap_s1g_ndp_type_3bit,
&hf_radiotap_s1g_ndp_ps_poll_ack_id_2m,
&hf_radiotap_s1g_ndp_ps_poll_ack_more_data_2m,
&hf_radiotap_s1g_ndp_ps_poll_ack_idle_indication_2m,
&hf_radiotap_s1g_ndp_ps_poll_ack_duration_2m,
&hf_radiotap_s1g_ndp_ps_poll_ack_reserved_2m,
&hf_radiotap_s1g_ndp_2m_unused,
&hf_radiotap_s1g_ndp_bw,
NULL
};
static int * const ndp_block_ack_1m_headers[] = {
&hf_radiotap_s1g_ndp_type_3bit,
&hf_radiotap_s1g_ndp_block_ack_id_1m,
&hf_radiotap_s1g_ndp_block_ack_starting_sequence_control_1m,
&hf_radiotap_s1g_ndp_block_ack_bitmap_1m,
&hf_radiotap_s1g_ndp_block_ack_unused_1m,
&hf_radiotap_s1g_ndp_bw,
NULL
};
static int * const ndp_block_ack_2m_headers[] = {
&hf_radiotap_s1g_ndp_type_3bit,
&hf_radiotap_s1g_ndp_block_ack_id_2m,
&hf_radiotap_s1g_ndp_block_ack_starting_sequence_control_2m,
&hf_radiotap_s1g_ndp_block_ack_bitmap_2m,
&hf_radiotap_s1g_ndp_2m_unused,
&hf_radiotap_s1g_ndp_bw,
NULL
};
static int * const ndp_beamforming_headers[] = {
&hf_radiotap_s1g_ndp_type_3bit,
&hf_radiotap_s1g_ndp_beamforming_ap_address,
&hf_radiotap_s1g_ndp_beamforming_non_ap_sta_address,
&hf_radiotap_s1g_ndp_beamforming_feedback_segment_bitmap,
&hf_radiotap_s1g_ndp_beamforming_reserved,
&hf_radiotap_s1g_ndp_2m_unused,
&hf_radiotap_s1g_ndp_bw,
NULL
};
static int * const ndp_paging_1m_headers[] = {
&hf_radiotap_s1g_ndp_type_3bit,
&hf_radiotap_s1g_ndp_paging_p_id,
&hf_radiotap_s1g_ndp_paging_apdi_partial_aid,
&hf_radiotap_s1g_ndp_paging_direction,
&hf_radiotap_s1g_ndp_paging_reserved_1m,
&hf_radiotap_s1g_ndp_1m_unused,
&hf_radiotap_s1g_ndp_bw,
NULL
};
static int * const ndp_paging_2m_headers[] = {
&hf_radiotap_s1g_ndp_type_3bit,
&hf_radiotap_s1g_ndp_paging_p_id,
&hf_radiotap_s1g_ndp_paging_apdi_partial_aid,
&hf_radiotap_s1g_ndp_paging_direction,
&hf_radiotap_s1g_ndp_paging_reserved_2m,
&hf_radiotap_s1g_ndp_2m_unused,
&hf_radiotap_s1g_ndp_bw,
NULL
};
static int
dissect_s1g_ndp(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
{
proto_tree *ndp_tree = NULL;
proto_item *ndp_item = NULL;
int offset = 0;
guint8 ndp_type = tvb_get_guint8(tvb, 1);
guint8 ndp_bw = tvb_get_guint8(tvb, 5) >> 7;
ndp_tree = proto_tree_add_subtree(tree, tvb, offset, 6, ett_s1g_ndp,
&ndp_item, "S1G NDP");
switch (ndp_type & 0x07) {
case S1G_NDP_PROBE_REQ:
proto_tree_add_item(ndp_tree, hf_radiotap_s1g_ndp_mgmt, tvb, offset, 1,
ENC_NA);
break;
default:
proto_tree_add_item(ndp_tree, hf_radiotap_s1g_ndp_ctrl, tvb, offset, 1,
ENC_NA);
}
offset += 1;
col_append_str(pinfo->cinfo, COL_INFO, ", S1G");
switch (ndp_type & 0x07) {
case S1G_NDP_CTS_CF_END: /* This uses an extra bit to distinguish */
if (ndp_type & 0x8) { /* NDP CF-END */
proto_item_append_text(ndp_item, " CF-End");
if (ndp_bw == 0) {
col_append_str(pinfo->cinfo, COL_INFO, " CF-End 1MHz");
proto_tree_add_bitmask(ndp_tree, tvb, offset,
hf_radiotap_s1g_ndp_cf_end_1m,
ett_s1g_ndp_cf_end, ndp_cf_end_1m_headers,
ENC_LITTLE_ENDIAN);
} else {
col_append_str(pinfo->cinfo, COL_INFO, " CF-End 2MHz");
proto_tree_add_bitmask(ndp_tree, tvb, offset,
hf_radiotap_s1g_ndp_cf_end_2m,
ett_s1g_ndp_cf_end, ndp_cf_end_2m_headers,
ENC_LITTLE_ENDIAN);
}
} else { /* NDP CTS */
proto_item_append_text(ndp_item, " CTS");
if (ndp_bw == 0) {
col_append_str(pinfo->cinfo, COL_INFO, " CTS 1MHz");
proto_tree_add_bitmask(ndp_tree, tvb, offset,
hf_radiotap_s1g_ndp_cts_1m,
ett_s1g_ndp_cts, ndp_cts_1m_headers,
ENC_LITTLE_ENDIAN);
} else {
col_append_str(pinfo->cinfo, COL_INFO, " CTS 2MHz");
proto_tree_add_bitmask(ndp_tree, tvb, offset,
hf_radiotap_s1g_ndp_cts_2m,
ett_s1g_ndp_cts, ndp_cts_2m_headers,
ENC_LITTLE_ENDIAN);
}
}
break;
case S1G_NDP_PS_POLL:
proto_item_append_text(ndp_item, " PS-Poll");
if (ndp_bw == 0) {
col_append_str(pinfo->cinfo, COL_INFO, " PS-Poll 1MHz");
proto_tree_add_bitmask(ndp_tree, tvb, offset,
hf_radiotap_s1g_ndp_ps_poll_1m,
ett_s1g_ndp_ps_poll, ndp_ps_poll_1m_headers,
ENC_LITTLE_ENDIAN);
} else {
col_append_str(pinfo->cinfo, COL_INFO, " PS-Poll 2MHz");
proto_tree_add_bitmask(ndp_tree, tvb, offset,
hf_radiotap_s1g_ndp_ps_poll_2m,
ett_s1g_ndp_ps_poll, ndp_ps_poll_2m_headers,
ENC_LITTLE_ENDIAN);
}
break;
case S1G_NDP_ACK:
proto_item_append_text(ndp_item, " Ack");
if (ndp_bw == 0) {
col_append_str(pinfo->cinfo, COL_INFO, " ACK 1MHz");
proto_tree_add_bitmask(ndp_tree, tvb, offset,
hf_radiotap_s1g_ndp_ack_1m,
ett_s1g_ndp_ack, ndp_ack_1m_headers,
ENC_LITTLE_ENDIAN);
} else {
col_append_str(pinfo->cinfo, COL_INFO, " ACK 2MHz");
proto_tree_add_bitmask(ndp_tree, tvb, offset,
hf_radiotap_s1g_ndp_ack_2m,
ett_s1g_ndp_ack, ndp_ack_2m_headers,
ENC_LITTLE_ENDIAN);
}
break;
case S1G_NDP_PS_POLL_ACK:
proto_item_append_text(ndp_item, " PS-Poll-Ack");
if (ndp_bw == 0) {
col_append_str(pinfo->cinfo, COL_INFO, " PS-Poll-Ack 1MHz");
proto_tree_add_bitmask(ndp_tree, tvb, offset,
hf_radiotap_s1g_ndp_ps_poll_ack_1m,
ett_s1g_ndp_ps_poll_ack, ndp_ps_poll_ack_1m_headers,
ENC_LITTLE_ENDIAN);
} else {
col_append_str(pinfo->cinfo, COL_INFO, " PS-Poll-Ack 2MHz");
proto_tree_add_bitmask(ndp_tree, tvb, offset,
hf_radiotap_s1g_ndp_ps_poll_ack_2m,
ett_s1g_ndp_ps_poll_ack, ndp_ps_poll_ack_2m_headers,
ENC_LITTLE_ENDIAN);
}
break;
case S1G_NDP_BLOCK_ACK:
proto_item_append_text(ndp_item, " BlockAck");
if (ndp_bw == 0) {
col_append_str(pinfo->cinfo, COL_INFO, " BlockAck 1MHz");
proto_tree_add_bitmask(ndp_tree, tvb, offset,
hf_radiotap_s1g_ndp_block_ack_1m,
ett_s1g_ndp_block_ack, ndp_block_ack_1m_headers,
ENC_LITTLE_ENDIAN);
} else {
col_append_str(pinfo->cinfo, COL_INFO, " BlockAck 2MHz");
proto_tree_add_bitmask(ndp_tree, tvb, offset,
hf_radiotap_s1g_ndp_block_ack_2m,
ett_s1g_ndp_block_ack, ndp_block_ack_2m_headers,
ENC_LITTLE_ENDIAN);
}
break;
case S1G_NDP_BEAMFORMING_REPORT_POLL:
proto_tree_add_bitmask(ndp_tree, tvb, offset,
hf_radiotap_s1g_ndp_beamforming_report_poll,
ett_s1g_ndp_beamforming_report_poll, ndp_beamforming_headers,
ENC_LITTLE_ENDIAN);
break;
case S1G_NDP_PAGING:
proto_item_append_text(ndp_item, " NDP Paging");
if (ndp_bw == 0) {
col_append_str(pinfo->cinfo, COL_INFO, " NDP Paging 1MHz");
proto_tree_add_bitmask(ndp_tree, tvb, offset,
hf_radiotap_s1g_ndp_paging_1m,
ett_s1g_ndp_paging, ndp_paging_1m_headers,
ENC_LITTLE_ENDIAN);
} else {
col_append_str(pinfo->cinfo, COL_INFO, " NDP Paging 2MHz");
proto_tree_add_bitmask(ndp_tree, tvb, offset,
hf_radiotap_s1g_ndp_paging_2m,
ett_s1g_ndp_paging, ndp_paging_2m_headers,
ENC_LITTLE_ENDIAN);
}
break;
case S1G_NDP_PROBE_REQ:
proto_item_append_text(ndp_item, " Probe Request");
if (ndp_bw == 0) {
col_append_str(pinfo->cinfo, COL_INFO, " Probe Request 1MHz");
proto_tree_add_bitmask(ndp_tree, tvb, offset,
hf_radiotap_s1g_ndp_probe_1m,
ett_s1g_ndp_probe, ndp_probe_1m_headers,
ENC_LITTLE_ENDIAN);
} else {
col_append_str(pinfo->cinfo, COL_INFO, " Probe Request 2MHz");
proto_tree_add_bitmask(ndp_tree, tvb, offset,
hf_radiotap_s1g_ndp_probe_2m,
ett_s1g_ndp_probe, ndp_probe_2m_headers,
ENC_LITTLE_ENDIAN);
}
break;
default:
proto_item_append_text(ndp_item, ", Unknown NDP type");
col_append_str(pinfo->cinfo, COL_INFO, " Unknown NDP type");
proto_tree_add_item(ndp_tree, hf_radiotap_s1g_ndp_bytes, tvb, offset,
5, ENC_NA);
}
return tvb_captured_length(tvb);
}
static int * const usig_common_headers[] = {
&hf_radiotap_usig_phy_version_identifier_known,
&hf_radiotap_usig_bw_known,
@ -7492,7 +6991,7 @@ void proto_register_radiotap(void)
{&hf_radiotap_eht_data7_beamformed,
{"Beamformed (EHT sounding)",
"radiotap.eht.data_7.beamdormed_eht_sounding",
"radiotap.eht.data_7.beamformed_eht_sounding",
FT_BOOLEAN, 32, NULL, 0x00010000, NULL, HFILL }},
{&hf_radiotap_eht_data7_number_non_ofdma_users,
@ -7752,356 +7251,6 @@ void proto_register_radiotap(void)
{"RSSI", "radiotap.s1g.rssi",
FT_INT16, BASE_DEC, NULL,
IEEE80211_RADIOTAP_TLV_S1G_RSSI, NULL, HFILL}},
{&hf_radiotap_s1g_ndp_bytes,
{"NDP Bytes", "radiotap.s1g.ndp.bytes",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ctrl,
{"NDP Control", "radiotap.s1g.ndp.control",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_mgmt,
{"NDP Management", "radiotap.s1g.ndp.management",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_type_3bit,
{"NDP Type", "radiotap.s1g.ndp.type",
FT_UINT40, BASE_HEX, NULL, 0x0000000007, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ack_1m,
{"NDP Ack 1MHz", "radiotap.s1g.ndp.ack_1m",
FT_UINT40, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ack_1m_ack_id,
{"ACK Id", "radiotap.s1g.ndp.ack.ack_id",
FT_UINT40, BASE_HEX, NULL, 0x0000000FF8, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ack_1m_more_data,
{"More Data", "radiotap.s1g.ndp.ack.more_data",
FT_BOOLEAN, 40, NULL, 0x0000001000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ack_1m_idle_indication,
{"Idle Indication", "radiotap.s1g.ndp.ack.idle_indication",
FT_BOOLEAN, 40, NULL, 0x0000002000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ack_1m_duration,
{"Duration", "radiotap.s1g.ndp.ack.duration",
FT_UINT40, BASE_DEC, NULL, 0x0000FFC000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ack_1m_relayed_frame,
{"Relayed Frame", "radiotap.s1g.ndp.ack.relayed_frame",
FT_BOOLEAN, 40, NULL, 0x0001000000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ack_2m,
{"NDP Ack 2MHz", "radiotap.s1g.ndp.ack_2m",
FT_UINT40, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ack_2m_ack_id,
{"ACK Id", "radiotap.s1g.ndp.ack.ack_id",
FT_UINT40, BASE_HEX, NULL, 0x000007FFF8, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ack_2m_more_data,
{"More Data", "radiotap.s1g.ndp.ack.more_data",
FT_BOOLEAN, 40, NULL, 0x0000080000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ack_2m_idle_indication,
{"Idle Indication", "radiotap.s1g.ndp.ack.idle_indication",
FT_BOOLEAN, 40, NULL, 0x0000100000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ack_2m_duration,
{"Duration", "radiotap.s1g.ndp.ack.duration",
FT_UINT40, BASE_DEC, NULL, 0x07FFE00000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ack_2m_relayed_frame,
{"Relayed Frame", "radiotap.s1g.ndp.ack.relayed_frame",
FT_BOOLEAN, 40, NULL, 0x0800000000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ack_2m_reserved,
{"Reserved", "radiotap.s1g.ndp.ack.reserved",
FT_UINT40, BASE_HEX, NULL, 0x1000000000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_cts_1m,
{"NDP CTS 1MHz", "radiotap.s1g.ndp.cts_1m",
FT_UINT40, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_cts_cf_end_indic,
{"NDP CTS/CF_End Indicator", "radiotap.s1g.ndp.cts_cf_end_indic",
FT_BOOLEAN, 40, NULL, 0x0000000008, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_cts_address_indic,
{"Address Indicator", "radiotap.s1g.ndp.cts.address_indic",
FT_BOOLEAN, 40, NULL, 0x0000000010, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_cts_ra_partial_bssid,
{"RA/Partial BSSID", "radiotap.s1g.ndp.cts.ra_partial_bssid",
FT_UINT40, BASE_HEX, NULL, 0x0000003FE0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_cts_duration_1m,
{"Duration", "radiotap.s1g.ndp.cts.duration_1m",
FT_UINT40, BASE_DEC, NULL, 0x0000FFC000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_cts_early_sector_indic_1m,
{"Early Sector Indicator", "radiotap.s1g.ndp.cts.early_sector_indic_1m",
FT_BOOLEAN, 40, NULL, 0x0001000000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_cts_2m,
{"NDP CTS 2MHz", "radiotap.s1g.ndp.cts_2m",
FT_UINT40, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_cts_duration_2m,
{"Duration", "radiotap.s1g.ndp.cts.duration_2m",
FT_UINT40, BASE_DEC, NULL, 0x001FFFC000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_cts_early_sector_indic_2m,
{"Early Sector Indicator", "radiotap.s1g.ndp.cts.early_sector_indic_2m",
FT_BOOLEAN, 40, NULL, 0x0020000000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_cts_bandwidth_indic_2m,
{"Bandwidth Indicator", "radiotap.s1g.ndp.cts.bandwidth_indic_2m",
FT_UINT40, BASE_DEC, NULL, 0x01C0000000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_cts_reserved,
{"Reserved", "radiotap.s1g.ndp.cts.reserved",
FT_UINT40, BASE_HEX, NULL, 0x1E00000000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_cf_end_1m,
{"NDP CF-End 1MHz", "radiotap.s1g.ndp.cf_end_1m",
FT_UINT40, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_cf_end_partial_bssid,
{"Partial BSSID (TA)", "radiotap.s1g.ndp.cf_end.partial_bssid",
FT_UINT40, BASE_HEX, NULL, 0x0000001FF0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_cf_end_duration_1m,
{"Duration", "radiotap.s1g.ndp.cf_end.duration_1m",
FT_UINT40, BASE_HEX, NULL, 0x00007FE000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_cf_end_reserved_1m,
{"Reserved", "radiotap.s1g.ndp.cf_end.reserved_1m",
FT_UINT40, BASE_HEX, NULL, 0x0001800000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_cf_end_2m,
{"NDP CF-End 2MHz", "radiotap.s1g.ndp.cf_end_2m",
FT_UINT40, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_cf_end_duration_2m,
{"Duration", "radiotap.s1g.ndp.cf_end.duration_2m",
FT_UINT40, BASE_HEX, NULL, 0x000FFFE000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_cf_end_reserved_2m,
{"Reserved", "radiotap.s1g.ndp.cf_end.reserved_2m",
FT_UINT40, BASE_HEX, NULL, 0x1FF0000000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ps_poll_1m,
{"NDP PS-Poll 1MHz", "radiotap.s1g.ndp.ps_poll_1m",
FT_UINT40, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ps_poll_ra,
{"RA", "radiotap.s1g.ndp.ps_poll.ra",
FT_UINT40, BASE_HEX, NULL, 0x0000000FF8, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ps_poll_ta,
{"TA", "radiotap.s1g.ndp.ps_poll.ta",
FT_UINT40, BASE_HEX, NULL, 0x00001FF000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ps_poll_preferred_mcs_1m,
{"Preferred MCS", "radiotap.s1g.ndp.ps_poll.preferred_mcs",
FT_UINT40, BASE_HEX, NULL, 0x0000E00000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ps_poll_udi_1m,
{"UDI", "radiotap.s1g.ndp.ps_poll.udi",
FT_UINT40, BASE_HEX, NULL, 0x0001000000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ps_poll_2m,
{"NDP PS-Poll 2MHz", "radiotap.s1g.ndp.ps_poll_2m",
FT_UINT40, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ps_poll_preferred_mcs_2m,
{"Preferred MCS", "radiotap.s1g.ndp.ps_poll.preferred_mcs",
FT_UINT40, BASE_HEX, NULL, 0x0001E00000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ps_poll_udi_2m,
{"UDI", "radiotap.s1g.ndp.ps_poll.udi",
/* TODO: not sure this mask is correct.. */
FT_UINT40, BASE_HEX, NULL, 0x01FFE00000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ps_poll_ack_1m,
{"NDP PS-Poll-Ack 1MHz", "radiotap.s1g.ndp.ndp_ps_poll_ack_1m",
FT_UINT40, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ps_poll_ack_id,
{"Ack ID", "radiotap.s1g.ndp.ps_poll.ack_id",
FT_UINT40, BASE_HEX, NULL, 0x0000000FF8, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ps_poll_ack_more_data,
{"More Data", "radiotap.s1g.ndp.ps_poll.more_data",
FT_BOOLEAN, 40, NULL, 0x0000001000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ps_poll_ack_idle_indication,
{"Idle Indication", "radiotap.s1g.ndp.ps_poll.idle_indication",
FT_BOOLEAN, 40, NULL, 0x0000002000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ps_poll_ack_duration_1m,
{"Duration", "radiotap.s1g.ndp.ps_poll.duration",
FT_UINT40, BASE_HEX, NULL, 0x0000FFC000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ps_poll_ack_reserved_1m,
{"Reserved", "radiotap.s1g.ndp.ps_poll.reserved_1m",
FT_UINT40, BASE_HEX, NULL, 0x0001000000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ps_poll_ack_2m,
{"NDP PS-Poll-Ack 2MHz", "radiotap.s1g.ndp.ndp_ps_poll_ack_2m",
FT_UINT40, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ps_poll_ack_id_2m,
{"Ack ID", "radiotap.s1g.ndp.ps_poll.ack_id",
FT_UINT40, BASE_HEX, NULL, 0x000007FFF8, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ps_poll_ack_more_data_2m,
{"More Data", "radiotap.s1g.ndp.ps_poll.more_data",
FT_BOOLEAN, 40, NULL, 0x0000080000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ps_poll_ack_idle_indication_2m,
{"Idle Indication", "radiotap.s1g.ndp.ps_poll.idle_indication",
FT_BOOLEAN, 40, NULL, 0x0000100000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ps_poll_ack_duration_2m,
{"Duration", "radiotap.s1g.ndp.ps_poll.duration",
FT_UINT40, BASE_HEX, NULL, 0x07FFE00000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_ps_poll_ack_reserved_2m,
{"Reserved", "radiotap.s1g.ndp.ps_poll.reserved",
FT_UINT40, BASE_HEX, NULL, 0x1800000000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_block_ack_1m,
{"NDP Block Ack 1MHz", "radiotap.s1g.ndp.block_ack_1m",
FT_UINT40, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_block_ack_id_1m,
{"BlockAck ID", "radiotap.s1g.ndp.block_ack.blockack_id",
FT_UINT40, BASE_HEX, NULL, 0x0000000018, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_block_ack_starting_sequence_control_1m,
{"Starting Sequence Control", "radiotap.s1g.ndp.ps_poll.starting_sequence_control",
FT_UINT40, BASE_HEX, NULL, 0x000001FFE0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_block_ack_bitmap_1m,
{"Block Ack Bitmap", "radiotap.s1g.ndp.ps_poll.block_ack_bitmap",
FT_UINT40, BASE_HEX, NULL, 0x001FFE0000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_block_ack_unused_1m,
{"Unused", "radiotap.s1g.ndp.ps_poll.block_ack_unused",
FT_UINT40, BASE_HEX, NULL, 0x3FE0000000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_block_ack_2m,
{"NDP Block Ack 2MHz", "radiotap.s1g.ndp.block_ack_2m",
FT_UINT40, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_block_ack_id_2m,
{"BlockAck ID", "radiotap.s1g.ndp.ps_poll.blockack_id",
FT_UINT40, BASE_HEX, NULL, 0x00000001F8, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_block_ack_starting_sequence_control_2m,
{"Starting Sequence Control", "radiotap.s1g.ndp.ps_poll.starting_sequence_control",
FT_UINT40, BASE_HEX, NULL, 0x00001FFE00, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_block_ack_bitmap_2m,
{"Block Ack Bitmap", "radiotap.s1g.ndp.ps_poll.block_ack_bitmap",
FT_UINT40, BASE_HEX, NULL, 0x1FFFE00000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_beamforming_report_poll,
{"Beamforming Report Poll", "radiotap.s1g.ndp.beamforming_report_poll",
FT_UINT40, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_beamforming_ap_address,
{"AP Address", "radiotap.s1g.ndp.beamforming_report_poll.ap_address",
FT_UINT40, BASE_HEX, NULL, 0x0000000FF8, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_beamforming_non_ap_sta_address,
{"Non-AP STA Address", "radiotap.s1g.ndp.beamforming_report_poll.non_ap_sta_address",
FT_UINT40, BASE_HEX, NULL, 0x0001FFF000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_beamforming_feedback_segment_bitmap,
{"Retransmission Segment Retransmission Bitmap",
"radiotap.s1g.ndp.beamforming_report_poll.feedback_segment_retransmission_bitmap",
FT_UINT40, BASE_HEX, NULL, 0x01FE000000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_beamforming_reserved,
{"Reserved", "radiotap.s1g.ndp.beamforming_report_poll.reserved",
FT_UINT40, BASE_HEX, NULL, 0x1E00000000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_paging_1m,
{"NDP Paging 1MHz", "radiotap.s1g.ndp.ndp_paging_1m",
FT_UINT40, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_paging_p_id,
{"P-ID", "radiotap.s1g.ndp.ndp_paging.p_id",
FT_BOOLEAN, 40, NULL, 0x0000000FF8, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_paging_apdi_partial_aid,
{"APDI/Partial AID", "radiotap.s1g.ndp.ndp_paging.apdi_partial_aid",
FT_BOOLEAN, 40, NULL, 0x00001FF000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_paging_direction,
{"Direction", "radiotap.s1g.ndp.ndp_paging.direction",
FT_BOOLEAN, 40, NULL, 0x0000200000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_paging_reserved_1m,
{"Reserved", "radiotap.s1g.ndp.ndp_paging.reserved",
FT_BOOLEAN, 40, NULL, 0x0001C00000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_paging_2m,
{"NDP Paging 2MHz", "radiotap.s1g.ndp.ndp_paging_2m",
FT_UINT40, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_paging_reserved_2m,
{"Reserved", "radiotap.s1g.ndp.reserved",
FT_BOOLEAN, 40, NULL, 0x1FFFC00000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_probe_1m,
{"NDP Probe 1MHz", "radiotap.s1g.ndp.ndp_probe_1m",
FT_UINT40, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_probe_cssid_ano_present,
{"CSSID/ANO Present", "radiotap.s1g.ndp.ndp_probe.cssid_ano_present",
FT_BOOLEAN, 40, NULL, 0x0000000008, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_probe_1m_cssid_ano,
{"Compressed SSID/ANO", "radiotap.s1g.ndp.ndp_probe.compressed_ssid_ano",
FT_UINT40, BASE_HEX, NULL, 0x00000FFFF0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_probe_1m_requested_response_type,
{"Requested Response Type", "radiotap.s1g.ndp.ndp_probe.requested_response_type_1m",
FT_UINT40, BASE_HEX, NULL, 0x0000100000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_probe_1m_reserved,
{"Reserved", "radiotap.s1g.ndp.probe_1m.ndp_probe.reserved",
FT_UINT40, BASE_HEX, NULL, 0x0001E00000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_probe_2m,
{"NDP Probe 2MHz", "radiotap.s1g.ndp.probe_2m",
FT_UINT40, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_probe_2m_cssid_ano,
{"Compressed SSID/ANO", "radiotap.s1g.ndp.ndp_probe.compressed_ssid_ano",
FT_UINT40, BASE_HEX, NULL, 0x0FFFFFFFF0, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_probe_2m_requested_response_type,
{"Requested Response Type", "radiotap.s1g.ndp.ndp_probe.requested_response_type_2m",
FT_UINT40, BASE_HEX, NULL, 0x1000000000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_1m_unused,
{"Unused", "radiotap.s1g.ndp.ack.1m_unused",
FT_UINT40, BASE_HEX, NULL, 0x3FFE000000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_2m_unused,
{"Unused", "radiotap.s1g.ndp.ack.2m_unused",
FT_UINT40, BASE_HEX, NULL, 0x2000000000, NULL, HFILL }},
{&hf_radiotap_s1g_ndp_bw,
{"NDP BW", "radiotap.s1g.ndp.bw",
FT_UINT40, BASE_HEX, NULL, 0xC000000000, NULL, HFILL }},
};
static gint *ett[] = {
&ett_radiotap,
@ -8150,16 +7299,6 @@ void proto_register_radiotap(void)
&ett_radiotap_s1g_known,
&ett_radiotap_s1g_data_1,
&ett_radiotap_s1g_data_2,
&ett_s1g_ndp,
&ett_s1g_ndp_ack,
&ett_s1g_ndp_cts,
&ett_s1g_ndp_cf_end,
&ett_s1g_ndp_ps_poll,
&ett_s1g_ndp_ps_poll_ack,
&ett_s1g_ndp_block_ack,
&ett_s1g_ndp_beamforming_report_poll,
&ett_s1g_ndp_paging,
&ett_s1g_ndp_probe,
&ett_radiotap_unknown_tlv,
};
static ei_register_info ei[] = {

View File

@ -126,7 +126,6 @@ static ws_enum_t all_enums[] = {
ENUM(PHDR_802_11A_TURBO_TYPE_TURBO),
ENUM(PHDR_802_11G_MODE_NORMAL),
ENUM(PHDR_802_11G_MODE_SUPER_G),
ENUM(PHDR_802_11_0_LENGTH_PSDU_S1G_NDP),
ENUM(PHDR_802_11_0_LENGTH_PSDU_VENDOR_SPECIFIC),
ENUM(PHDR_802_11_A_MPDU_DELIM_CRC_ERROR),
ENUM(PHDR_802_11_BANDWIDTH_160_MHZ),

View File

@ -821,7 +821,6 @@ struct ieee_802_11_phdr {
*/
#define PHDR_802_11_SOUNDING_PSDU 0 /* sounding PPDU */
#define PHDR_802_11_DATA_NOT_CAPTURED 1 /* data not captured, (e.g. multi-user PPDU) */
#define PHDR_802_11_0_LENGTH_PSDU_S1G_NDP 2 /* S1G NDP CMAC */
#define PHDR_802_11_0_LENGTH_PSDU_VENDOR_SPECIFIC 0xff
/* Packet "pseudo-header" for the output from CoSine L2 debug output. */