/* packet-chdlc.c
* Routines for Cisco HDLC packet disassembly
*
- * $Id: packet-chdlc.c,v 1.15 2002/08/28 21:00:08 jmayer Exp $
+ * $Id: packet-chdlc.c,v 1.19 2003/01/27 19:28:52 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
#include <glib.h>
#include <epan/packet.h>
#include "etypes.h"
+#include "chdlctypes.h"
#include <epan/resolv.h>
#include "packet-chdlc.h"
#include "packet-ip.h"
};
const value_string chdlc_vals[] = {
- {0x2000, "Cisco Discovery Protocol"},
- {ETHERTYPE_IP, "IP"},
- {CISCO_SLARP, "SLARP"},
- {ETHERTYPE_DEC_LB, "DEC LanBridge"},
- {ETHERTYPE_ATALK, "Appletalk"},
- {ETHERTYPE_AARP, "AARP"},
- {ETHERTYPE_IPX, "Netware IPX/SPX"},
- {ETHERTYPE_ETHBRIDGE, "Transparent Ethernet bridging" },
- {0, NULL}
+ {0x2000, "Cisco Discovery Protocol"},
+ {ETHERTYPE_IP, "IP"},
+ {CISCO_SLARP, "SLARP"},
+ {ETHERTYPE_DEC_LB, "DEC LanBridge"},
+ {CHDLCTYPE_BPDU, "Spanning Tree BPDU"},
+ {ETHERTYPE_ATALK, "Appletalk"},
+ {ETHERTYPE_AARP, "AARP"},
+ {ETHERTYPE_IPX, "Netware IPX/SPX"},
+ {ETHERTYPE_ETHBRIDGE, "Transparent Ethernet bridging" },
+ {CHDLCTYPE_OSI, "OSI" },
+ {ETHERTYPE_MPLS, "MPLS unicast"},
+ {ETHERTYPE_MPLS_MULTI, "MPLS multicast"},
+ {0, NULL}
};
void
guint8 addr;
guint16 proto;
- if (check_col(pinfo->cinfo, COL_RES_DL_SRC))
- col_set_str(pinfo->cinfo, COL_RES_DL_SRC, "N/A");
- if (check_col(pinfo->cinfo, COL_RES_DL_DST))
- col_set_str(pinfo->cinfo, COL_RES_DL_DST, "N/A");
if (check_col(pinfo->cinfo, COL_PROTOCOL))
col_set_str(pinfo->cinfo, COL_PROTOCOL, "CHDLC");
if (check_col(pinfo->cinfo, COL_INFO))
col_clear(pinfo->cinfo, COL_INFO);
+ switch (pinfo->p2p_dir) {
+
+ case P2P_DIR_SENT:
+ if (check_col(pinfo->cinfo, COL_RES_DL_SRC))
+ col_set_str(pinfo->cinfo, COL_RES_DL_SRC, "DTE");
+ if (check_col(pinfo->cinfo, COL_RES_DL_DST))
+ col_set_str(pinfo->cinfo, COL_RES_DL_DST, "DCE");
+ break;
+
+ case P2P_DIR_RECV:
+ if (check_col(pinfo->cinfo, COL_RES_DL_SRC))
+ col_set_str(pinfo->cinfo, COL_RES_DL_SRC, "DCE");
+ if (check_col(pinfo->cinfo, COL_RES_DL_DST))
+ col_set_str(pinfo->cinfo, COL_RES_DL_DST, "DTE");
+ break;
+
+ default:
+ if (check_col(pinfo->cinfo, COL_RES_DL_SRC))
+ col_set_str(pinfo->cinfo, COL_RES_DL_SRC, "N/A");
+ if (check_col(pinfo->cinfo, COL_RES_DL_DST))
+ col_set_str(pinfo->cinfo, COL_RES_DL_DST, "N/A");
+ break;
+ }
+
addr = tvb_get_guint8(tvb, 0);
proto = tvb_get_ntohs(tvb, 2);