summaryrefslogtreecommitdiff
path: root/print-atm.c
diff options
context:
space:
mode:
authorhannes <hannes>2006-01-22 10:23:09 +0000
committerhannes <hannes>2006-01-22 10:23:09 +0000
commita6a8d21e46760e35d991d85ad58048763417a9cd (patch)
treea44e15e37dec43d6af4c6389c378a92cb3028a38 /print-atm.c
parent4ee5f75b6c4c46d5e42ef8f633d9dfedd2401ac5 (diff)
downloadtcpdump-a6a8d21e46760e35d991d85ad58048763417a9cd.tar.gz
bugfix: add hec offset for celltype determination; make use of tok2str() for OAM F type printing, unhide OAM elements like (vci,vpi) under eflag
Diffstat (limited to 'print-atm.c')
-rw-r--r--print-atm.c27
1 files changed, 11 insertions, 16 deletions
diff --git a/print-atm.c b/print-atm.c
index 3c336e69..5fe6891c 100644
--- a/print-atm.c
+++ b/print-atm.c
@@ -20,7 +20,7 @@
*/
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-atm.c,v 1.42 2005-11-10 00:43:24 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-atm.c,v 1.43 2006-01-22 10:23:09 hannes Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
@@ -43,6 +43,12 @@ static const char rcsid[] _U_ =
#include "ether.h"
+struct tok oam_f_values[] = {
+ { OAMF4SC, "OAM F4 (segment)" },
+ { OAMF4EC, "OAM F4 (end)" },
+ { 0, NULL }
+};
+
struct tok oam_celltype_values[] = {
{ 0x1, "Fault Management" },
{ 0x2, "Performance Management" },
@@ -293,7 +299,7 @@ oam_print (const u_char *p, u_int length, u_int hec) {
u_int32_t cell_header;
u_int16_t cell_type, func_type,vpi,vci,payload,clp;
- cell_header = EXTRACT_32BITS(p);
+ cell_header = EXTRACT_32BITS(p+hec);
cell_type = ((*(p+4+hec))>>4) & 0x0f;
func_type = *(p+4+hec) & 0x0f;
@@ -302,20 +308,9 @@ oam_print (const u_char *p, u_int length, u_int hec) {
payload = (cell_header>>1)&0x7;
clp = cell_header&0x1;
- switch (vci) {
- case OAMF4SC:
- printf("OAM F4 (segment), ");
- break;
- case OAMF4EC:
- printf("OAM F4 (end), ");
- break;
- default:
- printf("OAM F5, ");
- break;
- }
-
- if (eflag)
- printf("vpi %u, vci %u, payload %u, clp %u, ",vpi,vci,payload,clp);
+ printf("%s, vpi %u, vci %u, payload %u, clp %u, ",
+ tok2str(oam_f_values, "OAM F5", vci),
+ vpi, vci, payload, clp);
printf("cell-type %s (%u)",
tok2str(oam_celltype_values, "unknown", cell_type),