Vikas Jain wrote:

> The protocol for which I am implementing my dissector has messages both 
> that are sent by the client to the server port 50505 and and by the 
> server (from port 50505) to the client. The messages are different in 
> both the directions and each of these messages has a message_id field as 
> the first field whose value is not globally unique. Therefore, it is 
> possible for me to get a Message_X (message_id = 1) going to port 50505 
> and get a Message_Y (message_id = 1) coming from port 50505. So, in 
> order to dissect/parse the messages correctly, I need the sense of 
> direction.

Then you look at pinfo->destport.

However, you can use the same dissect_foo() routine to dissect *both* 
directions; if the messages have completely different formats, do

static void dissect_foo(tvbuff_t* tvbuf, packet_info* pinfo, proto_tree* 
tree)
{
     if (pinfo->destport == 50505)
        dissect_foo_request(tvbuf, pinfo, tree);
     else
        dissect_foo_response(tvbuf, pinfo, tree);
}

with separate dissect_foo_request() and dissect_foo_response() routines 
in the same file.

> I added the following to the dissect_foo() function yesterday and I 
> think this is what Abhik is probably referring to as well:
> 
> void dissect_foo(tvbuff_t* tvbuf, packet_info* pinfo, proto_tree* tree)
> {
>     if ( (pinfo->ptype != PT_TCP) || (pinfo->destport != 50505) )
>        return;

That means that responses won't get dissected at all - and you don't 
need to check for PT_TCP, as long as you only register with "tcp.port" - 
you won't get called for a UDP or SCTP port
_______________________________________________
Wireshark-dev mailing list
[email protected]
http://www.wireshark.org/mailman/listinfo/wireshark-dev

Reply via email to