diff options
author | Yann Lejeune <ylejeune@netyl.org> | 2014-12-13 01:01:33 +0100 |
---|---|---|
committer | Alexis La Goutte <alexis.lagoutte@gmail.com> | 2014-12-16 09:14:55 +0000 |
commit | 8d1a555901596ba277963ad82c04a37dafb64fd3 (patch) | |
tree | 94833e9188a38746273201501f094a88b5b63e0c /epan/dissectors | |
parent | 84c6c740419020b69cbce17c8ef4928e49611770 (diff) |
ISIS LSP: Add Segment Routing Algorithm Sub TLV dissection
This commit implements a part of draft-ietf-isis-segment-routing-extensions:
- 3.2. SR-Algorithm Sub-TLV
Change-Id: Ibb419de234bf5a199f8067989b1321064fa93983
Ping-Bug: 10520
Reviewed-on: https://code.wireshark.org/review/5742
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Diffstat (limited to 'epan/dissectors')
-rw-r--r-- | epan/dissectors/packet-isis-lsp.c | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/epan/dissectors/packet-isis-lsp.c b/epan/dissectors/packet-isis-lsp.c index 83162ee528..aa4e03e4f5 100644 --- a/epan/dissectors/packet-isis-lsp.c +++ b/epan/dissectors/packet-isis-lsp.c @@ -100,6 +100,7 @@ #define INTERESTED_VLANS 10 #define TRILL_VERSION 13 #define VLAN_GROUP 14 +#define SEGMENT_ROUTING_ALG 19 /*Sub-TLVs under Group Address TLV*/ @@ -110,6 +111,9 @@ /* Segment Routing Sub-TLV */ #define ISIS_SR_SID_LABEL 1 +/* Segment routing Algorithm */ +#define ISIS_SR_ALG_SPF 0 + const range_string mtid_strings[] = { { 0, 0, "Standard topology" }, { 1, 1, "IPv4 In-Band Management" }, @@ -275,6 +279,7 @@ static int hf_isis_lsp_clv_sr_cap_v_flag = -1; static int hf_isis_lsp_clv_sr_cap_range = -1; static int hf_isis_lsp_clv_sr_cap_sid = -1; static int hf_isis_lsp_clv_sr_cap_label = -1; +static int hf_isis_lsp_clv_sr_alg = -1; static int hf_isis_lsp_area_address = -1; static int hf_isis_lsp_clv_nlpid = -1; static int hf_isis_lsp_ip_authentication = -1; @@ -320,6 +325,7 @@ static gint ett_isis_lsp_clv_rt_capable = -1; /* CLV 242 */ static gint ett_isis_lsp_clv_te_node_cap_desc = -1; static gint ett_isis_lsp_clv_sr_cap = -1; static gint ett_isis_lsp_clv_sr_sid_label = -1; +static gint ett_isis_lsp_clv_sr_alg = -1; static gint ett_isis_lsp_clv_trill_version = -1; static gint ett_isis_lsp_clv_trees = -1; static gint ett_isis_lsp_clv_root_id = -1; @@ -353,6 +359,10 @@ static const true_false_string tfs_notsupported_supported = { "Not Supported", " static const true_false_string tfs_internal_external = { "Internal", "External" }; static const true_false_string tfs_external_internal = { "External", "Internal" }; +static const value_string isis_lsp_sr_alg_vals[] = { + { ISIS_SR_ALG_SPF, "Shortest Path First (SPF)" }, + { 0, NULL } +}; /* * Name: dissect_lsp_mt_id() * @@ -928,6 +938,7 @@ dissect_isis_trill_clv(tvbuff_t *tvb, packet_info* pinfo _U_, proto_tree *rt_tree, *cap_tree; guint16 root_id; guint8 tlv_type, tlv_len; + int i; switch (subtype) { @@ -1105,6 +1116,17 @@ dissect_isis_trill_clv(tvbuff_t *tvb, packet_info* pinfo _U_, return(0); + case SEGMENT_ROUTING_ALG: + rt_tree = proto_tree_add_subtree_format(tree, tvb, offset-2, sublen+2, + ett_isis_lsp_clv_sr_alg, NULL, "Segment Routing - Algorithms (t=%u, l=%u)", + subtype, sublen); + i = 0; + while (i < sublen) { + proto_tree_add_item(rt_tree, hf_isis_lsp_clv_sr_alg, tvb, offset+i, 1, ENC_NA); + i++; + } + return(0); + default: return(-1); } @@ -3657,6 +3679,11 @@ proto_register_isis_lsp(void) FT_UINT24, BASE_DEC, NULL, 0x0, NULL, HFILL } }, + { &hf_isis_lsp_clv_sr_alg, + { "Algorithm", "isis.lsp.sr_alg", + FT_UINT8, BASE_DEC, VALS(isis_lsp_sr_alg_vals), 0x0, + NULL, HFILL } + }, { &hf_isis_lsp_area_address, { "Area address", "isis.lsp.area_address", FT_BYTES, BASE_NONE, NULL, 0x0, @@ -3730,7 +3757,8 @@ proto_register_isis_lsp(void) &ett_isis_lsp_clv_mt_reachable_IPv6_prefx, &ett_isis_lsp_clv_originating_buff_size, /* CLV 14 */ &ett_isis_lsp_clv_sr_cap, - &ett_isis_lsp_clv_sr_sid_label + &ett_isis_lsp_clv_sr_sid_label, + &ett_isis_lsp_clv_sr_alg }; static ei_register_info ei[] = { |