Open Ethernet Networking (OpEN) API Guide and Reference Manual  3.6.0.3
Data Structures | Macros | Typedefs | Enumerations | Functions
Routing Protocol Process Interface [OPENAPI_ROUTING]

Data Structures

struct  openBfdEndpoint_s
 
struct  openBfdSessionInfo_s
 The BFD Session data. More...
 
struct  openBfdSessionKey_s
 The key into the BFD database. More...
 
struct  openBfdSessionStats_s
 
struct  openNextHop_s
 
struct  openrBestRouteChangeMsg_s
 Message structure for forwarding table change notifications. More...
 
struct  openRmMatchParams_s
 
struct  openRmSetParams_s
 
struct  openRoute_s
 
struct  openRouteChange_s
 
struct  openRouteChangeList_s
 
struct  openrPolicyChangeMsg_s
 
struct  openrRouterEventMsg_s
 

Macros

#define OPEN_BFD_MAX_REG_PROT   2 /* BGP and OSPF */
 
#define OPEN_BFD_SESSION_ID_INVALID   (~0)
 
#define OPEN_RPPI_CLIENT_NAME_MAX_LEN   (32)
 
#define OPEN_VRF_MAX_NAME_LEN   64
 The max length in bytes of a VRF name, not including the null termination.
 
#define OPENR_BRC_NAME_LEN   16
 
#define OPENR_NUM_BEST_ROUTES_PER_GET   50
 
#define OPENR_PLAT_MAX_ECMP_NEXTHOPS   48
 
#define OPENR_POLICY_CLIENT_NAME_LEN   16
 
#define OPENR_ROUTING_PROTOCOL_NAME_LEN   10
 
#define OPENR_RTR_GBL_MSG_LEN   (sizeof(openrRouterEventMsg_t) - sizeof(uint32_t))
 
#define OPENR_RTR_INTF_MSG_LEN   (sizeof(openrRouterEventMsg_t))
 
#define ROUTER_EVENT_CLIENT_ADDR   "/tmp/rppi_rec.%04u"
 
#define RPPI_BRC_ADDR   "/tmp/rppi_brc.%04u"
 The "address" of the client end of the UNIX datagram socket opened to receive forwarding table change notifications. More...
 
#define RPPI_MSG_SIZE_MAX   256
 
#define RPPI_POLICY_CLIENT_ADDR   "/tmp/rppi_pc.%04u"
 
#define SYNCDB_OPENAPI_BFD   "OpEN API BFD"
 
#define SYNCDB_OPENAPI_BFD_VERSION   1
 

Typedefs

typedef struct openBfdEndpoint_s openBfdEndpoint_t
 
typedef struct openBfdSessionInfo_s openBfdSessionInfo_t
 The BFD Session data.
 
typedef struct openBfdSessionKey_s openBfdSessionKey_t
 The key into the BFD database. More...
 
typedef struct openBfdSessionStats_s openBfdSessionStats_t
 
typedef struct openNextHop_s openNextHop_t
 
typedef struct openrBestRouteChangeMsg_s openrBestRouteChangeMsg_t
 Message structure for forwarding table change notifications. More...
 
typedef struct openRmMatchParams_s openRmMatchParams_t
 
typedef struct openRmSetParams_s openRmSetParams_t
 
typedef struct openRoute_s openRoute_t
 
typedef struct openRouteChange_s openRouteChange_t
 
typedef struct openRouteChangeList_s openRouteChangeList_t
 
typedef struct openrPolicyChangeMsg_s openrPolicyChangeMsg_t
 
typedef struct openrRouterEventMsg_s openrRouterEventMsg_t
 

Enumerations

enum  OPEN_BFD_ADMIN_MODE_t { OPEN_BFD_DISABLE = 0, OPEN_BFD_ENABLE = 1 }
 
enum  OPEN_BFD_DIAG_CODE_t {
  OPEN_BFD_DIAG_CODE_NONE, OPEN_BFD_DIAG_CODE_CTRL_DETECT_TIME_EXPIRED, OPEN_BFD_DIAG_CODE_ECHO_FAILED, OPEN_BFD_DIAG_CODE_NEIGHBOR_SIGNALED_SESSION_DOWN,
  OPEN_BFD_DIAG_CODE_FORWARDING_PLANE_RESET, OPEN_BFD_DIAG_CODE_PATH_DOWN, OPEN_BFD_DIAG_CODE_CONCATENATED_PATH_DOWN, OPEN_BFD_DIAG_CODE_ADMIN_DOWN,
  OPEN_BFD_DIAG_CODE_REVERSE_CONCATENATED_PATH_DOWN, OPEN_BFD_DIAG_CODE_MIS_CONNECTIVITY_DEFECT
}
 
enum  OPEN_BFD_SESSION_STATE_t { OPEN_BFD_SESSION_STATE_ADMIN_DOWN = 0, OPEN_BFD_SESSION_STATE_DOWN = 1, OPEN_BFD_SESSION_STATE_INIT = 2, OPEN_BFD_SESSION_STATE_UP = 3 }
 
enum  OPEN_INTF_IP_ADDR_METHOD_t { OPEN_INTF_IP_ADDR_METHOD_NONE = 0, OPEN_INTF_IP_ADDR_METHOD_CONFIG = 1, OPEN_INTF_IP_ADDR_METHOD_DHCP = 2 }
 IP address configuration method. More...
 
enum  OPEN_NSF_PROTOCOL_t { OPEN_NSF_PROTOCOL_OSPF = 0x1, OPEN_NSF_PROTOCOL_RIP = 0x2, OPEN_NSF_PROTOCOL_BGP = 0x4, OPEN_NSF_PROTOCOL_LAST = 0x8 }
 
enum  OPEN_ROUTE_EVENT_t { OPEN_ADD_ROUTE = 0, OPEN_DELETE_ROUTE = 1, OPEN_CHANGE_ROUTE = 2 }
 OPEN uses these 3 enumerators to indicate the addition, deletion, or change to the best route for a given destination. More...
 
enum  OPEN_ROUTING_POLICY_CHANGE_t { OPEN_POLICY_CHANGE = 1, OPEN_POLICY_DELETE = 2 }
 Type of a policy change notification. More...
 
enum  OPEN_ROUTING_POLICY_TYPE_t { OPEN_POLICY_ROUTE_MAP = 1, OPEN_POLICY_PREFIX_LIST = 2, OPEN_POLICY_AS_PATH_LIST = 4, OPEN_POLICY_ACL_ROUTE_FILTER = 8 }
 These values must be powers of 2. More...
 
enum  openBfdTunnelType_t { OPEN_BFD_TUNNEL_TYPE_RAW, OPEN_BFD_TUNNEL_TYPE_UDP, OPEN_BFD_TUNNEL_TYPE_COUNT }
 
enum  OPENR_MESSAGE_TYPE_t {
  OPENR_KEEPALIVE = 1, OPENR_BEST_ROUTE_CHANGE = 10, OPENR_RTR_ENABLE = 101, OPENR_RTR_DISABLE = 102,
  OPENR_RTR_STARTUP_DONE = 103, OPENR_RTR_INTF_CREATE = 104, OPENR_RTR_INTF_DELETE = 105, OPENR_RTR_INTF_ENABLE = 106,
  OPENR_RTR_INTF_ENABLE_PENDING = 107, OPENR_RTR_INTF_DISABLE = 108, OPENR_RTR_INTF_DISABLE_PENDING = 109, OPENR_RTR_INTF_ADDR_CHANGE = 110,
  OPENR_RTR_INTF_MTU = 111, OPENR_RTR_INTF_BW_CHANGE = 112, OPENR_RTR_INTF_HOST_MODE = 113, OPENR_RTR_INTF_CFG_CHANGE = 114,
  OPENR_RTR6_ENABLE = 201, OPENR_RTR6_DISABLE = 202, OPENR_RTR6_STARTUP_DONE = 203, OPENR_RTR6_INTF_CREATE = 204,
  OPENR_RTR6_INTF_DELETE = 205, OPENR_RTR6_INTF_ENABLE = 206, OPENR_RTR6_INTF_DISABLE = 207, OPENR_RTR6_INTF_ADDR_CHANGE = 208,
  OPENR_RTR6_INTF_MTU = 209, OPENR_RTR6_INTF_BW_CHANGE = 210, OPENR_RTR6_INTF_HOST_MODE = 211, OPENR_POLICY_CHANGE = 300
}
 Values that go in the Message Type field of event messages sent to applications. More...
 

Functions

open_error_t openapiArpResolve (openapiClientHandle_t *client_handle, uint32_t vrfId, open_inet_addr_t *nh_addr, open_buffdesc *mac, uint32_t cbParm1, uint32_t cbParm2, uint32_t cbParm3)
 Resolve ARP for the given IP Address. More...
 
open_error_t openapiBestRouteChangeNextGet (openapiClientHandle_t *client_handle, uint32_t clientId, OPEN_ROUTE_EVENT_t *chType, openRoute_t *route, open_buffdesc *nextHopListBuff)
 Get the next best route change pending for a specific client. More...
 
open_error_t openapiBestRouteChangeNextGetMult (openapiClientHandle_t *client_handle, uint32_t clientId, uint32_t numChanges, open_buffdesc *routeListBuff)
 Get the next best route change pending for a specific client. More...
 
open_error_t openapiBestRouteEventDeregister (openapiClientHandle_t *client_handle, uint32_t clientId)
 Deregister for notifications when there are changes to one or more routes used for IP forwarding. More...
 
open_error_t openapiBestRouteEventRegister (openapiClientHandle_t *client_handle, OPEN_AF_t family, uint32_t pid, uint32_t vrfId, open_buffdesc *clientName, uint32_t *clientId)
 Register to be notified when there are changes to one or more routes used for IP forwarding. More...
 
open_error_t openapiBestRouteEventRegisterVr (openapiClientHandle_t *client_handle, uint32_t vrfId, OPEN_AF_t family, uint32_t pid, open_buffdesc *clientName, uint32_t *clientId)
 Register to be notified when there are changes to one or more routes used for IP forwarding. More...
 
open_error_t openapiBestRouteLookup (openapiClientHandle_t *client_handle, open_inet_addr_t destAddr, openRoute_t *route, open_buffdesc *nextHopListBuff)
 Find the longest prefix match for a given destination IP address. More...
 
open_error_t openapiBestRouteNextGet (openapiClientHandle_t *client_handle, OPEN_AF_t family, openRoute_t *routeEntry, open_buffdesc *nextHopListBuff)
 Return next best route in the routing table. More...
 
open_error_t openapiBestRouteNextGetVr (openapiClientHandle_t *client_handle, OPEN_AF_t family, uint32_t vrfId, openRoute_t *openRoute, open_buffdesc *nextHopListBuff)
 Return next best route in the specified VRF routing table. More...
 
open_error_t openapiBfdModeSet (OPEN_BFD_ADMIN_MODE_t mode)
 Set the BFD Global Admin Mode. More...
 
open_error_t openapiBfdSessionCreate (openapiClientHandle_t *client_handle, openBfdEndpoint_t *ep, uint32_t *id)
 Create a BFD Session. More...
 
open_error_t openapiBfdSessionDelete (openapiClientHandle_t *client_handle, openBfdEndpoint_t *ep, uint32_t id)
 Delete a BFD Session. More...
 
