On Dec 8, 2009, at 2:33 AM, Rach, Darshan wrote:

> Two queries.
> 1. Is it possible to display the actual payload in place of  
> "Fragment data"? (please see the mail chain below for reference)

What do you mean by "display the actual payload"?

> 2. If the packets are fragmented, the last fragment is not shown and  
> instead, shows "Message Reassembled". How is it possible to display  
> even the last fragment as "Fragment n" and then, next, display the  
> reassembled packet.

Try something such as this:

                                if(((block_number == 0) && (last_packet_flag == 
0)) ||
                                   (block_number > 0))
                                {
                                        /*darshan*/
                                        pkt->fragmented = TRUE;

                                        /* Add this fragment to the protocol 
tree. */
                                        proto_tree_add_text(oqtp_tree, tvb, 
packet_field_offset, -1,  
"Fragment data");

                                        frag_msg = fragment_add_seq_check(tvb, 
packet_field_offset, pkt,
                                                                                
                          msgid, /* ID for fragments belonging together */
                                                                                
                          msg_fragment_table, /* list of message fragments */
                                                                                
                          msg_reassembled_table, /* list of reassembled 
messages */
                                                                                
                          block_number, /* fragment sequence number */
                                                                                
                         tvb_length_remaining(tvb, packet_field_offset), /*
fragment length - to the end */
                                                                                
                          !last_packet_flag); /* More fragments? */

                                        new_tvb = process_reassembled_data(tvb, 
packet_field_offset, pkt,
                                                                                
                           "Reassembled OQTP Message",
                                                                                
                           frag_msg,
                                                                                
                           &msg_frag_items,
                                                                                
                           NULL,
                                                                                
                           oqtp_tree);

                                        /* Reassembled */
                                        if (frag_msg)
                                        {
                                                col_append_str(pkt->cinfo, 
COL_INFO,
                                                                           
"(Reassembled OQTP Response)");
                                        }
                                        else
                                        {
                                                /* Not last packet of 
reassembled short message */
                                                col_append_fstr(pkt->cinfo, 
COL_INFO,
                                                                                
"(OQTP fragment %u)", block_number);
                                        }

                                        if (new_tvb) /* take it all */
                                        {
                                                next_tvb = new_tvb;
                                        }
                                        else
                                        {
                                                /* We cannot dissect anything 
yet, as we don't have a
reassembled packet */
                                                next_tvb = NULL;
                                        }
                                }
                                else
                                {
                                        next_tvb = tvb_new_subset(tvb, 
packet_field_offset, -1, -1);
                                }

                                /*restoring fragmented state*/
                                pkt->fragmented = save_fragmented;

                                if (next_tvb != NULL)
                                {
                                        /* Not a fragment, or fragments were 
reassembled */
                                        packet_field_offset = 0;

                                        /*Request Satisfied*/
                                        request_satisfied = tvb_get_guint8(tvb, 
packet_field_offset);
                                        proto_tree_add_uint(oqtp_tree, 
hf_request_satisfied, tvb,
packet_field_offset, 1, ((request_satisfied & 0x80) >> 7));

                                        /*Reserved_for_future_use*/
                                        reserved_for_future_use = 
((tvb_get_guint8(tvb,
packet_field_offset)& 0x7E) >> 1);
                                        proto_tree_add_uint(oqtp_tree, 
hf_reserved_for_future_use, tvb,
packet_field_offset, 1, reserved_for_future_use );

                                        /*No Extended pd syntax*/
                                        no_extended_pd_syntax = 
(tvb_get_guint8(tvb, packet_field_offset)
& 0x1);
                                        proto_tree_add_uint(oqtp_tree, 
hf_no_extended_pd_syntax, tvb,
packet_field_offset, 1, no_extended_pd_syntax );
                                        packet_field_offset += 1;

                                        /*Number of classifications*/
                                        proto_tree_add_item(oqtp_tree, 
hf_num_classifications, tvb,
packet_field_offset, 1, FALSE);
                                        num_classifications = 
tvb_get_guint8(tvb, packet_field_offset);
                                        packet_field_offset += 1;

                                        for(loop_index = 0 ; loop_index < 
num_classifications ; + 
+loop_index)
                                        {
                                                ...
                                        }

                                                ...
                                }

                                break;

___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <[email protected]>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:[email protected]?subject=unsubscribe

Reply via email to