forked from osmocom/wireshark
isis: Support for proprietary Avaya/Extremenetworks Fabric TLVs/NLIPD
- TLV 129 NLPID decoding cleanup with multiple NLPIDs - NLPID 0x8f added (Avaya proprietary) - TLV 147 decoding added (Avaya proprietary) - TLV 184 Avaya prorietary IPVPN decoding added - TLV Types 185-186 Avaya proprietary IPVPN MC added without decoding
This commit is contained in:
parent
f96886ebef
commit
72a6e814bb
|
@ -425,33 +425,31 @@ isis_dissect_te_router_id_clv(proto_tree *tree, packet_info* pinfo, tvbuff_t *tv
|
|||
* Output:
|
||||
* void, but we will add to proto tree if !NULL.
|
||||
*/
|
||||
void
|
||||
isis_dissect_nlpid_clv(tvbuff_t *tvb, proto_tree *tree, int hf_nlpid, int offset, int length)
|
||||
{
|
||||
gboolean first;
|
||||
proto_item *ti;
|
||||
|
||||
if ( !tree ) return; /* nothing to do! */
|
||||
#define PLURALIZE(n) (((n) > 1) ? "s" : "")
|
||||
|
||||
void
|
||||
isis_dissect_nlpid_clv(tvbuff_t *tvb, proto_tree *tree, int ett_nlpid, int hf_nlpid, int offset, int length)
|
||||
{
|
||||
proto_tree *nlpid_tree;
|
||||
proto_item *ti;
|
||||
guint8 nlpid;
|
||||
|
||||
if (length <= 0) {
|
||||
proto_tree_add_item(tree, hf_nlpid, tvb, offset, length, ENC_NA);
|
||||
nlpid_tree = proto_tree_add_subtree_format(tree, tvb, offset, 0, ett_nlpid, NULL, "No NLPIDs");
|
||||
} else {
|
||||
first = TRUE;
|
||||
ti = proto_tree_add_bytes_format(tree, hf_nlpid, tvb, offset, length, NULL, "NLPID(s): ");
|
||||
nlpid_tree = proto_tree_add_subtree_format(tree, tvb, offset, length, ett_nlpid, &ti, "NLPID%s: ", PLURALIZE(length));
|
||||
while (length-- > 0 ) {
|
||||
if (!first) {
|
||||
nlpid = tvb_get_guint8(tvb, offset);
|
||||
proto_item_append_text(ti, "%s (0x%02x)",
|
||||
/* NLPID_IEEE_8021AQ conflicts with NLPID_SNDCF. In this context, we want the former. */
|
||||
(nlpid == NLPID_IEEE_8021AQ ? "IEEE 802.1aq (SPB)" : val_to_str_const(nlpid, nlpid_vals, "Unknown")),
|
||||
nlpid);
|
||||
if (length) {
|
||||
proto_item_append_text(ti, ", ");
|
||||
}
|
||||
proto_item_append_text(ti, "%s (0x%02x)",
|
||||
/* NLPID_IEEE_8021AQ conflicts with NLPID_SNDCF.
|
||||
* In this context, we want the former.
|
||||
*/
|
||||
(tvb_get_guint8(tvb, offset) == NLPID_IEEE_8021AQ
|
||||
? "IEEE 802.1aq (SPB)"
|
||||
: val_to_str_const(tvb_get_guint8(tvb, offset), nlpid_vals, "Unknown")),
|
||||
tvb_get_guint8(tvb, offset));
|
||||
proto_tree_add_uint(nlpid_tree, hf_nlpid, tvb, offset, 1, nlpid);
|
||||
offset++;
|
||||
first = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -57,8 +57,12 @@
|
|||
#define ISIS_CLV_MT_PORT_CAP 143 /* rfc6165, rfc7176 */
|
||||
#define ISIS_CLV_MT_CAP 144 /* rfc6329, rfc7176 */
|
||||
#define ISIS_CLV_TRILL_NEIGHBOR 145 /* rfc7176 */
|
||||
#define ISIS_CLV_AVAYA_MAC 147 /* Avaya/Extremenetworks proprietary: Reverse engineered */
|
||||
#define ISIS_CLV_BFD_ENABLED 148 /* rfc6213 */
|
||||
#define ISIS_CLV_SID_LABEL_BINDING 149 /* draft-previdi-isis-segment-routing-extensions-05 */
|
||||
#define ISIS_CLV_AVAYA_IPVPN 184 /* Avaya/Extremenetworks proprietary: Reverse engineered */
|
||||
#define ISIS_CLV_AVAYA_IPVPN_MC 185 /* Avaya/Extremenetworks proprietary: Reverse engineered */
|
||||
#define ISIS_CLV_AVAYA_IP_GRT_MC 186 /* Avaya/Extremenetworks proprietary: Reverse engineered */
|
||||
#define ISIS_CLV_RESTART 211 /* draft-ietf-isis-restart-01 */
|
||||
#define ISIS_CLV_MT_IS_REACH 222 /* draft-ietf-isis-wg-multi-topology-05 */
|
||||
#define ISIS_CLV_MT_SUPPORTED 229 /* draft-ietf-isis-wg-multi-topology-05 */
|
||||
|
@ -91,7 +95,7 @@ extern void isis_dissect_clvs(tvbuff_t *tvb, packet_info* pinfo, proto_tree *tre
|
|||
const isis_clv_handle_t *opts, expert_field *expert_short_len, isis_data_t *isis,
|
||||
int unknown_tree_id, int tree_type, int tree_length, expert_field *ei_unknown);
|
||||
|
||||
extern void isis_dissect_nlpid_clv(tvbuff_t *tvb, proto_tree *tree,
|
||||
extern void isis_dissect_nlpid_clv(tvbuff_t *tvb, proto_tree *tree, gint ett_nlpid,
|
||||
int hf_nlpid, int offset, int length);
|
||||
extern void isis_dissect_te_router_id_clv(proto_tree *tree, packet_info* pinfo, tvbuff_t *tvb, expert_field* expert,
|
||||
int offset, int length, int tree_id);
|
||||
|
|
|
@ -86,7 +86,7 @@ static int hf_isis_hello_bvid_m = -1;
|
|||
static int hf_isis_hello_area_address = -1;
|
||||
static int hf_isis_hello_instance_identifier = -1;
|
||||
static int hf_isis_hello_supported_itid = -1;
|
||||
static int hf_isis_hello_clv_nlpid = -1;
|
||||
static int hf_isis_hello_clv_nlpid_nlpid = -1;
|
||||
static int hf_isis_hello_clv_ip_authentication = -1;
|
||||
static int hf_isis_hello_authentication = -1;
|
||||
|
||||
|
@ -142,6 +142,7 @@ static gint ett_isis_hello_clv_is_neighbors = -1;
|
|||
static gint ett_isis_hello_clv_padding = -1;
|
||||
static gint ett_isis_hello_clv_unknown = -1;
|
||||
static gint ett_isis_hello_clv_nlpid = -1;
|
||||
static gint ett_isis_hello_clv_nlpid_nlpid = -1;
|
||||
static gint ett_isis_hello_clv_authentication = -1;
|
||||
static gint ett_isis_hello_clv_ip_authentication = -1;
|
||||
static gint ett_isis_hello_clv_ipv4_int_addr = -1;
|
||||
|
@ -566,7 +567,7 @@ static void
|
|||
dissect_hello_nlpid_clv(tvbuff_t *tvb, packet_info* pinfo _U_,
|
||||
proto_tree *tree, int offset, isis_data_t *isis _U_, int length)
|
||||
{
|
||||
isis_dissect_nlpid_clv(tvb, tree, hf_isis_hello_clv_nlpid, offset, length);
|
||||
isis_dissect_nlpid_clv(tvb, tree, ett_isis_hello_clv_nlpid_nlpid, hf_isis_hello_clv_nlpid_nlpid, offset, length);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1580,7 +1581,7 @@ proto_register_isis_hello(void)
|
|||
{ &hf_isis_hello_area_address, { "Area address", "isis.hello.area_address", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
|
||||
{ &hf_isis_hello_instance_identifier, { "Instance Identifier", "isis.hello.iid", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
|
||||
{ &hf_isis_hello_supported_itid, { "Supported ITID", "isis.hello.supported_itid", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
|
||||
{ &hf_isis_hello_clv_nlpid, { "NLPID", "isis.hello.clv_nlpid", FT_BYTES, BASE_NONE|BASE_ALLOW_ZERO, NULL, 0x0, NULL, HFILL }},
|
||||
{ &hf_isis_hello_clv_nlpid_nlpid, { "NLPID", "isis.hello.clv_nlpid.nlpid", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
|
||||
{ &hf_isis_hello_clv_ip_authentication, { "NLPID", "isis.hello.clv_ip_authentication", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }},
|
||||
{ &hf_isis_hello_authentication, { "Authentication", "isis.hello.clv_authentication", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
|
||||
{ &hf_isis_hello_mtid, { "Topology ID", "isis.hello.mtid", FT_UINT16, BASE_DEC|BASE_RANGE_STRING, RVALS(mtid_strings), 0xfff, NULL, HFILL }},
|
||||
|
@ -1642,6 +1643,7 @@ proto_register_isis_hello(void)
|
|||
&ett_isis_hello_clv_padding,
|
||||
&ett_isis_hello_clv_unknown,
|
||||
&ett_isis_hello_clv_nlpid,
|
||||
&ett_isis_hello_clv_nlpid_nlpid,
|
||||
&ett_isis_hello_clv_authentication,
|
||||
&ett_isis_hello_clv_ip_authentication,
|
||||
&ett_isis_hello_clv_ipv4_int_addr,
|
||||
|
|
|
@ -415,7 +415,7 @@ static int hf_isis_lsp_clv_srv6_endx_sid_subsubclvs_len = -1;
|
|||
static int hf_isis_lsp_area_address = -1;
|
||||
static int hf_isis_lsp_instance_identifier = -1;
|
||||
static int hf_isis_lsp_supported_itid = -1;
|
||||
static int hf_isis_lsp_clv_nlpid = -1;
|
||||
static int hf_isis_lsp_clv_nlpid_nlpid = -1;
|
||||
static int hf_isis_lsp_ip_authentication = -1;
|
||||
static int hf_isis_lsp_authentication = -1;
|
||||
static int hf_isis_lsp_area_address_str = -1;
|
||||
|
@ -457,6 +457,25 @@ static int hf_isis_lsp_clv_srv6_end_sid_sid = -1;
|
|||
static int hf_isis_lsp_clv_srv6_end_sid_subsubclvs_len = -1;
|
||||
static int hf_isis_lsp_purge_orig_id_num = -1;
|
||||
static int hf_isis_lsp_purge_orig_id_system_id = -1;
|
||||
/* Avaya proprietary */
|
||||
static int hf_isis_lsp_avaya_147_unknown = -1;
|
||||
static int hf_isis_lsp_avaya_147_mac = -1;
|
||||
static int hf_isis_lsp_avaya_147_fanmcast = -1;
|
||||
static int hf_isis_lsp_avaya_ipvpn_unknown = -1;
|
||||
static int hf_isis_lsp_avaya_ipvpn_system_id = -1;
|
||||
static int hf_isis_lsp_avaya_ipvpn_vrfsid = -1;
|
||||
static int hf_isis_lsp_avaya_ipvpn_subtlvbytes = -1;
|
||||
static int hf_isis_lsp_avaya_ipvpn_subtlvtype = -1;
|
||||
static int hf_isis_lsp_avaya_ipvpn_subtlvlength = -1;
|
||||
static int hf_isis_lsp_avaya_ipvpn_unknown_sub = -1;
|
||||
static int hf_isis_lsp_avaya_ipvpn_ipv4_metric = -1;
|
||||
static int hf_isis_lsp_avaya_ipvpn_ipv4_addr = -1;
|
||||
static int hf_isis_lsp_avaya_ipvpn_ipv4_mask = -1;
|
||||
static int hf_isis_lsp_avaya_ipvpn_ipv6_metric = -1;
|
||||
static int hf_isis_lsp_avaya_ipvpn_ipv6_prefixlen = -1;
|
||||
static int hf_isis_lsp_avaya_ipvpn_ipv6_prefix = -1;
|
||||
static int hf_isis_lsp_avaya_185_unknown = -1;
|
||||
static int hf_isis_lsp_avaya_186_unknown = -1;
|
||||
|
||||
static gint ett_isis_lsp = -1;
|
||||
static gint ett_isis_lsp_info = -1;
|
||||
|
@ -476,7 +495,7 @@ static gint ett_isis_lsp_adj_sid_flags = -1;
|
|||
static gint ett_isis_lsp_clv_unknown = -1;
|
||||
static gint ett_isis_lsp_clv_partition_dis = -1;
|
||||
static gint ett_isis_lsp_clv_prefix_neighbors = -1;
|
||||
static gint ett_isis_lsp_clv_nlpid = -1;
|
||||
static gint ett_isis_lsp_clv_nlpid_nlpid = -1;
|
||||
static gint ett_isis_lsp_clv_hostname = -1;
|
||||
static gint ett_isis_lsp_clv_srlg = -1;
|
||||
static gint ett_isis_lsp_clv_te_router_id = -1;
|
||||
|
@ -535,6 +554,12 @@ static gint ett_isis_lsp_clv_srv6_locator = -1;
|
|||
static gint ett_isis_lsp_clv_srv6_loc_flags = -1;
|
||||
static gint ett_isis_lsp_clv_srv6_loc_sub_tlv = -1;
|
||||
static gint ett_isis_lsp_clv_srv6_endx_sid_flags = -1;
|
||||
static gint ett_isis_lsp_clv_avaya_mac = -1;
|
||||
static gint ett_isis_lsp_clv_avaya_ipvpn = -1;
|
||||
static gint ett_isis_lsp_clv_avaya_ipvpn_subtlv = -1;
|
||||
static gint ett_isis_lsp_clv_avaya_ipvpn_mc = -1;
|
||||
static gint ett_isis_lsp_clv_avaya_ip_grt_mc = -1;
|
||||
|
||||
|
||||
static expert_field ei_isis_lsp_short_pdu = EI_INIT;
|
||||
static expert_field ei_isis_lsp_long_pdu = EI_INIT;
|
||||
|
@ -543,9 +568,11 @@ static expert_field ei_isis_lsp_subtlv = EI_INIT;
|
|||
static expert_field ei_isis_lsp_authentication = EI_INIT;
|
||||
static expert_field ei_isis_lsp_short_clv = EI_INIT;
|
||||
static expert_field ei_isis_lsp_long_clv = EI_INIT;
|
||||
static expert_field ei_isis_lsp_length_clv = EI_INIT;
|
||||
static expert_field ei_isis_lsp_clv_mt = EI_INIT;
|
||||
static expert_field ei_isis_lsp_clv_unknown = EI_INIT;
|
||||
static expert_field ei_isis_lsp_malformed_subtlv = EI_INIT;
|
||||
static expert_field ei_isis_lsp_unknown_subtlv = EI_INIT;
|
||||
static expert_field ei_isis_lsp_reserved_not_zero = EI_INIT;
|
||||
static expert_field ei_isis_lsp_length_invalid = EI_INIT;
|
||||
|
||||
|
@ -748,6 +775,13 @@ static const value_string isis_lsp_bier_subsubtlv_type_vals[] = {
|
|||
{ 0, NULL }
|
||||
};
|
||||
|
||||
/* Avaya specific sub-TLV types */
|
||||
static const value_string isis_lsp_avaya_ipvpn_subtlv_code_vals[] = {
|
||||
{ 135, "IPv4 Reachability" },
|
||||
{ 236, "IPv6 Reachability" },
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
||||
/*
|
||||
* Name: dissect_lsp_mt_id()
|
||||
*
|
||||
|
@ -1921,7 +1955,7 @@ static void
|
|||
dissect_lsp_nlpid_clv(tvbuff_t *tvb, packet_info* pinfo _U_, proto_tree *tree, int offset,
|
||||
isis_data_t *isis _U_, int length)
|
||||
{
|
||||
isis_dissect_nlpid_clv(tvb, tree, hf_isis_lsp_clv_nlpid, offset, length);
|
||||
isis_dissect_nlpid_clv(tvb, tree, ett_isis_lsp_clv_nlpid_nlpid, hf_isis_lsp_clv_nlpid_nlpid, offset, length);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -3769,6 +3803,120 @@ dissect_lsp_purge_orig_id_clv(tvbuff_t *tvb, packet_info* pinfo, proto_tree *tre
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
dissect_lsp_avaya_mac(tvbuff_t *tvb, packet_info* pinfo _U_, proto_tree *tree, int offset,
|
||||
isis_data_t *isis _U_, int length)
|
||||
{
|
||||
if (length != 11 && length != 17) {
|
||||
proto_tree_add_expert_format(tree, pinfo, &ei_isis_lsp_length_clv, tvb, offset, length,
|
||||
"Unexpected length of Avaya MAC TLV (%d vs 11 or 17)",
|
||||
length);
|
||||
return;
|
||||
}
|
||||
proto_tree_add_item(tree, hf_isis_lsp_avaya_147_unknown, tvb, offset, 5, ENC_NA);
|
||||
proto_tree_add_item(tree, hf_isis_lsp_avaya_147_mac, tvb, offset + 5, 6, ENC_NA);
|
||||
if (length == 17)
|
||||
proto_tree_add_item(tree, hf_isis_lsp_avaya_147_fanmcast, tvb, offset + 11, 6, ENC_NA);
|
||||
}
|
||||
|
||||
static void
|
||||
dissect_lsp_avaya_ipvpn(tvbuff_t *tvb, packet_info* pinfo _U_, proto_tree *tree, int offset,
|
||||
isis_data_t *isis _U_, int length)
|
||||
{
|
||||
guint subtlvbytes;
|
||||
proto_item *ti;
|
||||
proto_item *ti_pfxlen, *ti_prefix;
|
||||
proto_tree *subtlvtree;
|
||||
guint subtype;
|
||||
guint sublength;
|
||||
|
||||
if (length < 15) {
|
||||
proto_tree_add_expert_format(tree, pinfo, &ei_isis_lsp_short_clv, tvb, offset, length,
|
||||
"Too short LSP Avaya IPVPN (%d vs min 15)",
|
||||
length);
|
||||
return;
|
||||
}
|
||||
proto_tree_add_item(tree, hf_isis_lsp_avaya_ipvpn_unknown, tvb, offset, 4, ENC_NA);
|
||||
offset += 4;
|
||||
proto_tree_add_item(tree, hf_isis_lsp_avaya_ipvpn_system_id, tvb, offset, 7, ENC_NA);
|
||||
offset += 7;
|
||||
proto_tree_add_item(tree, hf_isis_lsp_avaya_ipvpn_vrfsid, tvb, offset, 3, ENC_BIG_ENDIAN);
|
||||
offset += 3;
|
||||
proto_tree_add_item_ret_uint(tree, hf_isis_lsp_avaya_ipvpn_subtlvbytes, tvb, offset, 1, ENC_NA, &subtlvbytes);
|
||||
offset += 1;
|
||||
|
||||
if ((guint)length != 15+subtlvbytes) {
|
||||
proto_tree_add_expert_format(tree, pinfo, &ei_isis_lsp_length_clv, tvb, offset, length,
|
||||
"Inconsistent length of LSP Avaya IPVPN with subtlvs (%d vs min %d)",
|
||||
length, 15 + subtlvbytes);
|
||||
return;
|
||||
}
|
||||
while (subtlvbytes > 0) {
|
||||
if (subtlvbytes == 1) {
|
||||
proto_tree_add_expert_format(tree, pinfo, &ei_isis_lsp_malformed_subtlv, tvb, offset, length,
|
||||
"Too few bytes remaining for Sub-TLV header (1 vs 2)");
|
||||
return;
|
||||
}
|
||||
subtype = tvb_get_guint8(tvb, offset);
|
||||
sublength = tvb_get_guint8(tvb, offset + 1);
|
||||
subtlvtree = proto_tree_add_subtree_format(tree, tvb, offset, sublength + 2, ett_isis_lsp_clv_avaya_ipvpn_subtlv, &ti, "%s",
|
||||
val_to_str(subtype, isis_lsp_avaya_ipvpn_subtlv_code_vals, "Unknown"));
|
||||
proto_tree_add_item(subtlvtree, hf_isis_lsp_avaya_ipvpn_subtlvtype, tvb, offset, 1, ENC_NA);
|
||||
proto_tree_add_item(subtlvtree, hf_isis_lsp_avaya_ipvpn_subtlvlength, tvb, offset + 1, 1, ENC_NA);
|
||||
offset += 2;
|
||||
switch (subtype) {
|
||||
case 135: /* IPv4 */
|
||||
if (sublength != 12) {
|
||||
proto_tree_add_expert_format(subtlvtree, pinfo, &ei_isis_lsp_malformed_subtlv, tvb, offset, sublength,
|
||||
"Unexpected IPv4 Reachability sub-TLV length (%d vs 12)", sublength);
|
||||
}
|
||||
proto_tree_add_item(subtlvtree, hf_isis_lsp_avaya_ipvpn_ipv4_metric, tvb, offset, 4, ENC_BIG_ENDIAN);
|
||||
offset += 4;
|
||||
ti_prefix = proto_tree_add_item(subtlvtree, hf_isis_lsp_avaya_ipvpn_ipv4_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
|
||||
offset += 4;
|
||||
ti_pfxlen = proto_tree_add_item(subtlvtree, hf_isis_lsp_avaya_ipvpn_ipv4_mask, tvb, offset, 4, ENC_BIG_ENDIAN);
|
||||
offset += 4;
|
||||
proto_item_append_text(ti, ": %s/%s", proto_item_get_display_repr(wmem_packet_scope(), ti_prefix),
|
||||
proto_item_get_display_repr(wmem_packet_scope(), ti_pfxlen));
|
||||
break;
|
||||
case 236: /* IPv6 */
|
||||
if (sublength != 22) {
|
||||
proto_tree_add_expert_format(subtlvtree, pinfo, &ei_isis_lsp_malformed_subtlv, tvb, offset, sublength,
|
||||
"Unexpected IPv6 Reachability sub-TLV length (%d vs 22)", sublength);
|
||||
}
|
||||
proto_tree_add_item(subtlvtree, hf_isis_lsp_avaya_ipvpn_ipv6_metric, tvb, offset, 4, ENC_BIG_ENDIAN);
|
||||
offset += 4;
|
||||
ti_pfxlen = proto_tree_add_item(subtlvtree, hf_isis_lsp_avaya_ipvpn_ipv6_prefixlen, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
offset += 2;
|
||||
ti_prefix = proto_tree_add_item(subtlvtree, hf_isis_lsp_avaya_ipvpn_ipv6_prefix, tvb, offset, 16, ENC_NA);
|
||||
offset += 16;
|
||||
proto_item_append_text(ti, ": %s/%s", proto_item_get_display_repr(wmem_packet_scope(), ti_prefix),
|
||||
proto_item_get_display_repr(wmem_packet_scope(), ti_pfxlen));
|
||||
break;
|
||||
default:
|
||||
proto_tree_add_item(subtlvtree, hf_isis_lsp_avaya_ipvpn_unknown_sub, tvb, offset, 4, ENC_NA);
|
||||
proto_tree_add_expert_format(subtlvtree, pinfo, &ei_isis_lsp_unknown_subtlv, tvb, offset, length,
|
||||
"Unknown Avaya IPVPN subTLV (%d): Please report to Wireshark developers.", subtype);
|
||||
offset += sublength;
|
||||
}
|
||||
subtlvbytes -= (2 + sublength);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
dissect_lsp_avaya_ipvpn_mc(tvbuff_t *tvb, packet_info* pinfo _U_, proto_tree *tree, int offset,
|
||||
isis_data_t *isis _U_, int length)
|
||||
{
|
||||
proto_tree_add_item(tree, hf_isis_lsp_avaya_185_unknown, tvb, offset, length, ENC_NA);
|
||||
}
|
||||
|
||||
static void
|
||||
dissect_lsp_avaya_ip_grt_mc(tvbuff_t *tvb, packet_info* pinfo _U_, proto_tree *tree, int offset,
|
||||
isis_data_t *isis _U_, int length)
|
||||
{
|
||||
proto_tree_add_item(tree, hf_isis_lsp_avaya_186_unknown, tvb, offset, length, ENC_NA);
|
||||
}
|
||||
|
||||
static const isis_clv_handle_t clv_l1_lsp_opts[] = {
|
||||
{
|
||||
ISIS_CLV_AREA_ADDRESS,
|
||||
|
@ -3833,7 +3981,7 @@ static const isis_clv_handle_t clv_l1_lsp_opts[] = {
|
|||
{
|
||||
ISIS_CLV_PROTOCOLS_SUPPORTED,
|
||||
"Protocols supported",
|
||||
&ett_isis_lsp_clv_nlpid,
|
||||
&ett_isis_lsp_clv_nlpid_nlpid,
|
||||
dissect_lsp_nlpid_clv
|
||||
},
|
||||
{
|
||||
|
@ -3944,6 +4092,30 @@ static const isis_clv_handle_t clv_l1_lsp_opts[] = {
|
|||
&ett_isis_lsp_clv_purge_orig_id,
|
||||
dissect_lsp_purge_orig_id_clv
|
||||
},
|
||||
{
|
||||
ISIS_CLV_AVAYA_MAC,
|
||||
"Avaya MAC",
|
||||
&ett_isis_lsp_clv_avaya_mac,
|
||||
dissect_lsp_avaya_mac
|
||||
},
|
||||
{
|
||||
ISIS_CLV_AVAYA_IPVPN,
|
||||
"Avaya IPVPN",
|
||||
&ett_isis_lsp_clv_avaya_ipvpn,
|
||||
dissect_lsp_avaya_ipvpn
|
||||
},
|
||||
{
|
||||
ISIS_CLV_AVAYA_IPVPN_MC,
|
||||
"Avaya IPVPN MCast",
|
||||
&ett_isis_lsp_clv_avaya_ipvpn_mc,
|
||||
dissect_lsp_avaya_ipvpn_mc
|
||||
},
|
||||
{
|
||||
ISIS_CLV_AVAYA_IP_GRT_MC,
|
||||
"Avaya IP GRT MCast",
|
||||
&ett_isis_lsp_clv_avaya_ip_grt_mc,
|
||||
dissect_lsp_avaya_ip_grt_mc
|
||||
},
|
||||
{
|
||||
0,
|
||||
"",
|
||||
|
@ -4010,7 +4182,7 @@ static const isis_clv_handle_t clv_l2_lsp_opts[] = {
|
|||
{
|
||||
ISIS_CLV_PROTOCOLS_SUPPORTED,
|
||||
"Protocols supported",
|
||||
&ett_isis_lsp_clv_nlpid,
|
||||
&ett_isis_lsp_clv_nlpid_nlpid,
|
||||
dissect_lsp_nlpid_clv
|
||||
},
|
||||
{
|
||||
|
@ -5778,9 +5950,9 @@ proto_register_isis_lsp(void)
|
|||
FT_UINT16, BASE_DEC, NULL, 0x0,
|
||||
NULL, HFILL }
|
||||
},
|
||||
{ &hf_isis_lsp_clv_nlpid,
|
||||
{ "NLPID", "isis.lsp.clv_nlpid",
|
||||
FT_BYTES, BASE_NONE|BASE_ALLOW_ZERO, NULL, 0x0,
|
||||
{ &hf_isis_lsp_clv_nlpid_nlpid,
|
||||
{ "NLPID", "isis.lsp.clv_nlpid.nlpid",
|
||||
FT_UINT8, BASE_HEX, NULL, 0x0,
|
||||
NULL, HFILL }
|
||||
},
|
||||
{ &hf_isis_lsp_ip_authentication,
|
||||
|
@ -5910,6 +6082,97 @@ proto_register_isis_lsp(void)
|
|||
FT_UINT24, BASE_DEC, NULL, 0x0FFFFF,
|
||||
NULL, HFILL }
|
||||
},
|
||||
/* Avaya proprietary */
|
||||
{ &hf_isis_lsp_avaya_147_unknown,
|
||||
{ "Unknown", "isis.lsp.avaya.147.unknown",
|
||||
FT_BYTES, BASE_NONE, NULL, 0x0,
|
||||
NULL, HFILL }
|
||||
},
|
||||
{ &hf_isis_lsp_avaya_147_mac,
|
||||
{ "Chassis MAC", "isis.lsp.avaya.147.chassismac",
|
||||
FT_ETHER, BASE_NONE, NULL, 0x0,
|
||||
NULL, HFILL }
|
||||
},
|
||||
{ &hf_isis_lsp_avaya_147_fanmcast,
|
||||
{ "FAN Mcast", "isis.lsp.avaya.147.fanmcast",
|
||||
FT_ETHER, BASE_NONE, NULL, 0x0,
|
||||
NULL, HFILL }
|
||||
},
|
||||
{ &hf_isis_lsp_avaya_ipvpn_unknown,
|
||||
{ "Unknown", "isis.lsp.avaya.ipvpn.unknown",
|
||||
FT_BYTES, BASE_NONE, NULL, 0x0,
|
||||
NULL, HFILL }
|
||||
},
|
||||
{ &hf_isis_lsp_avaya_ipvpn_system_id,
|
||||
{ "System-ID", "isis.lsp.avaya.ipvpn.system_id",
|
||||
FT_SYSTEM_ID, BASE_NONE, NULL, 0x0,
|
||||
NULL, HFILL }
|
||||
},
|
||||
{ &hf_isis_lsp_avaya_ipvpn_vrfsid,
|
||||
{ "Vrf I-SID", "isis.lsp.avaya.ipvpn.vrfsid",
|
||||
FT_UINT24, BASE_DEC, NULL, 0x0,
|
||||
NULL, HFILL }
|
||||
},
|
||||
{ &hf_isis_lsp_avaya_ipvpn_subtlvbytes,
|
||||
{ "SubTLV Bytes", "isis.lsp.avaya.ipvpn.subtlvbytes",
|
||||
FT_UINT8, BASE_DEC, NULL, 0x0,
|
||||
NULL, HFILL }
|
||||
},
|
||||
{ &hf_isis_lsp_avaya_ipvpn_subtlvtype,
|
||||
{ "SubTLV Type", "isis.lsp.avaya.ipvpn.subtlvtype",
|
||||
FT_UINT8, BASE_DEC, VALS(isis_lsp_avaya_ipvpn_subtlv_code_vals), 0x0,
|
||||
NULL, HFILL }
|
||||
},
|
||||
{ &hf_isis_lsp_avaya_ipvpn_subtlvlength,
|
||||
{ "SubTLV Length", "isis.lsp.avaya.ipvpn.subtlvlength",
|
||||
FT_UINT8, BASE_DEC, NULL, 0x0,
|
||||
NULL, HFILL }
|
||||
},
|
||||
{ &hf_isis_lsp_avaya_ipvpn_unknown_sub,
|
||||
{ "Unknown", "isis.lsp.avaya.ipvpn.sub.unknown",
|
||||
FT_BYTES, BASE_NONE, NULL, 0x0,
|
||||
NULL, HFILL }
|
||||
},
|
||||
{ &hf_isis_lsp_avaya_ipvpn_ipv4_metric,
|
||||
{ "Metric", "isis.lsp.avaya.ipvpn.ipv4.metric",
|
||||
FT_UINT32, BASE_DEC, NULL, 0x0,
|
||||
NULL, HFILL }
|
||||
},
|
||||
{ &hf_isis_lsp_avaya_ipvpn_ipv4_addr,
|
||||
{ "IPv4 Address", "isis.lsp.avaya.ipvpn.ipv4.address",
|
||||
FT_IPv4, BASE_NONE, NULL, 0x0,
|
||||
NULL, HFILL }
|
||||
},
|
||||
{ &hf_isis_lsp_avaya_ipvpn_ipv4_mask,
|
||||
{ "IPv4 Mask", "isis.lsp.avaya.ipvpn.ipv4.mask",
|
||||
FT_IPv4, BASE_NONE, NULL, 0x0,
|
||||
NULL, HFILL }
|
||||
},
|
||||
{ &hf_isis_lsp_avaya_ipvpn_ipv6_metric,
|
||||
{ "Metric", "isis.lsp.avaya.ipvpn.ipv6.metric",
|
||||
FT_UINT32, BASE_DEC, NULL, 0x0,
|
||||
NULL, HFILL }
|
||||
},
|
||||
{ &hf_isis_lsp_avaya_ipvpn_ipv6_prefixlen,
|
||||
{ "Prefix length", "isis.lsp.avaya.ipvpn.ipv6.prefixlen",
|
||||
FT_UINT16, BASE_DEC, NULL, 0x0,
|
||||
NULL, HFILL }
|
||||
},
|
||||
{ &hf_isis_lsp_avaya_ipvpn_ipv6_prefix,
|
||||
{ "Prefix", "isis.lsp.avaya.ipvpn.ipv6.prefix",
|
||||
FT_IPv6, BASE_NONE, NULL, 0x0,
|
||||
NULL, HFILL }
|
||||
},
|
||||
{ &hf_isis_lsp_avaya_185_unknown,
|
||||
{ "Unknown", "isis.lsp.avaya.185.unknown",
|
||||
FT_BYTES, BASE_NONE, NULL, 0x0,
|
||||
NULL, HFILL }
|
||||
},
|
||||
{ &hf_isis_lsp_avaya_186_unknown,
|
||||
{ "Unknown", "isis.lsp.avaya.186.unknown",
|
||||
FT_BYTES, BASE_NONE, NULL, 0x0,
|
||||
NULL, HFILL }
|
||||
},
|
||||
};
|
||||
static gint *ett[] = {
|
||||
&ett_isis_lsp,
|
||||
|
@ -5932,7 +6195,7 @@ proto_register_isis_lsp(void)
|
|||
&ett_isis_lsp_clv_prefix_neighbors,
|
||||
&ett_isis_lsp_clv_authentication,
|
||||
&ett_isis_lsp_clv_ip_authentication,
|
||||
&ett_isis_lsp_clv_nlpid,
|
||||
&ett_isis_lsp_clv_nlpid_nlpid,
|
||||
&ett_isis_lsp_clv_hostname,
|
||||
&ett_isis_lsp_clv_srlg,
|
||||
&ett_isis_lsp_clv_ipv4_int_addr,
|
||||
|
@ -5988,7 +6251,12 @@ proto_register_isis_lsp(void)
|
|||
&ett_isis_lsp_sl_flags,
|
||||
&ett_isis_lsp_sl_sub_tlv,
|
||||
&ett_isis_lsp_sl_sub_tlv_flags,
|
||||
&ett_isis_lsp_clv_ipv6_te_router_id /* CLV 140, rfc6119 */
|
||||
&ett_isis_lsp_clv_ipv6_te_router_id, /* CLV 140, rfc6119 */
|
||||
&ett_isis_lsp_clv_avaya_mac, /* Avaya/Extremenetworks proprietary */
|
||||
&ett_isis_lsp_clv_avaya_ipvpn,
|
||||
&ett_isis_lsp_clv_avaya_ipvpn_subtlv,
|
||||
&ett_isis_lsp_clv_avaya_ipvpn_mc,
|
||||
&ett_isis_lsp_clv_avaya_ip_grt_mc
|
||||
};
|
||||
|
||||
static ei_register_info ei[] = {
|
||||
|
@ -5999,9 +6267,11 @@ proto_register_isis_lsp(void)
|
|||
{ &ei_isis_lsp_authentication, { "isis.lsp.authentication.unknown", PI_PROTOCOL, PI_WARN, "Unknown authentication type", EXPFILL }},
|
||||
{ &ei_isis_lsp_short_clv, { "isis.lsp.short_clv", PI_MALFORMED, PI_ERROR, "Short CLV", EXPFILL }},
|
||||
{ &ei_isis_lsp_long_clv, { "isis.lsp.long_clv", PI_MALFORMED, PI_ERROR, "Long CLV", EXPFILL }},
|
||||
{ &ei_isis_lsp_length_clv, { "isis.lsp.length_clv", PI_MALFORMED, PI_ERROR, "Wrong length CLV", EXPFILL }},
|
||||
{ &ei_isis_lsp_clv_mt, { "isis.lsp.clv_mt.malformed", PI_MALFORMED, PI_ERROR, "malformed MT-ID", EXPFILL }},
|
||||
{ &ei_isis_lsp_clv_unknown, { "isis.lsp.clv.unknown", PI_UNDECODED, PI_NOTE, "Unknown option", EXPFILL }},
|
||||
{ &ei_isis_lsp_malformed_subtlv, { "isis.lsp.subtlv.malformed", PI_MALFORMED, PI_ERROR, "malformed SubTLV", EXPFILL }},
|
||||
{ &ei_isis_lsp_unknown_subtlv, { "isis.lsp.subtlv.unknown", PI_UNDECODED, PI_NOTE, "Unknown SubTLV", EXPFILL }},
|
||||
{ &ei_isis_lsp_reserved_not_zero, { "isis.lsp.reserved_not_zero", PI_PROTOCOL, PI_WARN, "Reserve bit not 0", EXPFILL }},
|
||||
{ &ei_isis_lsp_length_invalid, { "isis.lsp.length.invalid", PI_PROTOCOL, PI_WARN, "Invalid length", EXPFILL }},
|
||||
};
|
||||
|
|
|
@ -403,6 +403,7 @@ const value_string nlpid_vals[] = {
|
|||
{ NLPID_ISO9542_ESIS, "ESIS" },
|
||||
{ NLPID_ISO10589_ISIS, "ISIS" },
|
||||
{ NLPID_ISO10747_IDRP, "IDRP" },
|
||||
{ NLPID_AVAYA_MAC, "Avaya MAC" },
|
||||
{ NLPID_ISO9542X25_ESIS, "ESIS (X.25)" },
|
||||
{ NLPID_ISO10030, "ISO 10030" },
|
||||
{ NLPID_ISO11577, "ISO 11577" },
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
#define NLPID_ISO10030 0x8c
|
||||
#define NLPID_ISO11577 0x8d /* X.273 */
|
||||
#define NLPID_IP6 0x8e
|
||||
#define NLPID_AVAYA_MAC 0x8f
|
||||
#define NLPID_COMPRESSED 0xb0 /* "Data compression protocol" */
|
||||
#define NLPID_TRILL 0xc0
|
||||
#define NLPID_SNDCF 0xc1 /* "SubNetwork Dependent Convergence Function */
|
||||
|
|
Loading…
Reference in New Issue