open_error_t openapiBfdSessionFind (openapiClientHandle_t *client_handle, open_inet_addr_t peer, uint32_t *id)
 Get the BFD Session Identifier for a given peer by IP address. More...
 
open_error_t openapiBfdSessionInfoGet (openapiClientHandle_t *client_handle, uint32_t id, openBfdSessionInfo_t *info)
 Get the BFD session information. More...
 
open_error_t openapiBfdSessionStatsGet (openapiClientHandle_t *client_handle, uint32_t id, openBfdSessionStats_t *stats)
 Get the BFD statistics associated with the given session. More...
 
open_error_t openapiExternalRoutesSaveDeRegister (openapiClientHandle_t *client_handle, OPEN_AF_t addressFamily, uint32_t vrfId, uint32_t protoId)
 De-Register with RTO to save External routes to SyncDB. More...
 
open_error_t openapiExternalRoutesSaveRegister (openapiClientHandle_t *client_handle, OPEN_AF_t addressFamily, uint32_t vrfId, uint32_t protoId)
 Register with RTO to save External routes to SyncDB. More...
 
open_error_t openapiIntfBandwidthGet (openapiClientHandle_t *client_handle, OPEN_AF_t af, uint32_t intf, uint32_t *bandwidth)
 Get the bandwidth value configure on the device ( ** to change **) More...
 
open_error_t openapiIntfBestRoutesNextGet (openapiClientHandle_t *client_handle, uint32_t clientId, uint32_t intIfNum, uint32_t numChanges, open_buffdesc *routeListBuff)
 Get the next set of best-routes on an interface for a specific client. More...
 
open_error_t openapiIntfIpMtuGet (openapiClientHandle_t *client_handle, OPEN_AF_t af, uint32_t intf, uint32_t *ipMtu)
 Get the configured ipmtu value for the router interface given an address family. More...
 
open_error_t openapiIntfIsUnnumbered (openapiClientHandle_t *client_handle, uint32_t intIfNum, OPEN_BOOL_t *isUnnumbered)
 Check if a given interface is unnumbered. More...
 
open_error_t openapiIntfNameSizeGet (openapiClientHandle_t *client_handle, uint32_t *ifNameSize)
 Get the maximum length of an OPEN interface name. More...
 
open_error_t openapiIp6RouterPreferenceGet (openapiClientHandle_t *client_handle, OPEN_PREF_INDICES_t index, uint32_t *pref)
 Get IPv6 router preference associated with the specified protocol. More...
 
open_error_t openapiIp6RouterPreferenceSet (openapiClientHandle_t *client_handle, OPEN_PREF_INDICES_t index, uint32_t pref)
 Set IPV6 router preference associated with the specified protocol. More...
 
open_error_t openapiIpMapInitialRoutesDone (openapiClientHandle_t *client_handle, uint32_t vrfId, OPEN_NSF_PROTOCOL_t protocol)
 A protocol that controls NSF routes calls this function to indicate it has updated RTO with all its initial routes after a warm restart. More...
 
open_error_t openapiIpMapIsBackupElectedGet (openapiClientHandle_t *client_handle, OPEN_BOOL_t *isBackupElected)
 Check if backup is elected. More...
 
open_error_t openapiIpMapNsfRouteSource (openapiClientHandle_t *client_handle, uint32_t vrfId, OPEN_NSF_PROTOCOL_t protocol)
 Indicate that a protocol intends to add routes to RTO following a warm restart. More...
 
open_error_t openapiIpRouterPreferenceGet (openapiClientHandle_t *client_handle, OPEN_PREF_INDICES_t index, uint32_t *pref)
 Get router preference associated with the specified protocol. More...
 
open_error_t openapiIpRouterPreferenceGetVr (openapiClientHandle_t *client_handle, uint32_t vrfId, OPEN_PREF_INDICES_t index, uint32_t *pref)
 Get router preference associated with the specified protocol in a VRF. More...
 
open_error_t openapiIpRouterPreferenceSet (openapiClientHandle_t *client_handle, OPEN_PREF_INDICES_t index, uint32_t pref)
 Set router preference associated with the specified protocol. More...
 
open_error_t openapiIpRouterProtoNameNextGet (openapiClientHandle_t *client_handle, uint32_t protoId, open_buffdesc *protoName, uint32_t *nextProtoId)
 Get the protocol name assigned to the associated protocol id. More...
 
open_error_t openapiKernelArpAdd (openapiClientHandle_t *client_handle, uint32_t vrfId, open_inet_addr_t *dest_addr, open_buffdesc *mac, int32_t stkIfIndex, uint16_t state)
 Add the ARP entry. More...
 
open_error_t openapiKernelArpDelete (openapiClientHandle_t *client_handle, uint32_t vrfId, open_inet_addr_t *dest_addr, int32_t stkIfIndex)
 Delete the ARP entry. More...
 
open_error_t openapiKernelRouteAddVr (openapiClientHandle_t *client_handle, uint32_t vrfId, openRoute_t *routeEntry, open_buffdesc *nextHopListBuff)
 Add a kernel route to the common routing table. More...
 
open_error_t openapiKernelRouteDelVr (openapiClientHandle_t *client_handle, uint32_t vrfId, openRoute_t *routeEntry, open_buffdesc *nextHopListBuff)
 Delete a kernel route from the common routing table. More...
 
open_error_t openapiMaxNextHopsGet (openapiClientHandle_t *client_handle, uint32_t *maxNextHops)
 Get the maximum number of next hops in an ECMP route. More...
 
open_error_t openapiMaxRoutingInterfacesGet (openapiClientHandle_t *client_handle, uint32_t *routingIntfMax)
 Get the maximum number of OPEN routing interfaces. More...
 
open_error_t openapiPlatRtrRouteMaxEntriesGet (openapiClientHandle_t *client_handle, uint32_t *pval)
 Get the number of IPv4 routes for this platform. More...
 
open_error_t openapiPlatRtrRouteMaxEqualCostEntriesGet (openapiClientHandle_t *client_handle, uint32_t *pval)
 Get the number of ECMP MAX PATHS FROM PLATFORM params. More...
 
open_error_t openapiPolicyChangeAck (openapiClientHandle_t *client_handle, uint32_t clientId, uint32_t seqNo)
 Acknowledge receipt of a policy change notification. More...
 
open_error_t openapiPrefixFind (openapiClientHandle_t *client_handle, open_inet_addr_t destPrefix, uint32_t pfxLen, openRoute_t *route, open_buffdesc *nextHopListBuff)
 Find the best route with a specific prefix. More...
 
open_error_t openapiPrefixFindVr (openapiClientHandle_t *client_handle, uint32_t vrfId, open_inet_addr_t destPrefix, uint32_t pfxLen, openRoute_t *route, open_buffdesc *nextHopListBuff)
 Find the best route with a specific prefix. More...
 
int openapiPrefixListApply (openapiClientHandle_t *client_handle, open_buffdesc *pfxListName, open_inet_addr_t prefix, uint32_t pfxLen)
 Apply a prefix list with a given name to a given prefix. More...
 
open_error_t openapiRouteAdd (openapiClientHandle_t *client_handle, openRoute_t *routeEntry, open_buffdesc *nextHopListBuff)
 Add a route to the common routing table. More...
 
open_error_t openapiRouteAddVr (openapiClientHandle_t *client_handle, uint32_t vrfId, openRoute_t *routeEntry, open_buffdesc *nextHopListBuff)
 Add a route to the common routing table. More...
 
open_error_t openapiRouteDel (openapiClientHandle_t *client_handle, openRoute_t *routeEntry)
 Delete a route from the common routing table. More...
 
open_error_t openapiRouteDelVr (openapiClientHandle_t *client_handle, uint32_t vrfId, openRoute_t *routeEntry, open_buffdesc *nextHopListBuff)
 Delete a route from the common routing table. More...
 
int openapiRouteMapApply (openapiClientHandle_t *client_handle, open_buffdesc *routeMapName, openRmMatchParams_t *matchParams, openRmSetParams_t *setParams)
 Apply a route map with a given name to a route whose attributes are set in the matchParams argument. More...
 
open_error_t openapiRouteMod (openapiClientHandle_t *client_handle, openRoute_t *routeEntry, open_buffdesc *nextHopListBuff)
 Modify an existing route to the common routing table. More...
 
open_error_t openapiRouteModVr (openapiClientHandle_t *client_handle, uint32_t vrfId, openRoute_t *routeEntry, open_buffdesc *nextHopListBuff)
 Modify an existing route to the common routing table. More...
 
open_error_t openapiRouteNextGet (openapiClientHandle_t *client_handle, OPEN_AF_t family, openRoute_t *route, open_buffdesc *nextHopListBuff)
 Return next route in the routing table. More...
 
open_error_t openapiRouteProtoNameLenMax (openapiClientHandle_t *client_handle, uint32_t *protoNameLen)
 Get the maximum length of a protocol name. More...
 
open_error_t openapiRouterEventAcknowledge (openapiClientHandle_t *client_handle, uint32_t vrfId, uint32_t clientId, uint32_t eventId)
 Acknowledge a router event. More...
 
open_error_t openapiRouterEventDeregister (openapiClientHandle_t *client_handle, uint32_t vrfId, uint32_t clientId)
 Deregister for routing events. More...
 
open_error_t openapiRouterEventRegister (openapiClientHandle_t *client_handle, OPEN_AF_t family, uint32_t pid, uint32_t vrfId, open_buffdesc *clientName, uint32_t *clientId)
 Register for routing events. More...
 
open_error_t openapiRouteTypeDeregister (openapiClientHandle_t *client_handle, uint32_t addressFamily, uint32_t routeType)
 Deregister a route type. More...
 
open_error_t openapiRouteTypeInfoGet (openapiClientHandle_t *client_handle, uint32_t routeType, open_buffdesc *protoName, open_buffdesc *routeTypeName)
 For a given route type, get the protocol and route type names. More...
 
open_error_t openapiRouteTypeNameLenMax (openapiClientHandle_t *client_handle, uint32_t *routeTypeNameLen)
 Get the maximum length of a protocol name. More...
 
open_error_t openapiRouteTypeRegister (openapiClientHandle_t *client_handle, OPEN_AF_t addressFamily, uint32_t protoId, open_buffdesc *routeTypeName, open_buffdesc *routeTypeCode, uint32_t *routeType)
 Register a new route type. More...
 
open_error_t openapiRoutingPolicyRegister (openapiClientHandle_t *client_handle, open_buffdesc *clientName, uint32_t pid, uint32_t policyTypeMask, uint32_t *clientId)
 Register to be notified when there are routing policy changes. More...
 
open_error_t openapiRoutingProtocolDeregister (openapiClientHandle_t *client_handle, uint32_t vrfId, uint32_t addressFamily, uint32_t protoId)
 Deregister a routing protocol. More...
 
open_error_t openapiRoutingProtocolRegister (openapiClientHandle_t *client_handle, uint32_t vrfId, OPEN_AF_t addressFamily, open_buffdesc *protoName, open_buffdesc *protoCode, uint32_t *protoId)
 Register a new routing protocol. More...
 
open_error_t openapiRoutingStartupStatus (openapiClientHandle_t *client_handle, OPEN_AF_t af, uint32_t *complete)
 Report whether IP routing has finished initialization for a given address family. More...
 
