ieee80211: Add Extreme (Zebra) Vendor Specific TLV

Only decode subtype 1 : AP Name with unknown data (7 bytes)

Change-Id: I4fc0c6fff1a931075ab333a8527251f12acb2827
Reviewed-on: https://code.wireshark.org/review/19586
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
This commit is contained in:
Alexis La Goutte 2017-01-08 17:14:15 +01:00 committed by Michael Mann
parent 8604ed2ef8
commit 2a3b2360e1
3 changed files with 81 additions and 0 deletions

View File

@ -4332,6 +4332,12 @@ static int hf_ieee80211_vs_meru_subtype = -1;
static int hf_ieee80211_vs_meru_sublength = -1;
static int hf_ieee80211_vs_meru_subdata = -1;
static int hf_ieee80211_vs_extreme_subtype = -1;
static int hf_ieee80211_vs_extreme_subdata = -1;
static int hf_ieee80211_vs_extreme_unknown = -1;
static int hf_ieee80211_vs_extreme_ap_length = -1;
static int hf_ieee80211_vs_extreme_ap_name = -1;
static int hf_ieee80211_rsn_ie_pmkid = -1;
static int hf_ieee80211_rsn_ie_unknown = -1;
@ -10581,6 +10587,50 @@ dissect_vendor_ie_meru(proto_item *item _U_, proto_tree *ietree,
}
}
static const value_string ieee80211_vs_extreme_subtype_vals[] = {
{ 1, "AP Name"},
{ 0, NULL }
};
static void
dissect_vendor_ie_extreme(proto_item *item _U_, proto_tree *ietree,
tvbuff_t *tvb, int offset, guint32 tag_len,
packet_info *pinfo)
{
guint32 type, length;
proto_item *ti_len;
proto_tree_add_item_ret_uint(ietree, hf_ieee80211_vs_extreme_subtype, tvb, offset, 1, ENC_NA, &type);
offset += 1;
tag_len -= 1;
proto_tree_add_item(ietree, hf_ieee80211_vs_extreme_subdata, tvb, offset, tag_len, ENC_NA);
switch(type){
case 1: /* Unknown (7 bytes) + AP Name Length (1 byte) + AP Name */
proto_tree_add_item(ietree, hf_ieee80211_vs_extreme_unknown, tvb, offset, 7, ENC_NA);
offset += 7;
tag_len -= 1;
ti_len = proto_tree_add_item_ret_uint(ietree, hf_ieee80211_vs_extreme_ap_length, tvb, offset, 1, ENC_NA, &length);
offset += 1;
tag_len -= 1;
if (tag_len < length) {
expert_add_info_format(pinfo, ti_len, &ei_ieee80211_tag_length, "Tag length < AP Length");
length = tag_len;
}
proto_tree_add_item(ietree, hf_ieee80211_vs_extreme_ap_name, tvb, offset, length, ENC_ASCII|ENC_NA);
break;
default:
/* Expert info ? */
break;
}
}
/* 802.11-2012 8.4.2.37 QoS Capability element */
static int
dissect_qos_capability(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo, int offset, int ftype)
@ -15221,6 +15271,9 @@ add_tagged_field(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset
case OUI_MERU:
dissect_vendor_ie_meru(ti, tree, tvb, offset, tag_vs_len, pinfo);
break;
case OUI_ZEBRA_EXTREME:
dissect_vendor_ie_extreme(ti, tree, tvb, offset, tag_vs_len, pinfo);
break;
default:
proto_tree_add_item(tree, hf_ieee80211_tag_vendor_data, tvb, offset, tag_vs_len, ENC_NA);
break;
@ -26056,6 +26109,32 @@ proto_register_ieee80211(void)
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
/* Vendor Specific : Extreme (Zebra) */
{&hf_ieee80211_vs_extreme_subtype,
{"Subtype", "wlan.vs.extreme.subtype",
FT_UINT8, BASE_DEC, VALS(ieee80211_vs_extreme_subtype_vals), 0,
NULL, HFILL }},
{&hf_ieee80211_vs_extreme_subdata,
{"Subdata", "wlan.vs.extreme.subdata",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
{&hf_ieee80211_vs_extreme_unknown,
{"Unknown", "wlan.vs.extreme.unknown",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
{&hf_ieee80211_vs_extreme_ap_length,
{"AP Length", "wlan.vs.extreme.ap_length",
FT_UINT8, BASE_DEC, NULL, 0,
NULL, HFILL }},
{&hf_ieee80211_vs_extreme_ap_name,
{"AP Name", "wlan.vs.extreme.ap_name",
FT_STRING, BASE_NONE, NULL, 0,
NULL, HFILL }},
{&hf_ieee80211_tsinfo,
{"Traffic Stream (TS) Info", "wlan.ts_info",
FT_UINT24, BASE_HEX, NULL, 0,

View File

@ -87,6 +87,7 @@ http://www.cisco.com/univercd/cc/td/doc/product/software/ios113ed/113ed_cr/ibm_r
{ OUI_DCBX, "Data Center Bridging Capabilities Exchange" },
{ OUI_AVAYA, "Avaya" },
{ OUI_MERU, "Meru Network (Fortinet)" },
{ OUI_ZEBRA_EXTREME, "Extreme (Zebra)" },
{ 0, NULL }
};

View File

@ -88,6 +88,7 @@
#define OUI_WFA 0x506F9A /* Wi-Fi Alliance */
#define OUI_3GPP2 0xCF0002 /* 3GPP2 */
#define OUI_MERU 0x000ce6 /* Meru Network (Fortinet) */
#define OUI_ZEBRA_EXTREME 0x00A0F8 /* Extreme/WING (Zebra) */
extern const value_string oui_vals[];