aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-rsvp.c
diff options
context:
space:
mode:
authorAlexis La Goutte <alexis.lagoutte@gmail.com>2014-01-23 20:31:20 +0000
committerAlexis La Goutte <alexis.lagoutte@gmail.com>2014-01-23 20:31:20 +0000
commitbc14487ea67b84707bdac7d273efdee06261cac2 (patch)
tree3fcc3337f65e6043ffd8dff91166ea871e82fab1 /epan/dissectors/packet-rsvp.c
parentf07d9ebea313c87e88db702f66c38ab0b09e3cc1 (diff)
From me for https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9519 RSVP dissector does not decode Session Object (1) C-type (13) message
svn path=/trunk/; revision=54932
Diffstat (limited to 'epan/dissectors/packet-rsvp.c')
-rw-r--r--epan/dissectors/packet-rsvp.c49
1 files changed, 48 insertions, 1 deletions
diff --git a/epan/dissectors/packet-rsvp.c b/epan/dissectors/packet-rsvp.c
index 5567b8425e..a358163392 100644
--- a/epan/dissectors/packet-rsvp.c
+++ b/epan/dissectors/packet-rsvp.c
@@ -1260,7 +1260,10 @@ enum {
RSVP_SESSION_TYPE_AGGREGATE_IPV6,
RSVP_SESSION_TYPE_IPV4_UNI = 11,
- RSVP_SESSION_TYPE_IPV4_E_NNI = 15
+
+ RSVP_SESSION_TYPE_P2MP_LSP_TUNNEL_IPV4 = 13,
+ RSVP_SESSION_TYPE_P2MP_LSP_TUNNEL_IPV6,
+ RSVP_SESSION_TYPE_IPV4_E_NNI
};
/*
@@ -2131,6 +2134,20 @@ summary_session(tvbuff_t *tvb, int offset)
tvb_get_ntohs(tvb, offset+10),
tvb_ip_to_str(tvb, offset+12));
break;
+ case RSVP_SESSION_TYPE_P2MP_LSP_TUNNEL_IPV4:
+ return wmem_strdup_printf(wmem_packet_scope(),
+ "SESSION: IPv4-P2MP LSP TUNNEL, PSMP ID %d, Tunnel ID %d, Ext Tunnel %s. ",
+ tvb_get_ntohl(tvb, offset+4),
+ tvb_get_ntohs(tvb, offset+10),
+ tvb_ip_to_str(tvb, offset+12));
+ break;
+ case RSVP_SESSION_TYPE_P2MP_LSP_TUNNEL_IPV6:
+ return wmem_strdup_printf(wmem_packet_scope(),
+ "SESSION: IPv6-P2MP LSP TUNNEL, PSMP ID %d, Tunnel ID %d, Ext Tunnel %s. ",
+ tvb_get_ntohl(tvb, offset+4),
+ tvb_get_ntohs(tvb, offset+10),
+ tvb_ip6_to_str(tvb, offset+12));
+ break;
case RSVP_SESSION_TYPE_IPV4_E_NNI:
return wmem_strdup_printf(wmem_packet_scope(),
"SESSION: IPv4-E-NNI, Destination %s, Tunnel ID %d, Ext Address %s. ",
@@ -2316,6 +2333,36 @@ dissect_rsvp_session(proto_item *ti, proto_tree *rsvp_object_tree,
break;
+ case RSVP_SESSION_TYPE_P2MP_LSP_TUNNEL_IPV4:
+ proto_tree_add_text(rsvp_object_tree, tvb, offset+3, 1,
+ "C-type: 13 - IPv4 P2MP LSP TUNNEL");
+ proto_tree_add_item(rsvp_object_tree,
+ hf_rsvp_filter[RSVPF_SESSION_IP],
+ tvb, offset2, 4, ENC_BIG_ENDIAN);
+
+ proto_tree_add_item(rsvp_object_tree,
+ hf_rsvp_filter[RSVPF_SESSION_TUNNEL_ID],
+ tvb, offset2+6, 2, ENC_BIG_ENDIAN);
+
+ proto_tree_add_text(rsvp_object_tree, tvb, offset2+8, 4,
+ "Extended Tunnel: %s",
+ tvb_ip_to_str(tvb, offset2+8));
+ hidden_item = proto_tree_add_item(rsvp_object_tree,
+ hf_rsvp_filter[RSVPF_SESSION_EXT_TUNNEL_ID],
+ tvb, offset2+8, 4, ENC_BIG_ENDIAN);
+ PROTO_ITEM_SET_HIDDEN(hidden_item);
+
+ /*
+ * Save this information to build the conversation request key
+ * later.
+ */
+ rsvph->session_type = RSVP_SESSION_TYPE_P2MP_LSP_TUNNEL_IPV4;
+ TVB_SET_ADDRESS(&rsvph->destination, AT_IPv4, tvb, offset2, 4);
+ rsvph->udp_dest_port = tvb_get_ntohs(tvb, offset2+6);
+ rsvph->ext_tunnel_id = tvb_get_ntohl(tvb, offset2 + 8);
+
+ break;
+
case RSVP_SESSION_TYPE_IPV4_E_NNI:
proto_tree_add_uint_format_value(rsvp_object_tree, hf_rsvp_ctype, tvb, offset+3, 1,
type, "15 - IPv4 E-NNI");