diff options
author | Alexis La Goutte <alexis.lagoutte@gmail.com> | 2017-09-01 07:13:56 +0200 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2017-09-02 16:17:41 +0000 |
commit | 501f30ce5fb3f105519aedd4ddb8693c119a63c3 (patch) | |
tree | e0f3615e38ae38fb705fa44cdc908c5176aff3f2 /epan/dissectors/packet-rsvp.c | |
parent | 692b1175e4d0493fcda0fbe8dd71ca33c2773a89 (diff) |
RSVP: Add Session IPv4/6 P2MP LSP info
Bug: 13977
Change-Id: Ia43d746e7be1d24046c755fadb2454eba39dbe58
Reviewed-on: https://code.wireshark.org/review/23347
Petri-Dish: Anders Broman <a.broman58@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-rsvp.c')
-rw-r--r-- | epan/dissectors/packet-rsvp.c | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/epan/dissectors/packet-rsvp.c b/epan/dissectors/packet-rsvp.c index ad91c58159..153145bfd5 100644 --- a/epan/dissectors/packet-rsvp.c +++ b/epan/dissectors/packet-rsvp.c @@ -672,6 +672,18 @@ typedef struct rsvp_session_ipv4_uni_info { guint32 ext_tunnel_id; } rsvp_session_ipv4_uni_info; +typedef struct rsvp_session_ipv4_p2mp_lsp_info { + address destination; + guint16 udp_dest_port; + guint32 ext_tunnel_id; +} rsvp_session_ipv4_p2mp_lsp_info; + +typedef struct rsvp_session_ipv6_p2mp_lsp_info { + address destination; + guint16 udp_dest_port; + guint64 ext_tunnel_id; +} rsvp_session_ipv6_p2mp_lsp_info; + typedef struct rsvp_session_ipv4_enni_info { address destination; guint16 udp_dest_port; @@ -702,6 +714,8 @@ struct rsvp_request_key { rsvp_session_ipv6_lsp_info session_ipv6_lsp; rsvp_session_agg_ipv4_info session_agg_ipv4; rsvp_session_ipv4_uni_info session_ipv4_uni; + rsvp_session_ipv4_p2mp_lsp_info session_ipv4_p2mp_lsp; + rsvp_session_ipv6_p2mp_lsp_info session_ipv6_p2mp_lsp; rsvp_session_ipv4_enni_info session_ipv4_enni; } u; @@ -1990,6 +2004,38 @@ rsvp_equal(gconstpointer k1, gconstpointer k2) break; + case RSVP_SESSION_TYPE_P2MP_LSP_TUNNEL_IPV4: + if (addresses_equal(&key1->u.session_ipv4_p2mp_lsp.destination, + &key2->u.session_ipv4_p2mp_lsp.destination) == FALSE) + return 0; + + if (key1->u.session_ipv4_p2mp_lsp.udp_dest_port != + key2->u.session_ipv4_p2mp_lsp.udp_dest_port) + return 0; + + + if (key1->u.session_ipv4_p2mp_lsp.ext_tunnel_id != + key2->u.session_ipv4_p2mp_lsp.ext_tunnel_id) + return 0; + + break; + + case RSVP_SESSION_TYPE_P2MP_LSP_TUNNEL_IPV6: + if (addresses_equal(&key1->u.session_ipv6_p2mp_lsp.destination, + &key2->u.session_ipv6_p2mp_lsp.destination) == FALSE) + return 0; + + if (key1->u.session_ipv6_p2mp_lsp.udp_dest_port != + key2->u.session_ipv6_p2mp_lsp.udp_dest_port) + return 0; + + + if (key1->u.session_ipv6_p2mp_lsp.ext_tunnel_id != + key2->u.session_ipv6_p2mp_lsp.ext_tunnel_id) + return 0; + + break; + case RSVP_SESSION_TYPE_IPV4_E_NNI: if (addresses_equal(&key1->u.session_ipv4_enni.destination, &key2->u.session_ipv4_enni.destination) == FALSE) @@ -7869,6 +7915,22 @@ dissect_rsvp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolea request_key.u.session_ipv4_uni.ext_tunnel_id = rsvph->ext_tunnel_id; break; + case RSVP_SESSION_TYPE_P2MP_LSP_TUNNEL_IPV4: + set_address(&request_key.u.session_ipv4_p2mp_lsp.destination, + rsvph->destination.type, rsvph->destination.len, + rsvph->destination.data); + request_key.u.session_ipv4_p2mp_lsp.udp_dest_port = rsvph->udp_dest_port; + request_key.u.session_ipv4_p2mp_lsp.ext_tunnel_id = rsvph->ext_tunnel_id; + break; + + case RSVP_SESSION_TYPE_P2MP_LSP_TUNNEL_IPV6: + set_address(&request_key.u.session_ipv6_p2mp_lsp.destination, + rsvph->destination.type, rsvph->destination.len, + rsvph->destination.data); + request_key.u.session_ipv6_p2mp_lsp.udp_dest_port = rsvph->udp_dest_port; + request_key.u.session_ipv6_p2mp_lsp.ext_tunnel_id = rsvph->ext_tunnel_id_ipv6_pre; + break; + case RSVP_SESSION_TYPE_IPV4_E_NNI: set_address(&request_key.u.session_ipv4_enni.destination, rsvph->destination.type, rsvph->destination.len, @@ -7911,6 +7973,14 @@ dissect_rsvp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolea copy_address_wmem(wmem_file_scope(), &new_request_key->u.session_ipv4_uni.destination, &request_key.u.session_ipv4_uni.destination); break; + case RSVP_SESSION_TYPE_P2MP_LSP_TUNNEL_IPV4: + copy_address_wmem(wmem_file_scope(), &new_request_key->u.session_ipv4_p2mp_lsp.destination, + &request_key.u.session_ipv4_p2mp_lsp.destination); + break; + case RSVP_SESSION_TYPE_P2MP_LSP_TUNNEL_IPV6: + copy_address_wmem(wmem_file_scope(), &new_request_key->u.session_ipv6_p2mp_lsp.destination, + &request_key.u.session_ipv6_p2mp_lsp.destination); + break; case RSVP_SESSION_TYPE_IPV4_E_NNI: copy_address_wmem(wmem_file_scope(), &new_request_key->u.session_ipv4_enni.destination, &request_key.u.session_ipv4_enni.destination); |