aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-wifi-display.c
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2017-08-13 10:57:55 -0700
committerRichard Sharpe <realrichardsharpe@gmail.com>2017-08-14 04:40:04 +0000
commit3c0ff67a9ca7e9c71785fa9d97cc1c1c13908774 (patch)
tree81f89d66267303b04bc11fc5a25c996f8d7d496f /epan/dissectors/packet-wifi-display.c
parent329cccfc7b3adabbcd961cc328609f23058e5a12 (diff)
ieee80211: Make a few dissector tables for vendor specific functionality
This allows vendors to more easily expand functionality. Change-Id: Iaa6a0626f3ab3c80a3ea90ca09c90284705d0221 Reviewed-on: https://code.wireshark.org/review/23066 Reviewed-by: Richard Sharpe <realrichardsharpe@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-wifi-display.c')
-rw-r--r--epan/dissectors/packet-wifi-display.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/epan/dissectors/packet-wifi-display.c b/epan/dissectors/packet-wifi-display.c
index 6ea7eebb27..6e1a89632d 100644
--- a/epan/dissectors/packet-wifi-display.c
+++ b/epan/dissectors/packet-wifi-display.c
@@ -28,6 +28,7 @@
#include "packet-ieee80211.h"
void proto_register_wifi_display(void);
+void proto_reg_handoff_wifi_display(void);
static int proto_wifi_display = -1;
@@ -96,6 +97,8 @@ static expert_field ei_wfd_subelem_len_invalid = EI_INIT;
static expert_field ei_wfd_subelem_session_descr_invalid = EI_INIT;
static expert_field ei_wfd_subelem_id = EI_INIT;
+dissector_handle_t wifi_display_ie_handle;
+
enum wifi_display_subelem {
WFD_SUBELEM_DEVICE_INFO = 0,
WFD_SUBELEM_ASSOCIATED_BSSID = 1,
@@ -357,10 +360,11 @@ dissect_wfd_subelem_alt_mac_addr(packet_info *pinfo, proto_tree *tree,
tvb, offset, 6, ENC_NA);
}
-void dissect_wifi_display_ie(packet_info *pinfo, proto_tree *tree,
- tvbuff_t *tvb, int offset, gint size)
+static int
+dissect_wifi_display_ie(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- int end = offset + size;
+ int end = tvb_reported_length(tvb);
+ int offset = 0;
guint8 id;
guint16 len;
proto_tree *wfd_tree;
@@ -415,6 +419,8 @@ void dissect_wifi_display_ie(packet_info *pinfo, proto_tree *tree,
offset += len;
}
+
+ return tvb_captured_length(tvb);
}
void
@@ -630,6 +636,15 @@ proto_register_wifi_display(void)
expert_wifi_display = expert_register_protocol(proto_wifi_display);
expert_register_field_array(expert_wifi_display, ei, array_length(ei));
+
+ wifi_display_ie_handle = register_dissector("wifi_display_ie", dissect_wifi_display_ie, proto_wifi_display);
+
+}
+
+void
+proto_reg_handoff_wifi_display(void)
+{
+ dissector_add_uint("wlan.ie.wifi_alliance.subtype", WFA_SUBTYPE_WIFI_DISPLAY, wifi_display_ie_handle);
}
/*