First attempt to decode CCX type 4 IEs (QoS?)
svn path=/trunk/; revision=16978
This commit is contained in:
parent
baa9b5c93b
commit
5fb7e183fd
1 changed files with 46 additions and 1 deletions
|
@ -564,6 +564,10 @@ static int rsn_cap_gtksa_replay_counter = -1;
|
||||||
static int hf_aironet_ie_type = -1;
|
static int hf_aironet_ie_type = -1;
|
||||||
static int hf_aironet_ie_version = -1;
|
static int hf_aironet_ie_version = -1;
|
||||||
static int hf_aironet_ie_data = -1;
|
static int hf_aironet_ie_data = -1;
|
||||||
|
static int hf_aironet_ie_qos_unk1 = -1;
|
||||||
|
static int hf_aironet_ie_qos_paramset = -1;
|
||||||
|
static int hf_aironet_ie_qos_val = -1;
|
||||||
|
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
/* Protocol trees */
|
/* Protocol trees */
|
||||||
|
@ -1138,11 +1142,13 @@ dissect_vendor_ie_rsn(proto_tree * ietree, proto_tree * tree, tvbuff_t * tvb,
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
AIRONET_IE_VERSION = 3
|
AIRONET_IE_VERSION = 3,
|
||||||
|
AIRONET_IE_QOS
|
||||||
} aironet_ie_type_t;
|
} aironet_ie_type_t;
|
||||||
|
|
||||||
static const value_string aironet_ie_type_vals[] = {
|
static const value_string aironet_ie_type_vals[] = {
|
||||||
{ AIRONET_IE_VERSION, "CCX version\?"},
|
{ AIRONET_IE_VERSION, "CCX version\?"},
|
||||||
|
{ AIRONET_IE_QOS, "Qos?\?"},
|
||||||
|
|
||||||
{ 0, NULL }
|
{ 0, NULL }
|
||||||
};
|
};
|
||||||
|
@ -1152,6 +1158,7 @@ dissect_vendor_ie_aironet(proto_item * aironet_item, proto_tree * ietree,
|
||||||
tvbuff_t * tvb, int offset, guint32 tag_len)
|
tvbuff_t * tvb, int offset, guint32 tag_len)
|
||||||
{
|
{
|
||||||
guint8 type;
|
guint8 type;
|
||||||
|
int i;
|
||||||
|
|
||||||
type = tvb_get_guint8(tvb, offset);
|
type = tvb_get_guint8(tvb, offset);
|
||||||
proto_tree_add_item (ietree, hf_aironet_ie_type, tvb, offset, 1, TRUE);
|
proto_tree_add_item (ietree, hf_aironet_ie_type, tvb, offset, 1, TRUE);
|
||||||
|
@ -1161,6 +1168,31 @@ dissect_vendor_ie_aironet(proto_item * aironet_item, proto_tree * ietree,
|
||||||
case AIRONET_IE_VERSION:
|
case AIRONET_IE_VERSION:
|
||||||
proto_tree_add_item (ietree, hf_aironet_ie_version, tvb, offset, 1, TRUE);
|
proto_tree_add_item (ietree, hf_aironet_ie_version, tvb, offset, 1, TRUE);
|
||||||
break;
|
break;
|
||||||
|
case AIRONET_IE_QOS:
|
||||||
|
proto_tree_add_item (ietree, hf_aironet_ie_qos_unk1, tvb, offset, 1, TRUE);
|
||||||
|
offset += 1;
|
||||||
|
proto_tree_add_item (ietree, hf_aironet_ie_qos_paramset, tvb, offset, 1, TRUE);
|
||||||
|
offset += 1;
|
||||||
|
|
||||||
|
/* XXX: just copied over from WME. Maybe "Best Effort" and "Background"
|
||||||
|
* need to be swapped. Also, the "TXOP" may be TXOP - or not.
|
||||||
|
*/
|
||||||
|
for (i = 0; i < 4; i++) {
|
||||||
|
guint8 byte1, byte2;
|
||||||
|
guint16 txop;
|
||||||
|
byte1 = tvb_get_guint8(tvb, offset);
|
||||||
|
byte2 = tvb_get_guint8(tvb, offset + 1);
|
||||||
|
txop = tvb_get_letohs(tvb, offset + 2);
|
||||||
|
proto_tree_add_bytes_format(ietree, hf_aironet_ie_qos_val, tvb, offset, 4,
|
||||||
|
tvb_get_ptr(tvb, offset, 4),
|
||||||
|
"CCX QoS Parameters??: ACI %u (%s), Admission Control %sMandatory, AIFSN %u, ECWmin %u, ECWmax %u, TXOP %u",
|
||||||
|
(byte1 & 0x60) >> 5, wme_acs[(byte1 & 0x60) >> 5],
|
||||||
|
(byte1 & 0x10) ? "" : "not ", byte1 & 0x0f,
|
||||||
|
byte2 & 0x0f, (byte2 & 0xf0) >> 4,
|
||||||
|
txop);
|
||||||
|
offset += 4;
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
proto_tree_add_item(ietree, hf_aironet_ie_data, tvb, offset,
|
proto_tree_add_item(ietree, hf_aironet_ie_data, tvb, offset,
|
||||||
tag_len - 1, FALSE);
|
tag_len - 1, FALSE);
|
||||||
|
@ -3827,6 +3859,19 @@ proto_register_ieee80211 (void)
|
||||||
{ &hf_aironet_ie_data,
|
{ &hf_aironet_ie_data,
|
||||||
{ "Aironet IE data", "wlan_mgmt.aironet.data",
|
{ "Aironet IE data", "wlan_mgmt.aironet.data",
|
||||||
FT_BYTES, BASE_NONE, NULL, 0x0, "", HFILL }},
|
FT_BYTES, BASE_NONE, NULL, 0x0, "", HFILL }},
|
||||||
|
|
||||||
|
{&hf_aironet_ie_qos_unk1,
|
||||||
|
{"Aironet IE QoS unknown1", "wlan_mgt.tag.aironet.qos.unk1",
|
||||||
|
FT_UINT8, BASE_HEX, NULL, 0, "", HFILL }},
|
||||||
|
|
||||||
|
{&hf_aironet_ie_qos_paramset,
|
||||||
|
{"Aironet IE QoS paramset", "wlan_mgt.tag.aironet.qos.paramset",
|
||||||
|
FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
|
||||||
|
|
||||||
|
{&hf_aironet_ie_qos_val,
|
||||||
|
{"Aironet IE QoS valueset", "wlan_mgt.tag.aironet.qos.val",
|
||||||
|
FT_BYTES, BASE_NONE, NULL, 0, "", HFILL }},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static gint *tree_array[] = {
|
static gint *tree_array[] = {
|
||||||
|
|
Loading…
Reference in a new issue