diff options
author | Michael Mann <mmann78@netscape.net> | 2015-12-13 16:54:16 -0500 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2015-12-14 12:17:49 +0000 |
commit | 0960ac4dfdbfba5a81c56a49cfc6201ecd8f48e3 (patch) | |
tree | 3d88cd321da2fade206b9ccddff22b70ecdfae28 /epan/dissectors/packet-atalk.c | |
parent | 9319357f5e27c10f2d29e78fcdf9d323c2af36b0 (diff) |
Create capture dissector tables.
They are modeled after dissection dissector tables, but for the moment, don't have/need the flexibility. They are intended to be much simpler/faster than full dissection.
The two most used/needed are "wtap_encap" and "ethertype", so they were the basis of starting to use and test capture dissector table API. Others may be added in the future.
The "capture dissector" function signature needed a bit of tweeking to handling "claiming" of a packet.
The current application of this is capture functions returning TRUE if they affected a "type" of packet count. Returning FALSE ends up considering the packet an "other" type.
Change-Id: I81d06a6ccb2c03665f087258a46b9d78d513d6cd
Reviewed-on: https://code.wireshark.org/review/12607
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors/packet-atalk.c')
-rw-r--r-- | epan/dissectors/packet-atalk.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/epan/dissectors/packet-atalk.c b/epan/dissectors/packet-atalk.c index efe84ca76c..3255b09d2d 100644 --- a/epan/dissectors/packet-atalk.c +++ b/epan/dissectors/packet-atalk.c @@ -1580,10 +1580,12 @@ static const value_string llap_type_vals[] = { }; static value_string_ext llap_type_vals_ext = VALUE_STRING_EXT_INIT(llap_type_vals); -static void -capture_llap(const guchar *pd _U_, int offset _U_, int len _U_, packet_counts *ld, const union wtap_pseudo_header *pseudo_header _U_) +static gboolean +capture_llap(const guchar *pd _U_, int offset _U_, int len _U_, packet_counts *ld _U_, const union wtap_pseudo_header *pseudo_header _U_) { - ld->other++; + /* XXX - get its own counter + ld->other++; */ + return FALSE; } static int @@ -2066,8 +2068,6 @@ proto_register_atalk(void) proto_zip = proto_register_protocol("Zone Information Protocol", "ZIP", "zip"); proto_register_field_array(proto_zip, hf_zip, array_length(hf_zip)); - register_capture_dissector(WTAP_ENCAP_LOCALTALK, capture_llap, proto_llap); - atp_module = prefs_register_protocol(proto_atp, NULL); prefs_register_bool_preference(atp_module, "desegment", "Reassemble ATP messages spanning multiple DDP packets", @@ -2125,6 +2125,7 @@ proto_reg_handoff_atalk(void) llap_handle = create_dissector_handle(dissect_llap, proto_llap); dissector_add_uint("wtap_encap", WTAP_ENCAP_LOCALTALK, llap_handle); + register_capture_dissector("wtap_encap", WTAP_ENCAP_LOCALTALK, capture_llap, proto_llap); register_init_routine( atp_init); register_cleanup_routine( atp_cleanup); |