I am sending patch to packet-bssgp.c. 
This patch adds call the data dissector on 
remaining portion of  packet. Due to it adds 
variable k into i/o structure for message 
decoding functions. This variable contains 
starting offset for creating next_tvb. The call 
is made only if ie:LLC-PDU is present. 
   Regards 
                      Josef

--- /usr/local/src/ethereal-2003-09-15/packet-bssgp.c   2003-09-15 16:32:12.000000000 
+0200
+++ ./packet-bssgp.c    2003-09-15 16:26:51.000000000 +0200
@@ -317,8 +317,8 @@
 /*static int hf_bssgp_FIELDABBREV = -1;*/
 
 static dissector_handle_t data_handle;
-/*static dissector_handle_t llcgprs_handle;
-*/
+static dissector_handle_t llcgprs_handle;
+
 /* Initialize the subtree pointers */
 static gint ett_bssgp = -1;
 static gint ett_bssgp_tlli = -1;
@@ -350,7 +350,6 @@
        int type;
        packet_info *pinfo;
        proto_tree *tree;
-       int k;
 } dec_fu_param_stru_t; 
 static int dcd_bssgp_algn      ( tvbuff_t *tvb, int offset, dec_fu_param_stru_t *dprm 
);
 static int dcd_bssgp_bmaxms    ( tvbuff_t *tvb, int offset, dec_fu_param_stru_t *dprm 
);
@@ -1092,7 +1091,6 @@
                proto_tree_add_text(b_llc_tree,tvb,offset+1,k-1,"Length:%u",llen);
        }
        
-dprm_p->k=offset+k;    
 return llen+k; 
 };
 
@@ -1430,7 +1428,6 @@
 static dec_fu_param_stru_t decp , *decodeparam=&decp;
 guint8 pdutype, i, j , iele , stay;
 guint16 offset=1;
-tvbuff_t *next_tvb;
 
 /* Set up structures needed to add the protocol subtree and manage it */
         proto_item *ti=NULL;
@@ -1518,12 +1515,6 @@
                                  }
                                  if (bssgp_pdu[i].infe[j].presence){
                                      offset=offset+( 
*bssgp_pdu[i].infe[j].decode)(tvb, offset, decodeparam );     
-                                     if (iele == 0x0e ){
-                                             next_tvb = tvb_new_subset(tvb, 
decodeparam->k, -1, -1);
-/*                                           call_dissector(llcgprs_handle, next_tvb, 
pinfo, tree);
-*/
-                                             call_dissector(data_handle, next_tvb, 
pinfo, tree);
-                                     }
                                      j++;
                                  }
                                break;  
@@ -1676,8 +1667,5 @@
 /*        dissector_add("fr.ietf", 0x0, bssgp_handle);
 */       
         data_handle = find_dissector("data");
-
-/*
-         llcgprs_handle = find_dissector ("llcgprs");
-*/       
+       llcgprs_handle = find_dissector ("llcgprs");
 }

Reply via email to