[EMAIL PROTECTED] wrote:
> Wow. thanks for that great explanation.
> It makes me wonder if I'm not missing any API documentation somewhere?
> 
> And if I'm not... stuff like this should be there.
> It would certainly save you a lot of time answering
> what are probably basic developer philosophy issues.
> 
> BTW. I have read the README.developer, the "developer's guide",
> the 'coding for Ethereal' chapter from the Syngress book, and
> the Wiki, but nowhere did I see info as clear as your response here.

Some day, we should probably add a lot more stuff to the developer 
documentation - and perhaps figure out what belongs in the developer's 
guide and what belongs in README.* files.  I'll look at adding stuff to 
README.developer, at least, when I have some time.

>> The distinction between the two cases you give is not a distinction
>> that the Wiretap code makes, nor is it a distinction that we want to
>> make in the documentation.
> 
> Then what _is_ the significance of the distinction?

None, really, from the standpoint of the Wireshark core.  The underlying 
mechanisms for dissector tables are intended to let you choose a 
dissector based on a numeric or string value, regardless of where that 
numeric or string value came from.

> and/or why are there two routines?

To which two routines are you referring?

> Is there another API called disect_data(), or do you mean
> calling call_dissector(my_handle, ...), or
> something completely different?

There is, but you should call it through a handle (handles, among other 
things, allow dissectors with different APIs - "old-style" and 
"new-style" dissectors - to be called without the caller knowing or 
caring what API the dissector uses; they also allow plugins to get hold 
of dissectors defined in other plugins, and to get hold of dissectors 
defined in libwireshark on Windows without libwireshark having to export 
them in libwireshark.def).

You'd declare

        static dissector_handle_t data_handle;

and, if dissector_try_port() fails, do

        call_dissector(data_handle, tvb, pinfo, tree);

and, in your register-handoff routine, do

        data_handle = find_dissector("data");
_______________________________________________
Wireshark-dev mailing list
Wireshark-dev@wireshark.org
http://www.wireshark.org/mailman/listinfo/wireshark-dev

Reply via email to