Open Ethernet Networking (OpEN) API Guide and Reference Manual  3.4.4.5
openapi_routing.h
Go to the documentation of this file.
1 
9 /*********************************************************************
10 *
11 * Copyright 2016-2018 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) - sizeof(uint32_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 
149  OPENR_RTR6_ENABLE = 201,
150  OPENR_RTR6_DISABLE = 202,
151  OPENR_RTR6_STARTUP_DONE = 203,
152  OPENR_RTR6_INTF_CREATE = 204,
153  OPENR_RTR6_INTF_DELETE = 205,
154  OPENR_RTR6_INTF_ENABLE = 206,
155  OPENR_RTR6_INTF_DISABLE = 207,
156  OPENR_RTR6_INTF_ADDR_CHANGE = 208,
157  OPENR_RTR6_INTF_MTU = 209,
158  OPENR_RTR6_INTF_BW_CHANGE = 210,
159  OPENR_RTR6_INTF_HOST_MODE = 211,
160 
161  OPENR_POLICY_CHANGE = 300
162 
164 
165 /* NSF applications that may send IPv4 routes to RTO. Values are powers
166  * of two used to index nsfRoutesPending. RIP and BGP don't support NSF
167  * now but adding values for them anyway. */
168 typedef enum
169 {
170  OPEN_NSF_PROTOCOL_OSPF = 0x1,
171  OPEN_NSF_PROTOCOL_RIP = 0x2,
172  OPEN_NSF_PROTOCOL_BGP = 0x4,
173  OPEN_NSF_PROTOCOL_LAST = 0x8
174 } OPEN_NSF_PROTOCOL_t;
175 
179 {
181  uint16_t msgType;
182 
184  uint16_t msgLen;
185 
187  uint32_t clientId;
188 
190 
191 typedef struct openrRouterEventMsg_s
192 {
193  /* One of OPENR_MESSAGE_TYPE_t */
194  uint16_t msgType;
195 
196  /* Number of bytes in payload. Includes the Message Type and Message Length fields. */
197  uint16_t msgLen;
198 
199  uint32_t eventSeqNumber;
200 
201  /* For events associated with an interface, this field contains the interface identifier.
202  ** Only sent if needed.
203  */
204  uint32_t ifNum;
205 
206  /* Start of the Event specific data memory, which is allocated based on msgType value. */
207  uint8_t data[0];
208 
210 
212 {
213  /* One of OPENR_MESSAGE_TYPE_t */
214  uint16_t msgType;
215 
216  /* Number of bytes in payload. Includes the Message Type and Message Length fields. */
217  uint16_t msgLen;
218 
219  /* Change sequence number */
220  uint32_t seqNo;
221 
222  /* The type of routing policy that changed. One of OPEN_ROUTING_POLICY_TYPE_t */
223  uint32_t policyType;
224 
225  /* The type of change. One of OPEN_ROUTING_POLICY_CHANGE_t. */
226  uint32_t changeType;
227 
228  /* Name or number of changed policy follows the changeType. */
229 
231 
232 typedef struct openNextHop_s
233 {
236 
239  uint32_t ifNum;
240 
243  uint32_t label[OPEN_MAX_MPLS_IMPOSE_LABELS];
244 
245 } openNextHop_t;
246 
247 
248 typedef struct openRoute_s
249 {
253  uint8_t pfxLen;
254 
257  uint8_t routeType;
258 
263  uint32_t protoId;
264 
267  uint8_t rejectRoute;
268 
271  uint8_t discardRoute;
272 
276  uint8_t pref;
277 
279  uint32_t metric;
280 
282  uint32_t numNextHops;
283 
285  uint8_t leakedRoute;
286 
287  /* Flag to indicate if this is an RFC 5549 route */
288  uint8_t rfc5549Route;
289 
290  /* Flag to indicate if this route is unnumbered. */
291  uint8_t unnumberedRoute;
292 
293  /* Flag to indicate if this route is MPLS. */
294  uint8_t mplsRoute;
295 
296  /* Flag to indicate if this route is Syncdb entry. */
297  uint8_t syncdbRoute;
298 
299 } openRoute_t;
300 
301 /*
302  * This structure defines a route change event. It contains the best route data,
303  * the operation being performed and the set of next hops. It also contains a flag
304  * that indicates whether more route changes are pending based on which a
305  * subsequent call can be made
306  */
307 typedef struct openRouteChange_s
308 {
309  /* The route itself */
310  openRoute_t route;
311 
312  /* operation being performed, change type */
313  uint8_t chType;
314 
315  /* The set of next hops, will assume the maximum value of all supported platforms here */
316  openNextHop_t nextHops[OPENR_PLAT_MAX_ECMP_NEXTHOPS];
317 
318  /* Is it valid, needed because an ip and mask of 0 are valid and cannot be checked against */
319  uint8_t valid;
320 
322 
323 /* Needed by openapi to be a structure as arrays cannot be handled over RPC */
324 typedef struct openRouteChangeList_s
325 {
326  openRouteChange_t routeChange[OPENR_NUM_BEST_ROUTES_PER_GET];
328 
329 
330 /* Route map match parameters. We only expose the prefix at this point, not
331  * the other BGP match parameters supported internally. */
332 typedef struct openRmMatchParams_s
333 {
334  /* To match any prefix, set the prefix and prefixLen to 0. */
335  open_inet_addr_t prefix;
336  uint32_t prefixLen;
337 
339 
340 typedef struct openRmSetParams_s
341 {
342  /* non-zero if the route map set the metric. */
343  uint8_t setMetric;
344 
345  /* metric value, if set */
346  uint32_t metric;
347 
349 
350 /* BFD Admin modes */
351 typedef enum
352 {
353  OPEN_BFD_DISABLE = 0,
354  OPEN_BFD_ENABLE = 1
355 } OPEN_BFD_ADMIN_MODE_t;
356 
357 /* BFD endpoint parameters used to initiate a session */
358 typedef struct openBfdEndpoint_s {
359  uint32_t compId; /* Id of component creating the session */
360  uint32_t vrfId; /* VRID associated with this BFD session */
361  uint32_t intIfNum; /* Interface associated with this session */
362  open_inet_addr_t srcIpAddr; /* Source IPv4 or Ipv6 address */
363  open_inet_addr_t dstIpAddr; /* Destination IPv4 or Ipv6 address */
364  open_inet_addr_t nextHopIpAddr; /* NextHop IPv4 or Ipv6 address for Destination */
365  OPEN_MPLS_LABELS_t mpls_label; /* MPLS Label Stack */
366  uint32_t type; /* Type of BFD encapsulation. */
367 
368  /* The BFD application can take the echo mode and BFD session timers from the
369  ** interface and global config or from the session setting. In order to use the session
370  ** settings set the override_config to 1.
371  ** The timer values are in milliseconds.
372  */
373  uint32_t override_config;
374  uint32_t bfdMinTx;
375  uint32_t bfdMinRx;
376  uint32_t bfdMultiplier;
377  uint32_t bfdEchoMode;
378  uint32_t bfdSlowTimer;
380 
381 
382 /* Maximum protocols allowed to Register with BFD */
383 #define OPEN_BFD_MAX_REG_PROT 2 /* BGP and OSPF */
384 
385 /* BFD session information */
386 #define OPEN_BFD_SESSION_ID_INVALID (~0)
387 
388 /* BFD session states */
389 typedef enum
390 {
391  OPEN_BFD_SESSION_STATE_ADMIN_DOWN = 0,
392  OPEN_BFD_SESSION_STATE_DOWN = 1,
393  OPEN_BFD_SESSION_STATE_INIT = 2,
394  OPEN_BFD_SESSION_STATE_UP = 3,
395 } OPEN_BFD_SESSION_STATE_t;
396 
397 /* BFD Diagnostic codes */
398 typedef enum {
399  OPEN_BFD_DIAG_CODE_NONE,
400  OPEN_BFD_DIAG_CODE_CTRL_DETECT_TIME_EXPIRED,
401  OPEN_BFD_DIAG_CODE_ECHO_FAILED,
402  OPEN_BFD_DIAG_CODE_NEIGHBOR_SIGNALED_SESSION_DOWN,
403  OPEN_BFD_DIAG_CODE_FORWARDING_PLANE_RESET,
404  OPEN_BFD_DIAG_CODE_PATH_DOWN,
405  OPEN_BFD_DIAG_CODE_CONCATENATED_PATH_DOWN,
406  OPEN_BFD_DIAG_CODE_ADMIN_DOWN,
407  OPEN_BFD_DIAG_CODE_REVERSE_CONCATENATED_PATH_DOWN,
408  OPEN_BFD_DIAG_CODE_MIS_CONNECTIVITY_DEFECT
409 } OPEN_BFD_DIAG_CODE_t;
410 
411 typedef enum {
412  OPEN_BFD_TUNNEL_TYPE_RAW, /* RAW UDP */
413  OPEN_BFD_TUNNEL_TYPE_UDP, /* BFD over IPv4/v6. */
414  OPEN_BFD_TUNNEL_TYPE_COUNT
415 } openBfdTunnelType_t;
416 
417 #define SYNCDB_OPENAPI_BFD "OpEN API BFD"
418 #define SYNCDB_OPENAPI_BFD_VERSION 1
419 
424 typedef struct openBfdSessionKey_s {
425  uint32_t intIfNum; /* Interface associated with this session */
426  uint32_t vrfId; /* VRID associated with this BFD session */
427  open_inet_addr_t srcIpAddr; /* Source IPv4 or Ipv6 address */
428  open_inet_addr_t dstIpAddr; /* Destination IPv4 or Ipv6 address */
429  OPEN_MPLS_LABELS_t mpls_label; /* MPLS Label Stack */
431 
434 typedef struct openBfdSessionInfo_s {
436  uint32_t session_id;
437  uint8_t version;
438  OPEN_BFD_SESSION_STATE_t state;
439  uint8_t flags;
440  OPEN_BFD_DIAG_CODE_t diag;
441  uint32_t authType;
442  uint32_t localDiscr;
443  uint32_t remoteDiscr;
444  uint32_t localMinTx;
445  uint32_t localMinRx;
446  uint8_t localDetectMult;
447  uint32_t remoteMinTx;
448  uint32_t remoteMinRx;
450  uint32_t actualTx;
451  uint32_t echoEnable;
452  uint32_t actualTxEcho;
453  uint32_t id[OPEN_BFD_MAX_REG_PROT];
455  openBfdTunnelType_t type;
456  uint32_t upTime;
458 
459 /* BFD session statistics */
460 typedef struct openBfdSessionStats_s {
461  uint32_t inPkts; /* BFD packets received. */
462  uint32_t outPkts; /* BFD packets transmitted. */
463  uint32_t dropPkts; /* Total BFD packets drop. */
464  uint32_t echoInPkts; /* BFD echo packets received. */
465  uint32_t echoOutPkts; /* BFD echo packets transmitted. */
467 
468 
469 /*****************************************************************/
502  uint32_t vrfId,
503  OPEN_AF_t addressFamily,
504  open_buffdesc *protoName,
505  open_buffdesc *protoCode,
506  uint32_t *protoId);
507 
508 /*****************************************************************/
544  OPEN_AF_t addressFamily,
545  uint32_t protoId,
546  open_buffdesc *routeTypeName,
547  open_buffdesc *routeTypeCode,
548  uint32_t *routeType);
549 
550 /*****************************************************************/
570  uint32_t vrfId,
571  uint32_t addressFamily,
572  uint32_t protoId);
573 
574 /*****************************************************************/
594  uint32_t addressFamily,
595  uint32_t routeType);
596 
597 /*****************************************************************/
614  OPEN_AF_t addressFamily,
615  uint32_t vrfId,
616  uint32_t protoId);
617 
618 /*****************************************************************/
635  OPEN_AF_t addressFamily,
636  uint32_t vrfId,
637  uint32_t protoId);
638 
639 /*****************************************************************/
661  uint32_t routeType,
662  open_buffdesc *protoName,
663  open_buffdesc *routeTypeName);
664 
665 /*****************************************************************/
683  uint32_t *protoNameLen);
684 
685 /*****************************************************************/
703  uint32_t *routeTypeNameLen);
704 
705 /*****************************************************************/
723  openRoute_t *routeEntry,
724  open_buffdesc *nextHopListBuff);
725 
726 /*****************************************************************/
747  openRoute_t *routeEntry,
748  open_buffdesc *nextHopListBuff);
749 
750 /*****************************************************************/
765  openRoute_t *routeEntry);
766 
767 
768 /*****************************************************************/
791  OPEN_AF_t family,
792  openRoute_t *routeEntry,
793  open_buffdesc *nextHopListBuff);
794 
795 /*****************************************************************/
819  OPEN_AF_t family,
820  uint32_t vrfId,
821  openRoute_t *openRoute,
822  open_buffdesc *nextHopListBuff);
823 
824 /*****************************************************************/
847  OPEN_AF_t family,
848  openRoute_t *route,
849  open_buffdesc *nextHopListBuff);
850 
851 /*****************************************************************/
866  open_inet_addr_t destAddr,
867  openRoute_t *route,
868  open_buffdesc *nextHopListBuff);
869 
870 /*****************************************************************/
886  open_inet_addr_t destPrefix,
887  uint32_t pfxLen,
888  openRoute_t *route,
889  open_buffdesc *nextHopListBuff);
890 /*****************************************************************/
906  uint32_t vrfId,
907  open_inet_addr_t destPrefix,
908  uint32_t pfxLen,
909  openRoute_t *route,
910  open_buffdesc *nextHopListBuff);
911 
912 /*****************************************************************/
929  uint32_t vrfId,
930  open_inet_addr_t *nh_addr,
931  open_buffdesc *mac,
932  uint32_t cbParm1,
933  uint32_t cbParm2,
934  uint32_t cbParm3);
935 
936 /*****************************************************************/
966  OPEN_AF_t family,
967  uint32_t pid,
968  uint32_t vrfId,
969  open_buffdesc *clientName,
970  uint32_t *clientId);
971 
972 /*****************************************************************/
995  uint32_t clientId);
996 
997 /*****************************************************************/
1019  uint32_t clientId,
1020  OPEN_ROUTE_EVENT_t *chType,
1021  openRoute_t *route,
1022  open_buffdesc *nextHopListBuff);
1023 
1024 /*****************************************************************/
1044  uint32_t clientId,
1045  uint32_t numChanges,
1046  open_buffdesc *routeListBuff);
1047 
1048 /*****************************************************************/
1069  uint32_t clientId, uint32_t intIfNum,
1070  uint32_t numChanges,
1071  open_buffdesc *routeListBuff);
1072 
1073 /*****************************************************************/
1092  uint32_t *maxNextHops);
1093 
1094 /*****************************************************************/
1117  OPEN_AF_t family,
1118  uint32_t pid,
1119  uint32_t vrfId,
1120  open_buffdesc *clientName,
1121  uint32_t *clientId);
1122 
1123 /*****************************************************************/
1139  uint32_t vrfId,
1140  uint32_t clientId);
1141 
1142 /*****************************************************************/
1161  uint32_t vrfId,
1162  uint32_t clientId,
1163  uint32_t eventId);
1164 
1165 /*****************************************************************/
1182  uint32_t *routingIntfMax);
1183 
1184 /*****************************************************************/
1202  uint32_t vrfId,
1203  uint32_t intf,
1204  uint32_t *nextIntf);
1205 
1206 /*****************************************************************/
1223  uint32_t intf,
1224  uint32_t *nextIntf);
1225 
1226 /*****************************************************************/
1241  uint32_t intf,
1242  OPEN_INTF_TYPE_t *intfType);
1243 
1244 /*****************************************************************/
1261  uint32_t intIfNum,
1262  OPEN_BOOL_t *isUnnumbered);
1263 
1264 /*****************************************************************/
1279  uint32_t vrfId, open_buffdesc *vrfName);
1280 
1281 /*****************************************************************/
1298  open_buffdesc *vrfName,
1299  open_buffdesc *vrfNameNext);
1300 
1301 /*****************************************************************/
1316  uint32_t intf,
1317  uint32_t *vlanId);
1318 
1319 /*****************************************************************/
1334  uint32_t intf,
1335  uint32_t *loopbackId);
1336 
1337 /*****************************************************************/
1352  uint32_t loopbackId,
1353  uint32_t *intf);
1354 
1355 /*****************************************************************/
1371  uint32_t *ifNameSize);
1372 
1373 /*****************************************************************/
1390  uint32_t intf,
1391  open_buffdesc *intfName);
1392 
1393 /*****************************************************************/
1408  uint32_t ifIndex, uint32_t *intIfNum);
1409 
1410 /*****************************************************************/
1425  uint32_t intf,
1426  uint32_t *ifIndex);
1427 
1428 /*****************************************************************/
1443  uint32_t intf,
1444  open_buffdesc *intfName);
1445 
1446 /*****************************************************************/
1462  uint32_t vrfId, uint32_t intf, open_buffdesc *intfName);
1463 
1464 /*****************************************************************/
1480  uint32_t vrfId, uint32_t intf, open_buffdesc *intfName);
1481 
1482 /*****************************************************************/
1497  uint32_t vrfId, open_buffdesc *intfName);
1498 
1499 /*****************************************************************/
1514  uint32_t intf,
1515  open_USP_t *usp);
1516 
1517 /*****************************************************************/
1532  uint32_t intf,
1533  open_buffdesc *mac);
1534 
1535 /*****************************************************************/
1552  OPEN_AF_t af,
1553  uint32_t intf,
1554  OPEN_CONTROL_t *ifState);
1555 
1556 /*****************************************************************/
1579  OPEN_AF_t af,
1580  uint32_t intf,
1581  open_inet_pfx_t *ipAddr);
1582 
1583 /*****************************************************************/
1607  OPEN_AF_t af,
1608  uint32_t intf,
1609  open_inet_pfx_t *ipAddr,
1610  uint32_t *index);
1611 
1612 /*****************************************************************/
1633  uint32_t intf,
1634  OPEN_INTF_IP_ADDR_METHOD_t *addrMethod,
1635  OPEN_CONTROL_t *clientIdEnable);
1636 
1637 /*****************************************************************/
1654  OPEN_AF_t af,
1655  uint32_t intf,
1656  uint32_t *ipMtu);
1657 
1658 /*****************************************************************/
1674  OPEN_AF_t af,
1675  uint32_t intf,
1676  uint32_t *bandwidth);
1677 
1678 /*****************************************************************/
1693  uint32_t intf,
1694  uint32_t *mode);
1695 
1696 /*****************************************************************/
1711  uint32_t intf,
1712  uint32_t *mode);
1713 
1714 /*****************************************************************/
1730  open_buffdesc *vrfName,
1731  uint32_t *burstSize,
1732  uint32_t *interval);
1733 
1734 /*****************************************************************/
1749  open_buffdesc *vrfName,
1750  uint32_t *mode);
1751 
1752 /*****************************************************************/
1767  OPEN_AF_t af,
1768  OPEN_CONTROL_t *enable);
1769 
1770 /*****************************************************************/
1804  OPEN_AF_t af,
1805  uint32_t *complete);
1806 
1807 /*****************************************************************/
1842  OPEN_AF_t af,
1843  uint32_t vrfId,
1844  uint32_t *complete);
1845 
1846 /*****************************************************************/
1866 int openapiRouteMapApply(openapiClientHandle_t *client_handle,
1867  open_buffdesc *routeMapName,
1868  openRmMatchParams_t *matchParams,
1869  openRmSetParams_t *setParams);
1870 
1871 /*****************************************************************/
1892  open_buffdesc *pfxListName,
1893  open_inet_addr_t prefix,
1894  uint32_t pfxLen);
1895 
1896 /*****************************************************************/
1928  open_buffdesc *clientName,
1929  uint32_t pid,
1930  uint32_t policyTypeMask,
1931  uint32_t *clientId);
1932 
1933 /*****************************************************************/
1951  uint32_t clientId,
1952  uint32_t seqNo);
1953 
1954 /*****************************************************************/
1970  OPEN_PREF_INDICES_t index,
1971  uint32_t *pref);
1972 
1973 /*****************************************************************/
1990  OPEN_PREF_INDICES_t index,
1991  uint32_t pref);
1992 
1993 /*****************************************************************/
2014  uint32_t protoId,
2015  open_buffdesc *protoName,
2016  uint32_t *nextProtoId);
2017 
2018 /*****************************************************************/
2034  OPEN_PREF_INDICES_t index,
2035  uint32_t *pref);
2036 
2037 /*****************************************************************/
2054  OPEN_PREF_INDICES_t index,
2055  uint32_t pref);
2056 
2057 /******* NEW OpENAPIs Added for virtual router support *************/
2058 
2059 /*****************************************************************/
2089  uint32_t vrfId,
2090  OPEN_AF_t family,
2091  uint32_t pid,
2092  open_buffdesc *clientName,
2093  uint32_t *clientId);
2094 
2095 /*****************************************************************/
2114  uint32_t vrfId,
2115  openRoute_t *routeEntry,
2116  open_buffdesc *nextHopListBuff);
2117 
2118 
2119 /**************************************************************************/
2130 open_error_t openapiBfdModeSet(OPEN_BFD_ADMIN_MODE_t mode);
2131 
2132 /*****************************************************************/
2147  openBfdEndpoint_t *ep,
2148  uint32_t *id);
2149 
2150 /*****************************************************************/
2165  openBfdEndpoint_t *ep,
2166  uint32_t id);
2167 
2168 /*****************************************************************/
2184  open_inet_addr_t peer,
2185  uint32_t *id);
2186 
2187 /*****************************************************************/
2203  uint32_t id,
2204  openBfdSessionInfo_t *info);
2205 
2206 /*****************************************************************/
2220  uint32_t id, openBfdSessionStats_t *stats);
2221 
2222 
2223 /*****************************************************************/
2242  uint32_t vrfId,
2243  openRoute_t *routeEntry,
2244  open_buffdesc *nextHopListBuff);
2245 
2246 /*****************************************************************/
2268  uint32_t vrfId,
2269  openRoute_t *routeEntry,
2270  open_buffdesc *nextHopListBuff);
2271 
2272 /*****************************************************************/
2288  uint32_t vrfId,
2289  openRoute_t *routeEntry,
2290  open_buffdesc *nextHopListBuff);
2291 
2292 /*****************************************************************/
2308  uint32_t vrfId,
2309  openRoute_t *routeEntry,
2310  open_buffdesc *nextHopListBuff);
2311 
2312 /*****************************************************************/
2327  uint32_t vrfId,
2328  uint32_t *rtoFreeRouteCount);
2329 
2330 /*****************************************************************/
2347  OPEN_AF_t af,
2348  uint32_t vrfId,
2349  OPEN_CONTROL_t *enable);
2350 
2351 /*****************************************************************/
2365  uint32_t *pval);
2366 
2367 /*****************************************************************/
2381  uint32_t *pval);
2382 
2383 /*****************************************************************/
2400  uint32_t vrfId,
2401  OPEN_NSF_PROTOCOL_t protocol);
2402 
2403 /*****************************************************************/
2421  uint32_t vrfId,
2422  OPEN_NSF_PROTOCOL_t protocol);
2423 
2424 /*****************************************************************/
2437  OPEN_BOOL_t *isBackupElected);
2438 
2439 /*****************************************************************/
2456  uint32_t intIfNum, uint32_t peerIp, OPEN_BOOL_t isAdd, uint32_t flag);
2457 
2458 /*****************************************************************/
2479  uint32_t vrfId,
2480  open_inet_addr_t *dest_addr,
2481  open_buffdesc *mac,
2482  int32_t stkIfIndex,
2483  uint16_t state);
2484 
2485 /*****************************************************************/
2503  uint32_t vrfId,
2504  open_inet_addr_t *dest_addr,
2505  int32_t stkIfIndex);
2506 
2507 /*****************************************************************/
2523  uint32_t vrfId,
2524  OPEN_PREF_INDICES_t index,
2525  uint32_t *pref);
2526 
2527 /*****************************************************************/
2545  uint32_t vrfId, uint32_t ipSlaId, uint32_t probeReturnCode,
2546  uint32_t lastProbeRTTvalue, uint32_t latestOperationStartUpTime);
2547 
2548 #endif /* OPENAPI_ROUTING_H_INCLUDED */
2549