summaryrefslogtreecommitdiff
path: root/epan
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2005-08-19 21:19:49 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2005-08-19 21:19:49 +0000
commit23ef5de217ea5952f2407105c6910552907200a5 (patch)
tree789333e2096628462899969794eb416e5885cee9 /epan
parente93b50c820753db2420194db8175fa2e19fa9c3c (diff)
downloadwireshark-23ef5de217ea5952f2407105c6910552907200a5.tar.gz
from Jeff Snyder
H245 updates make multiple pdus/frame work update to have nu limit on the max number of tappable pdus per frame svn path=/trunk/; revision=15441
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-h245.c39
-rw-r--r--epan/dissectors/packet-h245.h2
2 files changed, 15 insertions, 26 deletions
diff --git a/epan/dissectors/packet-h245.c b/epan/dissectors/packet-h245.c
index 9a5772a0a5..8b13651e89 100644
--- a/epan/dissectors/packet-h245.c
+++ b/epan/dissectors/packet-h245.c
@@ -1,6 +1,6 @@
/* Do not modify this file. */
/* It is created automatically by the ASN.1 to Ethereal dissector compiler */
-/* .\packet-h245.c */
+/* ./packet-h245.c */
/* ../../tools/asn2eth.py -X -e -p h245 -c h245.cnf -s packet-h245-template h245.asn */
/* Input file: packet-h245-template.c */
@@ -56,6 +56,7 @@
#include "packet-tpkt.h"
#include "packet-per.h"
#include <epan/t35.h>
+#include <epan/emem.h>
#include "packet-rtp.h"
#include "packet-rtcp.h"
#include "packet-ber.h"
@@ -79,8 +80,6 @@ static int hf_h245Manufacturer = -1;
static int h245_tap = -1;
static int ett_h245 = -1;
static int h245dg_tap = -1;
-static h245_packet_info pi_arr[5]; /* We assuming a maximum of 5 H245 messaages per packet */
-static int pi_current=0;
h245_packet_info *h245_pi=NULL;
static gboolean h245_reassembly = TRUE;
@@ -16872,18 +16871,11 @@ dissect_h245_Moderfc2733(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, prot
static void
dissect_h245(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
{
- pi_current++;
- if(pi_current==5){
- pi_current=0;
- }
- h245_pi=&pi_arr[pi_current];
-
- reset_h245_packet_info(h245_pi);
- h245_pi->msg_type = H245_OTHER;
-
+ /*
+ * MultimediaSystemControlMessage_handle is the handle for
+ * dissect_h245_h245, so we don't want to do any h245_pi or tap stuff here.
+ */
dissect_tpkt_encap(tvb, pinfo, parent_tree, h245_reassembly, MultimediaSystemControlMessage_handle);
-
- tap_queue_packet(h245_tap, pinfo, h245_pi);
}
static void
@@ -16893,23 +16885,20 @@ dissect_h245_h245(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
proto_tree *tr;
guint32 offset=0;
- pi_current++;
- if(pi_current==5){
- pi_current=0;
- }
- h245_pi=&pi_arr[pi_current];
-
- reset_h245_packet_info(h245_pi);
- h245_pi->msg_type = H245_OTHER;
-
if (check_col(pinfo->cinfo, COL_PROTOCOL)){
col_set_str(pinfo->cinfo, COL_PROTOCOL, "H.245");
}
it=proto_tree_add_protocol_format(parent_tree, proto_h245, tvb, 0, tvb_length(tvb), "H.245");
tr=proto_item_add_subtree(it, ett_h245);
- dissect_h245_MultimediaSystemControlMessage(tvb, offset, pinfo ,tr, hf_h245_pdu_type);
- tap_queue_packet(h245dg_tap, pinfo, h245_pi);
+
+ /* assume that whilst there is more tvb data, there are more h245 commands */
+ while ( tvb_length_remaining( tvb, offset>>3 )>0 ){
+ h245_pi=ep_alloc(sizeof(h245_packet_info));
+ offset = dissect_h245_MultimediaSystemControlMessage(tvb, offset, pinfo ,tr, hf_h245_pdu_type);
+ tap_queue_packet(h245dg_tap, pinfo, h245_pi);
+ offset = (offset+0x07) & 0xfffffff8;
+ }
}
int
diff --git a/epan/dissectors/packet-h245.h b/epan/dissectors/packet-h245.h
index 2d9094c11c..2c0d3633a2 100644
--- a/epan/dissectors/packet-h245.h
+++ b/epan/dissectors/packet-h245.h
@@ -1,6 +1,6 @@
/* Do not modify this file. */
/* It is created automatically by the ASN.1 to Ethereal dissector compiler */
-/* .\packet-h245.h */
+/* ./packet-h245.h */
/* ../../tools/asn2eth.py -X -e -p h245 -c h245.cnf -s packet-h245-template h245.asn */
/* Input file: packet-h245-template.h */