diff options
author | Guy Harris <guy@alum.mit.edu> | 2003-08-28 00:11:32 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2003-08-28 00:11:32 +0000 |
commit | fadeb72b2e21ad9a758dceb6a105eb286d3c5e2d (patch) | |
tree | 79b9536d8f8860051a52c59ff81899a15a96a439 /packet-llc.c | |
parent | c3d7c67df3a8785925cb73dee146011cffbe43f0 (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.c | 24 |
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); } |