Wireshark-dev: Re: [Wireshark-dev] Single TCP segment having multiple PDUs not	working
      
      
On 9/27/07, Zongjun <qizongjun@xxxxxxxxx> wrote:
Hey Didier,
You mean like 
        gint  offset_thisRound = 0; // of course, outside if(tree)
 block.
  if (tree) {
    
    myproto_item = proto_tree_add_item(tree, proto_myproto, tvb, 
offset, -1, FALSE);
         myproto_tree = 
proto_item_add_subtree(myproto_item, ett_myproto);
  
     offset_thisRound = 
dissect_MyProtoMessage_PDU(tvb,pinfo,myproto_tree);
       }
   offset += offset_thisRound;
I tried but still the same result.
Thanks,
Zongjun
Hi
On Thu, 27 Sep 2007 12:02:32 -0700, Zongjun wrote
> Hey 
guys,
> 
> According to my capture, I don't have situations 
where ONE PDU spans over multiple TCP segment. In stead, mine is the other 
round: Single segment having multiple PDUs. 
> 
> But using the 
folling code, what I observed is wireshark did put multiple PDU info inside the 
Detail Window after TCP, however these PDUs are always the same. But in the 
bottom hexdump window, they are definitely from different PDU. 
> 
> I noticed there has been a similar issue before Wireshark-dev: 
Re: [Wireshark-dev] Dissect multiple PDUs in one TCP Segment.
> But 
again, it is not for single segment having multiple 
PDU.
> 
> Anyone see the same issue? 
> 
> Thanks,
> 
Zongjun
> 
> static void
> dissect_myproto(tvbuff_t *tvb, 
packet_info *pinfo, proto_tree *tree)
> {
> gint offset = 0; // 
always points to the front
> gint available = 0; // how many bytes still 
available to 
consume
> 
> while((available = tvb_reported_length_remaining(tvb, offset)) 
> 0)
>     {
>       
printf("available = %d\n", available);
>     
              
              
              
              
              
              
              
              
              
              
             
>       /* make entry in the Protocol column on 
summary display */
>       if 
(check_col(pinfo->cinfo, COL_PROTOCOL))
>      
   col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME);
>   
              
              
              
              
              
              
              
              
              
              
              
 
>       /* create the myproto protocol tree 
*/
>       if (tree) {
>     
    myproto_item = proto_tree_add_item(tree, proto_myproto, tvb, 
offset, -1, FALSE);
>          
              
              
              
              
              
              
              
              
              
              
        
>         myproto_tree = 
proto_item_add_subtree(myproto_item, ett_myproto);
> 
>    
     offset += 
dissect_MyProtoMessage_PDU(tvb,pinfo,myproto_tree);
offset computation should always be outside  if (tree) block .
>     
              
              
              
              
              
              
              
              
              
              
             
>       }
>       
printf("offset = %d\n", offset);
>      
              
              
              
              
              
              
              
              
              
              
            
>       if(tvb_reported_length_remaining(tvb, 
offset) > 0)
>         {
>  
         printf("haha, we get a 
multiple PDU. \n");
>         
}
>    } //while:
> 
}
  
_______________________________________________
Wireshark-dev mailing list
Wireshark-dev@xxxxxxxxxxxxx
http://www.wireshark.org/mailman/listinfo/wireshark-dev
 
-- 
Thanks,
Zongjun
 -- 
Thanks,
Zongjun