Hi

Sebastien Tandel wrote:
> Couldn't we pass one of the fields in the private data?

Firstly, within the per-field hook/callback, the knowledge about what
the current field is ,will be provided by the hfindex arg, assuming the
hook/callback gets called by one of the proto_tree_add functions and
that is according to my understanding of Guy's reply below.

Secondly, I don't think the hook/callback can be passed any data other
than what is passed as arguments to proto_tree_add_* because a private
data will require initialisation at the dissector level(..before calling
proto_tree_add_*..) and changing dissectors is not considered a good idea.

Regarding the NFS anonymizer, I am thinking of maintaining a global
structure that stores the state about the current Op being dissected. As
and when my per-field hooks are called, I'll keep adding the info from
the current field into this structure.Any other suggestions?

Regards
Shehjar




> 
> 
> Regards, Sebastien Tandel
> 
> 
> 
>> Guy Harris wrote:
>> 
>>> On Feb 21, 2007, at 6:53 PM, Shehjar Tikoo wrote:
>>> 
>>>> It brings in the dissector hooks feature discussed here a few 
>>>> weeks back.  Its a small patch that includes basic infra for 
>>>> hooks and a sample hook for the NFS dissector.
>>>> 
>>>> Right now, the hook gets called(..using 
>>>> call_dissector_hooks()..) only for NFSv3 setattr call/reply but
>>>>  the intention is to call them in every message dissector 
>>>> function.
>>>> 
>>> If so, perhaps the hooks should be attached to fields, rather 
>>> than inserted into the code of particular dissectors.  Having to
>>>  change *every* dissector would be a lot of work.
>>> 
>>> 
>> One drawback of a per-field hook could be that hooks which need a 
>> global view or state of the full message might not get access to 
>> the needed fields. For example, when two or more fields inside a 
>> single message need to be correlated in some way, though, I can get
>>  around this for the NFS anonymizer hook.
>> 
>> Regards Shehjar
>> 
>> 
>>> My inclination would be to have a list of fields with callback 
>>> hooks - most of the time, the list would be empty, so this would,
>>>  I think, minimize the added overhead in the usual case - with an
>>>  entry in the list having the field's hf_ value, the callback 
>>> routine, and the private data pointer to be passed to the 
>>> callback.  Whenever a field is added to the protocol tree, the 
>>> list would be checked, and the hook called if the field in 
>>> question is being added.
>>> 
>> 
>>> There would be routines to register and unregister hooks.

_______________________________________________
Wireshark-dev mailing list
Wireshark-dev@wireshark.org
http://www.wireshark.org/mailman/listinfo/wireshark-dev

Reply via email to