forked from osmocom/wireshark
From Brian Cavagnolo via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=6173
Update 802.11s packet dissecting to the ratified standard (v12.0) [PATCH 3/9] add support for 802.11s v12.0 mesh peering management IE The v12.0 mesh peering management IE replaces the exiting mesh peer link management IE and has a slightly different format. From me Fix checkAPI Errors (the blurb field matches the field name) Remove unused hf_ieee80211_mesh_mgt_pl_reason_code svn path=/trunk/; revision=38275
This commit is contained in:
parent
afd9d6f633
commit
b5bc73f869
|
@ -639,7 +639,7 @@ int add_mimo_compressed_beamforming_feedback_report (proto_tree *tree, tvbuff_t
|
|||
/* Not yet assigned by ANA */
|
||||
#define TAG_MESH_CONFIGURATION 113
|
||||
#define TAG_MESH_ID 114
|
||||
#define TAG_MESH_PEER_LINK_MGMT 55
|
||||
#define TAG_MESH_PEERING_MGMT 117
|
||||
#define TAG_MESH_PREQ 68
|
||||
#define TAG_MESH_PREP 69
|
||||
#define TAG_MESH_PERR 70
|
||||
|
@ -722,7 +722,7 @@ static const range_string tag_num_vals[] = {
|
|||
#ifdef MESH_OVERRIDES
|
||||
{ TAG_MESH_ID, TAG_MESH_ID, "Mesh ID" },
|
||||
{ TAG_MESH_CONFIGURATION, TAG_MESH_CONFIGURATION, "Mesh Configuration" },
|
||||
{ TAG_MESH_PEER_LINK_MGMT, TAG_MESH_PEER_LINK_MGMT, "Mesh Peer Link Management" },
|
||||
{ TAG_MESH_PEERING_MGMT, TAG_MESH_PEERING_MGMT, "Mesh Peering Management" },
|
||||
{ TAG_MESH_PREQ, TAG_MESH_PREQ, "Mesh Path Request" },
|
||||
{ TAG_MESH_PREP, TAG_MESH_PREP, "Mesh Path Response" },
|
||||
{ TAG_MESH_PERR, TAG_MESH_PERR, "Mesh Path Error" },
|
||||
|
@ -909,6 +909,9 @@ static const value_string ieee80211_status_code[] = {
|
|||
{ 64, "Request refused due to permissions received via SSPN interface" },
|
||||
{ 65, "Request refused because AP does not support unauthenticated access" },
|
||||
{ 72, "Invalid contents of RSNIE" },
|
||||
{ 76, "Authentication is rejected because an Anti-Clogging Token is required" },
|
||||
{ 77, "Authentication is rejected because the offered finite cyclic group is not supported" },
|
||||
{ 78, "The TBTT adjustment request has not been successful because the STA could not find an alternative TBTT" },
|
||||
{ 0, NULL}
|
||||
};
|
||||
|
||||
|
@ -1146,6 +1149,11 @@ static const value_string aruba_mgt_typevals[] = {
|
|||
#define SELFPROT_ACTION_MESH_GROUP_KEY_INFORM 4
|
||||
#define SELFPROT_ACTION_MESH_GROUP_KEY_ACK 5
|
||||
|
||||
/* 11s draft 12.0, table 7-43bj6: Mesh Peering Protocol Identifier field values */
|
||||
#define MESH_PEERING_PROTO_MGMT 0
|
||||
#define MESH_PEERING_PROTO_AMPE 1
|
||||
#define MESH_PEERING_PROTO_VENDOR 255
|
||||
|
||||
#define MESH_PL_PEER_LINK_OPEN 0
|
||||
#define MESH_PL_PEER_LINK_CONFIRM 1
|
||||
#define MESH_PL_PEER_LINK_CLOSE 2
|
||||
|
@ -1696,10 +1704,10 @@ static int hf_ieee80211_ff_mesh_mgt_dest_rf_flags = -1; /* Mesh Management Repl
|
|||
|
||||
|
||||
/* variable header fields */
|
||||
static int hf_ieee80211_mesh_mgt_pl_subtype = -1;/* Mesh Management peer link frame subtype */
|
||||
static int hf_ieee80211_mesh_mgt_pl_local_link_id = -1;/* Mesh Management local link id */
|
||||
static int hf_ieee80211_mesh_mgt_pl_peer_link_id = -1;/* Mesh Management peer link id */
|
||||
static int hf_ieee80211_mesh_mgt_pl_reason_code = -1;/* Mesh Management peer link reason code */
|
||||
static int hf_ieee80211_mesh_peering_proto = -1;
|
||||
static int hf_ieee80211_mesh_peering_local_link_id = -1;
|
||||
static int hf_ieee80211_mesh_peering_peer_link_id = -1;/* Mesh Management peer link id */
|
||||
|
||||
static int hf_ieee80211_mesh_config_path_sel_protocol = -1;
|
||||
static int hf_ieee80211_mesh_config_path_sel_metric = -1;
|
||||
static int hf_ieee80211_mesh_config_congestion_control = -1;
|
||||
|
@ -8187,33 +8195,44 @@ add_tagged_field(packet_info * pinfo, proto_tree * tree, tvbuff_t * tvb, int off
|
|||
|
||||
|
||||
#ifdef MESH_OVERRIDES
|
||||
case TAG_MESH_PEER_LINK_MGMT:
|
||||
case TAG_MESH_PEERING_MGMT:
|
||||
{
|
||||
guint start = offset + 2;
|
||||
offset += 2;
|
||||
proto_tree_add_item (tree, hf_ieee80211_mesh_peering_proto, tvb, offset, 2, TRUE);
|
||||
offset += 2;
|
||||
proto_tree_add_item (tree, hf_ieee80211_mesh_peering_local_link_id, tvb, offset, 2, TRUE);
|
||||
offset += 2;
|
||||
proto_tree_add_item (tree, hf_ieee80211_mesh_mgt_pl_subtype, tvb, offset, 1, TRUE);
|
||||
offset += 1;
|
||||
switch (tvb_get_guint8(tvb, 1))
|
||||
{ /* IE subtype */
|
||||
case MESH_PL_PEER_LINK_OPEN:
|
||||
proto_tree_add_item (tree, hf_ieee80211_mesh_mgt_pl_local_link_id, tvb, offset, 2, TRUE);
|
||||
{ /* Self-protected action field */
|
||||
case SELFPROT_ACTION_MESH_PEERING_OPEN:
|
||||
break;
|
||||
|
||||
case MESH_PL_PEER_LINK_CONFIRM:
|
||||
proto_tree_add_item (tree, hf_ieee80211_mesh_mgt_pl_local_link_id, tvb, offset, 2, TRUE);
|
||||
proto_tree_add_item (tree, hf_ieee80211_mesh_mgt_pl_peer_link_id, tvb, offset + 2, 2, TRUE);
|
||||
case SELFPROT_ACTION_MESH_PEERING_CONFIRM:
|
||||
proto_tree_add_item (tree, hf_ieee80211_mesh_peering_peer_link_id, tvb, offset, 2, TRUE);
|
||||
offset += 2;
|
||||
break;
|
||||
|
||||
case MESH_PL_PEER_LINK_CLOSE:
|
||||
proto_tree_add_item (tree, hf_ieee80211_mesh_mgt_pl_local_link_id, tvb, offset, 2, TRUE);
|
||||
proto_tree_add_item (tree, hf_ieee80211_mesh_mgt_pl_peer_link_id, tvb, offset + 2, 2, TRUE);
|
||||
proto_tree_add_item (tree, hf_ieee80211_mesh_mgt_pl_reason_code, tvb, offset + 4, 2, TRUE);
|
||||
case SELFPROT_ACTION_MESH_PEERING_CLOSE:
|
||||
if (tag_len == 8 || tag_len == 24)
|
||||
{
|
||||
proto_tree_add_item (tree, hf_ieee80211_mesh_peering_peer_link_id, tvb, offset, 2, TRUE);
|
||||
offset += 2;
|
||||
}
|
||||
offset += add_fixed_field(tree, tvb, offset, FIELD_STATUS_CODE);
|
||||
break;
|
||||
|
||||
/* undefined values */
|
||||
/* unexpected values */
|
||||
default:
|
||||
proto_tree_add_text (tree, tvb, offset, tag_len, "Unknown Peer Link Message Subtype");
|
||||
proto_tree_add_text (tree, tvb, offset, tag_len, "Unexpected Self-protected action");
|
||||
offset += tag_len;
|
||||
break;
|
||||
}
|
||||
if (tag_len - (offset - start) == 16)
|
||||
{
|
||||
proto_tree_add_item(tree, hf_ieee80211_rsn_pmkid, tvb, offset, 16, FALSE);
|
||||
offset +=16;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -11511,6 +11530,13 @@ proto_register_ieee80211 (void)
|
|||
{0, NULL}
|
||||
};
|
||||
|
||||
static const value_string mesh_peering_proto_ids[] = {
|
||||
{MESH_PEERING_PROTO_MGMT, "Mesh peering management protocol"},
|
||||
{MESH_PEERING_PROTO_AMPE, "Authenticated mesh peering exchange protocol"},
|
||||
{MESH_PEERING_PROTO_VENDOR, "Vendor specific"},
|
||||
{0, NULL}
|
||||
};
|
||||
|
||||
static const value_string mesh_mgt_action_ps_codes[] ={
|
||||
{MESH_PS_PATH_REQUEST, "Path Request"},
|
||||
{MESH_PS_PATH_REPLY, "Path Reply"},
|
||||
|
@ -13312,25 +13338,20 @@ proto_register_ieee80211 (void)
|
|||
FT_UINT16, BASE_HEX, VALS (&mesh_mgt_action_pl_codes), 0,
|
||||
"Mesh Management Peer Link action code", HFILL }},
|
||||
|
||||
{&hf_ieee80211_mesh_mgt_pl_local_link_id,
|
||||
{"Local Link ID", "wlan.pl.local_id",
|
||||
{&hf_ieee80211_mesh_peering_proto,
|
||||
{"Mesh Peering Protocol ID", "wlan.peering.proto",
|
||||
FT_UINT16, BASE_HEX, VALS (&mesh_peering_proto_ids), 0,
|
||||
NULL, HFILL }},
|
||||
|
||||
{&hf_ieee80211_mesh_peering_local_link_id,
|
||||
{"Local Link ID", "wlan.peering.local_id",
|
||||
FT_UINT16, BASE_HEX, NULL, 0,
|
||||
"Mesh Management Local Link ID", HFILL }},
|
||||
"Mesh Peering Management Local Link ID", HFILL }},
|
||||
|
||||
{&hf_ieee80211_mesh_mgt_pl_subtype,
|
||||
{"Peer Link Subtype", "wlan.pl.subtype",
|
||||
FT_UINT16, BASE_HEX, VALS (&mesh_mgt_action_pl_codes), 0,
|
||||
"Mesh Management Peer Link Subtype", HFILL }},
|
||||
|
||||
{&hf_ieee80211_mesh_mgt_pl_reason_code,
|
||||
{"Reason Code", "wlan.pl.reason_code",
|
||||
FT_UINT16, BASE_HEX, VALS (&mesh_mgt_pl_reason_codes), 0,
|
||||
"Mesh Management Reason Code", HFILL }},
|
||||
|
||||
{&hf_ieee80211_mesh_mgt_pl_peer_link_id,
|
||||
{"Peer Link ID", "wlan.pl.peer_id",
|
||||
{&hf_ieee80211_mesh_peering_peer_link_id,
|
||||
{"Peer Link ID", "wlan.peering.peer_id",
|
||||
FT_UINT16, BASE_HEX, NULL, 0,
|
||||
"Mesh Management Peer Link ID", HFILL }},
|
||||
"Mesh Peering Management Peer Link ID", HFILL }},
|
||||
|
||||
{&hf_ieee80211_mesh_config_path_sel_protocol,
|
||||
{"Path Selection Protocol", "wlan.mesh.config.ps_protocol",
|
||||
|
|
Loading…
Reference in New Issue