Detect ELSM as such - meaning of the elements is still unknown.

svn path=/trunk/; revision=21456
This commit is contained in:
Jörg Mayer 2007-04-17 15:17:06 +00:00
parent 869b908463
commit e8d1c6bff7
1 changed files with 39 additions and 1 deletions

View File

@ -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 }
};
@ -679,6 +685,25 @@ dissect_eaps_tlv(tvbuff_t *tvb, packet_info *pinfo, int offset, int length _U_,
col_set_str(pinfo->cinfo, COL_PROTOCOL, "EAPS");
}
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)
{
@ -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,
};