diff options
author | Guy Harris <guy@alum.mit.edu> | 1999-08-18 00:57:54 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 1999-08-18 00:57:54 +0000 |
commit | ac4f87218d7bf56558225bc0f78a5a0af25687e6 (patch) | |
tree | e9e831bb1b3b77de445b70cbeb126f919f01bce2 /packet-nbns.c | |
parent | d4331d432915144e57271b70a9bf6b867087c0a0 (diff) | |
download | wireshark-ac4f87218d7bf56558225bc0f78a5a0af25687e6.tar.gz wireshark-ac4f87218d7bf56558225bc0f78a5a0af25687e6.tar.bz2 wireshark-ac4f87218d7bf56558225bc0f78a5a0af25687e6.zip |
Declare the "packet_info" structure "pi" in "packet.h", rather than in a
bunch of source files.
Replace the "payload" field of a "packet_info" structure with "len" and
"captured_len" fields, which contain the total packet length and total
captured packet length (including all headers) at the current protocol
layer (i.e., if a given layer has a length field, and that length field
says its shorter than the length we got from the capture, reduce the
"pi.len" and "pi.captured_len" values appropriately). Those fields can
be used in the future if we add checks to make sure a field we're
extracting from a packet doesn't go past the end of the packet, or past
the captured part of the packet.
Get rid of the additional payload argument to some dissection functions;
use "pi.captured_len - offset" instead.
Have the END_OF_FRAME macro use "pi.captured_len" rather than
"fd->cap_len", so that "dissect the rest of the frame" becomes "dissect
the rest of the packet", and doesn't dissect end-of-frame padding such
as padding added to make an Ethernet frame 60 or more octets long. (We
might want to rename it END_OF_PACKET; if we ever want to label the
end-of-frame padding for the benefit of people curious what that extra
gunk is, we could have a separate END_OF_FRAME macro that uses
"fd->cap_len".)
svn path=/trunk/; revision=506
Diffstat (limited to 'packet-nbns.c')
-rw-r--r-- | packet-nbns.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/packet-nbns.c b/packet-nbns.c index cbc3514c82..bf074ef19f 100644 --- a/packet-nbns.c +++ b/packet-nbns.c @@ -4,7 +4,7 @@ * Gilbert Ramirez <gram@verdict.uthscsa.edu> * Much stuff added by Guy Harris <guy@netapp.com> * - * $Id: packet-nbns.c,v 1.23 1999/07/29 05:46:58 gram Exp $ + * $Id: packet-nbns.c,v 1.24 1999/08/18 00:57:51 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@zing.org> @@ -977,14 +977,14 @@ struct nbdgm_header { }; void -dissect_nbdgm(const u_char *pd, int offset, frame_data *fd, proto_tree *tree, - int max_data) +dissect_nbdgm(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) { proto_tree *nbdgm_tree = NULL; proto_item *ti; struct nbdgm_header header; int flags; int message_index; + int max_data = pi.captured_len - offset; char *message[] = { "Unknown", @@ -1263,12 +1263,13 @@ dissect_nbss_packet(const u_char *pd, int offset, frame_data *fd, proto_tree *tr } void -dissect_nbss(const u_char *pd, int offset, frame_data *fd, proto_tree *tree, int max_data) +dissect_nbss(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) { guint8 msg_type; guint8 flags; guint16 length; int len; + int max_data; msg_type = pd[offset]; flags = pd[offset + 1]; @@ -1283,10 +1284,11 @@ dissect_nbss(const u_char *pd, int offset, frame_data *fd, proto_tree *tree, int val_to_str(msg_type, message_types, "Unknown (%x)")); } - while (max_data > 0) { - len = dissect_nbss_packet(pd, offset, fd, tree, max_data); - offset += len; - max_data -= len; + max_data = pi.captured_len - offset; + while (max_data > 0) { + len = dissect_nbss_packet(pd, offset, fd, tree, max_data); + offset += len; + max_data -= len; } } |