aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorEvan Huus <eapache@gmail.com>2013-01-18 22:04:15 +0000
committerEvan Huus <eapache@gmail.com>2013-01-18 22:04:15 +0000
commit2a1e61d5823f5526e87d98a93663042ed5963817 (patch)
tree8c47ef2377f4e6956239fb56589aec58cd4359dc /epan/dissectors
parent2dda8659ef7a067989812b225eba220eeb8779b3 (diff)
From Kaushal Shah via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8021
Experimental and Reserved sub-TLVs from [RFC 3630] From me: use consistent whitespace svn path=/trunk/; revision=47155
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-ospf.c35
1 files changed, 27 insertions, 8 deletions
diff --git a/epan/dissectors/packet-ospf.c b/epan/dissectors/packet-ospf.c
index 89fb121423..85481a59dd 100644
--- a/epan/dissectors/packet-ospf.c
+++ b/epan/dissectors/packet-ospf.c
@@ -55,7 +55,9 @@
* Added support for OSPFv2 & OSPFv3 Router Information (RI) Opaque LSA (RFC4970); RI Capabilities TLV
* Added support for OSPFv2 & OSPFv3 Dynamic Hostname TLV in RI Opaque LSA (RFC5642)
* - (c) 2011 Salil Kanitkar <sskanitk@ncsu.edu>, North Carolina State University
- *
+ *
+ * Added support for Type Classification of Experimental and Reserved sub-TLVs (RFC3630)
+ * - (c) 2013 Kaushal Shah <kshah3@ncsu.edu>, North Carolina State University
*/
#include "config.h"
@@ -1835,6 +1837,20 @@ static const value_string mpls_link_stlv_str[] = {
{0, NULL},
};
+static const range_string mpls_te_tlv_rvals[] = {
+ { 3, 32767, "(Assigned via Standards Action)"},
+ { 32768, 32777, "(For Experimental Use)"},
+ { 32778, 65535, "(Not to be Assigned)"},
+ { 0, 0, NULL}
+};
+
+static const range_string mpls_te_sub_tlv_rvals[] = {
+ { 10, 32767, "(Assigned via Standards Action)"},
+ { 32768, 32777, "(For Experimental Use)"},
+ { 32778, 65535, "(Not to be Assigned)"},
+ { 0, 0, NULL}
+};
+
static const value_string oif_stlv_str[] = {
{OIF_TNA_IPv4_ADDRESS, "TNA address"},
{OIF_NODE_ID, "Node ID"},
@@ -1942,7 +1958,7 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, int offset, proto_tree *tree,
case MPLS_LINK_LOCAL_IF:
case MPLS_LINK_REMOTE_IF:
ti = proto_tree_add_text(tlv_tree, tvb, stlv_offset, stlv_len+4,
- "%s", stlv_name);
+ "%s: %s", stlv_name, tvb_ip_to_str(tvb, stlv_offset + 4));
stlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_mpls_link_stlv);
proto_tree_add_text(stlv_tree, tvb, stlv_offset, 2,
"TLV Type: %u: %s", stlv_type, stlv_name);
@@ -2237,10 +2253,12 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, int offset, proto_tree *tree,
break;
default:
ti = proto_tree_add_text(tlv_tree, tvb, stlv_offset, stlv_len+4,
- "Unknown Link sub-TLV: %u", stlv_type);
+ "Unknown Link sub-TLV: %u %s", stlv_type,
+ rval_to_str(stlv_type, mpls_te_sub_tlv_rvals, "Unknown"));
stlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_mpls_link_stlv);
proto_tree_add_text(stlv_tree, tvb, stlv_offset, 2,
- "TLV Type: %u: %s", stlv_type, stlv_name);
+ "TLV Type: %u: %s %s", stlv_type, stlv_name,
+ rval_to_str(stlv_type, mpls_te_sub_tlv_rvals, "Unknown"));
proto_tree_add_text(stlv_tree, tvb, stlv_offset+2, 2, "TLV Length: %u",
stlv_len);
proto_tree_add_text(stlv_tree, tvb, stlv_offset+4, stlv_len,
@@ -2332,10 +2350,11 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, int offset, proto_tree *tree,
break;
default:
ti = proto_tree_add_text(mpls_tree, tvb, offset, tlv_length+4,
- "Unknown LSA: %u", tlv_type);
+ "Unknown LSA: %u %s", tlv_type,
+ rval_to_str(tlv_type, mpls_te_tlv_rvals, "Unknown"));
tlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_mpls_link);
- proto_tree_add_text(tlv_tree, tvb, offset, 2, "TLV Type: %u - Unknown",
- tlv_type);
+ proto_tree_add_text(tlv_tree, tvb, offset, 2, "TLV Type: %u - Unknown %s",
+ tlv_type, rval_to_str(tlv_type, mpls_te_tlv_rvals, "Unknown"));
proto_tree_add_text(tlv_tree, tvb, offset+2, 2, "TLV Length: %u",
tlv_length);
proto_tree_add_text(tlv_tree, tvb, offset+4, tlv_length, "TLV Data");
@@ -2600,7 +2619,7 @@ dissect_ospf_v2_lsa(tvbuff_t *tvb, int offset, proto_tree *tree,
break;
case OSPF_LSA_OPAQUE_RI:
- ls_ri_opaque_field = tvb_get_guint8(tvb, offset + 5);
+ ls_ri_opaque_field = tvb_get_guint8(tvb, offset + 5);
if ( ls_ri_opaque_field != 0 )
ls_id_type = OSPF_LSA_UNKNOWN;
else