aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-wifi-p2p.c
diff options
context:
space:
mode:
authorJaap Keuter <jaap.keuter@xs4all.nl>2011-01-12 07:46:46 +0000
committerJaap Keuter <jaap.keuter@xs4all.nl>2011-01-12 07:46:46 +0000
commit95cc16bbbc6c5bdd80fbd244e7c8e657b20ddc49 (patch)
treedd5669c050110fb078999fc259c6a86c7e56dd8a /epan/dissectors/packet-wifi-p2p.c
parent889e3dbe54623e810c82f1a7eeaba0df315573bf (diff)
From Eliad:
Add dissector for P2P Group BSSID attribute (of p2p). svn path=/trunk/; revision=35504
Diffstat (limited to 'epan/dissectors/packet-wifi-p2p.c')
-rw-r--r--epan/dissectors/packet-wifi-p2p.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/epan/dissectors/packet-wifi-p2p.c b/epan/dissectors/packet-wifi-p2p.c
index 29510b9cd4..939adb9657 100644
--- a/epan/dissectors/packet-wifi-p2p.c
+++ b/epan/dissectors/packet-wifi-p2p.c
@@ -301,6 +301,7 @@ static int hf_p2p_attr_extended_listen_timing_period = -1;
static int hf_p2p_attr_extended_listen_timing_interval = -1;
static int hf_p2p_attr_p2p_group_id_dev_addr = -1;
static int hf_p2p_attr_p2p_group_id_ssid = -1;
+static int hf_p2p_attr_p2p_group_bssid = -1;
static int hf_p2p_attr_noa_index = -1;
static int hf_p2p_attr_noa_params = -1;
@@ -658,6 +659,27 @@ static void dissect_wifi_p2p_group_id(proto_item *tlv_root,
s_offset, offset + 3 + slen - s_offset, FALSE);
}
+static void dissect_wifi_p2p_group_bssid(packet_info *pinfo,
+ proto_item *tlv_root,
+ proto_item *tlv_item, tvbuff_t *tvb,
+ int offset, guint16 slen)
+{
+ int s_offset;
+ guint8 addr[6];
+
+ if (slen != 6) {
+ expert_add_info_format(pinfo, tlv_item, PI_MALFORMED, PI_ERROR,
+ "Invalid ethernet address");
+ return;
+ }
+
+ s_offset = offset + 3;
+ proto_tree_add_item(tlv_root, hf_p2p_attr_p2p_group_bssid, tvb,
+ s_offset, 6, FALSE);
+ tvb_memcpy(tvb, addr, offset + 3, 6);
+ proto_item_append_text(tlv_item, ": %s", ether_to_str(addr));
+}
+
static void dissect_notice_of_absence(packet_info *pinfo, proto_item *tlv_root,
proto_item *tlv_item,
tvbuff_t *tvb, int offset, guint16 slen)
@@ -920,6 +942,9 @@ void dissect_wifi_p2p_ie(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb,
case P2P_ATTR_P2P_GROUP_ID:
dissect_wifi_p2p_group_id(tlv_root, tlv_item, tvb, offset, slen);
break;
+ case P2P_ATTR_P2P_GROUP_BSSID:
+ dissect_wifi_p2p_group_bssid(pinfo, tlv_root, tlv_item, tvb, offset, slen);
+ break;
case P2P_ATTR_NOTICE_OF_ABSENCE:
dissect_notice_of_absence(pinfo, tlv_root, tlv_item, tvb, offset, slen);
break;
@@ -1258,6 +1283,9 @@ proto_register_p2p(void)
{ &hf_p2p_attr_p2p_group_id_ssid,
{ "SSID", "wifi_p2p.p2p_group_id.ssid",
FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
+ { &hf_p2p_attr_p2p_group_bssid,
+ { "BSSID", "wifi_p2p.p2p_group_bssid",
+ FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_p2p_attr_noa_index,
{ "Index", "wifi_p2p.noa.index",