And for Cal,

Ethereal presents   a column to display culmulative bytes into the capture.

A new column type is added : Culmulative Bytes.
While PacketLength column type specifies the number of bytes in the current packet,
Culmulative Bytes specifies the culmulative number of bytes from the start of the capture.

svn path=/trunk/; revision=8359
This commit is contained in:
Ronnie Sahlberg 2003-09-03 10:49:03 +00:00
parent bb21d8c03c
commit b9ce30cd35
7 changed files with 32 additions and 9 deletions

View File

@ -1,7 +1,7 @@
/* column.c /* column.c
* Routines for handling column preferences * Routines for handling column preferences
* *
* $Id: column.c,v 1.42 2003/01/27 20:45:42 guy Exp $ * $Id: column.c,v 1.43 2003/09/03 10:49:01 sahlberg Exp $
* *
* Ethereal - Network traffic analyzer * Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com> * By Gerald Combs <gerald@ethereal.com>
@ -52,7 +52,8 @@ col_format_to_string(gint fmt) {
"%us","%hs", "%rhs", "%uhs", "%ns", "%rns", "%uns", "%d", "%us","%hs", "%rhs", "%uhs", "%ns", "%rns", "%uns", "%d",
"%rd", "%ud", "%hd", "%rhd", "%uhd", "%nd", "%rnd", "%rd", "%ud", "%hd", "%rhd", "%uhd", "%nd", "%rnd",
"%und", "%S", "%rS", "%uS", "%D", "%rD", "%uD", "%p", "%und", "%S", "%rS", "%uS", "%D", "%rD", "%uD", "%p",
"%i", "%L", "%XO", "%XR", "%I", "%c", "%Xs", "%Xd", "%V" }; "%i", "%L", "%B", "%XO", "%XR", "%I", "%c", "%Xs",
"%Xd", "%V" };
if (fmt < 0 || fmt > NUM_COL_FMTS) if (fmt < 0 || fmt > NUM_COL_FMTS)
return NULL; return NULL;
@ -96,6 +97,7 @@ static gchar *dlist[NUM_COL_FMTS] = {
"Protocol", "Protocol",
"Information", "Information",
"Packet length (bytes)" , "Packet length (bytes)" ,
"Culmulative Bytes" ,
"OXID", "OXID",
"RXID", "RXID",
"FW-1 monitor if/direction", "FW-1 monitor if/direction",
@ -261,6 +263,9 @@ get_column_longest_string(gint format)
case COL_PACKET_LENGTH: case COL_PACKET_LENGTH:
return "000000"; return "000000";
break; break;
case COL_CULMULATIVE_BYTES:
return "00000000";
break;
case COL_RXID: case COL_RXID:
case COL_OXID: case COL_OXID:
return "000000"; return "000000";
@ -309,6 +314,7 @@ get_column_resize_type(gint format) {
case COL_UNRES_DST_PORT: case COL_UNRES_DST_PORT:
case COL_PROTOCOL: case COL_PROTOCOL:
case COL_PACKET_LENGTH: case COL_PACKET_LENGTH:
case COL_CULMULATIVE_BYTES:
case COL_IF_DIR: case COL_IF_DIR:
case COL_CIRCUIT_ID: case COL_CIRCUIT_ID:
/* We don't want these to resize during a live capture, as that /* We don't want these to resize during a live capture, as that
@ -453,6 +459,9 @@ get_column_format_from_str(gchar *str) {
case 'L': case 'L':
return COL_PACKET_LENGTH; return COL_PACKET_LENGTH;
break; break;
case 'B':
return COL_CULMULATIVE_BYTES;
break;
case 'X': case 'X':
prev_code = COL_OXID; prev_code = COL_OXID;
break; break;

View File

@ -1,7 +1,7 @@
/* column-utils.c /* column-utils.c
* Routines for column utilities. * Routines for column utilities.
* *
* $Id: column-utils.c,v 1.37 2003/08/26 06:40:25 guy Exp $ * $Id: column-utils.c,v 1.38 2003/09/03 10:49:02 sahlberg Exp $
* *
* Ethereal - Network traffic analyzer * Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com> * By Gerald Combs <gerald@ethereal.com>
@ -830,6 +830,10 @@ fill_in_columns(packet_info *pinfo)
strcpy(pinfo->cinfo->col_expr[i], "frame.pkt_len"); strcpy(pinfo->cinfo->col_expr[i], "frame.pkt_len");
strcpy(pinfo->cinfo->col_expr_val[i], pinfo->cinfo->col_buf[i]); strcpy(pinfo->cinfo->col_expr_val[i], pinfo->cinfo->col_buf[i]);
break; break;
case COL_CULMULATIVE_BYTES:
snprintf(pinfo->cinfo->col_buf[i], COL_MAX_LEN, "%u", pinfo->fd->cul_bytes);
pinfo->cinfo->col_data[i] = pinfo->cinfo->col_buf[i];
break;
case COL_OXID: case COL_OXID:
snprintf(pinfo->cinfo->col_buf[i], COL_MAX_LEN, "0x%x", pinfo->oxid); snprintf(pinfo->cinfo->col_buf[i], COL_MAX_LEN, "0x%x", pinfo->oxid);

View File

@ -1,7 +1,7 @@
/* column.h /* column.h
* Definitions for column structures and routines * Definitions for column structures and routines
* *
* $Id: column_info.h,v 1.8 2003/04/16 04:52:53 guy Exp $ * $Id: column_info.h,v 1.9 2003/09/03 10:49:02 sahlberg Exp $
* *
* Ethereal - Network traffic analyzer * Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com> * By Gerald Combs <gerald@ethereal.com>
@ -84,6 +84,7 @@ enum {
COL_PROTOCOL, /* Protocol */ COL_PROTOCOL, /* Protocol */
COL_INFO, /* Description */ COL_INFO, /* Description */
COL_PACKET_LENGTH, /* Packet length in bytes */ COL_PACKET_LENGTH, /* Packet length in bytes */
COL_CULMULATIVE_BYTES, /* Culmulative number of bytes */
COL_OXID, /* Fibre Channel OXID */ COL_OXID, /* Fibre Channel OXID */
COL_RXID, /* Fibre Channel RXID */ COL_RXID, /* Fibre Channel RXID */
COL_IF_DIR, /* FW-1 monitor interface/direction */ COL_IF_DIR, /* FW-1 monitor interface/direction */