open_error_t openapiRoutingStartupStatusVr (openapiClientHandle_t *client_handle, OPEN_AF_t af, uint32_t vrfId, uint32_t *complete)
 Report whether IP routing has finished initialization in the requested VRF for a given address family. More...
 
open_error_t openapiRtoFreeRouteCountGet (openapiClientHandle_t *client_handle, uint32_t vrfId, uint32_t *rtoFreeRouteCount)
 Get the number of available routes in RTO for this VRF Id. More...
 
open_error_t openapiRtrAdminModeGet (openapiClientHandle_t *client_handle, OPEN_AF_t af, OPEN_CONTROL_t *enable)
 Get the current router admin mode given an address family. More...
 
open_error_t openapiRtrAdminModeGetVrf (openapiClientHandle_t *client_handle, OPEN_AF_t af, uint32_t vrfId, OPEN_CONTROL_t *enable)
 Get the router admin mode of the VRF. More...
 
open_error_t openapiRtrICMPEchoReplyModeGet (openapiClientHandle_t *client_handle, open_buffdesc *vrfName, uint32_t *mode)
 Get the ICMP ignore echo-req mode. More...
 
open_error_t openapiRtrICMPRatelimitGet (openapiClientHandle_t *client_handle, open_buffdesc *vrfName, uint32_t *burstSize, uint32_t *interval)
 Get the ICMP Ratelimit parameters. More...
 
open_error_t openapiRtrICMPRedirectsModeGet (openapiClientHandle_t *client_handle, uint32_t intf, uint32_t *mode)
 Get the ICMP Redirects mode of the interface. More...
 
open_error_t openapiRtrICMPUnreachablesModeGet (openapiClientHandle_t *client_handle, uint32_t intf, uint32_t *mode)
 Get the ICMP Unreachables mode of the interface. More...
 
open_error_t openapiRtrIntfIpAddrGet (openapiClientHandle_t *client_handle, OPEN_AF_t af, uint32_t intf, open_inet_pfx_t *ipAddr)
 Get an IP address on a given router interface for a given address family. More...
 
open_error_t openapiRtrIntfIpAddrMethodGet (openapiClientHandle_t *client_handle, uint32_t intf, OPEN_INTF_IP_ADDR_METHOD_t *addrMethod, OPEN_CONTROL_t *clientIdEnable)
 Get the method used to assign the IP address to a Router interface. More...
 
open_error_t openapiRtrIntfIpStackDrvNameGet (openapiClientHandle_t *client_handle, uint32_t vrfId, uint32_t intf, open_buffdesc *intfName)
 Get the drv name of the configured router interface. More...
 
open_error_t openapiRtrIntfIpStackIfIndexGet (openapiClientHandle_t *client_handle, uint32_t intf, uint32_t *ifIndex)
 Get the ipstack ifIndex on the configured router interface. More...
 
open_error_t openapiRtrIntfIpStackIfNameGet (openapiClientHandle_t *client_handle, uint32_t intf, open_buffdesc *intfName)
 Get the name of the configured router interface. More...
 
open_error_t openapiRtrIntfIpStackStkNameGet (openapiClientHandle_t *client_handle, uint32_t vrfId, uint32_t intf, open_buffdesc *intfName)
 Get the stk name of the configured router interface. More...
 
open_error_t openapiRtrIntfL3MacAddressGet (openapiClientHandle_t *client_handle, uint32_t intf, open_buffdesc *mac)
 Get the L3 MAC address of the router interface. More...
 
open_error_t openapiRtrIntfLoopbackIdGet (openapiClientHandle_t *client_handle, uint32_t intf, uint32_t *loopbackId)
 Get the loopback id for the configured router interface. More...
 
open_error_t openapiRtrIntfNameGet (openapiClientHandle_t *client_handle, uint32_t intf, open_buffdesc *intfName)
 Get the interface name of the configured router interface. More...
 
open_error_t openapiRtrIntfNextGet (openapiClientHandle_t *client_handle, uint32_t intf, uint32_t *nextIntf)
 Get the next configured router interface. More...
 
open_error_t openapiRtrIntfNextGetVrf (openapiClientHandle_t *client_handle, uint32_t vrfId, uint32_t intf, uint32_t *nextIntf)
 Get the next configured router interface. More...
 
open_error_t openapiRtrIntfOperModeGet (openapiClientHandle_t *client_handle, OPEN_AF_t af, uint32_t intf, OPEN_CONTROL_t *ifState)
 Get the up/down status of the router interface given the address family. More...
 
open_error_t openapiRtrIntfSecIpAddrGet (openapiClientHandle_t *client_handle, OPEN_AF_t af, uint32_t intf, open_inet_pfx_t *ipAddr, uint32_t *index)
 Get a Secondary IP address on a given router interface for a given address family. More...
 
open_error_t openapiRtrIntfTypeGet (openapiClientHandle_t *client_handle, uint32_t intf, OPEN_INTF_TYPE_t *intfType)
 Get the type of the interface for the given router interface. More...
 
open_error_t openapiRtrIntfUnitSlotPortGet (openapiClientHandle_t *client_handle, uint32_t intf, open_USP_t *usp)
 Get the unit, slot and port of the router interface. More...
 
open_error_t openapiRtrIntfVlanIdGet (openapiClientHandle_t *client_handle, uint32_t intf, uint32_t *vlanId)
 Get the vlan id on the configured router interface. More...
 
open_error_t openapiRtrLoopbackIntIfNumGet (openapiClientHandle_t *client_handle, uint32_t loopbackId, uint32_t *intf)
 Get the internal interface number of the loopback interface. More...
 
open_error_t openapiStackIfIndexIntIfNumGet (openapiClientHandle_t *client_handle, uint32_t ifIndex, uint32_t *intIfNum)
 Get the interface number corresponding to the given ipstack ifIndex. More...
 
open_error_t openapiUnnumberedPeerInfoSet (openapiClientHandle_t *client_handle, uint32_t intIfNum, uint32_t peerIp, OPEN_BOOL_t isAdd, uint32_t flag)
 Set the Unnumbered peer info on an interface. More...
 
open_error_t openapiVrAgentProbeResultIpSlaNotify (openapiClientHandle_t *client_handle, uint32_t vrfId, uint32_t ipSlaId, uint32_t probeReturnCode, uint32_t lastProbeRTTvalue, uint32_t latestOperationStartUpTime)
 This routine is called by VRF Manager when a VR Probe Agent of VRF Instance needs to update the result of last probe attempt of an IPSLA operation. More...
 
open_error_t openapiVrfIntfNameGet (openapiClientHandle_t *client_handle, uint32_t vrfId, open_buffdesc *intfName)
 Get the name of the configured VRF interface. More...
 
open_error_t openapiVrfNameGet (openapiClientHandle_t *client_handle, uint32_t vrfId, open_buffdesc *vrfName)
 Get the VRF name for a given VRF ID. More...
 
open_error_t openapiVrfNameNextGet (openapiClientHandle_t *client_handle, open_buffdesc *vrfName, open_buffdesc *vrfNameNext)
 Get the next VRF name. More...
 

Detailed Description

Macro Definition Documentation

#define RPPI_BRC_ADDR   "/tmp/rppi_brc.%04u"

The "address" of the client end of the UNIX datagram socket opened to receive forwarding table change notifications.

Examples:
openr_example.c.

Definition at line 54 of file openapi_routing.h.

Typedef Documentation

The key into the BFD database.

The Syncdb evaluates this key using the memcmp() function, so the BFD entries don't appear in any particular order on the "GetNext" operation.

Message structure for forwarding table change notifications.

Enumeration Type Documentation

IP address configuration method.

Enumerator
OPEN_INTF_IP_ADDR_METHOD_NONE 

No method.

OPEN_INTF_IP_ADDR_METHOD_CONFIG 

Manual configuration.

OPEN_INTF_IP_ADDR_METHOD_DHCP 

Leased through DHCP.

Definition at line 89 of file openapi_routing.h.

OPEN uses these 3 enumerators to indicate the addition, deletion, or change to the best route for a given destination.

Definition at line 99 of file openapi_routing.h.

Type of a policy change notification.

Enumerator
OPEN_POLICY_CHANGE 

Policy has been added or modified.

OPEN_POLICY_DELETE 

Policy has been deleted.

Definition at line 119 of file openapi_routing.h.

These values must be powers of 2.

They are used as indexes to a bit map when registering for routing policy changes.

Definition at line 109 of file openapi_routing.h.

Values that go in the Message Type field of event messages sent to applications.

Definition at line 126 of file openapi_routing.h.

Function Documentation

open_error_t openapiArpResolve ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
open_inet_addr_t nh_addr,
open_buffdesc mac,
uint32_t  cbParm1,
uint32_t  cbParm2,
uint32_t  cbParm3 
)

Resolve ARP for the given IP Address.

Parameters
[in]vrfIdVRF Identifier
[in]client_handleclient handle from registration API
[in]destPrefixdestination IP prefix
[in]pfxLendestination prefix length
[out]routebest route to this prefix
[out]nextHopListBuffList of nextHops associated with route.
Return values
OPEN_E_NONEIf a best route is found
OPEN_E_NOT_FOUNDIf there is no route to the destination

OpEN API Version: 1.3

open_error_t openapiBestRouteChangeNextGet ( openapiClientHandle_t client_handle,
uint32_t  clientId,
OPEN_ROUTE_EVENT_t chType,
openRoute_t route,
open_buffdesc nextHopListBuff 
)

Get the next best route change pending for a specific client.

Parameters
[in]client_handleclient handle from registration API
[in]clientIdUnique integer ID assigned to the client for this registration. Used to identify the client when retrieving changes.
[out]chTypeType of change (add, modify, delete)
[out]routeThe changed route. On a delete route event, the only valid fields are the prefix and prefix length.
[out]nextHopListBuffList of nextHops associated with route.
Return values
OPEN_E_NONEIf a route change is returned
OPEN_E_PARAMIf any output parameter is NULL
OPEN_E_EMPTYIf no more route changes are pending
OPEN_E_NOT_FOUNDNo client is registered with the given client ID
OPEN_E_FAILAny other failure

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiBestRouteChangeNextGetMult ( openapiClientHandle_t client_handle,
uint32_t  clientId,
uint32_t  numChanges,
open_buffdesc routeListBuff 
)

Get the next best route change pending for a specific client.

Parameters
[in]client_handleclient handle from registration API
[in]clientIdUnique integer ID assigned to the client for this registration. Used to identify the client when retrieving changes.
[out]numChangesThe number of changes to retrieve
[out]routeListBuffThe list that holds the set of best routes.
Return values
OPEN_E_NONEIf a route change is returned
OPEN_E_PARAMIf any output parameter is NULL
OPEN_E_EMPTYIf no more route changes are pending
OPEN_E_NOT_FOUNDNo client is registered with the given client ID
OPEN_E_FAILAny other failure

OpEN API Version: 1.1

open_error_t openapiBestRouteEventDeregister ( openapiClientHandle_t client_handle,
uint32_t  clientId 
)

Deregister for notifications when there are changes to one or more routes used for IP forwarding.

