diff options
author | Alexis La Goutte <alexis.lagoutte@gmail.com> | 2015-06-03 08:55:37 +0200 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2015-06-03 13:52:19 +0000 |
commit | ee5166185e0d4f55d95f60a08d04e5f6acace10d (patch) | |
tree | 5c09b390cfcbcdbda5f02176a02a50c52cd76237 /epan/dissectors/packet-isis-lsp.c | |
parent | 4490d5eb49339a81acfbd0845f6e4594e6d56e8e (diff) |
IS-IS (LSP) Add Shared Risk Link Group (SRLG) clv (138)
Bug:11246
Change-Id: I303de72cda8e667dcd3ccd1af3f2989123718544
Reviewed-on: https://code.wireshark.org/review/8743
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors/packet-isis-lsp.c')
-rw-r--r-- | epan/dissectors/packet-isis-lsp.c | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/epan/dissectors/packet-isis-lsp.c b/epan/dissectors/packet-isis-lsp.c index fca66ba0af..b70ca67c95 100644 --- a/epan/dissectors/packet-isis-lsp.c +++ b/epan/dissectors/packet-isis-lsp.c @@ -149,6 +149,12 @@ static int hf_isis_lsp_remaining_life = -1; static int hf_isis_lsp_sequence_number = -1; static int hf_isis_lsp_lsp_id = -1; static int hf_isis_lsp_hostname = -1; +static int hf_isis_lsp_srlg_system_id = -1; +static int hf_isis_lsp_srlg_pseudo_num = -1; +static int hf_isis_lsp_srlg_flags_numbered = -1; +static int hf_isis_lsp_srlg_ipv4_local = -1; +static int hf_isis_lsp_srlg_ipv4_remote = -1; +static int hf_isis_lsp_srlg_value = -1; static int hf_isis_lsp_checksum = -1; static int hf_isis_lsp_checksum_bad = -1; static int hf_isis_lsp_checksum_good = -1; @@ -377,6 +383,7 @@ 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_hostname = -1; +static gint ett_isis_lsp_clv_srlg = -1; static gint ett_isis_lsp_clv_te_router_id = -1; static gint ett_isis_lsp_clv_authentication = -1; static gint ett_isis_lsp_clv_ip_authentication = -1; @@ -1526,6 +1533,51 @@ dissect_lsp_hostname_clv(tvbuff_t *tvb, packet_info* pinfo _U_, proto_tree *tree hf_isis_lsp_hostname); } +/* + * Name: dissect_lsp_srlg_clv() + * + * Description: + * Decode for a lsp packets Shared Risk Link Group (SRLG) clv (138). Calls into the + * clv common one. + * + * Input: + * tvbuff_t * : tvbuffer for packet data + * proto_tree * : proto tree to build on (may be null) + * int : current offset into packet data + * int : length of IDs in packet. + * int : length of this clv + * + * Output: + * void, will modify proto_tree if not null. + */ +static void +dissect_lsp_srlg_clv(tvbuff_t *tvb, packet_info* pinfo _U_, proto_tree *tree, int offset, + int id_length _U_, int length) +{ + + proto_tree_add_item(tree, hf_isis_lsp_srlg_system_id, tvb, offset, 6, ENC_BIG_ENDIAN); + offset += 6; + + proto_tree_add_item(tree, hf_isis_lsp_srlg_pseudo_num, tvb, offset, 1, ENC_BIG_ENDIAN); + offset += 1; + + proto_tree_add_item(tree, hf_isis_lsp_srlg_flags_numbered, tvb, offset, 1, ENC_BIG_ENDIAN); + offset += 1; + + proto_tree_add_item(tree, hf_isis_lsp_srlg_ipv4_local, tvb, offset, 4, ENC_BIG_ENDIAN); + offset += 4; + + proto_tree_add_item(tree, hf_isis_lsp_srlg_ipv4_remote, tvb, offset, 4, ENC_BIG_ENDIAN); + offset += 4; + + length -= 16; + while(length){ + proto_tree_add_item(tree, hf_isis_lsp_srlg_value, tvb, offset, 4, ENC_BIG_ENDIAN); + offset += 4; + length -= 4; + } +} + /* * Name: dissect_lsp_te_router_id_clv() @@ -3234,6 +3286,12 @@ static const isis_clv_handle_t clv_l2_lsp_opts[] = { dissect_lsp_hostname_clv }, { + ISIS_CLV_SHARED_RISK_GROUP, + "Shared Risk Link Group", + &ett_isis_lsp_clv_srlg, + dissect_lsp_srlg_clv + }, + { ISIS_CLV_TE_ROUTER_ID, "Traffic Engineering Router ID", &ett_isis_lsp_clv_te_router_id, @@ -3504,6 +3562,42 @@ proto_register_isis_lsp(void) NULL, HFILL } }, + { &hf_isis_lsp_srlg_system_id, + { "System ID", "isis.lsp.srlg.system_id", + FT_SYSTEM_ID, BASE_NONE, NULL, 0x0, + NULL, HFILL } + }, + + { &hf_isis_lsp_srlg_pseudo_num, + { "Pseudonode num", "isis.lsp.srlg.pseudo_num", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + + { &hf_isis_lsp_srlg_flags_numbered, + { "Numbered", "isis.lsp.srlg.flags_numbered", + FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x01, + NULL, HFILL } + }, + + { &hf_isis_lsp_srlg_ipv4_local, + { "IPv4 interface address/Link Local Identifier", "isis.lsp.srlg.ipv4_local", + FT_IPv4, BASE_NONE, NULL, 0x0, + NULL, HFILL } + }, + + { &hf_isis_lsp_srlg_ipv4_remote, + { "IPv4 neighbor address/Link remote Identifier", "isis.lsp.srlg.ipv4_remote", + FT_IPv4, BASE_NONE, NULL, 0x0, + NULL, HFILL } + }, + + { &hf_isis_lsp_srlg_value, + { "Shared Risk Link Group Value", "isis.lsp.srlg.value", + FT_UINT32, BASE_DEC_HEX, NULL, 0x0, + NULL, HFILL } + }, + { &hf_isis_lsp_sequence_number, { "Sequence number", "isis.lsp.sequence_number", FT_UINT32, BASE_HEX, NULL, 0x0, @@ -4595,6 +4689,7 @@ proto_register_isis_lsp(void) &ett_isis_lsp_clv_ip_authentication, &ett_isis_lsp_clv_nlpid, &ett_isis_lsp_clv_hostname, + &ett_isis_lsp_clv_srlg, &ett_isis_lsp_clv_ipv4_int_addr, &ett_isis_lsp_clv_ipv6_int_addr, /* CLV 232 */ &ett_isis_lsp_clv_mt_cap, |