diff options
author | Michael Mann <mmann78@netscape.net> | 2017-08-13 10:57:55 -0700 |
---|---|---|
committer | Richard Sharpe <realrichardsharpe@gmail.com> | 2017-08-14 04:40:04 +0000 |
commit | 3c0ff67a9ca7e9c71785fa9d97cc1c1c13908774 (patch) | |
tree | 81f89d66267303b04bc11fc5a25c996f8d7d496f /epan/dissectors/packet-wifi-display.c | |
parent | 329cccfc7b3adabbcd961cc328609f23058e5a12 (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.c | 21 |
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); } /* |