diff options
author | guy <guy@f5534014-38df-0310-8fa8-9805f1628bb7> | 2003-01-11 10:03:12 +0000 |
---|---|---|
committer | guy <guy@f5534014-38df-0310-8fa8-9805f1628bb7> | 2003-01-11 10:03:12 +0000 |
commit | e78e73f9930ba42805c769118e1b9e4e12ed109d (patch) | |
tree | c2a38311497945c6e354a0f8627609885f6e342d /packet-x25.c | |
parent | e7880bdacb5440d3ecf03e17d454f0278fe840b3 (diff) |
Only do stuff to circuits on the first pass.
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@6914 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'packet-x25.c')
-rw-r--r-- | packet-x25.c | 33 |
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; |