Parameters
[in]client_handleclient handle from registration API
[in]clientIdUnique integer ID assigned to the client for this registration. Used to identify the client when retrieving changes.
Return values
OPEN_E_NONEIf the registration was successful
OPEN_E_UNAVAILIf RPPI is not ready to accept registrations yet. This may occur when switchdrvr is first starting and has not yet reached a state where it can accept best route client registrations. The caller should try again later.
OPEN_E_NOT_FOUNDIf the client ID does not match a registered client.
OPEN_E_FAILAny other failure
Note
RPC API.

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiBestRouteEventRegister ( openapiClientHandle_t client_handle,
OPEN_AF_t  family,
uint32_t  pid,
uint32_t  vrfId,
open_buffdesc clientName,
uint32_t *  clientId 
)

Register to be notified when there are changes to one or more routes used for IP forwarding.

Parameters
[in]client_handleclient handle from registration API
[in]familyOPEN_AF_INET to be notified of changes to IPv4 routes OPEN_AF_INET6 to be notified of changes to IPv6 routes
[in]pidLinux process ID of the process registering
[in]vrfIdVRF Identifier
[in]clientNameName of the client. Must be unique among all clients registering for best route change notification. Up to OPENR_BRC_NAME_LEN characters long.
[out]clientIdUnique integer ID assigned to the client for this registration. Used to identify the client when retrieving changes.
Return values
OPEN_E_NONEIf the registration was successful OPEN_E_UNAVAIL If RPPI is not ready to accept registrations yet. This may occur when switchdrvr is first starting and has not yet reached a state where it can accept best route client registrations. The caller should try again later.
OPEN_E_FULLIf the maximum number of best route clients are already registered.
OPEN_E_FAILAny other failure
Note
RPC API.

OpEN API Version: 1.3

open_error_t openapiBestRouteEventRegisterVr ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
OPEN_AF_t  family,
uint32_t  pid,
open_buffdesc clientName,
uint32_t *  clientId 
)

Register to be notified when there are changes to one or more routes used for IP forwarding.

Parameters
[in]client_handleclient handle from registration API
[in]vrfIdVRF instance
[in]familyOPEN_AF_INET to be notified of changes to IPv4 routes OPEN_AF_INET6 to be notified of changes to IPv6 routes
[in]pidLinux process ID of the process registering
[in]clientNameName of the client. Must be unique among all clients registering for best route change notification. Up to OPENR_BRC_NAME_LEN characters long.
[out]clientIdUnique integer ID assigned to the client for this registration. Used to identify the client when retrieving changes.
Return values
OPEN_E_NONEIf the registration was successful OPEN_E_UNAVAIL If RPPI is not ready to accept registrations yet. This may occur when switchdrvr is first starting and has not yet reached a state where it can accept best route client registrations. The caller should try again later.
OPEN_E_FULLIf the maximum number of best route clients are already registered.
OPEN_E_FAILAny other failure
Note
RPC API.

OpEN API Version: 1.3

Examples:
openr_example.c.
open_error_t openapiBestRouteLookup ( openapiClientHandle_t client_handle,
open_inet_addr_t  destAddr,
openRoute_t route,
open_buffdesc nextHopListBuff 
)

Find the longest prefix match for a given destination IP address.

Parameters
[in]client_handleclient handle from registration API
[in]destAddrdestination IP address
[out]routebest route to destination
[out]nextHopListBuffList of nextHops associated with route.
Return values
OPEN_E_NONEIf a best route is found
OPEN_E_NOT_FOUNDIf there is no route to the destination

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiBestRouteNextGet ( openapiClientHandle_t client_handle,
OPEN_AF_t  family,
openRoute_t routeEntry,
open_buffdesc nextHopListBuff 
)

Return next best route in the routing table.

Parameters
[in]client_handleclient handle from registration API
[in]familyAddress family (IPv4 or IPv6)
[in,out]routeEntryNext best route in the routing table.
[out]nextHopListBuffList of nextHops associated with route.
Return values
OPEN_E_NONEIf a next route is returned in routeEntry.
OPEN_E_NOT_FOUNDIf there are no more best routes.
OPEN_E_PARAMIf an input parameter is invalid.
OPEN_E_FAILOther failure.
Note
In order to look up the first route all fields of the routeEntry structure must be set to zero. In order to look up subsequent routes use the previously reported route as input.

The route returned includes all active next hops.

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiBestRouteNextGetVr ( openapiClientHandle_t client_handle,
OPEN_AF_t  family,
uint32_t  vrfId,
openRoute_t openRoute,
open_buffdesc nextHopListBuff 
)

Return next best route in the specified VRF routing table.

Parameters
[in]client_handleclient handle from registration API
[in]familyAddress family (IPv4 or IPv6)
[in]vrfIdVRF Identifier
[in,out]routeEntryNext best route in the routing table.
[out]nextHopListBuffList of nextHops associated with route.
Return values
OPEN_E_NONEIf a next route is returned in routeEntry.
OPEN_E_NOT_FOUNDIf there are no more best routes.
OPEN_E_PARAMIf an input parameter is invalid.
OPEN_E_FAILOther failure.
Note
In order to look up the first route all fields of the routeEntry structure must be set to zero. In order to look up subsequent routes use the previously reported route as input.

The route returned includes all active next hops.

OpEN API Version: 1.3

open_error_t openapiBfdModeSet ( OPEN_BFD_ADMIN_MODE_t  mode)

Set the BFD Global Admin Mode.

Parameters
[in]modethe new value of the BFD mode
Return values
OPEN_E_NONE
OPEN_E_FAILOpEN API Version: 1.3
Examples:
routing_example.c.
open_error_t openapiBfdSessionCreate ( openapiClientHandle_t client_handle,
openBfdEndpoint_t ep,
uint32_t *  id 
)

Create a BFD Session.

Parameters
[in]client_handleclient handle from registration API
[in]epBFD endpoint parameters
[out]idSession identifier
Return values
OPEN_E_NONEIf the session was created successfully.
OPEN_E_FAILIf the session was not created.

OpEN API Version: 1.3

Examples:
routing_example.c.
open_error_t openapiBfdSessionDelete ( openapiClientHandle_t client_handle,
openBfdEndpoint_t ep,
uint32_t  id 
)

Delete a BFD Session.

Parameters
[in]client_handleclient handle from registration API
[in]epBFD endpoint parameters
[in]idSession identifier
Return values
OPEN_E_NONEIf the session was deleted successfully.
OPEN_E_FAILIf the session was not deleted.

OpEN API Version: 1.3

Examples:
routing_example.c.
open_error_t openapiBfdSessionFind ( openapiClientHandle_t client_handle,
open_inet_addr_t  peer,
uint32_t *  id 
)

Get the BFD Session Identifier for a given peer by IP address.

Parameters
[in]client_handleclient handle from registration API
[in]peerpeer IP address
[out]idsession identifier
Return values
OPEN_E_NONEOn success.
OPEN_E_PARAMInvalid parameter.
OPEN_E_FAILFailure occurred.
OPEN_E_INTERNALInternal error occurred.

OpEN API Version: 1.15

Examples:
routing_example.c.
open_error_t openapiBfdSessionInfoGet ( openapiClientHandle_t client_handle,
uint32_t  id,
openBfdSessionInfo_t info 
)

Get the BFD session information.

Parameters
[in]client_handleclient handle from registration API
[in]idSession identifier
[out]infoSession information
Return values
OPEN_E_NONEIf the session was created successfully.
OPEN_E_FAILIf the session was not created.
Note
The session identifier is returned by openapiBfdSessionCreate() API.

OpEN API Version: 1.3

Examples:
routing_example.c.
open_error_t openapiBfdSessionStatsGet ( openapiClientHandle_t client_handle,
uint32_t  id,
openBfdSessionStats_t stats 
)

Get the BFD statistics associated with the given session.

Parameters
[in]client_handleclient handle from registration API
[in]idsession identifier
[out]statssession stats
Return values
OPEN_E_NONEon successful operation
OPEN_E_FAILif the operation failed

OpEN API Version: 1.3

Examples:
routing_example.c.
open_error_t openapiExternalRoutesSaveDeRegister ( openapiClientHandle_t client_handle,
OPEN_AF_t  addressFamily,
uint32_t  vrfId,
uint32_t  protoId 
)

De-Register with RTO to save External routes to SyncDB.

Parameters
[in]client_handleclient handle from registration API
[in]addressFamilyAddress family (IPv4 or IPv6)
[in]vrfIdVirtual router identifier
[in]protoIdUnique protocol identifier that RPPI provided at registration time.
Return values
OPEN_E_NONEIf the de-registration is successful
OPEN_E_ERROROther failure.

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiExternalRoutesSaveRegister ( openapiClientHandle_t client_handle,
OPEN_AF_t  addressFamily,
uint32_t  vrfId,
uint32_t  protoId 
)

Register with RTO to save External routes to SyncDB.

Parameters
[in]client_handleclient handle from registration API
[in]addressFamilyAddress family (IPv4 or IPv6)
[in]vrfIdVirtual router identifier
[in]protoIdUnique protocol identifier that RPPI provided at registration time.
Return values
OPEN_E_NONEIf the registration is successful
OPEN_E_ERROROther failure.

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiIntfBandwidthGet ( openapiClientHandle_t client_handle,
OPEN_AF_t  af,
uint32_t  intf,
uint32_t *  bandwidth 
)

Get the bandwidth value configure on the device ( ** to change **)

Parameters
[in]client_handleclient handle from registration API
[in]afAddress Family
[in]intfThe Configured Router Interface
[out]bandwidthBandwidth for the interface
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILon other failure

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiIntfBestRoutesNextGet ( openapiClientHandle_t client_handle,
uint32_t  clientId,
uint32_t  intIfNum,
uint32_t  numChanges,
open_buffdesc routeListBuff 
)

Get the next set of best-routes on an interface for a specific client.

Parameters
[in]client_handleclient handle from registration API
[in]clientIdUnique integer ID assigned to the client for this registration. Used to identify the client when retrieving changes.
[in]intIfNuminterface number
[out]numChangesThe number of changes to retrieve
[out]routeListBuffThe list that holds the set of best routes.
Return values
OPEN_E_NONEIf a route change is returned
OPEN_E_PARAMIf any output parameter is NULL
OPEN_E_EMPTYIf no more route changes are pending
OPEN_E_NOT_FOUNDNo client is registered with the given client ID
OPEN_E_FAILAny other failure

OpEN API Version: 1.1

open_error_t openapiIntfIpMtuGet ( openapiClientHandle_t client_handle,
OPEN_AF_t  af,
uint32_t  intf,
uint32_t *  ipMtu 
)

Get the configured ipmtu value for the router interface given an address family.

Parameters
[in]client_handleclient handle from registration API
[in]afAddress Family
[in]intfThe Configured Router Interface
[out]ipMtuIP MTU configured on the interface
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILon other failure

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiIntfIsUnnumbered ( openapiClientHandle_t client_handle,
uint32_t  intIfNum,
OPEN_BOOL_t isUnnumbered 
)

Check if a given interface is unnumbered.

Parameters
[in]client_handleClient handle from registration API
[in]intIfNumInternal Interface Number
[out]isUnnumberedstatus
Return values
OPEN_E_NONEIf the unnumbered status retrieval is successful
OPEN_E_NOT_FOUNDIf the interface is not configured
OPEN_E_PARAMIf any of the input params are invalid

