]> The Tcpdump Group git mirrors - tcpdump/commitdiff
bugfix: add hec offset for celltype determination; make use of tok2str() for OAM...
authorhannes <hannes>
Sun, 22 Jan 2006 10:23:09 +0000 (10:23 +0000)
committerhannes <hannes>
Sun, 22 Jan 2006 10:23:09 +0000 (10:23 +0000)
print-atm.c

index 3c336e692d477f55c715be21d62ee801a99a4341..5fe6891c7ea96f96a44fadb2fbbb993f228c85bb 100644 (file)
@@ -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),