aboutsummaryrefslogtreecommitdiffstats
path: root/packet-llc.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2003-08-28 00:11:32 +0000
committerGuy Harris <guy@alum.mit.edu>2003-08-28 00:11:32 +0000
commitfadeb72b2e21ad9a758dceb6a105eb286d3c5e2d (patch)
tree79b9536d8f8860051a52c59ff81899a15a96a439 /packet-llc.c
parentc3d7c67df3a8785925cb73dee146011cffbe43f0 (diff)
From Giles Scott: Nortel/SynOptics Network Management Protocol support.
svn path=/trunk/; revision=8290
Diffstat (limited to 'packet-llc.c')
-rw-r--r--packet-llc.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/packet-llc.c b/packet-llc.c
index d217fcc6a3..b9506fc027 100644
--- a/packet-llc.c
+++ b/packet-llc.c
@@ -2,7 +2,7 @@
* Routines for IEEE 802.2 LLC layer
* Gilbert Ramirez <gram@alumni.rice.edu>
*
- * $Id: packet-llc.c,v 1.110 2003/06/10 05:38:51 guy Exp $
+ * $Id: packet-llc.c,v 1.111 2003/08/28 00:11:32 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -68,6 +68,8 @@ static dissector_table_t subdissector_table;
static dissector_table_t cisco_subdissector_table;
static dissector_table_t xid_subdissector_table;
+static dissector_table_t nortel_subdissector_table;
+
static dissector_handle_t bpdu_handle;
static dissector_handle_t eth_handle;
static dissector_handle_t fddi_handle;
@@ -166,6 +168,7 @@ http://www.cisco.com/univercd/cc/td/doc/product/software/ios113ed/113ed_cr/ibm_r
{ OUI_ATM_FORUM, "ATM Forum" },
{ OUI_CABLE_BPDU, "DOCSIS Spanning Tree" }, /* DOCSIS spanning tree BPDU */
{ OUI_APPLE_ATALK, "Apple (AppleTalk)" },
+ { OUI_NORTEL, "Nortel Networks SONMP" },
{ 0, NULL }
};
@@ -500,6 +503,23 @@ dissect_snap(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree,
call_dissector(bpdu_handle, next_tvb, pinfo, tree);
break;
+ case OUI_NORTEL:
+ /* Nortel Networks
+ * Synoptics Networks Management Protocol
+ * protocol ID's 0x01a1, 0x01a2, 0x01a3
+ */
+ if (tree) {
+ proto_tree_add_uint(snap_tree, hf_pid,tvb, offset+3,2, etype);
+ }
+ next_tvb = tvb_new_subset(tvb, offset + 5, -1, -1);
+ if (XDLC_IS_INFORMATION(control)) {
+ /* do lookup with the subdissector table */
+ if (!dissector_try_port(nortel_subdissector_table,
+ etype, next_tvb, pinfo, tree))
+ call_dissector(data_handle, next_tvb, pinfo, tree);
+ } else
+ call_dissector(data_handle, next_tvb, pinfo, tree);
+ break;
default:
if (tree) {
proto_tree_add_uint(snap_tree, hf_pid, tvb, offset+3, 2,
@@ -567,6 +587,8 @@ proto_register_llc(void)
"Cisco OUI PID", FT_UINT16, BASE_HEX);
xid_subdissector_table = register_dissector_table("llc.xid_dsap",
"LLC XID SAP", FT_UINT8, BASE_HEX);
+ nortel_subdissector_table = register_dissector_table("llc.nortel_pid",
+ "Nortel OUI PID", FT_UINT16, BASE_HEX);
register_dissector("llc", dissect_llc, proto_llc);
}