Add a new type of column for the circuit ID (Frame Relay DLCI, ISDN
channel number, X.25 logical channel number). Clean up white space and the like, and get rid of unnecessary arguments to "col_set_port()". svn path=/trunk/; revision=6772
This commit is contained in:
parent
644d19129a
commit
92d90f4f28
23
column.c
23
column.c
|
@ -1,7 +1,7 @@
|
|||
/* column.c
|
||||
* Routines for handling column preferences
|
||||
*
|
||||
* $Id: column.c,v 1.39 2002/12/10 00:12:57 guy Exp $
|
||||
* $Id: column.c,v 1.40 2002/12/10 01:17:07 guy Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@ethereal.com>
|
||||
|
@ -52,7 +52,7 @@ col_format_to_string(gint fmt) {
|
|||
"%us","%hs", "%rhs", "%uhs", "%ns", "%rns", "%uns", "%d",
|
||||
"%rd", "%ud", "%hd", "%rhd", "%uhd", "%nd", "%rnd",
|
||||
"%und", "%S", "%rS", "%uS", "%D", "%rD", "%uD", "%p",
|
||||
"%i", "%L", "%XO", "%XR", "%I" };
|
||||
"%i", "%L", "%XO", "%XR", "%I", "%c" };
|
||||
|
||||
if (fmt < 0 || fmt > NUM_COL_FMTS)
|
||||
return NULL;
|
||||
|
@ -80,7 +80,8 @@ col_format_desc(gint fmt) {
|
|||
"Src port (unresolved)", "Destination port",
|
||||
"Dest port (resolved)", "Dest port (unresolved)",
|
||||
"Protocol", "Information", "Packet length (bytes)" ,
|
||||
"OXID", "RXID", "FW-1 monitor if/direction" };
|
||||
"OXID", "RXID", "FW-1 monitor if/direction",
|
||||
"Circuit ID" };
|
||||
|
||||
return(dlist[fmt]);
|
||||
}
|
||||
|
@ -147,6 +148,9 @@ get_column_format_matches(gboolean *fmt_list, gint format) {
|
|||
case COL_IF_DIR:
|
||||
fmt_list[COL_IF_DIR] = TRUE;
|
||||
break;
|
||||
case COL_CIRCUIT_ID:
|
||||
fmt_list[COL_CIRCUIT_ID] = TRUE;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -230,6 +234,9 @@ get_column_longest_string(gint format)
|
|||
case COL_IF_DIR:
|
||||
return "i 00000000 I";
|
||||
break;
|
||||
case COL_CIRCUIT_ID:
|
||||
return "000000";
|
||||
break;
|
||||
default: /* COL_INFO */
|
||||
return "Source port: kerberos-master Destination port: kerberos-master";
|
||||
break;
|
||||
|
@ -262,6 +269,7 @@ get_column_resize_type(gint format) {
|
|||
case COL_PROTOCOL:
|
||||
case COL_PACKET_LENGTH:
|
||||
case COL_IF_DIR:
|
||||
case COL_CIRCUIT_ID:
|
||||
/* We don't want these to resize during a live capture, as that
|
||||
gets in the way of trying to look at the data while it's being
|
||||
captured. */
|
||||
|
@ -391,15 +399,18 @@ get_column_format_from_str(gchar *str) {
|
|||
case 'L':
|
||||
return COL_PACKET_LENGTH;
|
||||
break;
|
||||
case 'I':
|
||||
return COL_IF_DIR;
|
||||
break;
|
||||
case 'X':
|
||||
prev_code = COL_OXID;
|
||||
break;
|
||||
case 'O':
|
||||
return COL_OXID;
|
||||
break;
|
||||
case 'I':
|
||||
return COL_IF_DIR;
|
||||
break;
|
||||
case 'c':
|
||||
return COL_CIRCUIT_ID;
|
||||
break;
|
||||
}
|
||||
cptr++;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* column-utils.c
|
||||
* Routines for column utilities.
|
||||
*
|
||||
* $Id: column-utils.c,v 1.29 2002/12/10 00:12:59 guy Exp $
|
||||
* $Id: column-utils.c,v 1.30 2002/12/10 01:17:21 guy Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@ethereal.com>
|
||||
|
@ -43,6 +43,7 @@
|
|||
#include "resolv.h"
|
||||
#include "ipv6-utils.h"
|
||||
#include "osi-utils.h"
|
||||
#include "value_string.h"
|
||||
|
||||
/* Allocate all the data structures for constructing column data, given
|
||||
the number of columns. */
|
||||
|
@ -501,12 +502,17 @@ col_set_addr(packet_info *pinfo, int col, address *addr, gboolean is_res,
|
|||
}
|
||||
|
||||
static void
|
||||
col_set_port(packet_info *pinfo, int col, port_type ptype, guint32 port,
|
||||
gboolean is_res, gboolean is_src)
|
||||
col_set_port(packet_info *pinfo, int col, gboolean is_res, gboolean is_src)
|
||||
{
|
||||
guint32 port;
|
||||
|
||||
if (is_src)
|
||||
port = pinfo->srcport;
|
||||
else
|
||||
port = pinfo->destport;
|
||||
pinfo->cinfo->col_expr[col][0] = '\0';
|
||||
pinfo->cinfo->col_expr_val[col][0] = '\0';
|
||||
switch (ptype) {
|
||||
switch (pinfo->ptype) {
|
||||
|
||||
case PT_SCTP:
|
||||
if (is_res)
|
||||
|
@ -569,6 +575,78 @@ col_set_port(packet_info *pinfo, int col, port_type ptype, guint32 port,
|
|||
pinfo->cinfo->col_data[col] = pinfo->cinfo->col_buf[col];
|
||||
}
|
||||
|
||||
/*
|
||||
* XXX - this should be in some common code in the epan directory, shared
|
||||
* by this code and packet-isdn.c.
|
||||
*/
|
||||
static const value_string channel_vals[] = {
|
||||
{ 0, "D" },
|
||||
{ 1, "B1" },
|
||||
{ 2, "B2" },
|
||||
{ 3, "B3" },
|
||||
{ 4, "B4" },
|
||||
{ 5, "B5" },
|
||||
{ 6, "B6" },
|
||||
{ 7, "B7" },
|
||||
{ 8, "B8" },
|
||||
{ 9, "B9" },
|
||||
{ 10, "B10" },
|
||||
{ 11, "B11" },
|
||||
{ 12, "B12" },
|
||||
{ 13, "B13" },
|
||||
{ 14, "B14" },
|
||||
{ 15, "B15" },
|
||||
{ 16, "B16" },
|
||||
{ 17, "B17" },
|
||||
{ 18, "B19" },
|
||||
{ 19, "B19" },
|
||||
{ 20, "B20" },
|
||||
{ 21, "B21" },
|
||||
{ 22, "B22" },
|
||||
{ 23, "B23" },
|
||||
{ 24, "B24" },
|
||||
{ 25, "B25" },
|
||||
{ 26, "B26" },
|
||||
{ 27, "B27" },
|
||||
{ 28, "B29" },
|
||||
{ 29, "B29" },
|
||||
{ 30, "B30" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
||||
static void
|
||||
col_set_circuit_id(packet_info *pinfo, int col)
|
||||
{
|
||||
pinfo->cinfo->col_expr[col][0] = '\0';
|
||||
pinfo->cinfo->col_expr_val[col][0] = '\0';
|
||||
switch (pinfo->ctype) {
|
||||
|
||||
case CT_DLCI:
|
||||
snprintf(pinfo->cinfo->col_buf[col], COL_MAX_LEN, "%u", pinfo->circuit_id);
|
||||
strcpy(pinfo->cinfo->col_expr[col], "fr.dlci");
|
||||
snprintf(pinfo->cinfo->col_expr_val[col], COL_MAX_LEN, "%u", pinfo->circuit_id);
|
||||
pinfo->cinfo->col_expr_val[col][COL_MAX_LEN - 1] = '\0';
|
||||
break;
|
||||
|
||||
case CT_ISDN:
|
||||
snprintf(pinfo->cinfo->col_buf[col], COL_MAX_LEN, "%s",
|
||||
val_to_str(pinfo->circuit_id, channel_vals, "Unknown (%u)"));
|
||||
strcpy(pinfo->cinfo->col_expr[col], "isdn.channel");
|
||||
snprintf(pinfo->cinfo->col_expr_val[col], COL_MAX_LEN, "%u", pinfo->circuit_id);
|
||||
pinfo->cinfo->col_expr_val[col][COL_MAX_LEN - 1] = '\0';
|
||||
break;
|
||||
|
||||
case CT_X25:
|
||||
snprintf(pinfo->cinfo->col_buf[col], COL_MAX_LEN, "%u", pinfo->circuit_id);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
pinfo->cinfo->col_buf[col][COL_MAX_LEN - 1] = '\0';
|
||||
pinfo->cinfo->col_data[col] = pinfo->cinfo->col_buf[col];
|
||||
}
|
||||
|
||||
void
|
||||
fill_in_columns(packet_info *pinfo)
|
||||
{
|
||||
|
@ -660,25 +738,24 @@ fill_in_columns(packet_info *pinfo)
|
|||
|
||||
case COL_DEF_SRC_PORT:
|
||||
case COL_RES_SRC_PORT: /* COL_DEF_SRC_PORT is currently just like COL_RES_SRC_PORT */
|
||||
col_set_port(pinfo, i, pinfo->ptype, pinfo->srcport, TRUE, TRUE);
|
||||
col_set_port(pinfo, i, TRUE, TRUE);
|
||||
break;
|
||||
|
||||
case COL_UNRES_SRC_PORT:
|
||||
col_set_port(pinfo, i, pinfo->ptype, pinfo->srcport, FALSE, TRUE);
|
||||
col_set_port(pinfo, i, FALSE, TRUE);
|
||||
break;
|
||||
|
||||
case COL_DEF_DST_PORT:
|
||||
case COL_RES_DST_PORT: /* COL_DEF_DST_PORT is currently just like COL_RES_DST_PORT */
|
||||
col_set_port(pinfo, i, pinfo->ptype, pinfo->destport, TRUE, FALSE);
|
||||
col_set_port(pinfo, i, TRUE, FALSE);
|
||||
break;
|
||||
|
||||
case COL_UNRES_DST_PORT:
|
||||
col_set_port(pinfo, i, pinfo->ptype, pinfo->destport, FALSE, FALSE);
|
||||
col_set_port(pinfo, i, FALSE, FALSE);
|
||||
break;
|
||||
|
||||
case COL_PROTOCOL: /* currently done by dissectors */
|
||||
case COL_INFO: /* currently done by dissectors */
|
||||
case COL_IF_DIR: /* currently done by dissectors */
|
||||
break;
|
||||
|
||||
case COL_PACKET_LENGTH:
|
||||
|
@ -689,16 +766,23 @@ fill_in_columns(packet_info *pinfo)
|
|||
break;
|
||||
|
||||
case COL_OXID:
|
||||
snprintf (pinfo->cinfo->col_buf[i], COL_MAX_LEN, "0x%x", pinfo->oxid);
|
||||
pinfo->cinfo->col_buf[i][COL_MAX_LEN - 1] = '\0';
|
||||
pinfo->cinfo->col_data[i] = pinfo->cinfo->col_buf[i];
|
||||
break;
|
||||
snprintf(pinfo->cinfo->col_buf[i], COL_MAX_LEN, "0x%x", pinfo->oxid);
|
||||
pinfo->cinfo->col_buf[i][COL_MAX_LEN - 1] = '\0';
|
||||
pinfo->cinfo->col_data[i] = pinfo->cinfo->col_buf[i];
|
||||
break;
|
||||
|
||||
case COL_RXID:
|
||||
snprintf (pinfo->cinfo->col_buf[i], COL_MAX_LEN, "0x%x", pinfo->rxid);
|
||||
pinfo->cinfo->col_buf[i][COL_MAX_LEN - 1] = '\0';
|
||||
pinfo->cinfo->col_data[i] = pinfo->cinfo->col_buf[i];
|
||||
break;
|
||||
snprintf(pinfo->cinfo->col_buf[i], COL_MAX_LEN, "0x%x", pinfo->rxid);
|
||||
pinfo->cinfo->col_buf[i][COL_MAX_LEN - 1] = '\0';
|
||||
pinfo->cinfo->col_data[i] = pinfo->cinfo->col_buf[i];
|
||||
break;
|
||||
|
||||
case COL_IF_DIR: /* currently done by dissectors */
|
||||
break;
|
||||
|
||||
case COL_CIRCUIT_ID:
|
||||
col_set_circuit_id(pinfo, i);
|
||||
break;
|
||||
|
||||
case NUM_COL_FMTS: /* keep compiler happy - shouldn't get here */
|
||||
g_assert_not_reached();
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* column.h
|
||||
* Definitions for column structures and routines
|
||||
*
|
||||
* $Id: column_info.h,v 1.5 2002/12/10 00:12:59 guy Exp $
|
||||
* $Id: column_info.h,v 1.6 2002/12/10 01:17:21 guy Exp $
|
||||
*
|
||||
* Ethereal - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@zing.org>
|
||||
|
@ -88,6 +88,7 @@ enum {
|
|||
COL_OXID, /* Fibre Channel OXID */
|
||||
COL_RXID, /* Fibre Channel RXID */
|
||||
COL_IF_DIR, /* FW-1 monitor interface/direction */
|
||||
COL_CIRCUIT_ID, /* Circuit ID */
|
||||
NUM_COL_FMTS /* Should always be last */
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue