diff options
author | Guy Harris <guy@alum.mit.edu> | 2003-09-15 18:49:06 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2003-09-15 18:49:06 +0000 |
commit | 00eb774c394449123f8faed955d87a09e669dba9 (patch) | |
tree | b5998a3bbf9d822d48d9d01c7cbbeb80d74d43b2 /packet-bssgp.c | |
parent | 8093f3ecffd76c98580b3bd629c60372c384c259 (diff) |
From Josef Korelus: call the data dissector on the contents of the LLC
PDU information element.
svn path=/trunk/; revision=8471
Diffstat (limited to 'packet-bssgp.c')
-rw-r--r-- | packet-bssgp.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/packet-bssgp.c b/packet-bssgp.c index eb25d59cc0..8cf7f1cfe4 100644 --- a/packet-bssgp.c +++ b/packet-bssgp.c @@ -2,7 +2,7 @@ * Routines for BSSGP (BSS GPRS Protocol ETSI GSM 08.18 version 6.7.1 TS 101 343 ) dissection * Copyright 2000, Josef Korelus <jkor@quick.cz> * - * $Id: packet-bssgp.c,v 1.3 2003/09/09 09:14:55 guy Exp $ + * $Id: packet-bssgp.c,v 1.4 2003/09/15 18:49:06 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -317,8 +317,8 @@ static int hf_bssgp_noaff = -1; /*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,6 +350,7 @@ typedef struct { 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 ); @@ -1091,6 +1092,7 @@ static int dcd_bssgp_llc_pdu(tvbuff_t *tvb, int offset, dec_fu_param_stru_t *dpr proto_tree_add_text(b_llc_tree,tvb,offset+1,k-1,"Length:%u",llen); } +dprm_p->k=offset+k; return llen+k; }; @@ -1428,6 +1430,7 @@ dissect_bssgp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) 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; @@ -1515,6 +1518,12 @@ guint16 offset=1; } 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; @@ -1667,5 +1676,8 @@ proto_reg_handoff_bssgp(void) /* dissector_add("fr.ietf", 0x0, bssgp_handle); */ data_handle = find_dissector("data"); - llcgprs_handle = find_dissector ("llcgprs"); + +/* + llcgprs_handle = find_dissector ("llcgprs"); +*/ } |