View File

@ -1,7 +1,7 @@
/* frame_data.h /* frame_data.h
* Definitions for frame_data structures and routines * Definitions for frame_data structures and routines
* *
* $Id: frame_data.h,v 1.8 2003/07/08 05:29:42 tpot Exp $ * $Id: frame_data.h,v 1.9 2003/09/03 10:49:02 sahlberg Exp $
* *
* Ethereal - Network traffic analyzer * Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com> * By Gerald Combs <gerald@ethereal.com>
@ -38,6 +38,7 @@ typedef struct _frame_data {
guint32 num; /* Frame number */ guint32 num; /* Frame number */
guint32 pkt_len; /* Packet length */ guint32 pkt_len; /* Packet length */
guint32 cap_len; /* Amount actually captured */ guint32 cap_len; /* Amount actually captured */
guint32 cul_bytes; /* Culmulative bytes into the capture */
gint32 rel_secs; /* Relative seconds (yes, it can be negative) */ gint32 rel_secs; /* Relative seconds (yes, it can be negative) */
gint32 rel_usecs; /* Relative microseconds (yes, it can be negative) */ gint32 rel_usecs; /* Relative microseconds (yes, it can be negative) */
guint32 abs_secs; /* Absolute seconds */ guint32 abs_secs; /* Absolute seconds */

7
file.c
View File