OpEN API Version: 1.3

open_error_t openapiIntfNameSizeGet ( openapiClientHandle_t client_handle,
uint32_t *  ifNameSize 
)

Get the maximum length of an OPEN interface name.

Parameters
[in]client_handleclient handle from registration API
[out]ifNameSizeMaximum number of characters in an OPEN interface name (not including NULL terminator).
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILon other failure

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiIp6RouterPreferenceGet ( openapiClientHandle_t client_handle,
OPEN_PREF_INDICES_t  index,
uint32_t *  pref 
)

Get IPv6 router preference associated with the specified protocol.

Parameters
[in]client_handleclient handle from registration API
[in]indexrouter protocol type
[out]prefrouter preference value
Return values
OPEN_E_NONEGet successful.
OPEN_E_FAILGet failed.
OPEN_E_PARAMError in parameter passed.

OpEN API Version: 1.1

open_error_t openapiIp6RouterPreferenceSet ( openapiClientHandle_t client_handle,
OPEN_PREF_INDICES_t  index,
uint32_t  pref 
)

Set IPV6 router preference associated with the specified protocol.

Parameters
[in]client_handleclient handle from registration API
[in]indexrouter protocol type
[in]prefrouter preference value
Return values
OPEN_E_NONESet successful.
OPEN_E_FAILSet failed.
OPEN_E_PARAMError in parameter passed.
Note
Calling this API will change the running configuration of the switch

OpEN API Version: 1.1

open_error_t openapiIpMapInitialRoutesDone ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
OPEN_NSF_PROTOCOL_t  protocol 
)

A protocol that controls NSF routes calls this function to indicate it has updated RTO with all its initial routes after a warm restart.

Parameters
[in]client_handleClient handle from registration API
[in]vrfIdVRF Id
[in]protocolProtocol to add NSF routes
Return values
OPEN_E_PARAMIf the passed params are invalid
OPEN_E_NONEIf the OPEN call is successful
OPEN_E_FAILIf the OPEN call is unsuccessful

OpEN API Version: 1.3

open_error_t openapiIpMapIsBackupElectedGet ( openapiClientHandle_t client_handle,
OPEN_BOOL_t isBackupElected 
)

Check if backup is elected.

Parameters
[in]client_handleClient handle from registration API
[out]isBackupElectedBackup elected status
Return values
OPEN_E_PARAMIf the passed params are invalid
OPEN_E_NONEIf the OPEN call is successful

OpEN API Version: 1.3

open_error_t openapiIpMapNsfRouteSource ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
OPEN_NSF_PROTOCOL_t  protocol 
)

Indicate that a protocol intends to add routes to RTO following a warm restart.

Parameters
[in]client_handleClient handle from registration API
[in]vrfIdVRF Id
[in]protocolProtocol to add NSF routes
Return values
OPEN_E_PARAMIf the passed params are invalid
OPEN_E_NONEIf the OPEN call is successful
OPEN_E_FAILIf the OPEN call is unsuccessful

OpEN API Version: 1.3

open_error_t openapiIpRouterPreferenceGet ( openapiClientHandle_t client_handle,
OPEN_PREF_INDICES_t  index,
uint32_t *  pref 
)

Get router preference associated with the specified protocol.

Parameters
[in]client_handleclient handle from registration API
[in]indexrouter protocol type
[out]prefrouter preference value
Return values
OPEN_E_NONEGet successful.
OPEN_E_FAILGet failed.
OPEN_E_PARAMError in parameter passed.

OpEN API Version: 1.1

Examples:
bgp_example.c, and ospf_example.c.
open_error_t openapiIpRouterPreferenceGetVr ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
OPEN_PREF_INDICES_t  index,
uint32_t *  pref 
)

Get router preference associated with the specified protocol in a VRF.

Parameters
[in]client_handleclient handle from registration API
[in]vrfIdVRF Identifier
[in]indexrouter protocol type
[out]prefrouter preference value
Return values
OPEN_E_NONEGet successful.
OPEN_E_PARAMError in parameter passed.

OpEN API Version: 1.3

open_error_t openapiIpRouterPreferenceSet ( openapiClientHandle_t client_handle,
OPEN_PREF_INDICES_t  index,
uint32_t  pref 
)

Set router preference associated with the specified protocol.

Parameters
[in]client_handleclient handle from registration API
[in]indexrouter protocol type
[in]prefrouter preference value
Return values
OPEN_E_NONESet successful.
OPEN_E_FAILSet failed.
OPEN_E_PARAMError in parameter passed.
Note
Calling this API will change the running configuration of the switch

OpEN API Version: 1.1

Examples:
bgp_example.c, and ospf_example.c.
open_error_t openapiIpRouterProtoNameNextGet ( openapiClientHandle_t client_handle,
uint32_t  protoId,
open_buffdesc protoName,
uint32_t *  nextProtoId 
)

Get the protocol name assigned to the associated protocol id.

Parameters
[in]client_handleclient handle from registration API
[in]protoIdunique identifier for the routing protocol.
[in]protoNameName of the routing protocol. This name is used in the UI to refer to this protocol. (e.g., "redistribute <protoName>). openapiRouteProtoNameLenMax() gives the max length.
[out]nextProtoIdnext unique identifier for the routing protocol.
Return values
OPEN_E_PARAMIf the output parameter is NULL.
OPEN_E_INTERNALIf any of the input names are too long or otherwise invalid.
OPEN_E_FAILOther failure.
Note
Initial value of protoId should be 0 if caller wants to retrieve first available.

OpEN API Version: 1.1

Examples:
bgp_example.c, and ospf_example.c.
open_error_t openapiKernelArpAdd ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
open_inet_addr_t dest_addr,
open_buffdesc mac,
int32_t  stkIfIndex,
uint16_t  state 
)

Add the ARP entry.

Parameters
[in]vrfIdVRF Identifier
[in]client_handleclient handle from registration API
[in]dest_addrdestination IP address
[in]macdestination MAC address
[in]stkIfIndexstack if index of the interface
[in]statestate of the arp entry
Return values
OPEN_E_NONE
OPEN_E_PARAM
OPEN_E_UNAVAIL
OPEN_E_ERROR
OPEN_E_EXISTS
OPEN_E_INTERNALOpEN API Version: 1.3
open_error_t openapiKernelArpDelete ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
open_inet_addr_t dest_addr,
int32_t  stkIfIndex 
)

Delete the ARP entry.

Parameters
[in]vrfIdVRF Identifier
[in]client_handleclient handle from registration API
[in]dest_addrdestination IP address
[in]stkIfIndexstack if index of the interface
Return values
OPEN_E_NONE
OPEN_E_PARAM
OPEN_E_UNAVAIL
OPEN_E_ERROR
OPEN_E_NOT_FOUNDOpEN API Version: 1.3
open_error_t openapiKernelRouteAddVr ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
openRoute_t routeEntry,
open_buffdesc nextHopListBuff 
)

Add a kernel route to the common routing table.

Parameters
[in]client_handleclient handle from registration API
[in]vrfIdVRF Identifier
[in]routeEntryRoute to be added.
[in]nextHopListBuffList of nextHops associated with route.
Return values
OPEN_E_NONEIf the route was added successfully.
OPEN_E_NOT_FOUNDIf none of the route's next hops is in a local subnet.
OPEN_E_FULLIf the route was not added because the routing table is full.
OPEN_E_EXISTSIf a route with the same route type and destination is already in the routing table.
OPEN_E_FAILAny other failure.

OpEN API Version: 1.3

open_error_t openapiKernelRouteDelVr ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
openRoute_t routeEntry,
open_buffdesc nextHopListBuff 
)

Delete a kernel route from the common routing table.

Parameters
[in]client_handleclient handle from registration API
[in]vrfIdVRF Identifier
[in]routeEntryRoute to be deleted.
Return values
OPEN_E_NONEIf the route was successfully deleted.
OPEN_E_NOT_FOUNDIf the route table does not have a route to this destination with the given route type.
OPEN_E_FAILAny other failure.

OpEN API Version: 1.3

open_error_t openapiMaxNextHopsGet ( openapiClientHandle_t client_handle,
uint32_t *  maxNextHops 
)

Get the maximum number of next hops in an ECMP route.

Parameters
[in]client_handleclient handle from registration API
[out]maxNextHopsMaximum number of next hops
Return values
OPEN_E_NONEIf the maximum is successfully reported
OPEN_E_PARAMIf any output parameter is NULL
OPEN_E_FAILAny other failure
Note
If an application attempts to add a route with more next hops than this limit, OPEN truncates the number of next hops at this limit. OPEN will not report a route with more next hops than the maximum reported by this API.

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiMaxRoutingInterfacesGet ( openapiClientHandle_t client_handle,
uint32_t *  routingIntfMax 
)

Get the maximum number of OPEN routing interfaces.

Parameters
[in]client_handleclient handle from registration API
[out]routingIntfMaxThe maximum number of routing interfaces.
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon invalid input parameters
OPEN_E_FAILon other failure
Note
This is the maximum number of interfaces that can be simultaneously configured as routing interfaces.

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiPlatRtrRouteMaxEntriesGet ( openapiClientHandle_t client_handle,
uint32_t *  pval 
)

Get the number of IPv4 routes for this platform.

Parameters
[in]client_handleClient handle from registration API
[out]pvalMax IPv4 routes
Return values
OPEN_E_NONEIf the OPEN call is successful
OPEN_E_ERRORIf the OPEN call is unsuccessful

OpEN API Version: 1.3

open_error_t openapiPlatRtrRouteMaxEqualCostEntriesGet ( openapiClientHandle_t client_handle,
uint32_t *  pval 
)

Get the number of ECMP MAX PATHS FROM PLATFORM params.

Parameters
[in]client_handleClient handle from registration API
[out]pvalMax ECMP paths
Return values
OPEN_E_NONEIf the OPEN call is successful
OPEN_E_ERRORIf the OPEN call is unsuccessful

OpEN API Version: 1.3

open_error_t openapiPolicyChangeAck ( openapiClientHandle_t client_handle,
uint32_t  clientId,
uint32_t  seqNo 
)

Acknowledge receipt of a policy change notification.

Parameters
[in]client_handleclient handle from registration API
[in]clientIdPolicy client ID assigned by RPPI at registration time.
[in]seqNoSequence number from policy change notification message. Acknowledges the change with this and all lower sequence numbers.
Return values
OPEN_E_NONEAcknowledgement accepted.
OPEN_E_NOT_FOUNDIf the client ID does not match a registered client
OPEN_E_FAILIf the sequence number does not match a change previously reported.

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiPrefixFind ( openapiClientHandle_t client_handle,
open_inet_addr_t  destPrefix,
uint32_t  pfxLen,
openRoute_t route,
open_buffdesc nextHopListBuff 
)

Find the best route with a specific prefix.

Parameters
[in]client_handleclient handle from registration API
[in]destPrefixdestination IP prefix
[in]pfxLendestination prefix length
[out]routebest route to this prefix
[out]nextHopListBuffList of nextHops associated with route.
Return values
OPEN_E_NONEIf a best route is found
OPEN_E_NOT_FOUNDIf there is no route to the destination

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiPrefixFindVr ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
open_inet_addr_t  destPrefix,
uint32_t  pfxLen,
openRoute_t route,
open_buffdesc nextHopListBuff 
)

Find the best route with a specific prefix.

Parameters
[in]client_handleclient handle from registration API
[in]destPrefixdestination IP prefix
[in]pfxLendestination prefix length
[out]routebest route to this prefix
[out]nextHopListBuffList of nextHops associated with route.
Return values
OPEN_E_NONEIf a best route is found
OPEN_E_NOT_FOUNDIf there is no route to the destination

OpEN API Version: 1.1

int openapiPrefixListApply ( openapiClientHandle_t client_handle,
open_buffdesc pfxListName,
open_inet_addr_t  prefix,
uint32_t  pfxLen 
)

Apply a prefix list with a given name to a given prefix.

Parameters
[in]client_handleclient handle from registration API
[in]pfxListNameName of the prefix list to apply. Up to 32 characters.
[in]prefixPrefix to be matched
[in]pfxLenLength, in bits, of prefix to be matched.
Returns
0 If the prefix list denies the prefix
1 If the prefix list permits the prefix
Return values
OPEN_E_NOT_FOUNDIf there is no prefix list with the given name.
OPEN_E_PARAMIf an input parameter is invalid
OPEN_E_UNAVAILIf the prefix's address family is not supported
OPEN_E_FAILAny other failure
Note
Only IPv4 prefix lists are supported at this time.

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiRouteAdd ( openapiClientHandle_t client_handle,
openRoute_t routeEntry,
open_buffdesc nextHopListBuff 
)

Add a route to the common routing table.

Parameters
[in]client_handleclient handle from registration API
[in]routeEntryRoute to be added.
[in]nextHopListBuffList of nextHops associated with route.
Return values
OPEN_E_NONEIf the route was added successfully.
OPEN_E_NOT_FOUNDIf none of the route's next hops is in a local subnet.
OPEN_E_FULLIf the route was not added because the routing table is full.
OPEN_E_EXISTSIf a route with the same route type and destination is already in the routing table.
OPEN_E_FAILAny other failure.

OpEN API Version: 1.1

open_error_t openapiRouteAddVr ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
openRoute_t routeEntry,
open_buffdesc nextHopListBuff 
)

Add a route to the common routing table.

Parameters
[in]client_handleclient handle from registration API
[in]vrfIdVRF Identifier
[in]routeEntryRoute to be added.
[in]nextHopListBuffList of nextHops associated with route.
Return values
OPEN_E_NONEIf the route was added successfully.
OPEN_E_NOT_FOUNDIf none of the route's next hops is in a local subnet.
OPEN_E_FULLIf the route was not added because the routing table is full.
OPEN_E_EXISTSIf a route with the same route type and destination is already in the routing table.
OPEN_E_FAILAny other failure.

OpEN API Version: 1.3

Examples:
openr_example.c.
open_error_t openapiRouteDel ( openapiClientHandle_t client_handle,
openRoute_t routeEntry 
)

Delete a route from the common routing table.

Parameters
[in]client_handleclient handle from registration API
[in]routeEntryRoute to be deleted.
Return values
OPEN_E_NONEIf the route was successfully deleted.
OPEN_E_NOT_FOUNDIf the route table does not have a route to this destination with the given route type.
OPEN_E_FAILAny other failure.

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiRouteDelVr ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
openRoute_t routeEntry,
open_buffdesc nextHopListBuff 
)

Delete a route from the common routing table.

Parameters
[in]client_handleclient handle from registration API
[in]vrfIdVRF Identifier
[in]routeEntryRoute to be deleted.
Return values
OPEN_E_NONEIf the route was successfully deleted.
OPEN_E_NOT_FOUNDIf the route table does not have a route to this destination with the given route type.
OPEN_E_FAILAny other failure.

OpEN API Version: 1.3

Examples:
openr_example.c.
int openapiRouteMapApply ( openapiClientHandle_t client_handle,
open_buffdesc routeMapName,
openRmMatchParams_t matchParams,
openRmSetParams_t setParams 
)

Apply a route map with a given name to a route whose attributes are set in the matchParams argument.

Parameters
[in]client_handleclient handle from registration API
[in]routeMapNameName of the route map to apply. Up to 32 characters.
[in]matchParamsRoute attributes to be matched
[out]setParamsIf the route map changes any of the route's parameter (through the route map's set statements), the new values are set in this output structure.
Returns
0 If the route map denies the route
1 If the route map permits the route
Return values
OPEN_E_NOT_FOUNDIf there is no route map with the given name.
OPEN_E_PARAMIf an input parameter is invalid
OPEN_E_FAILAny other failure

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiRouteMod ( openapiClientHandle_t client_handle,
openRoute_t routeEntry,
open_buffdesc nextHopListBuff 
)

Modify an existing route to the common routing table.

Parameters
[in]client_handleclient handle from registration API
[in]routeEntryRoute to be modified.
[in]nextHopListBuffList of nextHops associated with route.
Return values
OPEN_E_NONEIf the route was successfully modified.
OPEN_E_NOT_FOUNDIf the route table does not have a route to this destination with the given route type.
OPEN_E_FAILAny other failure.
Note
This API can only be called when replacing one route with another route with the same route type. It cannot be used to replace a route with a different route type, even if the two route types are for the same routing protocol.

OpEN API Version: 1.1

open_error_t openapiRouteModVr ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
openRoute_t routeEntry,
open_buffdesc nextHopListBuff 
)

Modify an existing route to the common routing table.

Parameters
[in]client_handleclient handle from registration API
[in]vrfIdVRF Identifier
[in]routeEntryRoute to be modified.
[in]nextHopListBuffList of nextHops associated with route.
Return values
OPEN_E_NONEIf the route was successfully modified.
OPEN_E_NOT_FOUNDIf the route table does not have a route to this destination with the given route type.
OPEN_E_FAILAny other failure.
Note
This API can only be called when replacing one route with another route with the same route type. It cannot be used to replace a route with a different route type, even if the two route types are for the same routing protocol.

OpEN API Version: 1.3

Examples:
openr_example.c.
open_error_t openapiRouteNextGet ( openapiClientHandle_t client_handle,
OPEN_AF_t  family,
openRoute_t route,
open_buffdesc nextHopListBuff 
)

Return next route in the routing table.

Parameters
[in]client_handleclient handle from registration API
[in]familyAddress family (IPv4 or IPv6)
[in,out]routeNext route in the routing table.
[out]nextHopListBuffList of nextHops associated with route.
Return values
OPEN_E_NONEIf a next route is returned in routeEntry.
OPEN_E_NOT_FOUNDIf there are no more best routes.
OPEN_E_PARAMIf an input parameter is invalid.
OPEN_E_FAILOther failure.
Note
In order to look up the first route all fields of the routeEntry structure must be set to zero. In order to look up subsequent routes use the previously reported route as input.

The route returned includes all active next hops.

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiRouteProtoNameLenMax ( openapiClientHandle_t client_handle,
uint32_t *  protoNameLen 
)

Get the maximum length of a protocol name.

Parameters
[in]client_handleclient handle from registration API
[out]protoNameLenThe maximum length of a protocol name.
Return values
OPEN_E_NONE
OPEN_E_PARAMif protoNameLen is NULL
Note
The name length does not include space for a NULL terminator.
      If protoName has more than this number of characters in a call to
      openapiRoutingProtocolRegister(), the registration fails.

OpEN API Version: 1.1

Examples:
bgp_example.c, openr_example.c, and ospf_example.c.
open_error_t openapiRouterEventAcknowledge ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
uint32_t  clientId,
uint32_t  eventId 
)

Acknowledge a router event.

Parameters
[in]vrfIdVRF Identifier
[in]client_handleclient handle from registration API
[in]clientIdUnique client ID received from RPPI at registration.
[in]eventIdID of the event to be acknowledged. This is the value of the eventSeqNumber field in the router event message.
Return values
OPEN_E_NONEon success
OPEN_E_NOT_FOUNDif client ID doesn't match a registered client
OPEN_E_INTERNALfor an internal error
OPEN_E_FAILon other failure

OpEN API Version: 1.3

Examples:
openr_example.c.
open_error_t openapiRouterEventDeregister ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
uint32_t  clientId 
)

Deregister for routing events.

Parameters
[in]vrfIdVRF Identifier
[in]client_handleclient handle from registration API
[in]clientIdUnique client ID received from RPPI at registration.
Return values
OPEN_E_NONEon success
OPEN_E_NOT_FOUNDif client ID doesn't match a registered client
OPEN_E_INTERNALfor an internal error
OPEN_E_FAILon other failure

OpEN API Version: 1.3

Examples:
openr_example.c.
open_error_t openapiRouterEventRegister ( openapiClientHandle_t client_handle,
OPEN_AF_t  family,
uint32_t  pid,
uint32_t  vrfId,
open_buffdesc clientName,
uint32_t *  clientId 
)

Register for routing events.

Parameters
[in]client_handleclient handle from registration API
[in]familyIPv4 or IPv6 events
[in]pidLinux process ID
[in]vrfIdVRF Identifier
[in]clientNameName of the client. If a client is already registered with the same name, that registration is deleted and replaced. Up to (OPEN_CLIENT_NAME_MAX_LEN - 1) characters.
[out]clientIdUnique client ID RPPI assigns.
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon invalid input parameters
OPEN_E_FULLif the maximum number of router event clients are already registered
OPEN_E_INTERNALfor an internal error
OPEN_E_FAILon other failure

OpEN API Version: 1.3

Examples:
openr_example.c.
open_error_t openapiRouteTypeDeregister ( openapiClientHandle_t client_handle,
uint32_t  addressFamily,
uint32_t  routeType 
)

Deregister a route type.

Parameters
[in]client_handleclient handle from registration API
[in]addressFamilyAddress family (IPv4 or IPv6)
[in]routeTypeUnique identifier that RPPI provided at registration time.
Return values
OPEN_E_NONEIf a route type is removed and a valid route type is returned.
OPEN_E_NOT_FOUNDIf the route type does not match a registered route type.
OPEN_E_FAILOther failure.
Note
Only route types that were registered through the register API above can be deregistered. If the route type is the last route type for its protocol, the protocol itself is also removed.

OpEN API Version: 1.1

open_error_t openapiRouteTypeInfoGet ( openapiClientHandle_t client_handle,
uint32_t  routeType,
open_buffdesc protoName,
open_buffdesc routeTypeName 
)

For a given route type, get the protocol and route type names.

Parameters
[in]client_handleclient handle from registration API
[in]routeTypeRoute type ID
[out]protoNameName of the protocol that uses this route type. Up to OPENR_ROUTE_PROTO_NAME_LEN.
[out]routeTypeNameDescriptive name of the route type Up to OPENR_ROUTE_TYPE_NAME_LEN.
Return values
OPEN_E_NONEIf the route type is recognized and the names are returned
OPEN_E_PARAMIf a parameter is invalid
OPEN_E_NOT_FOUNDIf route type is not recognized
OPEN_E_FAILOtherwise
Note
On input, the size field in the open_buffdesc for each output variable must be set to the buffer length allocated.

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiRouteTypeNameLenMax ( openapiClientHandle_t client_handle,
uint32_t *  routeTypeNameLen 
)

Get the maximum length of a protocol name.

