Skip to content

Commit 96adc95

Browse files
authored
Enhancements for MPLS support (#1181)
* Enhancements for MPLS support Signed-off-by: Ann Pokora <apokora@juniper.net> * remove unnecessary SAI_SWITCH_ATTR_AVAILABLE_MPLS_INSEG_ENTRY Signed-off-by: Ann Pokora <apokora@juniper.net>
1 parent 3dcf1f2 commit 96adc95

2 files changed

Lines changed: 106 additions & 0 deletions

File tree

inc/saimpls.h

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,98 @@ typedef sai_status_t (*sai_get_inseg_entry_attribute_fn)(
281281
_In_ uint32_t attr_count,
282282
_Inout_ sai_attribute_t *attr_list);
283283

284+
/**
285+
* @brief Bulk create In Segment entry
286+
*
287+
* @param[in] object_count Number of objects to create
288+
* @param[in] inseg_entry List of object to create
289+
* @param[in] attr_count List of attr_count. Caller passes the number
290+
* of attribute for each object to create.
291+
* @param[in] attr_list List of attributes for every object.
292+
* @param[in] mode Bulk operation error handling mode.
293+
* @param[out] object_statuses List of status for every object. Caller needs to
294+
* allocate the buffer
295+
*
296+
* @return #SAI_STATUS_SUCCESS on success when all objects are created or
297+
* #SAI_STATUS_FAILURE when any of the objects fails to create. When there is
298+
* failure, Caller is expected to go through the list of returned statuses to
299+
* find out which fails and which succeeds.
300+
*/
301+
typedef sai_status_t (*sai_bulk_create_inseg_entry_fn)(
302+
_In_ uint32_t object_count,
303+
_In_ const sai_inseg_entry_t *inseg_entry,
304+
_In_ const uint32_t *attr_count,
305+
_In_ const sai_attribute_t **attr_list,
306+
_In_ sai_bulk_op_error_mode_t mode,
307+
_Out_ sai_status_t *object_statuses);
308+
309+
/**
310+
* @brief Bulk remove In Segment entry
311+
*
312+
* @param[in] object_count Number of objects to remove
313+
* @param[in] inseg_entry List of objects to remove
314+
* @param[in] mode Bulk operation error handling mode.
315+
* @param[out] object_statuses List of status for every object. Caller needs to
316+
* allocate the buffer
317+
*
318+
* @return #SAI_STATUS_SUCCESS on success when all objects are removed or
319+
* #SAI_STATUS_FAILURE when any of the objects fails to remove. When there is
320+
* failure, Caller is expected to go through the list of returned statuses to
321+
* find out which fails and which succeeds.
322+
*/
323+
typedef sai_status_t (*sai_bulk_remove_inseg_entry_fn)(
324+
_In_ uint32_t object_count,
325+
_In_ const sai_inseg_entry_t *inseg_entry,
326+
_In_ sai_bulk_op_error_mode_t mode,
327+
_Out_ sai_status_t *object_statuses);
328+
329+
/**
330+
* @brief Bulk set attribute on In Segment entry
331+
*
332+
* @param[in] object_count Number of objects to set attribute
333+
* @param[in] inseg_entry List of objects to set attribute
334+
* @param[in] attr_list List of attributes to set on objects, one attribute per object
335+
* @param[in] mode Bulk operation error handling mode.
336+
* @param[out] object_statuses List of status for every object. Caller needs to
337+
* allocate the buffer
338+
*
339+
* @return #SAI_STATUS_SUCCESS on success when all objects are removed or
340+
* #SAI_STATUS_FAILURE when any of the objects fails to remove. When there is
341+
* failure, Caller is expected to go through the list of returned statuses to
342+
* find out which fails and which succeeds.
343+
*/
344+
typedef sai_status_t (*sai_bulk_set_inseg_entry_attribute_fn)(
345+
_In_ uint32_t object_count,
346+
_In_ const sai_inseg_entry_t *inseg_entry,
347+
_In_ const sai_attribute_t *attr_list,
348+
_In_ sai_bulk_op_error_mode_t mode,
349+
_Out_ sai_status_t *object_statuses);
350+
351+
/**
352+
* @brief Bulk get attribute on In Segment entry
353+
*
354+
* @param[in] object_count Number of objects to set attribute
355+
* @param[in] inseg_entry List of objects to set attribute
356+
* @param[in] attr_count List of attr_count. Caller passes the number
357+
* of attribute for each object to get
358+
* @param[inout] attr_list List of attributes to set on objects, one attribute per object
359+
* @param[in] mode Bulk operation error handling mode
360+
* @param[out] object_statuses List of status for every object. Caller needs to
361+
* allocate the buffer
362+
*
363+
* @return #SAI_STATUS_SUCCESS on success when all objects are removed or
364+
* #SAI_STATUS_FAILURE when any of the objects fails to remove. When there is
365+
* failure, Caller is expected to go through the list of returned statuses to
366+
* find out which fails and which succeeds.
367+
*/
368+
typedef sai_status_t (*sai_bulk_get_inseg_entry_attribute_fn)(
369+
_In_ uint32_t object_count,
370+
_In_ const sai_inseg_entry_t *inseg_entry,
371+
_In_ const uint32_t *attr_count,
372+
_Inout_ sai_attribute_t **attr_list,
373+
_In_ sai_bulk_op_error_mode_t mode,
374+
_Out_ sai_status_t *object_statuses);
375+
284376
/**
285377
* @brief MPLS methods table retrieved with sai_api_query()
286378
*/
@@ -291,6 +383,11 @@ typedef struct _sai_mpls_api_t
291383
sai_set_inseg_entry_attribute_fn set_inseg_entry_attribute;
292384
sai_get_inseg_entry_attribute_fn get_inseg_entry_attribute;
293385

386+
sai_bulk_create_inseg_entry_fn create_inseg_entries;
387+
sai_bulk_remove_inseg_entry_fn remove_inseg_entries;
388+
sai_bulk_set_inseg_entry_attribute_fn set_inseg_entries_attribute;
389+
sai_bulk_get_inseg_entry_attribute_fn get_inseg_entries_attribute;
390+
294391
} sai_mpls_api_t;
295392

296393
/**

inc/sairouterinterface.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,15 @@ typedef enum _sai_router_interface_attr_t
285285
*/
286286
SAI_ROUTER_INTERFACE_ATTR_DISABLE_DECREMENT_TTL,
287287

288+
/**
289+
* @brief Admin MPLS state
290+
*
291+
* @type bool
292+
* @flags CREATE_AND_SET
293+
* @default false
294+
*/
295+
SAI_ROUTER_INTERFACE_ATTR_ADMIN_MPLS_STATE,
296+
288297
/**
289298
* @brief End of attributes
290299
*/

0 commit comments

Comments
 (0)