Hal Lander wrote:
> There is a function
> /* Find a dissector table by table name. */
> extern dissector_table_t find_dissector_table(const char *name);
>
> So after I have added my heuristic dissector I should be able to call
> tbl=find_dissector_table("tcp");
>
> and see my dissector?
No, because that's the table for dissectors registered with particular
TCP port numbers. The call to get the table for heuristic dissectors is
tbl = find_heur_dissector_list("tcp");
> Does anybody have a code snippit to show how to loop the table and see the
> dissectors?
No, because there is currently no way to do that.
> Where is the table structure defined?
Internally to epan/packet.c; it's opaque to dissectors. That is by
design and intent.
Dissectors should not need to loop the table and see the dissectors;
dissectors should be written in such a way as to be completely
independent of the contents of a heuristic dissector table in which
they're registered.
> Most importantantly what determines the order in which the heuristic
> dissectors are called,
The order in which the dissectors are added to that table.
> and how can I make sure mine is called first?
We do not offer any mechanism to control the order in which dissectors
are added to the table; this is by design and intent. If another
dissector happens to be before your dissector in the table, and happens
to claim a packet that's a packet for your protocol, that means that
it's claiming a packet that's not a packet for its protocol, which means
its heuristics are too weak and it needs to be fixed.
_______________________________________________
Wireshark-dev mailing list
[email protected]
http://www.wireshark.org/mailman/listinfo/wireshark-dev