summaryrefslogtreecommitdiff
path: root/packet-nbns.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>1999-08-18 00:57:54 +0000
committerGuy Harris <guy@alum.mit.edu>1999-08-18 00:57:54 +0000
commitac4f87218d7bf56558225bc0f78a5a0af25687e6 (patch)
treee9e831bb1b3b77de445b70cbeb126f919f01bce2 /packet-nbns.c
parentd4331d432915144e57271b70a9bf6b867087c0a0 (diff)
downloadwireshark-ac4f87218d7bf56558225bc0f78a5a0af25687e6.tar.gz
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.c18
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;
}
}