Parameters
[in]client_handleclient handle from registration API
[out]routeTypeNameLenThe maximum length of a route type name.
Return values
OPEN_E_NONE
OPEN_E_PARAMif routeTypeNameLen is NULL
Note
The name length does not include space for a NULL terminator.
      If routeTypeName has more than this number of characters in a call to
      openapiRoutingProtocolRegister(), the registration fails.

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiRouteTypeRegister ( openapiClientHandle_t client_handle,
OPEN_AF_t  addressFamily,
uint32_t  protoId,
open_buffdesc routeTypeName,
open_buffdesc routeTypeCode,
uint32_t *  routeType 
)

Register a new route type.

If a route type already exists with the given route type name, the existing route type ID is returned.

Parameters
[in]client_handleclient handle from registration API
[in]addressFamilyAddress family (IPv4 or IPv6)
[in]protoIdID of routing protocol already registered with RPPI.
[in]routeTypeNameName of an individual route type within a protocol. For example, "OSPF External Type 1". openapiRouteTypeNameLenMax() gives the max length.
[in]routeTypeCodeOne or two character code that identifies a route type in the UI. Used in "show ip route" to identify the route type for each route. If a routing protocol has a single route type, this parameter can be set to the empty string.
[out]routeTypeUnique identifier for a route type. The routeType field in openRoute_t must be set to this value when adding, modifying, or removing routes.
Return values
OPEN_E_NONEIf a new route type is added and a valid route type is returned.
OPEN_E_EXISTSIf the route type name matches an existing route type. In this case, routeType is set to the value for the existing entry.
OPEN_E_UNAVAILIf the address family is not supported for this operation.
OPEN_E_FULLIf the maximum number of route types are already registered.
OPEN_E_PARAMIf the output parameters is NULL.
OPEN_E_INTERNALIf any of the input names are too long or otherwise invalid.
OPEN_E_FAILOther failure.

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiRoutingPolicyRegister ( openapiClientHandle_t client_handle,
open_buffdesc clientName,
uint32_t  pid,
uint32_t  policyTypeMask,
uint32_t *  clientId 
)

Register to be notified when there are routing policy changes.

Parameters
[in]client_handleclient handle from registration API
[in]clientNameName of the client. Must be unique among all clients registering for routing policy change notification. Up to OPENR_POLICY_CLIENT_NAME_LEN characters long.
[in]pidLinux process ID of the process registering
[in]policyTypeMaskIndicates which types of policies the application wants to receive change notifications for. A 1 bit indicates the application wants to receive change notification. The mask is indexed by OPEN_ROUTING_POLICY_TYPE_t. To deregister for all policy changes, set policyTypeMask to 0.
[out]clientIdUnique integer ID assigned to the client for this registration. Used to create the address for the application's UNIX socket. Must be non-zero if policyTypeMask is non-zero.
Return values
OPEN_E_NONEIf the registration was successful
OPEN_E_UNAVAILIf RPPI is not ready to accept registrations yet. This may occur when switchdrvr is first starting and has not yet reached a state where it can accept best route client registrations. The caller should try again later.
OPEN_E_PARAMIf an input parameter is invalid
OPEN_E_FULLIf the maximum number of policy clients are already registered.
OPEN_E_NOT_FOUNDIf no client with the given name is in the current list of clients when a call is made to deregister (policyTypeMask is 0).
OPEN_E_FAILAny other failure

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiRoutingProtocolDeregister ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
uint32_t  addressFamily,
uint32_t  protoId 
)

Deregister a routing protocol.

Parameters
[in]client_handleclient handle from registration API
[in]vrfIdVRF Identifier
[in]addressFamilyAddress family (IPv4 or IPv6)
[in]protoIdUnique protocol identifier that RPPI provided at registration time.
Return values
OPEN_E_NONEIf a new route type is removed and a valid route type is returned.
OPEN_E_NOT_FOUNDIf the route type does not match a registered route type.
OPEN_E_FAILOther failure.
Note
Only route types that were registered through the register API above can be deregistered.

OpEN API Version: 1.3

Examples:
openr_example.c.
open_error_t openapiRoutingProtocolRegister ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
OPEN_AF_t  addressFamily,
open_buffdesc protoName,
open_buffdesc protoCode,
uint32_t *  protoId 
)

Register a new routing protocol.

If a protocol already exists with the given protocol name, the existing protocol ID is returned.

Parameters
[in]client_handleclient handle from registration API
[in]vrfIdVRF Identifier
[in]addressFamilyAddress family (IPv4 or IPv6)
[in]protoNameName of the routing protocol. This name is used in the UI to refer to this protocol. (e.g., "redistribute <protoName>). openapiRouteProtoNameLenMax() gives the max length.
[in]protoCodeOne character routing protocol code. Used in "show ip route" to identify the routing protocol that provided a route.
[out]protoIdUnique identifier for the routing protocol.
Return values
OPEN_E_NONEIf a protocol is added and a valid protocol ID is returned.
OPEN_E_EXISTSIf the protocol name matches an existing protocol type. In this case, protoId is set to the value for the existing entry.
OPEN_E_UNAVAILIf the address family is not supported for this operation.
OPEN_E_FULLIf the maximum number of protocols are already registered.
OPEN_E_PARAMIf the output parameter is NULL.
OPEN_E_INTERNALIf any of the input names are too long or otherwise invalid.
OPEN_E_FAILOther failure.
OPEN_E_NOT_FOUNDIf the VRF instance does not exist.

OpEN API Version: 1.3

Examples:
openr_example.c.
open_error_t openapiRoutingStartupStatus ( openapiClientHandle_t client_handle,
OPEN_AF_t  af,
uint32_t *  complete 
)

Report whether IP routing has finished initialization for a given address family.

Parameters
[in]client_handleclient handle from registration API
[in]afAddress Family
[out]complete1 if OPEN routing initialization is complete 0 if OPEN routing initialization is still underway
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon if the address family is unsupported
OPEN_E_FAILfor any other failure
Note
When OPEN starts, the system configuration is applied and the up/down status of all routing interfaces is determined. Prior to completion of this initialization, the system does not push state changes. When initialization is completed, RPPI router event clients are expected to proactively retrieve the routing configuration and state, including the configuration and state of all routing interfaces.

When an application starts, it can use this API to determine whether OPEN is still initializing (startup is not complete). If so, the application should wait until it receives a startup complete event (OPENR_RTR_STARTUP_DONE for IPv4, OPENR_RTR6_STARTUP_DONE for IPv6) through the router event service and then retrieve the complete routing state. If this API indicates that OPEN initialization is already complete, an application may immediately retrieve the routing state and expect to receive a notification through the RPPI router event service if any state changes.

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiRoutingStartupStatusVr ( openapiClientHandle_t client_handle,
OPEN_AF_t  af,
uint32_t  vrfId,
uint32_t *  complete 
)

Report whether IP routing has finished initialization in the requested VRF for a given address family.

Parameters
[in]client_handleclient handle from registration API
[in]afAddress Family
[in]vrfIdVRF Identifier
[out]complete1 if OPEN routing initialization is complete 0 if OPEN routing initialization is still underway
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon if the address family is unsupported
OPEN_E_FAILfor any other failure
Note
When OPEN starts, the system configuration is applied and the up/down status of all routing interfaces is determined. Prior to completion of this initialization, the system does not push state changes. When initialization is completed, RPPI router event clients are expected to proactively retrieve the routing configuration and state, including the configuration and state of all routing interfaces.

When an application starts, it can use this API to determine whether OPEN is still initializing (startup is not complete). If so, the application should wait until it receives a startup complete event (OPENR_RTR_STARTUP_DONE for IPv4, OPENR_RTR6_STARTUP_DONE for IPv6) through the router event service and then retrieve the complete routing state. If this API indicates that OPEN initialization is already complete, an application may immediately retrieve the routing state and expect to receive a notification through the RPPI router event service if any state changes.

OpEN API Version: 1.1

open_error_t openapiRtoFreeRouteCountGet ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
uint32_t *  rtoFreeRouteCount 
)

Get the number of available routes in RTO for this VRF Id.

Parameters
[in]client_handleClient handle from registration API
[in]vrfIdVRF Identifier
[out]rtoFreeRouteCountFree route count in RTO
Return values
OPEN_E_NONEIf the RTO call is successful
OPEN_E_ERRORIf the RTO call is unsuccessful

OpEN API Version: 1.3

open_error_t openapiRtrAdminModeGet ( openapiClientHandle_t client_handle,
OPEN_AF_t  af,
OPEN_CONTROL_t enable 
)

Get the current router admin mode given an address family.

Parameters
[in]client_handleclient handle from registration API
[in]afAddress Family
[out]enableOPEN_CONTROL_t structure returning the admin mode
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_UNAVAILon failure

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiRtrAdminModeGetVrf ( openapiClientHandle_t client_handle,
OPEN_AF_t  af,
uint32_t  vrfId,
OPEN_CONTROL_t enable 
)

Get the router admin mode of the VRF.

Parameters
[in]client_handleClient handle from registration API
[in]afAddress family
[in]vrfIdVRF Identifier
[out]enableEnable mode
Return values
OPEN_E_NONEIf the Admin mode get call is successful
OPEN_E_FAILIf the Admin mode get call is unsuccessful
OPEN_E_PARAMIf the passed params are invalid

OpEN API Version: 1.3

open_error_t openapiRtrICMPEchoReplyModeGet ( openapiClientHandle_t client_handle,
open_buffdesc vrfName,
uint32_t *  mode 
)

Get the ICMP ignore echo-req mode.

Parameters
[in]client_handleclient handle from registration API
[in]vrfNameVRF name
[out]modeICMP ignore echo-request mode
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILon other failure

OpEN API Version: 1.3

open_error_t openapiRtrICMPRatelimitGet ( openapiClientHandle_t client_handle,
open_buffdesc vrfName,
uint32_t *  burstSize,
uint32_t *  interval 
)

Get the ICMP Ratelimit parameters.

Parameters
[in]client_handleclient handle from registration API
[in]vrfNameVRF name
[out]burstSizeburst-size for ICMP rate-limit
[out]intervalinterval for ICMP rate-limit
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILon other failure

OpEN API Version: 1.3

open_error_t openapiRtrICMPRedirectsModeGet ( openapiClientHandle_t client_handle,
uint32_t  intf,
uint32_t *  mode 
)

Get the ICMP Redirects mode of the interface.

Parameters
[in]client_handleclient handle from registration API
[in]intfThe Configured Router Interface
[out]modeICMP Redirects mode of the interface
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILon other failure

OpEN API Version: 1.3

open_error_t openapiRtrICMPUnreachablesModeGet ( openapiClientHandle_t client_handle,
uint32_t  intf,
uint32_t *  mode 
)

Get the ICMP Unreachables mode of the interface.

Parameters
[in]client_handleclient handle from registration API
[in]intfThe Configured Router Interface
[out]modeICMP Unreachables mode of the interface
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILon other failure

OpEN API Version: 1.3

open_error_t openapiRtrIntfIpAddrGet ( openapiClientHandle_t client_handle,
OPEN_AF_t  af,
uint32_t  intf,
open_inet_pfx_t ipAddr 
)

Get an IP address on a given router interface for a given address family.

