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"); }