ieee80211: Add dissector for Ruckus vendor specific IE

Dissector supports only type 3: AP Name.
This commit is contained in:
Adrian Granados 2021-09-28 12:24:04 -04:00
parent 220b5af9d4
commit 4975dbc867
2 changed files with 51 additions and 0 deletions

View File

@ -6091,6 +6091,9 @@ static int hf_ieee80211_vs_aerohive_data = -1;
static int hf_ieee80211_vs_mist_ap_name = -1;
static int hf_ieee80211_vs_mist_data = -1;
static int hf_ieee80211_vs_ruckus_ap_name = -1;
static int hf_ieee80211_vs_ruckus_data = -1;
static int hf_ieee80211_rsn_ie_ptk_keyid = -1;
static int hf_ieee80211_rsn_ie_gtk_keyid = -1;
@ -17722,6 +17725,39 @@ dissect_vendor_ie_mist(proto_item *item _U_, proto_tree *ietree,
}
}
#define RUCKUS_APNAME 3
static const value_string ieee80211_vs_ruckus_type_vals[] = {
{ RUCKUS_APNAME, "AP Name"},
{ 0, NULL }
};
static void
dissect_vendor_ie_ruckus(proto_item *item _U_, proto_tree *ietree,
tvbuff_t *tvb, int offset, guint32 tag_len)
{
guint32 type, length;
const guint8* apname;
/* VS OUI Type */
type = tvb_get_guint8(tvb, offset);
offset += 1;
tag_len -= 1;
switch(type){
case RUCKUS_APNAME:
proto_item_append_text(item, ": %s", val_to_str_const(type, ieee80211_vs_ruckus_type_vals, "Unknown"));
length = tag_len;
proto_tree_add_item_ret_string(ietree, hf_ieee80211_vs_ruckus_ap_name, tvb, offset, length, ENC_ASCII|ENC_NA, wmem_packet_scope(), &apname);
proto_item_append_text(item, " (%s)", apname);
break;
default:
proto_tree_add_item(ietree, hf_ieee80211_vs_ruckus_data, tvb, offset, tag_len, ENC_NA);
break;
}
}
enum vs_sgdsn_type {
SGDSN_VERSION = 0x01,
@ -27019,6 +27055,9 @@ ieee80211_tag_vendor_specific_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
case OUI_MIST:
dissect_vendor_ie_mist(field_data->item_tag, tree, tvb, offset, tag_vs_len);
break;
case OUI_RUCKUS:
dissect_vendor_ie_ruckus(field_data->item_tag, tree, tvb, offset, tag_vs_len);
break;
case OUI_SGDSN:
dissect_vendor_ie_sgdsn(field_data->item_tag, tree, tvb, offset, tag_vs_len, pinfo);
break;
@ -46788,6 +46827,17 @@ proto_register_ieee80211(void)
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
/* Vendor Specific : Ruckus */
{&hf_ieee80211_vs_ruckus_ap_name,
{"AP Name", "wlan.vs.ruckus.apname",
FT_STRING, BASE_NONE, NULL, 0,
NULL, HFILL }},
{&hf_ieee80211_vs_ruckus_data,
{"Data", "wlan.vs.ruckus.data",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
{&hf_ieee80211_tsinfo,
{"Traffic Stream (TS) Info", "wlan.ts_info",
FT_UINT24, BASE_HEX, NULL, 0,

View File

@ -82,6 +82,7 @@
#define OUI_ZIGBEE 0x4A191B /* ZigBee Alliance */
#define OUI_WFA 0x506F9A /* Wi-Fi Alliance */
#define OUI_MIST 0x5C5B35 /* Mist Systems */
#define OUI_RUCKUS 0x001392 /* Ruckus Networks */
#define OUI_SMPTE 0x6897E8 /* Society of Motion Picture and Television Engineers */
#define OUI_SGDSN 0x6A5C35 /* Secrétariat Général de la Défense et de la Sécurité Nationale http://www.sgdsn.gouv.fr */
#define OUI_ONOS 0xA42305 /* Open Networking Laboratory (ONOS) */