* Based on routines from tcpdump patches by
* Ken Hornstein <kenh@cmf.nrl.navy.mil>
*
- * $Id: packet-rx.c,v 1.32 2002/02/01 16:37:18 nneul Exp $
+ * $Id: packet-rx.c,v 1.37 2002/08/28 21:00:30 jmayer Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-
#include <string.h>
#include <glib.h>
#include <epan/packet.h>
{ RX_LAST_PACKET, "last-pckt" },
{ RX_MORE_PACKETS, "more-pckts" },
{ RX_FREE_PACKET, "free-pckt" },
+ { RX_SLOW_START_OR_JUMBO, "slow-start/jumbogram" },
{ 0, NULL }
};
{ RX_ACK_REQUESTED, "Ack Requested" },
{ RX_ACK_DUPLICATE, "Duplicate Packet" },
{ RX_ACK_OUT_OF_SEQUENCE, "Out Of Sequence" },
- { RX_ACK_EXEEDS_WINDOW, "Exceeds Window" },
+ { RX_ACK_EXEEDS_WINDOW, "Exceeds Window" },
{ RX_ACK_NOSPACE, "No Space" },
{ RX_ACK_PING, "Ping" },
{ RX_ACK_PING_RESPONSE, "Ping Response" },
{ RX_ACK_DELAY, "Delay" },
+ { RX_ACK_IDLE, "Idle" },
{ 0, NULL }
};
static dissector_handle_t afs_handle;
static int
-dissect_rx_response_encrypted(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, int offset)
+dissect_rx_response_encrypted(tvbuff_t *tvb, proto_tree *parent_tree, int offset)
{
proto_tree *tree;
proto_item *item;
nstime_t ts;
ts.secs = tvb_get_ntohl(tvb, offset);
ts.nsecs = 0;
-
+
proto_tree_add_time(tree, hf_rx_epoch, tvb,
offset, 4, &ts);
offset += 4;
/* level : 4 bytes */
proto_tree_add_item(tree, hf_rx_level, tvb, offset, 4, FALSE);
offset += 4;
-
- proto_item_set_len(item, offset-old_offset);
+
+ proto_item_set_len(item, offset-old_offset);
return offset;
}
-
+
static int
dissect_rx_response(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, int offset, guint32 seq, guint32 callnumber)
offset += 4;
/* encrypted : struct */
- offset = dissect_rx_response_encrypted(tvb, pinfo, tree, offset);
+ offset = dissect_rx_response_encrypted(tvb, tree, offset);
/* kvno */
proto_tree_add_item(tree, hf_rx_kvno, tvb, offset, 4, FALSE);
offset += 4;
-
+
/* ticket_len */
tl = tvb_get_ntohl(tvb, offset);
proto_tree_add_uint(tree, hf_rx_ticket_len, tvb,
offset, 4, tl);
offset += 4;
-
+
proto_tree_add_item(tree, hf_rx_ticket, tvb, offset, tl, FALSE);
- offset += tl;
+ offset += tl;
}
- proto_item_set_len(item, offset-old_offset);
+ proto_item_set_len(item, offset-old_offset);
return offset;
}
/* kvno */
proto_tree_add_item(tree, hf_rx_abortcode, tvb, offset, 4, FALSE);
offset += 4;
-
- proto_item_set_len(item, offset-old_offset);
+
+ proto_item_set_len(item, offset-old_offset);
return offset;
}
offset += 4;
}
- proto_item_set_len(item, offset-old_offset);
+ proto_item_set_len(item, offset-old_offset);
return offset;
}
/* bufferspace: 2 bytes*/
proto_tree_add_item(tree, hf_rx_bufferspace, tvb, offset, 2, FALSE);
offset += 2;
-
+
/* maxskew: 2 bytes*/
proto_tree_add_item(tree, hf_rx_maxskew, tvb, offset, 2, FALSE);
offset += 2;
-
+
/* first packet: 4 bytes*/
proto_tree_add_item(tree, hf_rx_first_packet, tvb, offset, 4, FALSE);
offset += 4;
-
+
/* prev packet: 4 bytes*/
proto_tree_add_item(tree, hf_rx_prev_packet, tvb, offset, 4, FALSE);
offset += 4;
- /* serial : 4 bytes */
+ /* serial : 4 bytes */
proto_tree_add_item(tree, hf_rx_serial, tvb, offset, 4, FALSE);
offset += 4;
}
}
- proto_item_set_len(item, offset-old_offset);
+ proto_item_set_len(item, offset-old_offset);
return offset;
}
if (check_col(pinfo->cinfo, COL_INFO))
col_clear(pinfo->cinfo, COL_INFO);
- item = proto_tree_add_protocol_format(parent_tree, proto_rx, tvb,
+ item = proto_tree_add_protocol_format(parent_tree, proto_rx, tvb,
offset, 28, "RX Protocol");
tree = proto_item_add_subtree(item, ett_rx);
nstime_t ts;;
ts.secs = tvb_get_ntohl(tvb, offset);
ts.nsecs = 0;
-
+
proto_tree_add_time(tree, hf_rx_epoch, tvb,
offset, 4, &ts);
offset += 4;
switch (type) {
case RX_PACKET_TYPE_ACK:
- /*dissect_rx_acks(tvb, pinfo, parent_tree, offset,
+ /*dissect_rx_acks(tvb, pinfo, parent_tree, offset,
cant create it in a parallell tree, then ett seasrch
wont work */
- dissect_rx_acks(tvb, pinfo, tree, offset,
+ dissect_rx_acks(tvb, pinfo, tree, offset,
seq, callnumber);
break;
case RX_PACKET_TYPE_ACKALL: