8 // RetvalToVPPApiError returns error for retval value.
9 // Retval 0 returns nil error.
10 func RetvalToVPPApiError(retval int32) error {
14 return VPPApiError(retval)
17 // VPPApiError represents VPP's vnet API error that is usually
18 // returned as Retval field in replies from VPP binary API.
19 type VPPApiError int32
21 func (e VPPApiError) Error() string {
24 if s, ok := vppApiErrors[e]; ok {
25 errstr = fmt.Sprintf("%s (%d)", s, errid)
27 errstr = strconv.FormatInt(errid, 10)
29 return fmt.Sprintf("VPPApiError: %s", errstr)
32 // definitions from: vpp/src/vnet/api_errno.h
36 INVALID_SW_IF_INDEX = -2
38 NO_SUCH_INNER_FIB = -4
44 INVALID_SW_IF_INDEX_2 = -10
54 SYSCALL_ERROR_10 = -20
55 FEATURE_DISABLED = -30
56 INVALID_REGISTRATION = -31
57 NEXT_HOP_NOT_IN_FIB = -50
58 UNKNOWN_DESTINATION = -51
59 PREFIX_MATCHES_NEXT_HOP = -52
60 NEXT_HOP_NOT_FOUND_MP = -53
61 NO_MATCHING_INTERFACE = -54
63 VLAN_ALREADY_EXISTS = -56
64 INVALID_SRC_ADDRESS = -57
65 INVALID_DST_ADDRESS = -58
66 ADDRESS_LENGTH_MISMATCH = -59
67 ADDRESS_NOT_FOUND_FOR_INTERFACE = -60
68 ADDRESS_NOT_DELETABLE = -61
76 SUBIF_ALREADY_EXISTS = -68
77 SUBIF_CREATE_FAILED = -69
78 INVALID_MEMORY_SIZE = -70
79 INVALID_INTERFACE = -71
80 INVALID_VLAN_TAG_COUNT = -72
81 INVALID_ARGUMENT = -73
82 UNEXPECTED_INTF_STATE = -74
84 INVALID_DECAP_NEXT = -76
85 RESPONSE_NOT_READY = -77
87 IF_ALREADY_EXISTS = -79
88 BOND_SLAVE_NOT_ALLOWED = -80
91 IP6_MULTICAST_ADDRESS_NOT_PRESENT = -83
92 SR_POLICY_NAME_NOT_PRESENT = -84
93 NOT_RUNNING_AS_ROOT = -85
94 ALREADY_CONNECTED = -86
95 UNSUPPORTED_JNI_VERSION = -87
96 FAILED_TO_ATTACH_TO_JAVA_THREAD = -88
99 CLASSIFY_TABLE_NOT_FOUND = -91
100 INVALID_EID_TYPE = -92
101 CANNOT_CREATE_PCAP_FILE = -93
102 INCORRECT_ADJACENCY_TYPE = -94
103 EXCEEDED_NUMBER_OF_RANGES_CAPACITY = -95
104 EXCEEDED_NUMBER_OF_PORTS_CAPACITY = -96
105 INVALID_ADDRESS_FAMILY = -97
106 INVALID_SUB_SW_IF_INDEX = -98
108 CANNOT_ENABLE_DISABLE_FEATURE = -100
113 ADDRESS_IN_USE = -105
114 ADDRESS_NOT_IN_USE = -106
116 APP_UNSUPPORTED_CFG = -108
117 URI_FIFO_CREATE_FAILED = -109
118 LISP_RLOC_LOCAL = -110
120 INVALID_GPE_MODE = -112
121 LISP_GPE_ENTRIES_PRESENT = -113
122 ADDRESS_FOUND_FOR_INTERFACE = -114
123 SESSION_CONNECT = -115
124 ENTRY_ALREADY_EXISTS = -116
125 SVM_SEGMENT_CREATE_FAIL = -117
126 APPLICATION_NOT_ATTACHED = -118
127 BD_ALREADY_EXISTS = -119
129 BD_NOT_MODIFIABLE = -121
130 BD_ID_EXCEED_MAX = -122
131 SUBIF_DOESNT_EXIST = -123
132 L2_MACS_EVENT_CLINET_PRESENT = -124
135 DUPLICATE_IF_ADDRESS = -127
136 APP_INVALID_NS = -128
137 APP_WRONG_NS_SECRET = -129
138 APP_CONNECT_SCOPE = -130
139 APP_ALREADY_ATTACHED = -131
140 SESSION_REDIRECT = -132
142 NO_NAME_SERVERS = -134
143 NAME_SERVER_NOT_FOUND = -135
144 NAME_RESOLUTION_NOT_ENABLED = -136
145 NAME_SERVER_FORMAT_ERROR = -137
146 NAME_SERVER_NO_SUCH_NAME = -138
147 NAME_SERVER_NO_ADDRESSES = -139
148 NAME_SERVER_NEXT_SERVER = -140
149 APP_CONNECT_FILTERED = -141
150 ACL_IN_USE_INBOUND = -142
151 ACL_IN_USE_OUTBOUND = -143
154 BIER_BSL_UNSUP = -146
155 INSTANCE_IN_USE = -147
156 INVALID_SESSION_ID = -148
157 ACL_IN_USE_BY_LOOKUP_CONTEXT = -149
158 INVALID_VALUE_3 = -150
160 BD_ALREADY_HAS_BVI = -152
163 var vppApiErrors = map[VPPApiError]string{
164 UNSPECIFIED: "Unspecified Error",
165 INVALID_SW_IF_INDEX: "Invalid sw_if_index",
166 NO_SUCH_FIB: "No such FIB / VRF",
167 NO_SUCH_INNER_FIB: "No such inner FIB / VRF",
168 NO_SUCH_LABEL: "No such label",
169 NO_SUCH_ENTRY: "No such entry",
170 INVALID_VALUE: "Invalid value",
171 INVALID_VALUE_2: "Invalid value #2",
172 UNIMPLEMENTED: "Unimplemented",
173 INVALID_SW_IF_INDEX_2: "Invalid sw_if_index #2",
174 SYSCALL_ERROR_1: "System call error #1",
175 SYSCALL_ERROR_2: "System call error #2",
176 SYSCALL_ERROR_3: "System call error #3",
177 SYSCALL_ERROR_4: "System call error #4",
178 SYSCALL_ERROR_5: "System call error #5",
179 SYSCALL_ERROR_6: "System call error #6",
180 SYSCALL_ERROR_7: "System call error #7",
181 SYSCALL_ERROR_8: "System call error #8",
182 SYSCALL_ERROR_9: "System call error #9",
183 SYSCALL_ERROR_10: "System call error #10",
184 FEATURE_DISABLED: "Feature disabled by configuration",
185 INVALID_REGISTRATION: "Invalid registration",
186 NEXT_HOP_NOT_IN_FIB: "Next hop not in FIB",
187 UNKNOWN_DESTINATION: "Unknown destination",
188 PREFIX_MATCHES_NEXT_HOP: "Prefix matches next hop",
189 NEXT_HOP_NOT_FOUND_MP: "Next hop not found (multipath)",
190 NO_MATCHING_INTERFACE: "No matching interface for probe",
191 INVALID_VLAN: "Invalid VLAN",
192 VLAN_ALREADY_EXISTS: "VLAN subif already exists",
193 INVALID_SRC_ADDRESS: "Invalid src address",
194 INVALID_DST_ADDRESS: "Invalid dst address",
195 ADDRESS_LENGTH_MISMATCH: "Address length mismatch",
196 ADDRESS_NOT_FOUND_FOR_INTERFACE: "Address not found for interface",
197 ADDRESS_NOT_DELETABLE: "Address not deletable",
198 IP6_NOT_ENABLED: "ip6 not enabled",
199 IN_PROGRESS: "Operation in progress",
200 NO_SUCH_NODE: "No such graph node",
201 NO_SUCH_NODE2: "No such graph node #2",
202 NO_SUCH_TABLE: "No such table",
203 NO_SUCH_TABLE2: "No such table #2",
204 NO_SUCH_TABLE3: "No such table #3",
205 SUBIF_ALREADY_EXISTS: "Subinterface already exists",
206 SUBIF_CREATE_FAILED: "Subinterface creation failed",
207 INVALID_MEMORY_SIZE: "Invalid memory size requested",
208 INVALID_INTERFACE: "Invalid interface",
209 INVALID_VLAN_TAG_COUNT: "Invalid number of tags for requested operation",
210 INVALID_ARGUMENT: "Invalid argument",
211 UNEXPECTED_INTF_STATE: "Unexpected interface state",
212 TUNNEL_EXIST: "Tunnel already exists",
213 INVALID_DECAP_NEXT: "Invalid decap-next",
214 RESPONSE_NOT_READY: "Response not ready",
215 NOT_CONNECTED: "Not connected to the data plane",
216 IF_ALREADY_EXISTS: "Interface already exists",
217 BOND_SLAVE_NOT_ALLOWED: "Operation not allowed on slave of BondEthernet",
218 VALUE_EXIST: "Value already exists",
219 SAME_SRC_DST: "Source and destination are the same",
220 IP6_MULTICAST_ADDRESS_NOT_PRESENT: "IP6 multicast address required",
221 SR_POLICY_NAME_NOT_PRESENT: "Segement routing policy name required",
222 NOT_RUNNING_AS_ROOT: "Not running as root",
223 ALREADY_CONNECTED: "Connection to the data plane already exists",
224 UNSUPPORTED_JNI_VERSION: "Unsupported JNI version",
225 FAILED_TO_ATTACH_TO_JAVA_THREAD: "Failed to attach to Java thread",
226 INVALID_WORKER: "Invalid worker thread",
227 LISP_DISABLED: "LISP is disabled",
228 CLASSIFY_TABLE_NOT_FOUND: "Classify table not found",
229 INVALID_EID_TYPE: "Unsupported LSIP EID type",
230 CANNOT_CREATE_PCAP_FILE: "Cannot create pcap file",
231 INCORRECT_ADJACENCY_TYPE: "Invalid adjacency type for this operation",
232 EXCEEDED_NUMBER_OF_RANGES_CAPACITY: "Operation would exceed configured capacity of ranges",
233 EXCEEDED_NUMBER_OF_PORTS_CAPACITY: "Operation would exceed capacity of number of ports",
234 INVALID_ADDRESS_FAMILY: "Invalid address family",
235 INVALID_SUB_SW_IF_INDEX: "Invalid sub-interface sw_if_index",
236 TABLE_TOO_BIG: "Table too big",
237 CANNOT_ENABLE_DISABLE_FEATURE: "Cannot enable/disable feature",
238 BFD_EEXIST: "Duplicate BFD object",
239 BFD_ENOENT: "No such BFD object",
240 BFD_EINUSE: "BFD object in use",
241 BFD_NOTSUPP: "BFD feature not supported",
242 ADDRESS_IN_USE: "Address in use",
243 ADDRESS_NOT_IN_USE: "Address not in use",
244 QUEUE_FULL: "Queue full",
245 APP_UNSUPPORTED_CFG: "Unsupported application config",
246 URI_FIFO_CREATE_FAILED: "URI FIFO segment create failed",
247 LISP_RLOC_LOCAL: "RLOC address is local",
248 BFD_EAGAIN: "BFD object cannot be manipulated at this time",
249 INVALID_GPE_MODE: "Invalid GPE mode",
250 LISP_GPE_ENTRIES_PRESENT: "LISP GPE entries are present",
251 ADDRESS_FOUND_FOR_INTERFACE: "Address found for interface",
252 SESSION_CONNECT: "Session failed to connect",
253 ENTRY_ALREADY_EXISTS: "Entry already exists",
254 SVM_SEGMENT_CREATE_FAIL: "svm segment create fail",
255 APPLICATION_NOT_ATTACHED: "application not attached",
256 BD_ALREADY_EXISTS: "Bridge domain already exists",
257 BD_IN_USE: "Bridge domain has member interfaces",
258 BD_NOT_MODIFIABLE: "Bridge domain 0 can't be deleted/modified",
259 BD_ID_EXCEED_MAX: "Bridge domain ID exceed 16M limit",
260 SUBIF_DOESNT_EXIST: "Subinterface doesn't exist",
261 L2_MACS_EVENT_CLINET_PRESENT: "Client already exist for L2 MACs events",
262 INVALID_QUEUE: "Invalid queue",
263 UNSUPPORTED: "Unsupported",
264 DUPLICATE_IF_ADDRESS: "Address already present on another interface",
265 APP_INVALID_NS: "Invalid application namespace",
266 APP_WRONG_NS_SECRET: "Wrong app namespace secret",
267 APP_CONNECT_SCOPE: "Connect scope",
268 APP_ALREADY_ATTACHED: "App already attached",
269 SESSION_REDIRECT: "Redirect failed",
270 ILLEGAL_NAME: "Illegal name",
271 NO_NAME_SERVERS: "No name servers configured",
272 NAME_SERVER_NOT_FOUND: "Name server not found",
273 NAME_RESOLUTION_NOT_ENABLED: "Name resolution not enabled",
274 NAME_SERVER_FORMAT_ERROR: "Server format error (bug!)",
275 NAME_SERVER_NO_SUCH_NAME: "No such name",
276 NAME_SERVER_NO_ADDRESSES: "No addresses available",
277 NAME_SERVER_NEXT_SERVER: "Retry with new server",
278 APP_CONNECT_FILTERED: "Connect was filtered",
279 ACL_IN_USE_INBOUND: "Inbound ACL in use",
280 ACL_IN_USE_OUTBOUND: "Outbound ACL in use",
281 INIT_FAILED: "Initialization Failed",
282 NETLINK_ERROR: "netlink error",
283 BIER_BSL_UNSUP: "BIER bit-string-length unsupported",
284 INSTANCE_IN_USE: "Instance in use",
285 INVALID_SESSION_ID: "session ID out of range",
286 ACL_IN_USE_BY_LOOKUP_CONTEXT: "ACL in use by a lookup context",
287 INVALID_VALUE_3: "Invalid value #3",
288 NON_ETHERNET: "Interface is not an Ethernet interface",
289 BD_ALREADY_HAS_BVI: "Bridge domain already has a BVI interface",