static int hf_rsvp_xro_sobj_ipv6_attr = -1;
static int hf_rsvp_xro_sobj_srlg_id = -1;
static int hf_rsvp_xro_sobj_srlg_res = -1;
+static int hf_rsvp_private_data = -1;
+static int hf_rsvp_unknown_data = -1;
static dissector_table_t rsvp_dissector_table;
RSVP_CLASS_ASSOCIATION,
/* 203-204 Unassigned */
+ /*
+ 204 Proprietary Juniper LSP properties
+ https://www.juniper.net/techpubs/en_US/junos12.1/information-products/topic-collections/nog-mpls-logs/topic-20284.html
+ */
+ RSVP_CLASS_JUNIPER_PROPERTIES = 204,
RSVP_CLASS_FAST_REROUTE = 205,
/* 206 Unassigned */
RSVP_CLASS_SESSION_ATTRIBUTE = 207,
*/
{ RSVP_CLASS_ASSOCIATION, "ASSOCIATION object"},
+ { RSVP_CLASS_JUNIPER_PROPERTIES, "Juniper properties object"},
{ RSVP_CLASS_FAST_REROUTE, "FAST-REROUTE object"},
{ RSVP_CLASS_SESSION_ATTRIBUTE, "SESSION ATTRIBUTE object"},
proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
"Error node: %s",
tvb_ip_to_str(tvb, offset2));
-
+
offset3 = offset2+4;
}
break;
proto_tree_add_text(rsvp_object_tree, tvb, offset2, 16,
"Error node: %s",
tvb_ip6_to_str(tvb, offset2));
-
+
offset3 = offset2+16;
}
break;
proto_tree_add_text(rsvp_object_tree, tvb, offset2, 4,
"Error node: %s",
tvb_ip_to_str(tvb, offset2));
-
+
offset3 = offset2+4;
}
break;
}
return;
}
-
+
if(obj_length>4) {
error_flags = tvb_get_guint8(tvb, offset3);
ti2 = proto_tree_add_item(rsvp_object_tree, hf_rsvp_error_flags,
val_to_str_ext(error_code, &rsvp_error_codes_ext, "Unknown (%d)"));
error_val = dissect_rsvp_error_value(rsvp_object_tree, tvb, offset3+2, error_code);
-
+
switch (type) {
case 1:
proto_tree_add_item(rsvp_object_tree,
hf_rsvp_filter[RSVPF_ENT_CODE],
tvb, offset + 4, 4, ENC_BIG_ENDIAN);
- proto_tree_add_text(rsvp_object_tree, tvb, offset + 8, obj_length - 8,
- "Data (%d bytes)", obj_length - 8);
+ proto_tree_add_item(rsvp_object_tree, hf_rsvp_private_data, tvb, offset + 8,
+ obj_length - 8, ENC_NA);
+}
+
+/*----------------------------------------------------------------------------
+ * UNKOWN
+ *---------------------------------------------------------------------------*/
+static void
+dissect_rsvp_unknown(proto_tree *ti _U_,
+ proto_tree *rsvp_object_tree,
+ tvbuff_t *tvb,
+ int offset, int obj_length,
+ int rsvp_class _U_, int type)
+{
+ proto_tree_add_text(rsvp_object_tree, tvb, offset + 3, 1,
+ "C-type: %u", type);
+ if (obj_length > 4) {
+ proto_tree_add_item(rsvp_object_tree, hf_rsvp_unknown_data, tvb, offset + 4,
+ obj_length - 4, ENC_NA);
+ }
}
+
/*------------------------------------------------------------------------------
* Dissect a single RSVP message in a tree
*------------------------------------------------------------------------------*/
int session_off, tempfilt_off;
int msg_length;
int obj_length;
- int offset2;
offset = 0;
ver_flags = tvb_get_guint8(tvb, 0);
proto_tree_add_uint(rsvp_object_tree, hf_rsvp_filter[RSVPF_OBJECT], tvb,
offset+2, 1, rsvp_class);
- offset2 = offset+4;
-
switch(rsvp_class) {
case RSVP_CLASS_SESSION:
dissect_rsvp_vendor_private_use(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
break;
+ case RSVP_CLASS_JUNIPER_PROPERTIES:
case RSVP_CLASS_NULL:
default:
- proto_tree_add_text(rsvp_object_tree, tvb, offset2, obj_length - 4,
- "Data (%d bytes)", obj_length - 4);
+ dissect_rsvp_unknown(ti, rsvp_object_tree, tvb, offset, obj_length, rsvp_class, type);
break;
}
}
},
+ { &hf_rsvp_private_data,
+ { "Data", "rsvp.private.data",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL
+ }
+ },
+
+ { &hf_rsvp_unknown_data,
+ { "Data", "rsvp.unknown.data",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL
+ }
+ },
+
{ &hf_rsvp_xro_sobj_srlg_res,
{ "Reserved", "rsvp.xro.sobj.srlg.res",
FT_UINT16, BASE_DEC, NULL, 0,