2 * This file is part of the PCEPlib, a PCEP protocol library.
4 * Copyright (C) 2020 Volta Networks https://voltanet.io/
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public License
17 * along with this program. If not, see <https://www.gnu.org/licenses/>.
19 * Author : Brady Johnson <brady@voltanet.io>
24 * Error Object Type and Value definitions
27 #ifndef PCEP_OBJECT_ERROR_TYPES_H
28 #define PCEP_OBJECT_ERROR_TYPES_H
34 #define MAX_ERROR_TYPE 30
35 #define MAX_ERROR_VALUE 255
37 enum pcep_error_type
{
38 PCEP_ERRT_SESSION_FAILURE
= 1,
39 PCEP_ERRT_CAPABILITY_NOT_SUPPORTED
= 2,
40 PCEP_ERRT_UNKNOW_OBJECT
= 3,
41 PCEP_ERRT_NOT_SUPPORTED_OBJECT
= 4,
42 PCEP_ERRT_POLICY_VIOLATION
= 5,
43 PCEP_ERRT_MANDATORY_OBJECT_MISSING
= 6,
44 PCEP_ERRT_SYNC_PC_REQ_MISSING
= 7,
45 PCEP_ERRT_UNKNOWN_REQ_REF
= 8,
46 PCEP_ERRT_ATTEMPT_TO_ESTABLISH_2ND_PCEP_SESSION
= 9,
47 PCEP_ERRT_RECEPTION_OF_INV_OBJECT
= 10,
49 PCEP_ERRT_UNRECOGNIZED_EXRS_SUBOBJ
= 11,
50 PCEP_ERRT_DIFFSERV_AWARE_TE_ERROR
= 12,
51 PCEP_ERRT_BRPC_PROC_COMPLETION_ERROR
= 13,
52 PCEP_ERRT_UNASSIGNED14
= 14,
53 PCEP_ERRT_GLOBAL_CONCURRENT_ERROR
= 15,
54 PCEP_ERRT_P2PMP_CAP_ERROR
= 16,
55 PCEP_ERRT_P2P_ENDPOINTS_ERROR
= 17,
56 PCEP_ERRT_P2P_FRAGMENTATION_ERROR
= 18,
57 PCEP_ERRT_INVALID_OPERATION
= 19,
58 PCEP_ERRT_LSP_STATE_SYNC_ERROR
= 20,
60 PCEP_ERRT_INVALID_TE_PATH_SETUP_TYPE
= 21,
61 PCEP_ERRT_UNASSIGNED22
= 22,
62 PCEP_ERRT_BAD_PARAMETER_VALUE
= 23,
63 PCEP_ERRT_LSP_INSTANTIATE_ERROR
= 24,
64 PCEP_ERRT_START_TLS_FAILURE
= 25,
65 PCEP_ERRT_ASSOCIATION_ERROR
= 26,
66 PCEP_ERRT_WSON_RWA_ERROR
= 27,
67 PCEP_ERRT_H_PCE_ERROR
= 28,
68 PCEP_ERRT_PATH_COMP_FAILURE
= 29,
69 PCEP_ERRT_UNASSIGNED30
= 30 /* 30 - 255 Unassigned */
72 enum pcep_error_value
{
73 /* Error Value for Error Types that do not use an Error Value:
74 * PCEP_ERRT_CAPABILITY_NOT_SUPPORTED=2
75 * PCEP_ERRT_SYNC_PC_REQ_MISSING=7
76 * PCEP_ERRT_UNKNOWN_REQ_REF=8
77 * PCEP_ERRT_ATTEMPT_TO_ESTABLISH_2ND_PCEP_SESSION=9
78 * PCEP_ERRT_UNRECOGNIZED_EXRS_SUBOBJ=11 */
79 PCEP_ERRV_UNASSIGNED
= 0,
81 /* Error Values for PCEP_ERRT_SESSION_FAILURE=1 */
82 PCEP_ERRV_RECVD_INVALID_OPEN_MSG
= 1,
83 PCEP_ERRV_OPENWAIT_TIMED_OUT
= 2,
84 PCEP_ERRV_UNACCEPTABLE_OPEN_MSG_NO_NEG
= 3,
85 PCEP_ERRV_UNACCEPTABLE_OPEN_MSG_NEG
= 4,
86 PCEP_ERRV_RECVD_SECOND_OPEN_MSG_UNACCEPTABLE
= 5,
87 PCEP_ERRV_RECVD_PCERR
= 6,
88 PCEP_ERRV_KEEPALIVEWAIT_TIMED_OUT
= 7,
89 PCEP_ERRV_PCEP_VERSION_NOT_SUPPORTED
= 8,
91 /* Error Values for PCEP_ERRT_UNKNOW_OBJECT=3 */
92 PCEP_ERRV_UNREC_OBJECT_CLASS
= 1,
93 PCEP_ERRV_UNREC_OBJECT_TYPE
= 2,
95 /* Error Values for PCEP_ERRT_NOT_SUPPORTED_OBJECT=4 */
96 PCEP_ERRV_NOT_SUPPORTED_OBJECT_CLASS
= 1,
97 PCEP_ERRV_NOT_SUPPORTED_OBJECT_TYPE
= 2,
99 PCEP_ERRV_UNSUPPORTED_PARAM
= 4,
100 PCEP_ERRV_UNSUPPORTED_NW_PERF_CONSTRAINT
= 5,
101 PCEP_ERRV_NOT_SUPPORTED_BW_OBJECT_3_4
= 6,
102 PCEP_ERRV_UNSUPPORTED_ENDPOINT_TYPE
= 7,
103 PCEP_ERRV_UNSUPPORTED_ENDPOINT_TLV
= 8,
104 PCEP_ERRV_UNSUPPORTED_RP_FLAG_GRANULARITY
= 9,
106 /* Error Values for PCEP_ERRT_POLICY_VIOLATION=5 */
107 PCEP_ERRV_C_BIT_SET_IN_METRIC_OBJECT
= 1,
108 PCEP_ERRV_O_BIT_CLEARD_IN_RP_OBJECT
= 2,
109 PCEP_ERRV_OBJECTIVE_FUNC_NOT_ALLOWED
= 3,
110 PCEP_ERRV_RP_OF_BIT_SET
= 4,
111 PCEP_ERRV_GLOBAL_CONCURRENCY_NOT_ALLOWED
= 5,
112 PCEP_ERRV_MONITORING_MSG_REJECTED
= 6,
113 PCEP_ERRV_P2MP_PATH_COMP_NOT_ALLOWED
= 7,
114 PCEP_ERRV_UNALLOWED_NW_PERF_CONSTRAINT
= 8,
116 /* Error Values for PCEP_ERRT_MANDATORY_OBJECT_MISSING=6 */
117 PCEP_ERRV_RP_OBJECT_MISSING
= 1,
118 PCEP_ERRV_RRO_OBJECT_MISSING_FOR_REOP
= 2,
119 PCEP_ERRV_EP_OBJECT_MISSING
= 3,
120 PCEP_ERRV_MONITOR_OBJECT_MISSING
= 4,
121 /* 5 - 7 Unassigned */
122 PCEP_ERRV_LSP_OBJECT_MISSING
= 8,
123 PCEP_ERRV_ERO_OBJECT_MISSING
= 9,
124 PCEP_ERRV_SRP_OBJECT_MISSING
= 10,
125 PCEP_ERRV_LSP_ID_TLV_MISSING
= 11,
126 PCEP_ERRV_LSP_DB_TLV_MISSING
= 12,
127 PCEP_ERRV_S2LS_OBJECT_MISSING
= 13,
128 PCEP_ERRV_P2MP_LSP_ID_TLV_MISSING
= 14,
129 PCEP_ERRV_DISJOINTED_CONF_TLV_MISSING
= 15,
131 /* Error Values for PCEP_ERRT_RECEPTION_OF_INV_OBJECT=10 */
132 PCEP_ERRV_P_FLAG_NOT_CORRECT_IN_OBJECT
= 1,
133 PCEP_ERRV_BAD_LABEL_VALUE
= 2,
134 PCEP_ERRV_UNSUPPORTED_NUM_SR_ERO_SUBOBJECTS
= 3,
135 PCEP_ERRV_BAD_LABEL_FORMAT
= 4,
136 PCEP_ERRV_ERO_SR_ERO_MIX
= 5,
137 PCEP_ERRV_SR_ERO_SID_NAI_ABSENT
= 6,
138 PCEP_ERRV_SR_RRO_SID_NAI_ABSENT
= 7,
139 PCEP_ERRV_SYMBOLIC_PATH_NAME_TLV_MISSING
= 8,
140 PCEP_ERRV_MSD_EXCEEDS_PCEP_SESSION_MAX
= 9,
142 PCEP_ERRV_RRO_SR_RRO_MIX
= 10,
143 PCEP_ERRV_MALFORMED_OBJECT
= 11,
144 PCEP_ERRV_MISSING_PCE_SR_CAP_TLV
= 12,
145 PCEP_ERRV_UNSUPPORTED_NAI
= 13,
146 PCEP_ERRV_UNKNOWN_SID
= 14,
147 PCEP_ERRV_CANNOT_RESOLVE_NAI_TO_SID
= 15,
148 PCEP_ERRV_COULD_NOT_FIND_SRGB
= 16,
149 PCEP_ERRV_SID_EXCEEDS_SRGB
= 17,
150 PCEP_ERRV_COULD_NOT_FIND_SRLB
= 18,
151 PCEP_ERRV_SID_EXCEEDS_SRLB
= 19,
153 PCEP_ERRV_INCONSISTENT_SID
= 20,
154 PCEP_ERRV_MSD_MUST_BE_NONZERO
= 21,
155 PCEP_ERRV_MISMATCH_O_S2LS_LSP
= 22,
156 PCEP_ERRV_INCOMPATIBLE_H_PCE_OF
= 23,
157 PCEP_ERRV_BAD_BANDWIDTH_TYPE_3_4
= 24,
158 PCEP_ERRV_UNSUPPORTED_LSP_PROT_FLAGS
= 25,
159 PCEP_ERRV_UNSUPPORTED_2ND_LSP_PROT_FLAGS
= 26,
160 PCEP_ERRV_UNSUPPORTED_LINK_PROT_TYPE
= 27,
161 PCEP_ERRV_LABEL_SET_TLV_NO_RP_R
= 28,
162 PCEP_ERRV_WRONG_LABEL_SET_TLV_O_L_SET
= 29,
164 PCEP_ERRV_WRONG_LABEL_SET_O_SET
= 30,
165 PCEP_ERRV_MISSING_GMPLS_CAP_TLV
= 31,
166 PCEP_ERRV_INCOMPATIBLE_OF_CODE
= 32,
168 /* PCEP_ERRT_DIFFSERV_AWARE_TE_ERROR = 12 */
169 PCEP_ERRV_UNSUPPORTED_CLASS_TYPE
= 1,
170 PCEP_ERRV_INVALID_CLASS_TYPE
= 2,
171 PCEP_ERRV_CLASS_SETUP_TYPE_NOT_TE_CLASS
= 3,
173 /* PCEP_ERRT_BRPC_PROC_COMPLETION_ERROR = 13 */
174 PCEP_ERRV_BRPC_PROC_NOT_SUPPORTED
= 1,
176 /* PCEP_ERRT_UNASSIGNED14 = 14 */
178 /* PCEP_ERRT_GLOBAL_CONCURRENT_ERROR = 15 */
179 PCEP_ERRV_INSUFFICIENT_MEMORY
= 1,
180 PCEP_ERRV_GLOBAL_CONCURRENT_OPT_NOT_SUPPORTED
= 2,
182 /* PCEP_ERRT_P2PMP_CAP_ERROR = 16 */
183 PCEP_ERRV_PCE_INSUFFICIENT_MEMORY
= 1,
184 PCEP_ERRV_PCE_NOT_CAPABLE_P2MP_COMP
= 2,
186 /* PCEP_ERRT_P2P_ENDPOINTS_ERROR = 17 */
187 PCEP_ERRV_NO_EP_WITH_LEAF_TYPE2
= 1,
188 PCEP_ERRV_NO_EP_WITH_LEAF_TYPE3
= 2,
189 PCEP_ERRV_NO_EP_WITH_LEAF_TYPE4
= 3,
190 PCEP_ERRV_INCONSITENT_EP
= 4,
192 /* PCEP_ERRT_P2P_FRAGMENTATION_ERROR = 18 */
193 PCEP_ERRV_FRAG_REQUEST_FAILURE
= 1,
194 PCEP_ERRV_FRAG_REPORT_FAILURE
= 2,
195 PCEP_ERRV_FRAG_UPDATE_FAILURE
= 3,
196 PCEP_ERRV_FRAG_INSTANTIATION_FAILURE
= 4,
198 /* Error Values for PCEP_ERRT_INVALID_OPERATION=19 */
199 PCEP_ERRV_LSP_UPDATE_FOR_NON_DELEGATED_LSP
= 1,
200 PCEP_ERRV_LSP_UPDATE_NON_ADVERTISED_PCE
= 2,
201 PCEP_ERRV_LSP_UPDATE_UNKNOWN_PLSP_ID
= 3,
203 PCEP_ERRV_LSP_REPORT_NON_ADVERTISED_PCE
= 5,
204 PCEP_ERRV_PCE_INIT_LSP_LIMIT_REACHED
= 6,
205 PCEP_ERRV_PCE_INIT_LSP_DELEGATION_CANT_REVOKE
= 7,
206 PCEP_ERRV_LSP_INIT_NON_ZERO_PLSP_ID
= 8,
207 PCEP_ERRV_LSP_NOT_PCE_INITIATED
= 9,
208 PCEP_ERRV_PCE_INIT_OP_FREQ_LIMIT_REACHED
= 10,
209 PCEP_ERRV_LSP_REPORT_P2MP_NOT_ADVERTISED
= 11,
210 PCEP_ERRV_LSP_UPDATE_P2MP_NOT_ADVERTISED
= 12,
211 PCEP_ERRV_LSP_INSTANTIATION_P2MP_NOT_ADVERTISED
= 13,
212 PCEP_ERRV_AUTO_BW_CAP_NOT_ADVERTISED
= 14,
214 /* Error Values for PCEP_ERRT_LSP_STATE_SYNC_ERROR=20 */
215 PCEP_ERRV_PCE_CANT_PROCESS_LSP_REPORT
= 1,
216 PCEP_ERRV_LSP_DB_VERSION_MISMATCH
= 2,
217 PCEP_ERRV_TRIGGER_ATTEMPT_BEFORE_PCE_TRIGGER
= 3,
218 PCEP_ERRV_TRIGGER_ATTEMPT_NO_PCE_TRIGGER_CAP
= 4,
219 PCEP_ERRV_PCC_CANT_COMPLETE_STATE_SYNC
= 5,
220 PCEP_ERRV_INVALID_LSP_DB_VERSION_NUMBER
= 6,
221 PCEP_ERRV_INVALID_SPEAKER_ENTITY_ID
= 7,
223 /* PCEP_ERRT_INVALID_TE_PATH_SETUP_TYPE = 21 */
224 PCEP_ERRV_UNSUPPORTED_PATH_SETUP_TYPE
= 1,
225 PCEP_ERRV_MISMATCHED_PATH_SETUP_TYPE
= 2,
227 /* PCEP_ERRT_UNASSIGNED22 = 22 */
229 /* Error Values for PCEP_ERRT_BAD_PARAMETER_VALUE=23 */
230 PCEP_ERRV_SYMBOLIC_PATH_NAME_IN_USE
= 1,
231 PCEP_ERRV_LSP_SPEAKER_ID_NOT_PCE_INITIATED
= 2,
233 /* Error Values for PCEP_ERRT_LSP_INSTANTIATE_ERROR=24 */
234 PCEP_ERRV_UNACCEPTABLE_INSTANTIATE_ERROR
= 1,
235 PCEP_ERRV_INTERNAL_ERROR
= 2,
236 PCEP_ERRV_SIGNALLING_ERROR
= 3,
238 /* PCEP_ERRT_START_TLS_FAILURE = 25 */
239 PCEP_ERRV_START_TLS_AFTER_PCEP_EXCHANGE
= 1,
240 PCEP_ERRV_MSG_NOT_START_TLS_OPEN_ERROR
= 2,
241 PCEP_ERRV_CONNECTION_WO_TLS_NOT_POSSIBLE
= 3,
242 PCEP_ERRV_CONNECTION_WO_TLS_IS_POSSIBLE
= 4,
243 PCEP_ERRV_NO_START_TLS_BEFORE_START_TLS_WAIT_TIMER
= 5,
245 /* PCEP_ERRT_ASSOCIATION_ERROR = 26 */
246 PCEP_ERRV_ASSOC_TYPE_NOT_SUPPORTED
= 1,
247 PCEP_ERRV_TOO_MANY_LSPS_IN_ASSOC_GRP
= 2,
248 PCEP_ERRV_TOO_MANY_ASSOC_GROUPS
= 3,
249 PCEP_ERRV_ASSOCIATION_UNKNOWN
= 4,
250 PCEP_ERRV_OP_CONF_ASSOC_INFO_MISMATCH
= 5,
251 PCEP_ERRV_ASSOC_INFO_MISMATCH
= 6,
252 PCEP_ERRV_CANNOT_JOIN_ASSOC_GROUP
= 7,
253 PCEP_ERRV_ASSOC_ID_NOT_IN_RANGE
= 8,
254 PCEP_ERRV_TUNNEL_EP_MISMATCH_PATH_PROT_ASSOC
= 9,
255 PCEP_ERRV_ATTEMPTED_ADD_LSP_PATH_PROT_ASSOC
= 10,
256 PCEP_ERRV_PROTECTION_TYPE_NOT_SUPPORTED
= 11,
258 /* PCEP_ERRT_WSON_RWA_ERROR = 27 */
259 PCEP_ERRV_RWA_INSUFFICIENT_MEMORY
= 1,
260 PCEP_ERRV_RWA_COMP_NOT_SUPPORTED
= 2,
261 PCEP_ERRV_SYNTAX_ENC_ERROR
= 3,
263 /* PCEP_ERRT_H_PCE_ERROR = 28 */
264 PCEP_ERRV_H_PCE_CAP_NOT_ADVERTISED
= 1,
265 PCEP_ERRV_PARENT_PCE_CAP_CANT_BE_PROVIDED
= 2,
267 /* PCEP_ERRT_PATH_COMP_FAILURE = 29 */
268 PCEP_ERRV_UNACCEPTABLE_REQUEST_MSG
= 1,
269 PCEP_ERRV_GENERALIZED_BW_VAL_NOT_SUPPORTED
= 2,
270 PCEP_ERRV_LABEL_SET_CONSTRAINT_COULD_NOT_BE_MET
= 3,
271 PCEP_ERRV_LABEL_CONSTRAINT_COULD_NOT_BE_MET
= 4,
275 const char *get_error_type_str(enum pcep_error_type error_type
);
276 const char *get_error_value_str(enum pcep_error_type error_type
,
277 enum pcep_error_value error_value
);