diff options
author | Simon Zhong <szhong.jnpr@gmail.com> | 2016-09-27 17:28:53 -0400 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2016-09-28 14:44:32 +0000 |
commit | f72f937623e31ae4a59555573a24de8ad603a965 (patch) | |
tree | a9e8f5ed530f0bab16bc20fc7fe8b57c2bddf0e6 /epan/dissectors/packet-pcep.c | |
parent | 1e532f2f6f8c23f13e4c930727addd5d4679ab6b (diff) |
pcep: Added rfc 7334 support.
Updated PCEP-ERROR Object Error Types and Values base on Path Computation Element Protocol (PCEP) Numbers 2016-08-09 version
Change-Id: Ife0b49119a2b634279e33ab8f699a5dc57ecb34b
Reviewed-on: https://code.wireshark.org/review/17957
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-pcep.c')
-rw-r--r-- | epan/dissectors/packet-pcep.c | 57 |
1 files changed, 41 insertions, 16 deletions
diff --git a/epan/dissectors/packet-pcep.c b/epan/dissectors/packet-pcep.c index 866af293b6..7856e3f76f 100644 --- a/epan/dissectors/packet-pcep.c +++ b/epan/dissectors/packet-pcep.c @@ -53,7 +53,11 @@ * (c) Copyright 2015 Francesco Fondelli <francesco.fondelli[AT]gmail.com> * * Added support of "Conveying Vendor-Specific Constraints in the - * Path Computation Element Communication Protocol (RFC 7470)" + * Path Computation Element Communication Protocol" (RFC 7470) + * Completed support of RFC 6006 + * Added support of "PCE-Based Computation Procedure to Compute Shortest + Constrained Point-to-Multipoint (P2MP) Inter-Domain Traffic Engineering + Label Switched Paths" (RFC 7334) * (c) Copyright 2016 Simon Zhong <szhong[AT]juniper.net> */ @@ -199,7 +203,8 @@ void proto_reg_handoff_pcep(void); #define PCEP_RP_E 0x000800 #define PCEP_RP_N 0x001000 #define PCEP_RP_F 0x002000 -#define PCEP_RP_RESERVED 0xFFC000 +#define PCEP_RP_C 0x004000 /* RFC 7334 */ +#define PCEP_RP_RESERVED 0xFF8000 /*Mask for the flags of NO PATH Object*/ #define PCEP_NO_PATH_C 0x8000 @@ -311,6 +316,7 @@ static gint hf_pcep_rp_flags_m = -1; static gint hf_pcep_rp_flags_e = -1; static gint hf_pcep_rp_flags_n = -1; static gint hf_pcep_rp_flags_f = -1; +static gint hf_pcep_rp_flags_c = -1; static gint hf_pcep_rp_flags_reserved = -1; static gint hf_pcep_no_path_flags_c = -1; static gint hf_pcep_metric_flags_c = -1; @@ -1115,7 +1121,17 @@ static const value_string pcep_error_value_6_vals[] = { /*Error values for error type 10*/ static const value_string pcep_error_value_10_vals[] = { - {1, "Reception of an object with P flag not set although the P-flag must be set"}, + {1, "Reception of an object with P flag not set although the P-flag must be set"}, + {2, "Bad label value"}, /* draft-ietf-pce-segment-routing */ + {3, "Unsupported number of Segment ERO subobjects"}, /* draft-ietf-pce-segment-routing */ + {4, "Bad label format"}, /* draft-ietf-pce-segment-routing */ + {5, "Non-identical ERO subobjects"}, /* draft-ietf-pce-segment-routing */ + {6, "Both SID and NAI are absent in ERO subobject"}, /* draft-ietf-pce-segment-routing */ + {7, "Both SID and NAI are absent in RRO subobject"}, /* draft-ietf-pce-segment-routing */ + {8, "SYMBOLIC-PATH-NAME TLV missing"}, /* draft-ietf-pce-segment-routing */ + {9, "Default MSD is specified for the PCEP session"}, /* draft-ietf-pce-segment-routing */ + {10, "Non-identical RRO subjects"}, /* draft-ietf-pce-segment-routing */ + {11, "Malformed object"}, /* draft-ietf-pce-segment-routing */ {0, NULL} }; @@ -1164,20 +1180,22 @@ static const value_string pcep_error_value_18_vals[] = { /*Error values for error type 19*/ static const value_string pcep_error_value_19_vals[] = { - {1, "Attempted LSP Update Request for a non-delegated LSP. The PCEP-ERROR Object is followed by the LSP Object that identifies the LSP"}, - {2, "Attempted LSP Update Request if active stateful PCE capability was not advertised"}, - {3, "Attempted LSP Update Request for an LSP identified by an unknown PLSP-ID"}, - {4, "A PCE indicates to a PCC that it has exceeded the resource limit allocated for its state, and thus it cannot accept and process its LSP State Report message"}, - {5, "Attempted LSP State Report if active stateful PCE capability was not advertised"}, - {6, "PCE-initiated LSP limit reached"}, - {7, "Delegation for PCE-initiated LSP cannot be revoked"}, - {8, "Non-zero PLSP-ID in LSP initiation request"}, + {1, "Attempted LSP Update Request for a non-delegated LSP. The PCEP-ERROR Object is followed by the LSP Object that identifies the LSP"}, + {2, "Attempted LSP Update Request if active stateful PCE capability was not advertised"}, + {3, "Attempted LSP Update Request for an LSP identified by an unknown PLSP-ID"}, + {4, "A PCE indicates to a PCC that it has exceeded the resource limit allocated for its state, and thus it cannot accept and process its LSP State Report message"}, + {5, "Attempted LSP State Report if active stateful PCE capability was not advertised"}, + {6, "PCE-initiated LSP limit reached"}, /* draft-ietf-pce-pce-initiated-lsp */ + {7, "Delegation for PCE-initiated LSP cannot be revoked"}, /* draft-ietf-pce-pce-initiated-lsp */ + {8, "Non-zero PLSP-ID in LSP initiation request"}, /* draft-ietf-pce-pce-initiated-lsp */ + {9, "LSP is not PCE-initiated"}, /* draft-ietf-pce-pce-initiated-lsp */ + {10, "PCE-initiated operation-frequency limit reached"}, /* draft-ietf-pce-pce-initiated-lsp */ {0, NULL} }; /*Error values for error type 20*/ static const value_string pcep_error_value_20_vals[] = { - {1, "A PCE indicates to a PCC that it cannot process (an otherwise valid) LSP State Report. The PCEP-ERROR Object is followed by the LSP Object that identifies the LSP"}, + {1, "A PCE indicates to a PCC that it cannot process (an otherwise valid) LSP State Report. The PCEP-ERROR Object is followed by the LSP Object that identifies the LSP"}, {2, "LSP Database version mismatch."}, {3, "The LSP-DB-VERSION TLV Missing when state synchronization avoidance is enabled."}, {4, "Attempt to trigger a synchronization when the TRIGGERED-SYNC capability has not been advertised."}, @@ -1196,15 +1214,16 @@ static const value_string pcep_error_value_21_vals[] = { /*Error values for error type 23*/ static const value_string pcep_error_value_23_vals[] = { - {1, "SYMBOLIC-PATH-NAME in use"}, + {1, "SYMBOLIC-PATH-NAME in use"}, /* draft-ietf-pce-pce-initiated-lsp */ + {2, "Speaker identity included for an LSP that is not PCE-initiated"}, /* draft-ietf-pce-pce-initiated-lsp */ {0, NULL} }; /*Error values for error type 24*/ static const value_string pcep_error_value_24_vals[] = { - {1, "Unacceptable instantiation parameters"}, - {2, "Internal error"}, - {3, "RSVP signaling error"}, + {1, "Unacceptable instantiation parameters"}, /* draft-ietf-pce-pce-initiated-lsp */ + {2, "Internal error"}, /* draft-ietf-pce-pce-initiated-lsp */ + {3, "Signaling error"}, /* draft-ietf-pce-pce-initiated-lsp */ {0, NULL} }; @@ -1982,6 +2001,7 @@ dissect_pcep_rp_obj(proto_tree *pcep_object_tree, packet_info *pinfo, pcep_rp_obj_flags = proto_item_add_subtree(ti, ett_pcep_obj_request_parameters); proto_tree_add_item(pcep_rp_obj_flags, hf_pcep_rp_flags_reserved, tvb, offset2+1, 3, ENC_BIG_ENDIAN); + proto_tree_add_item(pcep_rp_obj_flags, hf_pcep_rp_flags_c, tvb, offset2+1, 3, ENC_BIG_ENDIAN); proto_tree_add_item(pcep_rp_obj_flags, hf_pcep_rp_flags_f, tvb, offset2+1, 3, ENC_BIG_ENDIAN); proto_tree_add_item(pcep_rp_obj_flags, hf_pcep_rp_flags_n, tvb, offset2+1, 3, ENC_BIG_ENDIAN); proto_tree_add_item(pcep_rp_obj_flags, hf_pcep_rp_flags_e, tvb, offset2+1, 3, ENC_BIG_ENDIAN); @@ -3923,6 +3943,11 @@ proto_register_pcep(void) FT_BOOLEAN, 24, TFS(&tfs_set_notset), PCEP_RP_F, NULL, HFILL } }, + { &hf_pcep_rp_flags_c, + { "(C) Core-tree computation", "pcep.rp.flags.c", + FT_BOOLEAN, 24, TFS(&tfs_set_notset), PCEP_RP_C, + NULL, HFILL } + }, { &hf_PCEPF_OBJ_NO_PATH, { "NO-PATH object", "pcep.obj.nopath", FT_NONE, BASE_NONE, NULL, 0x0, |