diff options
author | Guy Harris <guy@alum.mit.edu> | 2002-10-10 21:08:45 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2002-10-10 21:08:45 +0000 |
commit | d6377805f50d4c2d5a7bc974879d750959cef15e (patch) | |
tree | b3b5504f5af64ecd2909a835d4a52d5fa789b5f0 /packet-ncp2222.inc | |
parent | 6ea504c2e2ec8e2b54c87acff64b9e6a9ac36e51 (diff) | |
download | wireshark-d6377805f50d4c2d5a7bc974879d750959cef15e.tar.gz |
When deciding whether to put "NDS" into the protocol field in the packet
list, check whether the protocol field is enabled, not whether the info
field is enabled. Update the protocol field before trying to look at
the packet, so it gets updated even for short packets.
Only parse service reply packets as NDS packets; don't parse positive
ack packets that way.
svn path=/trunk/; revision=6404
Diffstat (limited to 'packet-ncp2222.inc')
-rw-r--r-- | packet-ncp2222.inc | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/packet-ncp2222.inc b/packet-ncp2222.inc index fd082c3c46..8717891872 100644 --- a/packet-ncp2222.inc +++ b/packet-ncp2222.inc @@ -8,7 +8,7 @@ * Gilbert Ramirez <gram@alumni.rice.edu> * Modified to decode NDS packets by Greg Morris <gmorris@novell.com> * - * $Id: packet-ncp2222.inc,v 1.26 2002/10/10 03:58:47 guy Exp $ + * $Id: packet-ncp2222.inc,v 1.27 2002/10/10 21:08:45 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -4251,6 +4251,13 @@ dissect_ncp_reply(tvbuff_t *tvb, packet_info *pinfo, } } + if (check_col(pinfo->cinfo, COL_PROTOCOL)) { + if (ncp_rec && ncp_rec->func==0x68 && + (ncp_rec->subfunc==0x02 || ncp_rec->subfunc==0x01)) { + col_set_str(pinfo->cinfo, COL_PROTOCOL, "NDS"); + } + } + /* A completion code of 0 always means OK. Non-zero means failure, * but each non-zero value has a different meaning. And the same value * can have different meanings, depending on the ncp.func (and ncp.subfunc) @@ -4272,7 +4279,8 @@ dissect_ncp_reply(tvbuff_t *tvb, packet_info *pinfo, else { error_string = "Not OK"; } - if (ncp_rec && ncp_rec->func==0x68 && ncp_rec->subfunc==0x02) + if (type == NCP_SERVICE_REPLY && ncp_rec && ncp_rec->func==0x68 && + ncp_rec->subfunc==0x02) { nds_offset = 8; nds_reply_buffer = tvb_get_letohl(tvb, nds_offset); @@ -4303,25 +4311,17 @@ dissect_ncp_reply(tvbuff_t *tvb, packet_info *pinfo, } if (check_col(pinfo->cinfo, COL_INFO)) { - if (ncp_rec && ncp_rec->func==0x68 && ncp_rec->subfunc==0x02) { - col_set_str(pinfo->cinfo, COL_PROTOCOL, "NDS"); - } - if (ncp_rec && ncp_rec->func==0x68 && ncp_rec->subfunc==0x01) { - col_set_str(pinfo->cinfo, COL_PROTOCOL, "NDS"); - } col_add_fstr(pinfo->cinfo, COL_INFO, "%s %s", type == NCP_SERVICE_REPLY ? "R" : "ACK", nds_error_string ? nds_error_string : error_string); } if (ncp_tree) { - if (request_value) { proto_tree_add_uint(ncp_tree, hf_ncp_req_frame_num, tvb, 0, 0, request_value->req_frame_num); } - /* Put the func (and maybe subfunc) from the request packet * in the proto tree, but hidden. That way filters on ncp.func * or ncp.subfunc will find both the requests and the replies. @@ -4342,6 +4342,13 @@ dissect_ncp_reply(tvbuff_t *tvb, packet_info *pinfo, completion_code, completion_code, error_string); proto_tree_add_item(ncp_tree, hf_ncp_connection_status, tvb, 7, 1, FALSE); + + /* + * Unless this is a reply, that's all there is to parse. + */ + if (type != NCP_SERVICE_REPLY) + return; + /* Decode NDS Reply packets */ if (ncp_rec) { if (ncp_rec->func == 0x68 && ncp_rec->subfunc == 0x01) { @@ -5545,11 +5552,6 @@ dissect_ncp_reply(tvbuff_t *tvb, packet_info *pinfo, } } } - /* - * Unless this is a reply, that's all there is to parse. - */ - if (type != NCP_SERVICE_REPLY) - return; length = tvb_length(tvb); if (!ncp_rec && length > 8) { |