Wireshark-dev: Re: [Wireshark-dev] Routines for registering dissectors with a"portnumber", and
From: "news.gmane.com" <[email protected]>
Date: Mon, 20 Dec 2010 18:45:38 +0100
"Guy Harris" <[email protected]> wrote in message 
news:[email protected]...
>
> On Dec 19, 2010, at 10:37 PM, news.gmane.com wrote:
>
>> Well, that meens, any dissector DLL that uses this function stops working
>> with the next revision of libwireshark.dll
>
> We have never guaranteed that a dissector built for Wireshark major
> version 1.x will work with the development version 1.{x+1} or the
> next major release 1.{x+2}.  We only guarantee that a dissector built
> for 1.x will work with 1.x.y, i.e. that stability will be preserved for
> all minor releases corresponding to a given major release.

So this change to trunk will not affect 1.4.x, will it? That's good.

BTW: When you only rename a function as you announce in this list it can be 
still compatible with older DLLs. You need to create an alias in the DEF 
file:

;old.def:
EXPORTS
    foo
    bar

;new.def
EXPORTS
    foo_renamed
    foo=foo_renamed
    bar_renamed
    bar=bar_renamed

This creates four entries in the export table while the implementaion has 
only the new (renamed) functions.


>> I hope the new function names become stable, so that someday a Wireshark 
>> API
>> can be defined.
>
> It takes more than just stable function names for a stable API.
>  It requires that:
>
> for any function, its signature not change (no added or removed 
> parameters);
>
> no function be removed;
>
> no incompatible change to any arguments for a function be made.

This is correct but incomplete. Please add:
- no incompatible change to any structure that is reference by any argument
- no change in the expected behavior must not change

The first should be illustrated. The pinfo member fd points to a structure 
that has been changed between 1.2.x and 1.4.x. You this structure to 
retrieve the packet number, used to identify conversations.


--
Andy