@ -1,7 +1,7 @@
/* file.c /* file.c
* File I/O routines * File I/O routines
* *
* $Id: file.c,v 1.304 2003/08/29 04:03:45 guy Exp $ * $Id: file.c,v 1.305 2003/09/03 10:49:01 sahlberg Exp $
* *
* Ethereal - Network traffic analyzer * Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com> * By Gerald Combs <gerald@ethereal.com>
@ -92,6 +92,7 @@ gboolean auto_scroll_live;
static guint32 firstsec, firstusec; static guint32 firstsec, firstusec;
static guint32 prevsec, prevusec; static guint32 prevsec, prevusec;
static guint32 cul_bytes = 0;
static void read_packet(capture_file *cf, long offset); static void read_packet(capture_file *cf, long offset);
@ -351,6 +352,7 @@ read_cap_file(capture_file *cf, int *err)
GTimeVal start_time; GTimeVal start_time;
gchar status_str[100]; gchar status_str[100];
cul_bytes=0;
reset_tap_listeners(); reset_tap_listeners();
name_ptr = get_basename(cf->filename); name_ptr = get_basename(cf->filename);
@ -838,6 +840,8 @@ read_packet(capture_file *cf, long offset)
fdata->prev = NULL; fdata->prev = NULL;
fdata->pfd = NULL; fdata->pfd = NULL;
fdata->pkt_len = phdr->len; fdata->pkt_len = phdr->len;
cul_bytes += phdr->len;
fdata->cul_bytes = cul_bytes;
fdata->cap_len = phdr->caplen; fdata->cap_len = phdr->caplen;
fdata->file_off = offset; fdata->file_off = offset;
fdata->lnk_t = phdr->pkt_encap; fdata->lnk_t = phdr->pkt_encap;
@ -968,6 +972,7 @@ rescan_packets(capture_file *cf, const char *action, const char *action_item,
GTimeVal start_time; GTimeVal start_time;
gchar status_str[100]; gchar status_str[100];
cul_bytes=0;
reset_tap_listeners(); reset_tap_listeners();
/* Which frame, if any, is the currently selected frame? /* Which frame, if any, is the currently selected frame?
XXX - should the selected frame or the focus frame be the "current" XXX - should the selected frame or the focus frame be the "current"

View File

@ -1,6 +1,6 @@
/* main.c /* main.c
* *
* $Id: main.c,v 1.307 2003/08/28 20:33:14 oabad Exp $ * $Id: main.c,v 1.308 2003/09/03 10:49:03 sahlberg Exp $
* *
* Ethereal - Network traffic analyzer * Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com> * By Gerald Combs <gerald@ethereal.com>
@ -660,7 +660,7 @@ packet_list_compare(GtkCList *clist, gconstpointer ptr1, gconstpointer ptr2)
(col_fmt == COL_UNRES_SRC_PORT) || (col_fmt == COL_UNRES_DST_PORT) || (col_fmt == COL_UNRES_SRC_PORT) || (col_fmt == COL_UNRES_DST_PORT) ||
((num1 != 0) && (num2 != 0) && ((col_fmt == COL_DEF_SRC_PORT) || (col_fmt == COL_RES_SRC_PORT) || ((num1 != 0) && (num2 != 0) && ((col_fmt == COL_DEF_SRC_PORT) || (col_fmt == COL_RES_SRC_PORT) ||
(col_fmt == COL_DEF_DST_PORT) || (col_fmt == COL_RES_DST_PORT))) || (col_fmt == COL_DEF_DST_PORT) || (col_fmt == COL_RES_DST_PORT))) ||
(col_fmt == COL_PACKET_LENGTH)) { (col_fmt == COL_PACKET_LENGTH) || (col_fmt == COL_CULMULATIVE_BYTES)) {
/* Compare numeric column */ /* Compare numeric column */

View File

@ -1,6 +1,6 @@
/* tethereal.c /* tethereal.c
* *
* $Id: tethereal.c,v 1.191 2003/08/07 00:41:27 guy Exp $ * $Id: tethereal.c,v 1.192 2003/09/03 10:49:02 sahlberg Exp $
* *
* Ethereal - Network traffic analyzer * Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com> * By Gerald Combs <gerald@ethereal.com>
@ -116,6 +116,7 @@ static gboolean decode;
static gboolean verbose; static gboolean verbose;
static gboolean print_hex; static gboolean print_hex;
static gboolean line_buffered; static gboolean line_buffered;
static guint32 cul_bytes = 0;
#ifdef HAVE_LIBPCAP #ifdef HAVE_LIBPCAP
typedef struct _loop_data { typedef struct _loop_data {
@ -2031,6 +2032,8 @@ fill_in_fdata(frame_data *fdata, capture_file *cf,
fdata->pfd = NULL; fdata->pfd = NULL;
fdata->num = cf->count; fdata->num = cf->count;
fdata->pkt_len = phdr->len; fdata->pkt_len = phdr->len;
cul_bytes += phdr->len;
fdata->cul_bytes = cul_bytes;
fdata->cap_len = phdr->caplen; fdata->cap_len = phdr->caplen;
fdata->file_off = offset; fdata->file_off = offset;
fdata->lnk_t = phdr->pkt_encap; fdata->lnk_t = phdr->pkt_encap;