Open Ethernet Networking (OpEN) API Guide and Reference Manual  3.10.0.3
openapi_routing.h
Go to the documentation of this file.
1 
9 /*********************************************************************
10 *
11 * Copyright 2016-2022 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 
85 /* Number of routes queried to get the policy results */
86 #define OPENR_NUM_ROUTES_CHECK_POLICY_ACTION 50
87 
89 #define OPEN_VRF_MAX_NAME_LEN 64
90 
92 typedef enum
93 {
98 
102 typedef enum
103 {
104  OPEN_ADD_ROUTE = 0,
105  OPEN_DELETE_ROUTE = 1,
106  OPEN_CHANGE_ROUTE = 2
107 
109 
112 typedef enum
113 {
114  OPEN_POLICY_ROUTE_MAP = 1, /* (1 << 0) */
115  OPEN_POLICY_PREFIX_LIST = 2, /* (1 << 1) */
116  OPEN_POLICY_AS_PATH_LIST = 4, /* (1 << 2) */
117  OPEN_POLICY_ACL_ROUTE_FILTER = 8 /* (1 << 3) */
118 
120 
122 typedef enum
123 {
127 
129 typedef enum
130 {
131  OPENR_KEEPALIVE = 1,
132 
133  /* Best route change service messages */
134  OPENR_BEST_ROUTE_CHANGE = 10,
135 
136  /* router event message types */
137  OPENR_RTR_ENABLE = 101,
138  OPENR_RTR_DISABLE = 102,
139  OPENR_RTR_STARTUP_DONE = 103,
140  OPENR_RTR_INTF_CREATE = 104,
141  OPENR_RTR_INTF_DELETE = 105,
142  OPENR_RTR_INTF_ENABLE = 106,
143  OPENR_RTR_INTF_ENABLE_PENDING = 107,
144  OPENR_RTR_INTF_DISABLE = 108,
145  OPENR_RTR_INTF_DISABLE_PENDING = 109,
146  OPENR_RTR_INTF_ADDR_CHANGE = 110,
147  OPENR_RTR_INTF_MTU = 111,
148  OPENR_RTR_INTF_BW_CHANGE = 112,
149  OPENR_RTR_INTF_HOST_MODE = 113,
150  OPENR_RTR_INTF_CFG_CHANGE = 114,
151  OPENR_RTR_VRF_CREATE = 115,
152  OPENR_RTR_VRF_DELETE = 116,
153 
154  OPENR_RTR6_ENABLE = 201,
155  OPENR_RTR6_DISABLE = 202,
156  OPENR_RTR6_STARTUP_DONE = 203,
157  OPENR_RTR6_INTF_CREATE = 204,
158  OPENR_RTR6_INTF_DELETE = 205,
159  OPENR_RTR6_INTF_ENABLE = 206,
160  OPENR_RTR6_INTF_DISABLE = 207,
161  OPENR_RTR6_INTF_ADDR_CHANGE = 208,
162  OPENR_RTR6_INTF_MTU = 209,
163  OPENR_RTR6_INTF_BW_CHANGE = 210,
164  OPENR_RTR6_INTF_HOST_MODE = 211,
165 
166  OPENR_POLICY_CHANGE = 300
167 
169 
170 /* NSF applications that may send IPv4 routes to RTO. Values are powers
171  * of two used to index nsfRoutesPending. RIP and BGP don't support NSF
172  * now but adding values for them anyway. */
173 typedef enum
174 {
175  OPEN_NSF_PROTOCOL_OSPF = 0x1,
176  OPEN_NSF_PROTOCOL_RIP = 0x2,
177  OPEN_NSF_PROTOCOL_BGP = 0x4,
178  OPEN_NSF_PROTOCOL_LAST = 0x8
179 } OPEN_NSF_PROTOCOL_t;
180 
181 typedef enum
182 {
183  OPEN_FILTER_ACTION_PERMIT = 0,
184  OPEN_FILTER_ACTION_DENY = 1
185 } OPEN_FILTER_ACTION_t;
186 
190 {
192  uint16_t msgType;
193 
195  uint16_t msgLen;
196 
198  uint32_t clientId;
199 
201  uint32_t vrfId;
202 
204 
205 typedef struct openrRouterEventMsg_s
206 {
207  /* One of OPENR_MESSAGE_TYPE_t */
208  uint16_t msgType;
209 
210  /* Number of bytes in payload. Includes the Message Type and Message Length fields. */
211  uint16_t msgLen;
212 
213  uint32_t eventSeqNumber;
214 
215  /* For events associated with an interface, this field contains the interface identifier.
216  ** Only sent if needed.
217  */
218  uint32_t ifNum;
219 
220  /* VRF Identifier */
221  uint32_t vrfId;
222 
223  /* Start of the Event specific data memory, which is allocated based on msgType value. */
224  uint8_t data[0];
225 
227 
229 {
230  /* One of OPENR_MESSAGE_TYPE_t */
231  uint16_t msgType;
232 
233  /* Number of bytes in payload. Includes the Message Type and Message Length fields. */
234  uint16_t msgLen;
235 
236  /* Change sequence number */
237  uint32_t seqNo;
238 
239  /* The type of routing policy that changed. One of OPEN_ROUTING_POLICY_TYPE_t */
240  uint32_t policyType;
241 
242  /* The type of change. One of OPEN_ROUTING_POLICY_CHANGE_t. */
243  uint32_t changeType;
244 
245  /* Name or number of changed policy follows the changeType. */
246 
248 
249 typedef struct openNextHop_s
250 {
253 
256  uint32_t ifNum;
257 
260  uint32_t label[OPEN_MAX_MPLS_IMPOSE_LABELS];
261 
262 } openNextHop_t;
263 
264 
265 typedef struct openRoute_s
266 {
270  uint8_t pfxLen;
271 
274  uint8_t routeType;
275 
280  uint32_t protoId;
281 
284  uint32_t vrfId;
285 
288  uint8_t rejectRoute;
289 
292  uint8_t discardRoute;
293 
297  uint8_t pref;
298 
300  uint32_t metric;
301 
303  uint32_t numNextHops;
304 
306  uint8_t leakedRoute;
307 
308  /* Flag to indicate if this is an RFC 5549 route */
309  uint8_t rfc5549Route;
310 
311  /* Flag to indicate if this route is unnumbered. */
312  uint8_t unnumberedRoute;
313 
314  /* Flag to indicate if this route is MPLS. */
315  uint8_t mplsRoute;
316 
317  /* Flag to indicate if this route is Syncdb entry. */
318  uint8_t syncdbRoute;
319 } openRoute_t;
320 
321 /*
322  * This structure defines a route change event. It contains the best route data,
323  * the operation being performed and the set of next hops. It also contains a flag
324  * that indicates whether more route changes are pending based on which a
325  * subsequent call can be made
326  */
327 typedef struct openRouteChange_s
328 {
329  /* The route itself */
330  openRoute_t route;
331 
332  /* operation being performed, change type */
333  uint8_t chType;
334 
335  /* The set of next hops, will assume the maximum value of all supported platforms here */
336  openNextHop_t nextHops[OPENR_PLAT_MAX_ECMP_NEXTHOPS];
337 
338  /* Is it valid, needed because an ip and mask of 0 are valid and cannot be checked against */
339  uint8_t valid;
340 
342 
343 /* Needed by openapi to be a structure as arrays cannot be handled over RPC */
344 typedef struct openRouteChangeList_s
345 {
346  openRouteChange_t routeChange[OPENR_NUM_BEST_ROUTES_PER_GET];
348 
349 /* Bit mask to indicate which match or set terms
350  * are set in a route-map statement. Note that not all of these are supported. */
351 typedef enum
352 {
353  OPENR_RMAP_MATCH_AS_PATH = 0x1,
354  OPENR_RMAP_MATCH_COMMUNITY_LIST = 0x2,
355  OPENR_RMAP_MATCH_INTERFACE = 0x4,
356  OPENR_RMAP_MATCH_IP_ADDRESS = 0x8,
357  OPENR_RMAP_MATCH_IP_NEXT_HOP = 0x10,
358  OPENR_RMAP_MATCH_IP_ROUTE_SOURCE = 0x20,
359  OPENR_RMAP_MATCH_LENGTH = 0x40,
360  OPENR_RMAP_MATCH_METRIC = 0x80,
361  OPENR_RMAP_MATCH_METRIC_TYPE = 0x100,
362  OPENR_RMAP_MATCH_TAG = 0x200,
363 #ifdef L7_QOS_PACKAGE
364  OPENR_RMAP_MATCH_MAC_ACL = 0x400,
365 #endif /* L7_QOS_PACKAGE */
366  OPENR_RMAP_MATCH_EXTCOMMUNITY_LIST = 0x800,
367  OPENR_RMAP_MATCH_IPV6_ADDRESS = 0x1000,
368 
369  OPENR_RMAP_SET_AS_PATH = 0x1,
370  OPENR_RMAP_SET_AUTOMATIC_TAG = 0x2,
371  OPENR_RMAP_SET_COMMUNITY = 0x4,
372  OPENR_RMAP_SET_COMM_LIST_DELETE = 0x8,
373  OPENR_RMAP_SET_DEFAULT_INTF = 0x10,
374  OPENR_RMAP_SET_INTF = 0x20,
375  OPENR_RMAP_SET_IP_DEFAULT_NEXT_HOP = 0x40,
376  OPENR_RMAP_SET_IPV6_NEXT_HOP = 0x80,
377  OPENR_RMAP_SET_LEVEL = 0x100,
378  OPENR_RMAP_SET_LOCAL_PREF = 0x200,
379  OPENR_RMAP_SET_METRIC = 0x400,
380  OPENR_RMAP_SET_METRIC_TYPE = 0x800,
381  OPENR_RMAP_SET_NEXT_HOP = 0x1000,
382  OPENR_RMAP_SET_TAG = 0x2000,
383  OPENR_RMAP_SET_IP_TOS = 0x4000,
384  OPENR_RMAP_SET_IP_PREC = 0x8000,
385  OPENR_RMAP_SET_RT_EXTCOMMUNITY = 0x10000,
386  OPENR_RMAP_SET_SOO_EXTCOMMUNITY = 0x20000,
387  OPENR_RMAP_SET_EXTCOMM_LIST_DELETE = 0x40000,
388  OPENR_RMAP_SET_IPV6_DEFAULT_NEXT_HOP = 0x80000,
389  OPENR_RMAP_SET_IPV6_PREC = 0x100000,
390  OPENR_RMAP_SET_IP_UNCHANGED_NEXT_HOP = 0x200000,
391 } OPENR_RMAP_PARAMS_MASK_t;
392 
393 /* Route map match parameters. */
394 typedef struct openRmMatchParams_s
395 {
396  /* Bit-map to indicate what match params are set */
397  OPENR_RMAP_PARAMS_MASK_t matchParamsMask;
398 
399  /* To match any prefix, set the prefix and prefixLen to 0. */
400  open_inet_addr_t prefix;
401  uint32_t prefixLen;
402 
403  /* To match on the metric, metric-type (ospf type-1/type-2)
404  * and route tag */
405  uint32_t metric;
406  uint32_t metricType;
407  uint32_t tag;
409 
410 typedef struct openRmSetParams_s
411 {
412  /* Bit-map to indicate what set params are set */
413  OPENR_RMAP_PARAMS_MASK_t setParamsMask;
414 
415  /* metric value, if set */
416  uint32_t metric;
417 
418  /* metric type value, if set */
419  uint32_t metricType;
420 
421  /* tag value, if set */
422  uint32_t tag;
424 
425 /* Needed by openapi to get the results of the route-map policies for
426  * a given set of routes with match params */
428 {
429  openRoute_t route[OPENR_NUM_ROUTES_CHECK_POLICY_ACTION];
430  openRmMatchParams_t matchParams[OPENR_NUM_ROUTES_CHECK_POLICY_ACTION];
431  openRmSetParams_t setParams[OPENR_NUM_ROUTES_CHECK_POLICY_ACTION];
433 
434 /* BFD Admin modes */
435 typedef enum
436 {
437  OPEN_BFD_DISABLE = 0,
438  OPEN_BFD_ENABLE = 1
439 } OPEN_BFD_ADMIN_MODE_t;
440 
441 /* BFD endpoint parameters used to initiate a session */
442 typedef struct openBfdEndpoint_s {
443  uint32_t compId; /* Id of component creating the session */
444  uint32_t vrfId; /* VRID associated with this BFD session */
445  uint32_t intIfNum; /* Interface associated with this session */
446  open_inet_addr_t srcIpAddr; /* Source IPv4 or Ipv6 address */
447  open_inet_addr_t dstIpAddr; /* Destination IPv4 or Ipv6 address */
448  open_inet_addr_t nextHopIpAddr; /* NextHop IPv4 or Ipv6 address for Destination */
449  OPEN_MPLS_LABELS_t mpls_label; /* MPLS Label Stack */
450  uint32_t type; /* Type of BFD encapsulation. */
451 
452  /* The BFD application can take the echo mode and BFD session timers from the
453  ** interface and global config or from the session setting. In order to use the session
454  ** settings set the override_config to 1.
455  ** The timer values are in milliseconds.
456  */
457  uint32_t override_config;
458  uint32_t bfdMinTx;
459  uint32_t bfdMinRx;
460  uint32_t bfdMultiplier;
461  uint32_t bfdEchoMode;
462  uint32_t bfdSlowTimer;
464 
465 
466 /* Maximum protocols allowed to Register with BFD */
467 #define OPEN_BFD_MAX_REG_PROT 2 /* BGP and OSPF */
468 
469 /* BFD session information */
470 #define OPEN_BFD_SESSION_ID_INVALID (~0)
471 
472 /* BFD session states */
473 typedef enum
474 {
475  OPEN_BFD_SESSION_STATE_ADMIN_DOWN = 0,
476  OPEN_BFD_SESSION_STATE_DOWN = 1,
477  OPEN_BFD_SESSION_STATE_INIT = 2,
478  OPEN_BFD_SESSION_STATE_UP = 3,
479 } OPEN_BFD_SESSION_STATE_t;
480 
481 /* BFD Diagnostic codes */
482 typedef enum {
483  OPEN_BFD_DIAG_CODE_NONE,
484  OPEN_BFD_DIAG_CODE_CTRL_DETECT_TIME_EXPIRED,
485  OPEN_BFD_DIAG_CODE_ECHO_FAILED,
486  OPEN_BFD_DIAG_CODE_NEIGHBOR_SIGNALED_SESSION_DOWN,
487  OPEN_BFD_DIAG_CODE_FORWARDING_PLANE_RESET,
488  OPEN_BFD_DIAG_CODE_PATH_DOWN,
489  OPEN_BFD_DIAG_CODE_CONCATENATED_PATH_DOWN,
490  OPEN_BFD_DIAG_CODE_ADMIN_DOWN,
491  OPEN_BFD_DIAG_CODE_REVERSE_CONCATENATED_PATH_DOWN,
492  OPEN_BFD_DIAG_CODE_MIS_CONNECTIVITY_DEFECT
493 } OPEN_BFD_DIAG_CODE_t;
494 
495 typedef enum {
496  OPEN_BFD_TUNNEL_TYPE_RAW, /* RAW UDP */
497  OPEN_BFD_TUNNEL_TYPE_UDP, /* BFD over IPv4/v6. */
498  OPEN_BFD_TUNNEL_TYPE_COUNT
499 } openBfdTunnelType_t;
500 
501 #define SYNCDB_OPENAPI_BFD "OpEN API BFD"
502 #define SYNCDB_OPENAPI_BFD_VERSION 1
503 
508 typedef struct openBfdSessionKey_s {
509  uint32_t intIfNum; /* Interface associated with this session */
510  uint32_t vrfId; /* VRID associated with this BFD session */
511  open_inet_addr_t srcIpAddr; /* Source IPv4 or Ipv6 address */
512  open_inet_addr_t dstIpAddr; /* Destination IPv4 or Ipv6 address */
513  OPEN_MPLS_LABELS_t mpls_label; /* MPLS Label Stack */
515 
518 typedef struct openBfdSessionInfo_s {
520  uint32_t session_id;
521  uint8_t version;
522  OPEN_BFD_SESSION_STATE_t state;
523  uint8_t flags;
524  OPEN_BFD_DIAG_CODE_t diag;
525  uint32_t authType;
526  uint32_t localDiscr;
527  uint32_t remoteDiscr;
528  uint32_t localMinTx;
529  uint32_t localMinRx;
530  uint8_t localDetectMult;
531  uint32_t remoteMinTx;
532  uint32_t remoteMinRx;
534  uint32_t actualTx;
535  uint32_t echoEnable;
536  uint32_t actualTxEcho;
537  uint32_t id[OPEN_BFD_MAX_REG_PROT];
539  openBfdTunnelType_t type;
540  uint32_t upTime;
542 
543 /* BFD session statistics */
544 typedef struct openBfdSessionStats_s {
545  uint32_t inPkts; /* BFD packets received. */
546  uint32_t outPkts; /* BFD packets transmitted. */
547  uint32_t dropPkts; /* Total BFD packets drop. */
548  uint32_t echoInPkts; /* BFD echo packets received. */
549  uint32_t echoOutPkts; /* BFD echo packets transmitted. */
551 
552 
553 /*****************************************************************/
586  uint32_t vrfId,
587  OPEN_AF_t addressFamily,
588  open_buffdesc *protoName,
589  open_buffdesc *protoCode,
590  uint32_t *protoId);
591 
592 /*****************************************************************/
628  OPEN_AF_t addressFamily,
629  uint32_t protoId,
630  open_buffdesc *routeTypeName,
631  open_buffdesc *routeTypeCode,
632  uint32_t *routeType);
633 
634 /*****************************************************************/
654  uint32_t vrfId,
655  uint32_t addressFamily,
656  uint32_t protoId);
657 
658 /*****************************************************************/
678  uint32_t addressFamily,
679  uint32_t routeType);
680 
681 /*****************************************************************/
698  OPEN_AF_t addressFamily,
699  uint32_t vrfId,
700  uint32_t protoId);
701 
702 /*****************************************************************/
719  OPEN_AF_t addressFamily,
720  uint32_t vrfId,
721  uint32_t protoId);
722 
723 /*****************************************************************/
745  uint32_t routeType,
746  open_buffdesc *protoName,
747  open_buffdesc *routeTypeName);
748 
749 /*****************************************************************/
767  uint32_t *protoNameLen);
768 
769 /*****************************************************************/
787  uint32_t *routeTypeNameLen);
788 
789 /*****************************************************************/
807  openRoute_t *routeEntry,
808  open_buffdesc *nextHopListBuff);
809 
810 /*****************************************************************/
831  openRoute_t *routeEntry,
832  open_buffdesc *nextHopListBuff);
833 
834 /*****************************************************************/
849  openRoute_t *routeEntry);
850 
851 
852 /*****************************************************************/
875  OPEN_AF_t family,
876  openRoute_t *routeEntry,
877  open_buffdesc *nextHopListBuff);
878 
879 /*****************************************************************/
903  OPEN_AF_t family,
904  uint32_t vrfId,
905  openRoute_t *openRoute,
906  open_buffdesc *nextHopListBuff);
907 
908 /*****************************************************************/
931  OPEN_AF_t family,
932  openRoute_t *route,
933  open_buffdesc *nextHopListBuff);
934 
935 /*****************************************************************/
950  open_inet_addr_t destAddr,
951  openRoute_t *route,
952  open_buffdesc *nextHopListBuff);
953 
954 /*****************************************************************/
970  open_inet_addr_t destPrefix,
971  uint32_t pfxLen,
972  openRoute_t *route,
973  open_buffdesc *nextHopListBuff);
974 /*****************************************************************/
990  uint32_t vrfId,
991  open_inet_addr_t destPrefix,
992  uint32_t pfxLen,
993  openRoute_t *route,
994  open_buffdesc *nextHopListBuff);
995 
996 /*****************************************************************/
1013  uint32_t vrfId,
1014  open_inet_addr_t *nh_addr,
1015  open_buffdesc *mac,
1016  uint32_t cbParm1,
1017  uint32_t cbParm2,
1018  uint32_t cbParm3);
1019 
1020 /*****************************************************************/
1050  OPEN_AF_t family,
1051  uint32_t pid,
1052  uint32_t vrfId,
1053  open_buffdesc *clientName,
1054  uint32_t *clientId);
1055 
1056 /*****************************************************************/
1079  uint32_t clientId);
1080 
1081 /*****************************************************************/
1103  uint32_t clientId,
1104  OPEN_ROUTE_EVENT_t *chType,
1105  openRoute_t *route,
1106  open_buffdesc *nextHopListBuff);
1107 
1108 /*****************************************************************/
1128  uint32_t clientId,
1129  uint32_t numChanges,
1130  open_buffdesc *routeListBuff);
1131 
1132 /*****************************************************************/
1153  uint32_t clientId, uint32_t intIfNum,
1154  uint32_t numChanges,
1155  open_buffdesc *routeListBuff);
1156 
1157 /*****************************************************************/
1176  uint32_t *maxNextHops);
1177 
1178 /*****************************************************************/
1201  OPEN_AF_t family,
1202  uint32_t pid,
1203  uint32_t vrfId,
1204  open_buffdesc *clientName,
1205  uint32_t *clientId);
1206 
1207 /*****************************************************************/
1223  uint32_t vrfId,
1224  uint32_t clientId);
1225 
1226 /*****************************************************************/
1245  uint32_t vrfId,
1246  uint32_t clientId,
1247  uint32_t eventId);
1248 
1249 /*****************************************************************/
1266  uint32_t *routingIntfMax);
1267 
1268 /*****************************************************************/
1286  uint32_t vrfId,
1287  uint32_t intf,
1288  uint32_t *nextIntf);
1289 
1290 /*****************************************************************/
1307  uint32_t intf,
1308  uint32_t *nextIntf);
1309 
1310 /*****************************************************************/
1325  uint32_t intf,
1326  OPEN_INTF_TYPE_t *intfType);
1327 
1328 /*****************************************************************/
1345  uint32_t intIfNum,
1346  OPEN_BOOL_t *isUnnumbered);
1347 
1348 /*****************************************************************/
1363  uint32_t vrfId, open_buffdesc *vrfName);
1364 
1365 /*****************************************************************/
1382  open_buffdesc *vrfName,
1383  open_buffdesc *vrfNameNext);
1384 
1385 /*****************************************************************/
1401  open_buffdesc *vrfName,
1402  uint32_t *vrfId);
1403 
1404 /*****************************************************************/
1419  uint32_t intf,
1420  uint32_t *vlanId);
1421 
1422 /*****************************************************************/
1437  uint32_t intf,
1438  uint32_t *loopbackId);
1439 
1440 /*****************************************************************/
1455  uint32_t loopbackId,
1456  uint32_t *intf);
1457 
1458 /*****************************************************************/
1474  uint32_t *ifNameSize);
1475 
1476 /*****************************************************************/
1493  uint32_t intf,
1494  open_buffdesc *intfName);
1495 
1496 /*****************************************************************/
1511  uint32_t ifIndex, uint32_t *intIfNum);
1512 
1513 /*****************************************************************/
1528  uint32_t intf,
1529  uint32_t *ifIndex);
1530 
1531 /*****************************************************************/
1546  uint32_t intf,
1547  open_buffdesc *intfName);
1548 
1549 /*****************************************************************/
1565  uint32_t vrfId, uint32_t intf, open_buffdesc *intfName);
1566 
1567 /*****************************************************************/
1583  uint32_t vrfId, uint32_t intf, open_buffdesc *intfName);
1584 
1585 /*****************************************************************/
1600  uint32_t vrfId, open_buffdesc *intfName);
1601 
1602 /*****************************************************************/
1617  uint32_t intf,
1618  open_USP_t *usp);
1619 
1620 /*****************************************************************/
1635  uint32_t intf,
1636  open_buffdesc *mac);
1637 
1638 /*****************************************************************/
1655  OPEN_AF_t af,
1656  uint32_t intf,
1657  OPEN_CONTROL_t *ifState);
1658 
1659 /*****************************************************************/
1682  OPEN_AF_t af,
1683  uint32_t intf,
1684  open_inet_pfx_t *ipAddr);
1685 
1686 /*****************************************************************/
1710  OPEN_AF_t af,
1711  uint32_t intf,
1712  open_inet_pfx_t *ipAddr,
1713  uint32_t *index);
1714 
1715 /*****************************************************************/
1736  uint32_t intf,
1737  OPEN_INTF_IP_ADDR_METHOD_t *addrMethod,
1738  OPEN_CONTROL_t *clientIdEnable);
1739 
1740 /*****************************************************************/
1757  OPEN_AF_t af,
1758  uint32_t intf,
1759  uint32_t *ipMtu);
1760 
1761 /*****************************************************************/
1777  OPEN_AF_t af,
1778  uint32_t intf,
1779  uint32_t *bandwidth);
1780 
1781 /*****************************************************************/
1796  uint32_t intf,
1797  uint32_t *mode);
1798 
1799 /*****************************************************************/
1814  uint32_t intf,
1815  uint32_t *mode);
1816 
1817 /*****************************************************************/
1833  open_buffdesc *vrfName,
1834  uint32_t *burstSize,
1835  uint32_t *interval);
1836 
1837 /*****************************************************************/
1852  open_buffdesc *vrfName,
1853  uint32_t *mode);
1854 
1855 /*****************************************************************/
1870  OPEN_AF_t af,
1871  OPEN_CONTROL_t *enable);
1872 
1873 /*****************************************************************/
1907  OPEN_AF_t af,
1908  uint32_t *complete);
1909 
1910 /*****************************************************************/
1945  OPEN_AF_t af,
1946  uint32_t vrfId,
1947  uint32_t *complete);
1948 
1949 /*****************************************************************/
1969 int openapiRouteMapApply(openapiClientHandle_t *client_handle,
1970  open_buffdesc *routeMapName,
1971  openRmMatchParams_t *matchParams,
1972  openRmSetParams_t *setParams);
1973 
1974 /*****************************************************************/
1995  open_buffdesc *routeMapName,
1996  openRmMatchParams_t *matchParams,
1997  openRmSetParams_t *setParams,
1998  OPEN_FILTER_ACTION_t *action);
1999 
2000 /*****************************************************************/
2021  open_buffdesc *pfxListName,
2022  open_inet_addr_t prefix,
2023  uint32_t pfxLen);
2024 
2025 /*****************************************************************/
2057  open_buffdesc *clientName,
2058  uint32_t pid,
2059  uint32_t policyTypeMask,
2060  uint32_t *clientId);
2061 
2062 /*****************************************************************/
2080  uint32_t clientId,
2081  uint32_t seqNo);
2082 
2083 /*****************************************************************/
2099  OPEN_PREF_INDICES_t index,
2100  uint32_t *pref);
2101 
2102 /*****************************************************************/
2119  OPEN_PREF_INDICES_t index,
2120  uint32_t pref);
2121 
2122 /*****************************************************************/
2143  uint32_t protoId,
2144  open_buffdesc *protoName,
2145  uint32_t *nextProtoId);
2146 
2147 /*****************************************************************/
2163  OPEN_PREF_INDICES_t index,
2164  uint32_t *pref);
2165 
2166 /*****************************************************************/
2183  OPEN_PREF_INDICES_t index,
2184  uint32_t pref);
2185 
2186 /******* NEW OpENAPIs Added for virtual router support *************/
2187 
2188 /*****************************************************************/
2218  uint32_t vrfId,
2219  OPEN_AF_t family,
2220  uint32_t pid,
2221  open_buffdesc *clientName,
2222  uint32_t *clientId);
2223 
2224 /*****************************************************************/
2243  uint32_t vrfId,
2244  openRoute_t *routeEntry,
2245  open_buffdesc *nextHopListBuff);
2246 
2247 
2248 /**************************************************************************/
2259 open_error_t openapiBfdModeSet(OPEN_BFD_ADMIN_MODE_t mode);
2260 
2261 /*****************************************************************/
2276  openBfdEndpoint_t *ep,
2277  uint32_t *id);
2278 
2279 /*****************************************************************/
2294  openBfdEndpoint_t *ep,
2295  uint32_t id);
2296 
2297 /*****************************************************************/
2313  open_inet_addr_t peer,
2314  uint32_t *id);
2315 
2316 /*****************************************************************/
2332  uint32_t id,
2333  openBfdSessionInfo_t *info);
2334 
2335 /*****************************************************************/
2349  uint32_t id, openBfdSessionStats_t *stats);
2350 
2351 
2352 /*****************************************************************/
2371  uint32_t vrfId,
2372  openRoute_t *routeEntry,
2373  open_buffdesc *nextHopListBuff);
2374 
2375 /*****************************************************************/
2397  uint32_t vrfId,
2398  openRoute_t *routeEntry,
2399  open_buffdesc *nextHopListBuff);
2400 
2401 /*****************************************************************/
2417  uint32_t vrfId,
2418  openRoute_t *routeEntry,
2419  open_buffdesc *nextHopListBuff);
2420 
2421 /*****************************************************************/
2437  uint32_t vrfId,
2438  openRoute_t *routeEntry,
2439  open_buffdesc *nextHopListBuff);
2440 
2441 /*****************************************************************/
2456  uint32_t vrfId,
2457  uint32_t *rtoFreeRouteCount);
2458 
2459 /*****************************************************************/
2476  OPEN_AF_t af,
2477  uint32_t vrfId,
2478  OPEN_CONTROL_t *enable);
2479 
2480 /*****************************************************************/
2494  uint32_t *pval);
2495 
2496 /*****************************************************************/
2510  uint32_t *pval);
2511 
2512 /*****************************************************************/
2529  uint32_t vrfId,
2530  OPEN_NSF_PROTOCOL_t protocol);
2531 
2532 /*****************************************************************/
2550  uint32_t vrfId,
2551  OPEN_NSF_PROTOCOL_t protocol);
2552 
2553 /*****************************************************************/
2566  OPEN_BOOL_t *isBackupElected);
2567 
2568 /*****************************************************************/
2585  uint32_t intIfNum, uint32_t peerIp, OPEN_BOOL_t isAdd, uint32_t flag);
2586 
2587 /*****************************************************************/
2608  uint32_t vrfId,
2609  open_inet_addr_t *dest_addr,
2610  open_buffdesc *mac,
2611  int32_t stkIfIndex,
2612  uint16_t state);
2613 
2614 /*****************************************************************/
2632  uint32_t vrfId,
2633  open_inet_addr_t *dest_addr,
2634  int32_t stkIfIndex);
2635 
2636 /*****************************************************************/
2652  uint32_t vrfId,
2653  OPEN_PREF_INDICES_t index,
2654  uint32_t *pref);
2655 
2656 #endif /* OPENAPI_ROUTING_H_INCLUDED */
2657