Parameters
[in]client_handleclient handle from registration API
[in]afAddress Family (IPv4 or IPv6)
[in]intfA routing interface ID
[in,out]ipAddrIP address and prefix length. On input, this can be set to an IP address on this interface, and the call returns the next IP address on the interface. Set to all zeros to retrieve the first IP address on the interface.
Return values
OPEN_E_NONEif an address is returned
OPEN_E_EMPTYif there are no more IP addresses to report on this interface
OPEN_E_PARAMif an input parameter is invalid
OPEN_E_NOT_FOUNDif a previous address is specified, but that address is not on this interface
OPEN_E_FAILfor any other failure

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiRtrIntfIpAddrMethodGet ( openapiClientHandle_t client_handle,
uint32_t  intf,
OPEN_INTF_IP_ADDR_METHOD_t addrMethod,
OPEN_CONTROL_t clientIdEnable 
)

Get the method used to assign the IP address to a Router interface.

Parameters
[in]client_handleclient handle from registration API
[in]intfRouter Interface
[out]addrMethodIP address method
[out]clientIdEnableDHCP Client ID option enable flag
Return values
OPEN_E_NONEget successful
OPEN_E_NOT_FOUNDnot a configured routing interface
OPEN_E_PARAMerror in parameter passed
OPEN_E_FAILany other failure
Note
The clientIdEnable value is meaningful only when the addrMethod is OPEN_INTF_IP_ADDR_METHOD_DHCP, otherwise it is reported as OPEN_DISABLE.

OpEN API Version: 1.18

Examples:
openr_example.c.
open_error_t openapiRtrIntfIpStackDrvNameGet ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
uint32_t  intf,
open_buffdesc intfName 
)

Get the drv name of the configured router interface.

Parameters
[in]client_handleclient handle from registration API
[in]vrfIdThe Configured VRF interface
[in]intfThe Configured Router Interface
[out]intfNameName of the interface
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILon other failure

OpEN API Version: 1.3

open_error_t openapiRtrIntfIpStackIfIndexGet ( openapiClientHandle_t client_handle,
uint32_t  intf,
uint32_t *  ifIndex 
)

Get the ipstack ifIndex on the configured router interface.

Parameters
[in]client_handleclient handle from registration API
[in]intfThe Configured Router Interface
[out]ifIndexipstack ifIndex of the interface
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILon other failure

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiRtrIntfIpStackIfNameGet ( openapiClientHandle_t client_handle,
uint32_t  intf,
open_buffdesc intfName 
)

Get the name of the configured router interface.

Parameters
[in]client_handleclient handle from registration API
[in]intfThe Configured Router Interface
[out]intfNameName of the interface
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILon other failure

OpEN API Version: 1.3

open_error_t openapiRtrIntfIpStackStkNameGet ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
uint32_t  intf,
open_buffdesc intfName 
)

Get the stk name of the configured router interface.

Parameters
[in]client_handleclient handle from registration API
[in]vrfIdThe Configured VRF interface
[in]intfThe Configured Router Interface
[out]intfNameName of the interface
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILon other failure

OpEN API Version: 1.3

open_error_t openapiRtrIntfL3MacAddressGet ( openapiClientHandle_t client_handle,
uint32_t  intf,
open_buffdesc mac 
)

Get the L3 MAC address of the router interface.

Parameters
[in]client_handleclient handle from registration API
[in]intfThe Configured Router Interface
[out]macL3 MAC address of the interface
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILon other failure

OpEN API Version: 1.3

open_error_t openapiRtrIntfLoopbackIdGet ( openapiClientHandle_t client_handle,
uint32_t  intf,
uint32_t *  loopbackId 
)

Get the loopback id for the configured router interface.

Parameters
[in]client_handleclient handle from registration API
[in]intfThe Configured Router Interface
[out]loopbackIdLoopback id of the interface
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILon other failure

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiRtrIntfNameGet ( openapiClientHandle_t client_handle,
uint32_t  intf,
open_buffdesc intfName 
)

Get the interface name of the configured router interface.

Parameters
[in]client_handleclient handle from registration API
[in]intfThe Configured Router Interface
[out]intfNameName of the interface. This buffer must be at least the length indicated by openapiIntfNameSizeGet().
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILon other failure

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiRtrIntfNextGet ( openapiClientHandle_t client_handle,
uint32_t  intf,
uint32_t *  nextIntf 
)

Get the next configured router interface.

Parameters
[in]client_handleclient handle from registration API
[in]intfThe Configured Router Interface or 0 to get the first router interface
[out]nextIntfThe next configured router interface
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon invalid input parameters
OPEN_E_NOT_FOUNDwhen no next interface found
OPEN_E_FAILon other failure

OpEN API Version: 1.1

Examples:
bgp_example.c, openr_example.c, and ospf_example.c.
open_error_t openapiRtrIntfNextGetVrf ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
uint32_t  intf,
uint32_t *  nextIntf 
)

Get the next configured router interface.

Parameters
[in]client_handleclient handle from registration API
[in]vrfIdVRF Identifier
[in]intfThe Configured Router Interface or 0 to get the first router interface
[out]nextIntfThe next configured router interface
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon invalid input parameters
OPEN_E_NOT_FOUNDwhen no next interface found
OPEN_E_FAILon other failure

OpEN API Version: 1.3

open_error_t openapiRtrIntfOperModeGet ( openapiClientHandle_t client_handle,
OPEN_AF_t  af,
uint32_t  intf,
OPEN_CONTROL_t ifState 
)

Get the up/down status of the router interface given the address family.

Parameters
[in]client_handleclient handle from registration API
[in]afAddress Family
[in]intfThe Configured Router Interface
[out]ifStateOPEN_CONTROL_t structure returning the Operating mode
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILon other failure

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiRtrIntfSecIpAddrGet ( openapiClientHandle_t client_handle,
OPEN_AF_t  af,
uint32_t  intf,
open_inet_pfx_t ipAddr,
uint32_t *  index 
)

Get a Secondary IP address on a given router interface for a given address family.

Parameters
[in]client_handleclient handle from registration API
[in]afAddress Family (IPv4)
[in]intfA routing interface ID
[in,out]ipAddrIP address and prefix length. On input, this can be set to an IP address on this interface, and the call returns the next IP address on the interface. Set to all zeros to retrieve the first IP address on the interface.
[out]indexIndex of the Secondary IP
Return values
OPEN_E_NONEif an address is returned
OPEN_E_EMPTYif there are no more IP addresses to report on this interface
OPEN_E_PARAMif an input parameter is invalid
OPEN_E_NOT_FOUNDif a previous address is specified, but that address is not on this interface
OPEN_E_FAILfor any other failure

OpEN API Version: 1.3

open_error_t openapiRtrIntfTypeGet ( openapiClientHandle_t client_handle,
uint32_t  intf,
OPEN_INTF_TYPE_t intfType 
)

Get the type of the interface for the given router interface.

Parameters
[in]client_handleclient handle from registration API
[in]intfThe Configured Router Interface
[out]intfTypeOPEN_INTF_TYPE_t structure to hold the type of the interface
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILon other failure

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiRtrIntfUnitSlotPortGet ( openapiClientHandle_t client_handle,
uint32_t  intf,
open_USP_t usp 
)

Get the unit, slot and port of the router interface.

Parameters
[in]client_handleclient handle from registration API
[in]intfThe Configured Router Interface
[out]uspunit/slot/port of the interface
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILon other failure

OpEN API Version: 1.3

open_error_t openapiRtrIntfVlanIdGet ( openapiClientHandle_t client_handle,
uint32_t  intf,
uint32_t *  vlanId 
)

Get the vlan id on the configured router interface.

Parameters
[in]client_handleclient handle from registration API
[in]intfThe Configured Router Interface
[out]vlanIdVlan id of the interface
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILon other failure

OpEN API Version: 1.1

Examples:
openr_example.c.
open_error_t openapiRtrLoopbackIntIfNumGet ( openapiClientHandle_t client_handle,
uint32_t  loopbackId,
uint32_t *  intf 
)

Get the internal interface number of the loopback interface.

Parameters
[in]client_handleclient handle from registration API
[in]loopbackIdLoopback id of the interface
[out]intfInternal interface number
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILon other failure

OpEN API Version: 1.15

open_error_t openapiStackIfIndexIntIfNumGet ( openapiClientHandle_t client_handle,
uint32_t  ifIndex,
uint32_t *  intIfNum 
)

Get the interface number corresponding to the given ipstack ifIndex.

Parameters
[in]client_handleclient handle from registration API
[in]ifIndexipstack ifIndex of the interface
[out]intIfNumThe Configured Router Interface
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILon other failure

OpEN API Version: 1.1

open_error_t openapiUnnumberedPeerInfoSet ( openapiClientHandle_t client_handle,
uint32_t  intIfNum,
uint32_t  peerIp,
OPEN_BOOL_t  isAdd,
uint32_t  flag 
)

Set the Unnumbered peer info on an interface.

Parameters
[in]client_handleClient handle from registration API
[in]intfNuminterface number
[in]peerIpUnnumbered peer IP address
[in]isAddadd/delete
[in]flagflag to determine the source
Return values
OPEN_E_NONEIf the OPEN call is successful
OPEN_E_ERRORotherwise

OpEN API Version: 1.3

open_error_t openapiVrAgentProbeResultIpSlaNotify ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
uint32_t  ipSlaId,
uint32_t  probeReturnCode,
uint32_t  lastProbeRTTvalue,
uint32_t  latestOperationStartUpTime 
)

This routine is called by VRF Manager when a VR Probe Agent of VRF Instance needs to update the result of last probe attempt of an IPSLA operation.

Parameters
[in]vrfIdVRF Identifier
[in]ipSlaIdIpSla operation number
[in]probeReturnCodeResult code of last probe attempt
[in]lastProbeRTTvalueRTT value in msec of last probe
[in]latestOperationStartUpTimeUptime of last probe attempt
Return values
OPEN_E_NONEGet successful.
OPEN_E_PARAMError in parameter passed.

OpEN API Version: 1.3

open_error_t openapiVrfIntfNameGet ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
open_buffdesc intfName 
)

Get the name of the configured VRF interface.

Parameters
[in]client_handleclient handle from registration API
[in]vrfIdThe Configured VRF interface
[out]intfNameName of the interface
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILon other failure

OpEN API Version: 1.3

open_error_t openapiVrfNameGet ( openapiClientHandle_t client_handle,
uint32_t  vrfId,
open_buffdesc vrfName 
)

Get the VRF name for a given VRF ID.

Parameters
[in]client_handleclient handle from registration API
[in]vrfIdVRF Identifier
[out]vrfNameVRF name
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILon other failure

OpEN API Version: 1.1

open_error_t openapiVrfNameNextGet ( openapiClientHandle_t client_handle,
open_buffdesc vrfName,
open_buffdesc vrfNameNext 
)

Get the next VRF name.

Parameters
[in]client_handleclient handle from registration API
[in]vrfNameVRF name (set to "") for initial.
[out]vrfNameNextNext VRF name
Return values
OPEN_E_NONEon success
OPEN_E_PARAMon improper input parameters
OPEN_E_FAILif no more VRFs to report
Note
This API returns "" if VRF is not supported.

OpEN API Version: 1.15

Examples:
routing_example.c.