+++ /dev/null
-package api
-
-import (
- "fmt"
- "strconv"
-)
-
-// RetvalToVPPApiError returns error for retval value.
-// Retval 0 returns nil error.
-func RetvalToVPPApiError(retval int32) error {
- if retval == 0 {
- return nil
- }
- return VPPApiError(retval)
-}
-
-// VPPApiError represents VPP's vnet API error that is usually
-// returned as Retval field in replies from VPP binary API.
-type VPPApiError int32
-
-func (e VPPApiError) Error() string {
- errid := int64(e)
- var errstr string
- if s, ok := vppApiErrors[e]; ok {
- errstr = fmt.Sprintf("%s (%d)", s, errid)
- } else {
- errstr = strconv.FormatInt(errid, 10)
- }
- return fmt.Sprintf("VPPApiError: %s", errstr)
-}
-
-// definitions from: vpp/src/vnet/api_errno.h
-const (
- _ VPPApiError = 0
- UNSPECIFIED = -1
- INVALID_SW_IF_INDEX = -2
- NO_SUCH_FIB = -3
- NO_SUCH_INNER_FIB = -4
- NO_SUCH_LABEL = -5
- NO_SUCH_ENTRY = -6
- INVALID_VALUE = -7
- INVALID_VALUE_2 = -8
- UNIMPLEMENTED = -9
- INVALID_SW_IF_INDEX_2 = -10
- SYSCALL_ERROR_1 = -11
- SYSCALL_ERROR_2 = -12
- SYSCALL_ERROR_3 = -13
- SYSCALL_ERROR_4 = -14
- SYSCALL_ERROR_5 = -15
- SYSCALL_ERROR_6 = -16
- SYSCALL_ERROR_7 = -17
- SYSCALL_ERROR_8 = -18
- SYSCALL_ERROR_9 = -19
- SYSCALL_ERROR_10 = -20
- FEATURE_DISABLED = -30
- INVALID_REGISTRATION = -31
- NEXT_HOP_NOT_IN_FIB = -50
- UNKNOWN_DESTINATION = -51
- PREFIX_MATCHES_NEXT_HOP = -52
- NEXT_HOP_NOT_FOUND_MP = -53
- NO_MATCHING_INTERFACE = -54
- INVALID_VLAN = -55
- VLAN_ALREADY_EXISTS = -56
- INVALID_SRC_ADDRESS = -57
- INVALID_DST_ADDRESS = -58
- ADDRESS_LENGTH_MISMATCH = -59
- ADDRESS_NOT_FOUND_FOR_INTERFACE = -60
- ADDRESS_NOT_DELETABLE = -61
- IP6_NOT_ENABLED = -62
- IN_PROGRESS = 10
- NO_SUCH_NODE = -63
- NO_SUCH_NODE2 = -64
- NO_SUCH_TABLE = -65
- NO_SUCH_TABLE2 = -66
- NO_SUCH_TABLE3 = -67
- SUBIF_ALREADY_EXISTS = -68
- SUBIF_CREATE_FAILED = -69
- INVALID_MEMORY_SIZE = -70
- INVALID_INTERFACE = -71
- INVALID_VLAN_TAG_COUNT = -72
- INVALID_ARGUMENT = -73
- UNEXPECTED_INTF_STATE = -74
- TUNNEL_EXIST = -75
- INVALID_DECAP_NEXT = -76
- RESPONSE_NOT_READY = -77
- NOT_CONNECTED = -78
- IF_ALREADY_EXISTS = -79
- BOND_SLAVE_NOT_ALLOWED = -80
- VALUE_EXIST = -81
- SAME_SRC_DST = -82
- IP6_MULTICAST_ADDRESS_NOT_PRESENT = -83
- SR_POLICY_NAME_NOT_PRESENT = -84
- NOT_RUNNING_AS_ROOT = -85
- ALREADY_CONNECTED = -86
- UNSUPPORTED_JNI_VERSION = -87
- FAILED_TO_ATTACH_TO_JAVA_THREAD = -88
- INVALID_WORKER = -89
- LISP_DISABLED = -90
- CLASSIFY_TABLE_NOT_FOUND = -91
- INVALID_EID_TYPE = -92
- CANNOT_CREATE_PCAP_FILE = -93
- INCORRECT_ADJACENCY_TYPE = -94
- EXCEEDED_NUMBER_OF_RANGES_CAPACITY = -95
- EXCEEDED_NUMBER_OF_PORTS_CAPACITY = -96
- INVALID_ADDRESS_FAMILY = -97
- INVALID_SUB_SW_IF_INDEX = -98
- TABLE_TOO_BIG = -99
- CANNOT_ENABLE_DISABLE_FEATURE = -100
- BFD_EEXIST = -101
- BFD_ENOENT = -102
- BFD_EINUSE = -103
- BFD_NOTSUPP = -104
- ADDRESS_IN_USE = -105
- ADDRESS_NOT_IN_USE = -106
- QUEUE_FULL = -107
- APP_UNSUPPORTED_CFG = -108
- URI_FIFO_CREATE_FAILED = -109
- LISP_RLOC_LOCAL = -110
- BFD_EAGAIN = -111
- INVALID_GPE_MODE = -112
- LISP_GPE_ENTRIES_PRESENT = -113
- ADDRESS_FOUND_FOR_INTERFACE = -114
- SESSION_CONNECT = -115
- ENTRY_ALREADY_EXISTS = -116
- SVM_SEGMENT_CREATE_FAIL = -117
- APPLICATION_NOT_ATTACHED = -118
- BD_ALREADY_EXISTS = -119
- BD_IN_USE = -120
- BD_NOT_MODIFIABLE = -121
- BD_ID_EXCEED_MAX = -122
- SUBIF_DOESNT_EXIST = -123
- L2_MACS_EVENT_CLINET_PRESENT = -124
- INVALID_QUEUE = -125
- UNSUPPORTED = -126
- DUPLICATE_IF_ADDRESS = -127
- APP_INVALID_NS = -128
- APP_WRONG_NS_SECRET = -129
- APP_CONNECT_SCOPE = -130
- APP_ALREADY_ATTACHED = -131
- SESSION_REDIRECT = -132
- ILLEGAL_NAME = -133
- NO_NAME_SERVERS = -134
- NAME_SERVER_NOT_FOUND = -135
- NAME_RESOLUTION_NOT_ENABLED = -136
- NAME_SERVER_FORMAT_ERROR = -137
- NAME_SERVER_NO_SUCH_NAME = -138
- NAME_SERVER_NO_ADDRESSES = -139
- NAME_SERVER_NEXT_SERVER = -140
- APP_CONNECT_FILTERED = -141
- ACL_IN_USE_INBOUND = -142
- ACL_IN_USE_OUTBOUND = -143
- INIT_FAILED = -144
- NETLINK_ERROR = -145
- BIER_BSL_UNSUP = -146
- INSTANCE_IN_USE = -147
- INVALID_SESSION_ID = -148
- ACL_IN_USE_BY_LOOKUP_CONTEXT = -149
- INVALID_VALUE_3 = -150
- NON_ETHERNET = -151
- BD_ALREADY_HAS_BVI = -152
-)
-
-var vppApiErrors = map[VPPApiError]string{
- UNSPECIFIED: "Unspecified Error",
- INVALID_SW_IF_INDEX: "Invalid sw_if_index",
- NO_SUCH_FIB: "No such FIB / VRF",
- NO_SUCH_INNER_FIB: "No such inner FIB / VRF",
- NO_SUCH_LABEL: "No such label",
- NO_SUCH_ENTRY: "No such entry",
- INVALID_VALUE: "Invalid value",
- INVALID_VALUE_2: "Invalid value #2",
- UNIMPLEMENTED: "Unimplemented",
- INVALID_SW_IF_INDEX_2: "Invalid sw_if_index #2",
- SYSCALL_ERROR_1: "System call error #1",
- SYSCALL_ERROR_2: "System call error #2",
- SYSCALL_ERROR_3: "System call error #3",
- SYSCALL_ERROR_4: "System call error #4",
- SYSCALL_ERROR_5: "System call error #5",
- SYSCALL_ERROR_6: "System call error #6",
- SYSCALL_ERROR_7: "System call error #7",
- SYSCALL_ERROR_8: "System call error #8",
- SYSCALL_ERROR_9: "System call error #9",
- SYSCALL_ERROR_10: "System call error #10",
- FEATURE_DISABLED: "Feature disabled by configuration",
- INVALID_REGISTRATION: "Invalid registration",
- NEXT_HOP_NOT_IN_FIB: "Next hop not in FIB",
- UNKNOWN_DESTINATION: "Unknown destination",
- PREFIX_MATCHES_NEXT_HOP: "Prefix matches next hop",
- NEXT_HOP_NOT_FOUND_MP: "Next hop not found (multipath)",
- NO_MATCHING_INTERFACE: "No matching interface for probe",
- INVALID_VLAN: "Invalid VLAN",
- VLAN_ALREADY_EXISTS: "VLAN subif already exists",
- INVALID_SRC_ADDRESS: "Invalid src address",
- INVALID_DST_ADDRESS: "Invalid dst address",
- ADDRESS_LENGTH_MISMATCH: "Address length mismatch",
- ADDRESS_NOT_FOUND_FOR_INTERFACE: "Address not found for interface",
- ADDRESS_NOT_DELETABLE: "Address not deletable",
- IP6_NOT_ENABLED: "ip6 not enabled",
- IN_PROGRESS: "Operation in progress",
- NO_SUCH_NODE: "No such graph node",
- NO_SUCH_NODE2: "No such graph node #2",
- NO_SUCH_TABLE: "No such table",
- NO_SUCH_TABLE2: "No such table #2",
- NO_SUCH_TABLE3: "No such table #3",
- SUBIF_ALREADY_EXISTS: "Subinterface already exists",
- SUBIF_CREATE_FAILED: "Subinterface creation failed",
- INVALID_MEMORY_SIZE: "Invalid memory size requested",
- INVALID_INTERFACE: "Invalid interface",
- INVALID_VLAN_TAG_COUNT: "Invalid number of tags for requested operation",
- INVALID_ARGUMENT: "Invalid argument",
- UNEXPECTED_INTF_STATE: "Unexpected interface state",
- TUNNEL_EXIST: "Tunnel already exists",
- INVALID_DECAP_NEXT: "Invalid decap-next",
- RESPONSE_NOT_READY: "Response not ready",
- NOT_CONNECTED: "Not connected to the data plane",
- IF_ALREADY_EXISTS: "Interface already exists",
- BOND_SLAVE_NOT_ALLOWED: "Operation not allowed on slave of BondEthernet",
- VALUE_EXIST: "Value already exists",
- SAME_SRC_DST: "Source and destination are the same",
- IP6_MULTICAST_ADDRESS_NOT_PRESENT: "IP6 multicast address required",
- SR_POLICY_NAME_NOT_PRESENT: "Segement routing policy name required",
- NOT_RUNNING_AS_ROOT: "Not running as root",
- ALREADY_CONNECTED: "Connection to the data plane already exists",
- UNSUPPORTED_JNI_VERSION: "Unsupported JNI version",
- FAILED_TO_ATTACH_TO_JAVA_THREAD: "Failed to attach to Java thread",
- INVALID_WORKER: "Invalid worker thread",
- LISP_DISABLED: "LISP is disabled",
- CLASSIFY_TABLE_NOT_FOUND: "Classify table not found",
- INVALID_EID_TYPE: "Unsupported LSIP EID type",
- CANNOT_CREATE_PCAP_FILE: "Cannot create pcap file",
- INCORRECT_ADJACENCY_TYPE: "Invalid adjacency type for this operation",
- EXCEEDED_NUMBER_OF_RANGES_CAPACITY: "Operation would exceed configured capacity of ranges",
- EXCEEDED_NUMBER_OF_PORTS_CAPACITY: "Operation would exceed capacity of number of ports",
- INVALID_ADDRESS_FAMILY: "Invalid address family",
- INVALID_SUB_SW_IF_INDEX: "Invalid sub-interface sw_if_index",
- TABLE_TOO_BIG: "Table too big",
- CANNOT_ENABLE_DISABLE_FEATURE: "Cannot enable/disable feature",
- BFD_EEXIST: "Duplicate BFD object",
- BFD_ENOENT: "No such BFD object",
- BFD_EINUSE: "BFD object in use",
- BFD_NOTSUPP: "BFD feature not supported",
- ADDRESS_IN_USE: "Address in use",
- ADDRESS_NOT_IN_USE: "Address not in use",
- QUEUE_FULL: "Queue full",
- APP_UNSUPPORTED_CFG: "Unsupported application config",
- URI_FIFO_CREATE_FAILED: "URI FIFO segment create failed",
- LISP_RLOC_LOCAL: "RLOC address is local",
- BFD_EAGAIN: "BFD object cannot be manipulated at this time",
- INVALID_GPE_MODE: "Invalid GPE mode",
- LISP_GPE_ENTRIES_PRESENT: "LISP GPE entries are present",
- ADDRESS_FOUND_FOR_INTERFACE: "Address found for interface",
- SESSION_CONNECT: "Session failed to connect",
- ENTRY_ALREADY_EXISTS: "Entry already exists",
- SVM_SEGMENT_CREATE_FAIL: "svm segment create fail",
- APPLICATION_NOT_ATTACHED: "application not attached",
- BD_ALREADY_EXISTS: "Bridge domain already exists",
- BD_IN_USE: "Bridge domain has member interfaces",
- BD_NOT_MODIFIABLE: "Bridge domain 0 can't be deleted/modified",
- BD_ID_EXCEED_MAX: "Bridge domain ID exceed 16M limit",
- SUBIF_DOESNT_EXIST: "Subinterface doesn't exist",
- L2_MACS_EVENT_CLINET_PRESENT: "Client already exist for L2 MACs events",
- INVALID_QUEUE: "Invalid queue",
- UNSUPPORTED: "Unsupported",
- DUPLICATE_IF_ADDRESS: "Address already present on another interface",
- APP_INVALID_NS: "Invalid application namespace",
- APP_WRONG_NS_SECRET: "Wrong app namespace secret",
- APP_CONNECT_SCOPE: "Connect scope",
- APP_ALREADY_ATTACHED: "App already attached",
- SESSION_REDIRECT: "Redirect failed",
- ILLEGAL_NAME: "Illegal name",
- NO_NAME_SERVERS: "No name servers configured",
- NAME_SERVER_NOT_FOUND: "Name server not found",
- NAME_RESOLUTION_NOT_ENABLED: "Name resolution not enabled",
- NAME_SERVER_FORMAT_ERROR: "Server format error (bug!)",
- NAME_SERVER_NO_SUCH_NAME: "No such name",
- NAME_SERVER_NO_ADDRESSES: "No addresses available",
- NAME_SERVER_NEXT_SERVER: "Retry with new server",
- APP_CONNECT_FILTERED: "Connect was filtered",
- ACL_IN_USE_INBOUND: "Inbound ACL in use",
- ACL_IN_USE_OUTBOUND: "Outbound ACL in use",
- INIT_FAILED: "Initialization Failed",
- NETLINK_ERROR: "netlink error",
- BIER_BSL_UNSUP: "BIER bit-string-length unsupported",
- INSTANCE_IN_USE: "Instance in use",
- INVALID_SESSION_ID: "session ID out of range",
- ACL_IN_USE_BY_LOOKUP_CONTEXT: "ACL in use by a lookup context",
- INVALID_VALUE_3: "Invalid value #3",
- NON_ETHERNET: "Interface is not an Ethernet interface",
- BD_ALREADY_HAS_BVI: "Bridge domain already has a BVI interface",
-}