Open Ethernet Networking (OpEN) API Guide and Reference Manual  3.9.0.2
openapi_routing.h
Go to the documentation of this file.
1 
9 /*********************************************************************
10 *
11 * Copyright 2016-2020 Broadcom.
12 *
13 * Licensed under the Apache License, Version 2.0 (the "License");
14 * you may not use this file except in compliance with the License.
15 * You may obtain a copy of the License at
16 *
17 * http://www.apache.org/licenses/LICENSE-2.0
18 *
19 * Unless required by applicable law or agreed to in writing, software
20 * distributed under the License is distributed on an "AS IS" BASIS,
21 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22 * See the License for the specific language governing permissions and
23 * limitations under the License.
24 *
25 **********************************************************************
26 *
27 * @filename openapi_routing.h
28 *
29 * @purpose Routing Protocol Process Interface
30 *
31 * @component OPEN
32 *
33 * @create 07/10/2012
34 *
35 * @end
36 *
37 **********************************************************************/
38 #ifndef OPENAPI_ROUTING_H_INCLUDED
39 #define OPENAPI_ROUTING_H_INCLUDED
40 
41 #include <stdio.h>
42 #include <stddef.h>
43 #include <sys/un.h>
44 
45 #include "openapi_common.h"
46 #include "openapi_mpls.h"
47 
48 /* Event registration variables */
49 #define OPEN_RPPI_CLIENT_NAME_MAX_LEN (32)
50 
54 #define RPPI_BRC_ADDR "/tmp/rppi_brc.%04u"
55 
56 #define ROUTER_EVENT_CLIENT_ADDR "/tmp/rppi_rec.%04u"
57 
58 /* UNIX "address" on client side for policy change notifications */
59 #define RPPI_POLICY_CLIENT_ADDR "/tmp/rppi_pc.%04u"
60 
61 /* The maximum length of an RPPI event message, in bytes. */
62 #define RPPI_MSG_SIZE_MAX 256
63 
64 /* The maximum length of the name of a best route client */
65 #define OPENR_BRC_NAME_LEN 16
66 
67 /* The maximum length of the name of a routing policy client */
68 #define OPENR_POLICY_CLIENT_NAME_LEN 16
69 
70 #define OPENR_RTR_GBL_MSG_LEN (sizeof(openrRouterEventMsg_t))
71 #define OPENR_RTR_INTF_MSG_LEN (sizeof(openrRouterEventMsg_t))
72 
73 /* The maximum length of the name of a routing protocol */
74 #define OPENR_ROUTING_PROTOCOL_NAME_LEN 10
75 
76 /* The maximum number of route changes that we can fetch in one call */
77 #define OPENR_NUM_BEST_ROUTES_PER_GET 50
78 /*
79 * Use the maximum here no matter how many next hops a route has. This
80 * way we can pre-allocate buffers for route gets making them faster.
81 * The number of next hops are indicated in a field in the routes
82 */
83 #define OPENR_PLAT_MAX_ECMP_NEXTHOPS 48
84 
86 #define OPEN_VRF_MAX_NAME_LEN 64
87 
89 typedef enum
90 {
95 
99 typedef enum
100 {
101  OPEN_ADD_ROUTE = 0,
102  OPEN_DELETE_ROUTE = 1,
103  OPEN_CHANGE_ROUTE = 2
104 
106 
109 typedef enum
110 {
111  OPEN_POLICY_ROUTE_MAP = 1, /* (1 << 0) */
112  OPEN_POLICY_PREFIX_LIST = 2, /* (1 << 1) */
113  OPEN_POLICY_AS_PATH_LIST = 4, /* (1 << 2) */
114  OPEN_POLICY_ACL_ROUTE_FILTER = 8 /* (1 << 3) */
115 
117 
119 typedef enum
120 {
124 
126 typedef enum
127 {
128  OPENR_KEEPALIVE = 1,
129 
130  /* Best route change service messages */
131  OPENR_BEST_ROUTE_CHANGE = 10,
132 
133  /* router event message types */
134  OPENR_RTR_ENABLE = 101,
135  OPENR_RTR_DISABLE = 102,
136  OPENR_RTR_STARTUP_DONE = 103,
137  OPENR_RTR_INTF_CREATE = 104,
138  OPENR_RTR_INTF_DELETE = 105,
139  OPENR_RTR_INTF_ENABLE = 106,
140  OPENR_RTR_INTF_ENABLE_PENDING = 107,
141  OPENR_RTR_INTF_DISABLE = 108,
142  OPENR_RTR_INTF_DISABLE_PENDING = 109,
143  OPENR_RTR_INTF_ADDR_CHANGE = 110,
144  OPENR_RTR_INTF_MTU = 111,
145  OPENR_RTR_INTF_BW_CHANGE = 112,
146  OPENR_RTR_INTF_HOST_MODE = 113,
147  OPENR_RTR_INTF_CFG_CHANGE = 114,
148  OPENR_RTR_VRF_CREATE = 115,
149  OPENR_RTR_VRF_DELETE = 116,
150 
151  OPENR_RTR6_ENABLE = 201,
152  OPENR_RTR6_DISABLE = 202,
153  OPENR_RTR6_STARTUP_DONE = 203,
154  OPENR_RTR6_INTF_CREATE = 204,
155  OPENR_RTR6_INTF_DELETE = 205,
156  OPENR_RTR6_INTF_ENABLE = 206,
157  OPENR_RTR6_INTF_DISABLE = 207,
158  OPENR_RTR6_INTF_ADDR_CHANGE = 208,
159  OPENR_RTR6_INTF_MTU = 209,
160  OPENR_RTR6_INTF_BW_CHANGE = 210,
161  OPENR_RTR6_INTF_HOST_MODE = 211,
162 
163  OPENR_POLICY_CHANGE = 300
164 
166 
167 /* NSF applications that may send IPv4 routes to RTO. Values are powers
168  * of two used to index nsfRoutesPending. RIP and BGP don't support NSF
169  * now but adding values for them anyway. */
170 typedef enum
171 {
172  OPEN_NSF_PROTOCOL_OSPF = 0x1,
173  OPEN_NSF_PROTOCOL_RIP = 0x2,
174  OPEN_NSF_PROTOCOL_BGP = 0x4,
175  OPEN_NSF_PROTOCOL_LAST = 0x8
176 } OPEN_NSF_PROTOCOL_t;
177 
181 {
183  uint16_t msgType;
184 
186  uint16_t msgLen;
187 
189  uint32_t clientId;
190 
192  uint32_t vrfId;
193 
195 
196 typedef struct openrRouterEventMsg_s
197 {
198  /* One of OPENR_MESSAGE_TYPE_t */
199  uint16_t msgType;
200 
201  /* Number of bytes in payload. Includes the Message Type and Message Length fields. */
202  uint16_t msgLen;
203 
204  uint32_t eventSeqNumber;
205 
206  /* For events associated with an interface, this field contains the interface identifier.
207  ** Only sent if needed.
208  */
209  uint32_t ifNum;
210 
211  /* VRF Identifier */
212  uint32_t vrfId;
213 
214  /* Start of the Event specific data memory, which is allocated based on msgType value. */
215  uint8_t data[0];
216 
218 
220 {
221  /* One of OPENR_MESSAGE_TYPE_t */
222  uint16_t msgType;
223 
224  /* Number of bytes in payload. Includes the Message Type and Message Length fields. */
225  uint16_t msgLen;
226 
227  /* Change sequence number */
228  uint32_t seqNo;
229 
230  /* The type of routing policy that changed. One of OPEN_ROUTING_POLICY_TYPE_t */
231  uint32_t policyType;
232 
233  /* The type of change. One of OPEN_ROUTING_POLICY_CHANGE_t. */
234  uint32_t changeType;
235 
236  /* Name or number of changed policy follows the changeType. */
237 
239 
240 typedef struct openNextHop_s
241 {
244 
247  uint32_t ifNum;
248 
251  uint32_t label[OPEN_MAX_MPLS_IMPOSE_LABELS];
252 
253 } openNextHop_t;
254 
255 
256 typedef struct openRoute_s
257 {
261  uint8_t pfxLen;
262 
265  uint8_t routeType;
266 
271  uint32_t protoId;
272 
275  uint32_t vrfId;
276 
279  uint8_t rejectRoute;
280 
283  uint8_t discardRoute;
284 
288  uint8_t pref;
289 
291  uint32_t metric;
292 
294  uint32_t numNextHops;
295 
297  uint8_t leakedRoute;
298 
299  /* Flag to indicate if this is an RFC 5549 route */
300  uint8_t rfc5549Route;
301 
302  /* Flag to indicate if this route is unnumbered. */
303  uint8_t unnumberedRoute;
304 
305  /* Flag to indicate if this route is MPLS. */
306  uint8_t mplsRoute;
307 
308  /* Flag to indicate if this route is Syncdb entry. */
309  uint8_t syncdbRoute;
310 
311 } openRoute_t;
312 
313 /*
314  * This structure defines a route change event. It contains the best route data,
315  * the operation being performed and the set of next hops. It also contains a flag
316  * that indicates whether more route changes are pending based on which a
317  * subsequent call can be made
318  */
319 typedef struct openRouteChange_s
320 {
321  /* The route itself */
322  openRoute_t route;
323 
324  /* operation being performed, change type */
325  uint8_t chType;
326 
327  /* The set of next hops, will assume the maximum value of all supported platforms here */
328  openNextHop_t nextHops[OPENR_PLAT_MAX_ECMP_NEXTHOPS];
329 
330  /* Is it valid, needed because an ip and mask of 0 are valid and cannot be checked against */
331  uint8_t valid;
332 
334 
335 /* Needed by openapi to be a structure as arrays cannot be handled over RPC */
336 typedef struct openRouteChangeList_s
337 {
338  openRouteChange_t routeChange[OPENR_NUM_BEST_ROUTES_PER_GET];
340 
341 
342 /* Route map match parameters. We only expose the prefix at this point, not
343  * the other BGP match parameters supported internally. */
344 typedef struct openRmMatchParams_s
345 {
346  /* To match any prefix, set the prefix and prefixLen to 0. */
347  open_inet_addr_t prefix;
348  uint32_t prefixLen;
349 
351 
352 typedef struct openRmSetParams_s
353 {
354  /* non-zero if the route map set the metric. */
355  uint8_t setMetric;
356 
357  /* metric value, if set */
358  uint32_t metric;
359 
361 
362 /* BFD Admin modes */
363 typedef enum
364 {
365  OPEN_BFD_DISABLE = 0,
366  OPEN_BFD_ENABLE = 1
367 } OPEN_BFD_ADMIN_MODE_t;
368 
369 /* BFD endpoint parameters used to initiate a session */
370 typedef struct openBfdEndpoint_s {
371  uint32_t compId; /* Id of component creating the session */
372  uint32_t vrfId; /* VRID associated with this BFD session */
373  uint32_t intIfNum; /* Interface associated with this session */
374  open_inet_addr_t srcIpAddr; /* Source IPv4 or Ipv6 address */
375  open_inet_addr_t dstIpAddr; /* Destination IPv4 or Ipv6 address */
376  open_inet_addr_t nextHopIpAddr; /* NextHop IPv4 or Ipv6 address for Destination */
377  OPEN_MPLS_LABELS_t mpls_label; /* MPLS Label Stack */
378  uint32_t type; /* Type of BFD encapsulation. */
379 
380  /* The BFD application can take the echo mode and BFD session timers from the
381  ** interface and global config or from the session setting. In order to use the session
382  ** settings set the override_config to 1.
383  ** The timer values are in milliseconds.
384  */
385  uint32_t override_config;
386  uint32_t bfdMinTx;
387  uint32_t bfdMinRx;
388  uint32_t bfdMultiplier;
389  uint32_t bfdEchoMode;
390  uint32_t bfdSlowTimer;
392 
393 
394 /* Maximum protocols allowed to Register with BFD */
395 #define OPEN_BFD_MAX_REG_PROT 2 /* BGP and OSPF */
396 
397 /* BFD session information */
398 #define OPEN_BFD_SESSION_ID_INVALID (~0)
399 
400 /* BFD session states */
401 typedef enum
402 {
403  OPEN_BFD_SESSION_STATE_ADMIN_DOWN = 0,
404  OPEN_BFD_SESSION_STATE_DOWN = 1,
405  OPEN_BFD_SESSION_STATE_INIT = 2,
406  OPEN_BFD_SESSION_STATE_UP = 3,
407 } OPEN_BFD_SESSION_STATE_t;
408 
409 /* BFD Diagnostic codes */
410 typedef enum {
411  OPEN_BFD_DIAG_CODE_NONE,
412  OPEN_BFD_DIAG_CODE_CTRL_DETECT_TIME_EXPIRED,
413  OPEN_BFD_DIAG_CODE_ECHO_FAILED,
414  OPEN_BFD_DIAG_CODE_NEIGHBOR_SIGNALED_SESSION_DOWN,
415  OPEN_BFD_DIAG_CODE_FORWARDING_PLANE_RESET,
416  OPEN_BFD_DIAG_CODE_PATH_DOWN,
417  OPEN_BFD_DIAG_CODE_CONCATENATED_PATH_DOWN,
418  OPEN_BFD_DIAG_CODE_ADMIN_DOWN,
419  OPEN_BFD_DIAG_CODE_REVERSE_CONCATENATED_PATH_DOWN,
420  OPEN_BFD_DIAG_CODE_MIS_CONNECTIVITY_DEFECT
421 } OPEN_BFD_DIAG_CODE_t;
422 
423 typedef enum {
424  OPEN_BFD_TUNNEL_TYPE_RAW, /* RAW UDP */
425  OPEN_BFD_TUNNEL_TYPE_UDP, /* BFD over IPv4/v6. */
426  OPEN_BFD_TUNNEL_TYPE_COUNT
427 } openBfdTunnelType_t;
428 
429 #define SYNCDB_OPENAPI_BFD "OpEN API BFD"
430 #define SYNCDB_OPENAPI_BFD_VERSION 1
431 
436 typedef struct openBfdSessionKey_s {
437  uint32_t intIfNum; /* Interface associated with this session */
438  uint32_t vrfId; /* VRID associated with this BFD session */
439  open_inet_addr_t srcIpAddr; /* Source IPv4 or Ipv6 address */
440  open_inet_addr_t dstIpAddr; /* Destination IPv4 or Ipv6 address */
441  OPEN_MPLS_LABELS_t mpls_label; /* MPLS Label Stack */
443 
446 typedef struct openBfdSessionInfo_s {
448  uint32_t session_id;
449  uint8_t version;
450  OPEN_BFD_SESSION_STATE_t state;
451  uint8_t flags;
452  OPEN_BFD_DIAG_CODE_t diag;
453  uint32_t authType;
454  uint32_t localDiscr;
455  uint32_t remoteDiscr;
456  uint32_t localMinTx;
457  uint32_t localMinRx;
458  uint8_t localDetectMult;
459  uint32_t remoteMinTx;
460  uint32_t remoteMinRx;
462  uint32_t actualTx;
463  uint32_t echoEnable;
464  uint32_t actualTxEcho;
465  uint32_t id[OPEN_BFD_MAX_REG_PROT];
467  openBfdTunnelType_t type;
468  uint32_t upTime;
470 
471 /* BFD session statistics */
472 typedef struct openBfdSessionStats_s {
473  uint32_t inPkts; /* BFD packets received. */
474  uint32_t outPkts; /* BFD packets transmitted. */
475  uint32_t dropPkts; /* Total BFD packets drop. */
476  uint32_t echoInPkts; /* BFD echo packets received. */
477  uint32_t echoOutPkts; /* BFD echo packets transmitted. */
479 
480 
481 /*****************************************************************/
514  uint32_t vrfId,
515  OPEN_AF_t addressFamily,
516  open_buffdesc *protoName,
517  open_buffdesc *protoCode,
518  uint32_t *protoId);
519 
520 /*****************************************************************/
556  OPEN_AF_t addressFamily,
557  uint32_t protoId,
558  open_buffdesc *routeTypeName,
559  open_buffdesc *routeTypeCode,
560  uint32_t *routeType);
561 
562 /*****************************************************************/
582  uint32_t vrfId,
583  uint32_t addressFamily,
584  uint32_t protoId);
585 
586 /*****************************************************************/
606  uint32_t addressFamily,
607  uint32_t routeType);
608 
609 /*****************************************************************/
626  OPEN_AF_t addressFamily,
627  uint32_t vrfId,
628  uint32_t protoId);
629 
630 /*****************************************************************/
647  OPEN_AF_t addressFamily,
648  uint32_t vrfId,
649  uint32_t protoId);
650 
651 /*****************************************************************/
673  uint32_t routeType,
674  open_buffdesc *protoName,
675  open_buffdesc *routeTypeName);
676 
677 /*****************************************************************/
695  uint32_t *protoNameLen);
696 
697 /*****************************************************************/
715  uint32_t *routeTypeNameLen);
716 
717 /*****************************************************************/
735  openRoute_t *routeEntry,
736  open_buffdesc *nextHopListBuff);
737 
738 /*****************************************************************/
759  openRoute_t *routeEntry,
760  open_buffdesc *nextHopListBuff);
761 
762 /*****************************************************************/
777  openRoute_t *routeEntry);
778 
779 
780 /*****************************************************************/
803  OPEN_AF_t family,
804  openRoute_t *routeEntry,
805  open_buffdesc *nextHopListBuff);
806 
807 /*****************************************************************/
831  OPEN_AF_t family,
832  uint32_t vrfId,
833  openRoute_t *openRoute,
834  open_buffdesc *nextHopListBuff);
835 
836 /*****************************************************************/
859  OPEN_AF_t family,
860  openRoute_t *route,
861  open_buffdesc *nextHopListBuff);
862 
863 /*****************************************************************/
878  open_inet_addr_t destAddr,
879  openRoute_t *route,
880  open_buffdesc *nextHopListBuff);
881 
882 /*****************************************************************/
898  open_inet_addr_t destPrefix,
899  uint32_t pfxLen,
900  openRoute_t *route,
901  open_buffdesc *nextHopListBuff);
902 /*****************************************************************/
918  uint32_t vrfId,
919  open_inet_addr_t destPrefix,
920  uint32_t pfxLen,
921  openRoute_t *route,
922  open_buffdesc *nextHopListBuff);
923 
924 /*****************************************************************/
941  uint32_t vrfId,
942  open_inet_addr_t *nh_addr,
943  open_buffdesc *mac,
944  uint32_t cbParm1,
945  uint32_t cbParm2,
946  uint32_t cbParm3);
947 
948 /*****************************************************************/
978  OPEN_AF_t family,
979  uint32_t pid,
980  uint32_t vrfId,
981  open_buffdesc *clientName,
982  uint32_t *clientId);
983 
984 /*****************************************************************/
1007  uint32_t clientId);
1008 
1009 /*****************************************************************/
1031  uint32_t clientId,
1032  OPEN_ROUTE_EVENT_t *chType,
1033  openRoute_t *route,
1034  open_buffdesc *nextHopListBuff);
1035 
1036 /*****************************************************************/
1056  uint32_t clientId,
1057  uint32_t numChanges,
1058  open_buffdesc *routeListBuff);
1059 
1060 /*****************************************************************/
1081  uint32_t clientId, uint32_t intIfNum,
1082  uint32_t numChanges,
1083  open_buffdesc *routeListBuff);
1084 
1085 /*****************************************************************/
1104  uint32_t *maxNextHops);
1105 
1106 /*****************************************************************/
1129  OPEN_AF_t family,
1130  uint32_t pid,
1131  uint32_t vrfId,
1132  open_buffdesc *clientName,
1133  uint32_t *clientId);
1134 
1135 /*****************************************************************/
1151  uint32_t vrfId,
1152  uint32_t clientId);
1153 
1154 /*****************************************************************/
1173  uint32_t vrfId,
1174  uint32_t clientId,
1175  uint32_t eventId);
1176 
1177 /*****************************************************************/
1194  uint32_t *routingIntfMax);
1195 
1196 /*****************************************************************/
1214  uint32_t vrfId,
1215  uint32_t intf,
1216  uint32_t *nextIntf);
1217 
1218 /*****************************************************************/
1235  uint32_t intf,
1236  uint32_t *nextIntf);
1237 
1238 /*****************************************************************/
1253  uint32_t intf,
1254  OPEN_INTF_TYPE_t *intfType);
1255 
1256 /*****************************************************************/
1273  uint32_t intIfNum,
1274  OPEN_BOOL_t *isUnnumbered);
1275 
1276 /*****************************************************************/
1291  uint32_t vrfId, open_buffdesc *vrfName);
1292 
1293 /*****************************************************************/
1310  open_buffdesc *vrfName,
1311  open_buffdesc *vrfNameNext);
1312 
1313 /*****************************************************************/
1329  open_buffdesc *vrfName,
1330  uint32_t *vrfId);
1331 
1332 /*****************************************************************/
1347  uint32_t intf,
1348  uint32_t *vlanId);
1349 
1350 /*****************************************************************/
1365  uint32_t intf,
1366  uint32_t *loopbackId);
1367 
1368 /*****************************************************************/
1383  uint32_t loopbackId,
1384  uint32_t *intf);
1385 
1386 /*****************************************************************/
1402  uint32_t *ifNameSize);
1403 
1404 /*****************************************************************/
1421  uint32_t intf,
1422  open_buffdesc *intfName);
1423 
1424 /*****************************************************************/
1439  uint32_t ifIndex, uint32_t *intIfNum);
1440 
1441 /*****************************************************************/
1456  uint32_t intf,
1457  uint32_t *ifIndex);
1458 
1459 /*****************************************************************/
1474  uint32_t intf,
1475  open_buffdesc *intfName);
1476 
1477 /*****************************************************************/
1493  uint32_t vrfId, uint32_t intf, open_buffdesc *intfName);
1494 
1495 /*****************************************************************/
1511  uint32_t vrfId, uint32_t intf, open_buffdesc *intfName);
1512 
1513 /*****************************************************************/
1528  uint32_t vrfId, open_buffdesc *intfName);
1529 
1530 /*****************************************************************/
1545  uint32_t intf,
1546  open_USP_t *usp);
1547 
1548 /*****************************************************************/
1563  uint32_t intf,
1564  open_buffdesc *mac);
1565 
1566 /*****************************************************************/
1583  OPEN_AF_t af,
1584  uint32_t intf,
1585  OPEN_CONTROL_t *ifState);
1586 
1587 /*****************************************************************/
1610  OPEN_AF_t af,
1611  uint32_t intf,
1612  open_inet_pfx_t *ipAddr);
1613 
1614 /*****************************************************************/
1638  OPEN_AF_t af,
1639  uint32_t intf,
1640  open_inet_pfx_t *ipAddr,
1641  uint32_t *index);
1642 
1643 /*****************************************************************/
1664  uint32_t intf,
1665  OPEN_INTF_IP_ADDR_METHOD_t *addrMethod,
1666  OPEN_CONTROL_t *clientIdEnable);
1667 
1668 /*****************************************************************/
1685  OPEN_AF_t af,
1686  uint32_t intf,
1687  uint32_t *ipMtu);
1688 
1689 /*****************************************************************/
1705  OPEN_AF_t af,
1706  uint32_t intf,
1707  uint32_t *bandwidth);
1708 
1709 /*****************************************************************/
1724  uint32_t intf,
1725  uint32_t *mode);
1726 
1727 /*****************************************************************/
1742  uint32_t intf,
1743  uint32_t *mode);
1744 
1745 /*****************************************************************/
1761  open_buffdesc *vrfName,
1762  uint32_t *burstSize,
1763  uint32_t *interval);
1764 
1765 /*****************************************************************/
1780  open_buffdesc *vrfName,
1781  uint32_t *mode);
1782 
1783 /*****************************************************************/
1798  OPEN_AF_t af,
1799  OPEN_CONTROL_t *enable);
1800 
1801 /*****************************************************************/
1835  OPEN_AF_t af,
1836  uint32_t *complete);
1837 
1838 /*****************************************************************/
1873  OPEN_AF_t af,
1874  uint32_t vrfId,
1875  uint32_t *complete);
1876 
1877 /*****************************************************************/
1897 int openapiRouteMapApply(openapiClientHandle_t *client_handle,
1898  open_buffdesc *routeMapName,
1899  openRmMatchParams_t *matchParams,
1900  openRmSetParams_t *setParams);
1901 
1902 /*****************************************************************/
1923  open_buffdesc *pfxListName,
1924  open_inet_addr_t prefix,
1925  uint32_t pfxLen);
1926 
1927 /*****************************************************************/
1959  open_buffdesc *clientName,
1960  uint32_t pid,
1961  uint32_t policyTypeMask,
1962  uint32_t *clientId);
1963 
1964 /*****************************************************************/
1982  uint32_t clientId,
1983  uint32_t seqNo);
1984 
1985 /*****************************************************************/
2001  OPEN_PREF_INDICES_t index,
2002  uint32_t *pref);
2003 
2004 /*****************************************************************/
2021  OPEN_PREF_INDICES_t index,
2022  uint32_t pref);
2023 
2024 /*****************************************************************/
2045  uint32_t protoId,
2046  open_buffdesc *protoName,
2047  uint32_t *nextProtoId);
2048 
2049 /*****************************************************************/
2065  OPEN_PREF_INDICES_t index,
2066  uint32_t *pref);
2067 
2068 /*****************************************************************/
2085  OPEN_PREF_INDICES_t index,
2086  uint32_t pref);
2087 
2088 /******* NEW OpENAPIs Added for virtual router support *************/
2089 
2090 /*****************************************************************/
2120  uint32_t vrfId,
2121  OPEN_AF_t family,
2122  uint32_t pid,
2123  open_buffdesc *clientName,
2124  uint32_t *clientId);
2125 
2126 /*****************************************************************/
2145  uint32_t vrfId,
2146  openRoute_t *routeEntry,
2147  open_buffdesc *nextHopListBuff);
2148 
2149 
2150 /**************************************************************************/
2161 open_error_t openapiBfdModeSet(OPEN_BFD_ADMIN_MODE_t mode);
2162 
2163 /*****************************************************************/
2178  openBfdEndpoint_t *ep,
2179  uint32_t *id);
2180 
2181 /*****************************************************************/
2196  openBfdEndpoint_t *ep,
2197  uint32_t id);
2198 
2199 /*****************************************************************/
2215  open_inet_addr_t peer,
2216  uint32_t *id);
2217 
2218 /*****************************************************************/
2234  uint32_t id,
2235  openBfdSessionInfo_t *info);
2236 
2237 /*****************************************************************/
2251  uint32_t id, openBfdSessionStats_t *stats);
2252 
2253 
2254 /*****************************************************************/
2273  uint32_t vrfId,
2274  openRoute_t *routeEntry,
2275  open_buffdesc *nextHopListBuff);
2276 
2277 /*****************************************************************/
2299  uint32_t vrfId,
2300  openRoute_t *routeEntry,
2301  open_buffdesc *nextHopListBuff);
2302 
2303 /*****************************************************************/
2319  uint32_t vrfId,
2320  openRoute_t *routeEntry,
2321  open_buffdesc *nextHopListBuff);
2322 
2323 /*****************************************************************/
2339  uint32_t vrfId,
2340  openRoute_t *routeEntry,
2341  open_buffdesc *nextHopListBuff);
2342 
2343 /*****************************************************************/
2358  uint32_t vrfId,
2359  uint32_t *rtoFreeRouteCount);
2360 
2361 /*****************************************************************/
2378  OPEN_AF_t af,
2379  uint32_t vrfId,
2380  OPEN_CONTROL_t *enable);
2381 
2382 /*****************************************************************/
2396  uint32_t *pval);
2397 
2398 /*****************************************************************/
2412  uint32_t *pval);
2413 
2414 /*****************************************************************/
2431  uint32_t vrfId,
2432  OPEN_NSF_PROTOCOL_t protocol);
2433 
2434 /*****************************************************************/
2452  uint32_t vrfId,
2453  OPEN_NSF_PROTOCOL_t protocol);
2454 
2455 /*****************************************************************/
2468  OPEN_BOOL_t *isBackupElected);
2469 
2470 /*****************************************************************/
2487  uint32_t intIfNum, uint32_t peerIp, OPEN_BOOL_t isAdd, uint32_t flag);
2488 
2489 /*****************************************************************/
2510  uint32_t vrfId,
2511  open_inet_addr_t *dest_addr,
2512  open_buffdesc *mac,
2513  int32_t stkIfIndex,
2514  uint16_t state);
2515 
2516 /*****************************************************************/
2534  uint32_t vrfId,
2535  open_inet_addr_t *dest_addr,
2536  int32_t stkIfIndex);
2537 
2538 /*****************************************************************/
2554  uint32_t vrfId,
2555  OPEN_PREF_INDICES_t index,
2556  uint32_t *pref);
2557 
2558 #endif /* OPENAPI_ROUTING_H_INCLUDED */
2559