/* * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.protocol.pcep.spi; import com.google.common.collect.Maps; import java.util.Map; /** * Possible errors listed in RFC5440, RFC 5455 and stateful draft. * * @see PCEP-ERROR Object(RFC5440), PCEP-ERROR Object(stateful draft), * Error Codes for CLASSTYPE Object(RFC5455), PCEP-Error Object */ public enum PCEPErrors { /** * Reception of an invalid Open message or a non Open message. */ NON_OR_INVALID_OPEN_MSG(1, 1), /** * No Open message received before the expiration of the OpenWait timer. */ NO_OPEN_BEFORE_EXP_OPENWAIT(1, 2), /** * Unacceptable and non-negotiable session characteristics. */ NON_ACC_NON_NEG_SESSION_CHAR(1, 3), /** * Unacceptable but negotiable session characteristics. */ NON_ACC_NEG_SESSION_CHAR(1, 4), /** * Reception of a second Open message with still unacceptable session characteristics. */ SECOND_OPEN_MSG(1, 5), /** * Reception of a PCErr message proposing unacceptable session characteristics. */ PCERR_NON_ACC_SESSION_CHAR(1, 6), /** * No Keepalive or PCErr message received before the expiration of the KeepWait timer. */ NO_MSG_BEFORE_EXP_KEEPWAIT(1, 7), /** * Capability not supported. */ CAPABILITY_NOT_SUPPORTED(2, 0), /** * PCEP version not supported. */ PCEP_VERSION_NOT_SUPPORTED(1, 8), /** * Unrecognized object class. */ UNRECOGNIZED_OBJ_CLASS(3, 1), /** * Unrecognized object Type. */ UNRECOGNIZED_OBJ_TYPE(3, 2), /** * Not supported object class. */ NOT_SUPPORTED_OBJ_CLASS(4, 1), /** * Not supported object Type. */ NOT_SUPPORTED_OBJ_TYPE(4, 2), /** * C bit of the METRIC object set (request rejected). */ C_BIT_SET(5, 1), /** * O bit of the RP object cleared (request rejected). */ O_BIT_SET(5, 2), /** * Objective function not allowed (request rejected) */ OF_NOT_ALLOWED(5, 3), /** * OF bit of the RP object set (request rejected) */ OF_BIT_SET(5, 4), /** * Global concurrent optimization not allowed (GCO extension) */ GCO_NOT_ALLOWED(5, 5), /** * P2MP Path computation is not allowed */ P2MP_COMPUTATION_NOT_ALLOWED(5, 7), /** * RP object missing */ RP_MISSING(6, 1), /** * RRO missing for a reoptimization request (R bit of the RP object set). */ RRO_MISSING(6, 2), /** * END-POINTS object missing */ END_POINTS_MISSING(6, 3), /** * LSP cleanup TLV missing */ LSP_CLEANUP_TLV_MISSING(6, 13), /** * SYMBOLIC-PATH-NAME TLV missing */ SYMBOLIC_PATH_NAME_MISSING(6, 14), /** * Synchronized path computation request missing. */ SYNC_PATH_COMP_REQ_MISSING(7, 0), /** * Unknown request reference */ UNKNOWN_REQ_REF(8, 0), /** * Attempt to establish a second PCEP session. */ ATTEMPT_2ND_SESSION(9, 0), /** * LSP Object missing. */ LSP_MISSING(6, 8), /** * ERO Object missing for a path in an LSP Update Request where TE-LSP setup is requested. */ ERO_MISSING(6, 9), /** * Srp Object missing for a path in an LSP Update Request where TE-LSP setup is requested. */ SRP_MISSING(6, 10), /** * LSP-IDENTIFIERS TLV missing for a path in an LSP Update Request where TE-LSP setup is requested. */ LSP_IDENTIFIERS_TLV_MISSING(6, 11), /** * Reception of an object with P flag not set although the P flag must be set according to this specification. */ P_FLAG_NOT_SET(10, 1), /** * Insufficient memory (GCO extension) */ INSUFFICIENT_MEMORY(15, 1), /** * Global concurrent optimization not supported (GCO extension) */ GCO_NOT_SUPPORTED(15, 2), /** * Diffserv-aware TE error: Unsupported Class-Type. */ UNSUPPORTED_CT(12, 1), /** * Diffserv-aware TE error: Invalid Class-Type. */ INVALID_CT(12, 2), /** * Diffserv-aware TE error: Class-Type and setup priority do not form a configured TE-class. */ CT_AND_SETUP_PRIORITY_DO_NOT_FORM_TE_CLASS(12, 3), /** * The PCE cannot satisfy the request due to insufficient memory */ CANNOT_SATISFY_P2MP_REQUEST_DUE_TO_INSUFFISIENT_MEMMORY(16, 1), /** * The PCE is not capable of P2MP computation */ NOT_CAPPABLE_P2MP_COMPUTATION(16, 2), /** * The PCE is not capable to satisfy the request due to no END-POINTS with leaf type 2 */ P2MP_NOT_CAPPABLE_SATISFY_REQ_DUE_LT2(17, 1), /** * The PCE is not capable to satisfy the request due to no END-POINTS with leaf type 3 */ P2MP_NOT_CAPPABLE_SATISFY_REQ_DUE_LT3(17, 2), /** * The PCE is not capable to satisfy the request due to no END-POINTS with leaf type 4 */ P2MP_NOT_CAPPABLE_SATISFY_REQ_DUE_LT4(17, 3), /** * The PCE is not capable to satisfy the request due to inconsistent END-POINTS */ P2MP_NOT_CAPPABLE_SATISFY_REQ_DUE_INCONSISTENT_EP(17, 4), /** * P2MP Fragmented request failure */ P2MP_FRAGMENTATION_FAILRUE(18, 1), /** * Attempted LSP Update Request for a non- delegated LSP. The PCEP-ERROR Object is followed by the LSP Object that * identifies the LSP. */ UPDATE_REQ_FOR_NON_LSP(19, 1), /** * Attempted LSP Update Request if active stateful PCE capability was not negotiated active PCE. */ UPDATE_REQ_FOR_NO_STATEFUL(19, 2), /** * Attempted LSP Update Request for an LSP identified by an unknown PLSP-ID. */ UNKNOWN_PLSP_ID(19, 3), /** * 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. */ RESOURCE_LIMIT_EXCEEDED(19, 4), /** * PCE-initiated LSP limit reached */ LSP_LIMIT_EXCEEDED(19, 6), /** * Delegation for PCE-initiated LSP cannot be revoked */ DELEGATION_NON_REVOKABLE(19, 7), /** * Non-zero PLSP-ID in LSP initiation request */ NON_ZERO_PLSPID(19, 8), /** * A PCE indicates to a PCC that it can not process (an otherwise valid) LSP State Report. The PCEP-ERROR Object is * followed by the LSP Object that identifies the LSP. */ CANNOT_PROCESS_STATE_REPORT(20, 1), /** * LSP Database version mismatch. */ LSP_DB_VERSION_MISMATCH(20, 2), /** * The LSP-DB-VERSION TLV Missing when State Synchronization Avoidance enabled. */ DB_VERSION_TLV_MISSING_WHEN_SYNC_ALLOWED(20, 3), /** * A PCC indicates to a PCE that it can not complete the state synchronization, */ CANNOT_COMPLETE_STATE_SYNC(20, 5), /** * SYMBOLIC-PATH-NAME in use */ USED_SYMBOLIC_PATH_NAME(23, 1), /** * LSP instantiation error: Unacceptable instantiation parameters */ LSP_UNACC_INST_PARAMS(24, 1), /** * LSP instantiation error: Internal error */ LSP_INTERNAL_ERROR(24, 2), /** * LSP instantiation error: RSVP signaling error */ LSP_RSVP_ERROR(24, 3), /** * Segment Routing error: ERO subobject with invalid SID value */ BAD_LABEL_VALUE(10, 2), /** * Segment Routing error: Unsupported number of Segment ERO subobjects */ UNSUPPORTED_NUMBER_OF_SR_ERO_SUBOBJECTS(10, 3), /** * Segment Routing error: Bad label format */ BAD_LABEL_FORMAT(10, 4), /** * Segment Routing error: Non-identical ERO subobjects */ NON_IDENTICAL_ERO_SUBOBJECTS(10, 5), /** * Segment Routing error: Both SID and NAI are absent in ERO subobject. */ SID_AND_NAI_ABSENT_IN_ERO(10, 6), /** * Segment Routing error: Both SID and NAI are absent in RRO subobject. */ SID_AND_NAI_ABSENT_IN_RRO(10, 7), /** * Segment Routing error: Non-identical RRO subobjects. */ SID_NON_IDENTICAL_RRO_SUBOBJECTS(10, 8), /** * Invalid traffic engineering path setup type: Unsupported path setup type */ UNSUPPORTED_PST(21, 1), /** * Invalid traffic engineering path setup type: Mismatched path setup type */ MISMATCHED_PST(21, 2), /** * MONITORING object missing */ MONITORING_OBJECT_MISSING(6, 4); private PCEPErrorIdentifier errorId; private static final Map VALUE_MAP; static { VALUE_MAP = Maps.newHashMap(); for (final PCEPErrors enumItem : PCEPErrors.values()) { VALUE_MAP.put(enumItem.getErrorIdentifier(), enumItem); } } public static PCEPErrors forValue(final short errorType, final short errorValue) { return VALUE_MAP.get(new PCEPErrorIdentifier(errorType, errorValue)); } private PCEPErrors(final int type, final int value) { this.errorId = new PCEPErrorIdentifier((short) type, (short) value); } private PCEPErrorIdentifier getErrorIdentifier() { return this.errorId; } public short getErrorType() { return this.errorId.getType(); } public short getErrorValue() { return this.errorId.getValue(); } }