aboutsummaryrefslogtreecommitdiffstats
path: root/packet-x25.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2003-01-11 10:03:12 +0000
committerGuy Harris <guy@alum.mit.edu>2003-01-11 10:03:12 +0000
commitd6f3718f0797184b50f083343c6ce53b62c523a4 (patch)
treec2a38311497945c6e354a0f8627609885f6e342d /packet-x25.c
parent1c2361fd4845bc6f574ae084f30e5138448a01eb (diff)
Only do stuff to circuits on the first pass.
svn path=/trunk/; revision=6914
Diffstat (limited to 'packet-x25.c')
-rw-r--r--packet-x25.c33
1 files changed, 20 insertions, 13 deletions
diff --git a/packet-x25.c b/packet-x25.c
index 9b43fe16e4..234f1e7a06 100644
--- a/packet-x25.c
+++ b/packet-x25.c
@@ -2,7 +2,7 @@
* Routines for X.25 packet disassembly
* Olivier Abad <oabad@noos.fr>
*
- * $Id: packet-x25.c,v 1.74 2003/01/08 08:43:09 guy Exp $
+ * $Id: packet-x25.c,v 1.75 2003/01/11 10:03:12 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -1693,14 +1693,16 @@ dissect_x25_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
case PRT_ID_ISO_8073:
/* ISO 8073 COTP */
- x25_hash_add_proto_start(vc, pinfo->fd->num, ositp_handle);
+ if (!pinfo->fd->flags.visited)
+ x25_hash_add_proto_start(vc, pinfo->fd->num, ositp_handle);
/* XXX - dissect the rest of the user data as COTP?
That needs support for NCM TPDUs, etc. */
break;
case PRT_ID_ISO_8602:
/* ISO 8602 CLTP */
- x25_hash_add_proto_start(vc, pinfo->fd->num, ositp_handle);
+ if (!pinfo->fd->flags.visited)
+ x25_hash_add_proto_start(vc, pinfo->fd->num, ositp_handle);
break;
}
} else if (is_x_264 == 0) {
@@ -1715,13 +1717,15 @@ dissect_x25_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
}
localoffset++;
- /*
- * Is there a dissector handle for this SPI?
- * If so, assign it to this virtual circuit.
- */
- dissect = dissector_get_port_handle(x25_subdissector_table, spi);
- if (dissect != NULL)
- x25_hash_add_proto_start(vc, pinfo->fd->num, dissect);
+ if (!pinfo->fd->flags.visited) {
+ /*
+ * Is there a dissector handle for this SPI?
+ * If so, assign it to this virtual circuit.
+ */
+ dissect = dissector_get_port_handle(x25_subdissector_table, spi);
+ if (dissect != NULL)
+ x25_hash_add_proto_start(vc, pinfo->fd->num, dissect);
+ }
}
if (localoffset < tvb_length(tvb)) {
if (userdata_tree) {
@@ -2149,7 +2153,8 @@ dissect_x25_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
/* Did the user suggest QLLC/SNA? */
if (payload_is_qllc_sna) {
/* Yes - dissect it as QLLC/SNA. */
- x25_hash_add_proto_start(vc, pinfo->fd->num, qllc_handle);
+ if (!pinfo->fd->flags.visited)
+ x25_hash_add_proto_start(vc, pinfo->fd->num, qllc_handle);
call_dissector(qllc_handle, next_tvb, pinfo, tree);
pinfo->private_data = saved_private_data;
return;
@@ -2161,13 +2166,15 @@ dissect_x25_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
case 0x45:
/* Looks like an IP header */
- x25_hash_add_proto_start(vc, pinfo->fd->num, ip_handle);
+ if (!pinfo->fd->flags.visited)
+ x25_hash_add_proto_start(vc, pinfo->fd->num, ip_handle);
call_dissector(ip_handle, next_tvb, pinfo, tree);
pinfo->private_data = saved_private_data;
return;
case NLPID_ISO8473_CLNP:
- x25_hash_add_proto_start(vc, pinfo->fd->num, clnp_handle);
+ if (!pinfo->fd->flags.visited)
+ x25_hash_add_proto_start(vc, pinfo->fd->num, clnp_handle);
call_dissector(clnp_handle, next_tvb, pinfo, tree);
pinfo->private_data = saved_private_data;
return;