aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorJörg Mayer <jmayer@loplof.de>2007-04-17 15:17:06 +0000
committerJörg Mayer <jmayer@loplof.de>2007-04-17 15:17:06 +0000
commite8d1c6bff77ac69b70a8d65b34247df032792293 (patch)
treee2e0b59cabc6f048d13438cab19f63ed438589e7 /epan
parent869b9084630b9ca644e4f90c14e69828256a9c88 (diff)
Detect ELSM as such - meaning of the elements is still unknown.
svn path=/trunk/; revision=21456
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-extreme.c40
1 files changed, 39 insertions, 1 deletions
diff --git a/epan/dissectors/packet-extreme.c b/epan/dissectors/packet-extreme.c
index f925ce44ef..3c09fb12ce 100644
--- a/epan/dissectors/packet-extreme.c
+++ b/epan/dissectors/packet-extreme.c
@@ -222,6 +222,9 @@ static int hf_edp_eaps_state = -1;
static int hf_edp_eaps_reserved1 = -1;
static int hf_edp_eaps_helloseq = -1;
static int hf_edp_eaps_reserved2 = -1;
+/* ELSM (Extreme Link Status Monitoring) */
+static int hf_edp_elsm = -1;
+static int hf_edp_elsm_unknown = -1;
/* Unknown element */
static int hf_edp_unknown = -1;
/* Null element */
@@ -237,6 +240,7 @@ static gint ett_edp_vlan = -1;
static gint ett_edp_vlan_flags = -1;
static gint ett_edp_esrp = -1;
static gint ett_edp_eaps = -1;
+static gint ett_edp_elsm = -1;
static gint ett_edp_unknown = -1;
static gint ett_edp_null = -1;
@@ -271,7 +275,8 @@ typedef enum {
EDP_TYPE_INFO,
EDP_TYPE_VLAN = 5,
EDP_TYPE_ESRP = 8,
- EDP_TYPE_EAPS = 0xb
+ EDP_TYPE_EAPS = 0xb,
+ EDP_TYPE_ELSM = 0xf
} edp_type_t;
static const value_string edp_type_vals[] = {
@@ -281,6 +286,7 @@ static const value_string edp_type_vals[] = {
{ EDP_TYPE_VLAN, "VL"},
{ EDP_TYPE_ESRP, "ESRP"},
{ EDP_TYPE_EAPS, "EAPS"},
+ { EDP_TYPE_ELSM, "ELSM"},
{ 0, NULL }
};
@@ -680,6 +686,25 @@ dissect_eaps_tlv(tvbuff_t *tvb, packet_info *pinfo, int offset, int length _U_,
}
static void
+dissect_elsm_tlv(tvbuff_t *tvb, packet_info *pinfo, int offset, int length _U_, proto_tree *tree)
+{
+ proto_item *elsm_item;
+ proto_tree *elsm_tree;
+
+ elsm_item = proto_tree_add_protocol_format(tree, hf_edp_elsm,
+ tvb, offset, length, "ELSM");
+
+ elsm_tree = proto_item_add_subtree(elsm_item, ett_edp_elsm);
+
+ dissect_tlv_header(tvb, pinfo, offset, 4, elsm_tree);
+ offset += 4;
+
+ proto_tree_add_item(elsm_tree, hf_edp_elsm_unknown, tvb, offset, 4,
+ FALSE);
+ offset += 4;
+}
+
+static void
dissect_unknown_tlv(tvbuff_t *tvb, packet_info *pinfo, int offset, int length _U_, proto_tree *tree)
{
proto_item *unknown_item;
@@ -834,6 +859,9 @@ dissect_edp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case EDP_TYPE_EAPS: /* Ethernet Automatic Protection Swtiching */
dissect_eaps_tlv(tvb, pinfo, offset, tlv_length, edp_tree);
break;
+ case EDP_TYPE_ELSM: /* Extreme Link Status Monitoring */
+ dissect_elsm_tlv(tvb, pinfo, offset, tlv_length, edp_tree);
+ break;
default:
dissect_unknown_tlv(tvb, pinfo, offset, tlv_length, edp_tree);
break;
@@ -1084,6 +1112,15 @@ proto_register_edp(void)
{ "Reserved2", "edp.eaps.reserved2", FT_BYTES, BASE_NONE, NULL,
0x0, "", HFILL }},
+ /* ELSM element */
+ { &hf_edp_elsm,
+ { "ELWM", "edp.elsm", FT_PROTOCOL, BASE_NONE, NULL,
+ 0x0, "EAPS Element", HFILL }},
+
+ { &hf_edp_elsm_unknown,
+ { "Unknown", "edp.elsm.unknown", FT_BYTES, BASE_NONE, NULL,
+ 0x0, "", HFILL }},
+
/* Unknown element */
{ &hf_edp_unknown,
{ "Unknown", "edp.unknown", FT_PROTOCOL, BASE_NONE, NULL,
@@ -1105,6 +1142,7 @@ proto_register_edp(void)
&ett_edp_vlan,
&ett_edp_esrp,
&ett_edp_eaps,
+ &ett_edp_elsm,
&ett_edp_unknown,
&ett_edp_null,
};