*/
#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
#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" },
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;
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),