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