@@ -58,7 +58,7 @@ typedef enum _sai_dash_tunnel_attr_t
5858 * @brief Action parameter DASH encapsulation
5959 *
6060 * @type sai_dash_encapsulation_t
61- * @flags CREATE_AND_SET
61+ * @flags CREATE_ONLY
6262 * @default SAI_DASH_ENCAPSULATION_VXLAN
6363 */
6464 SAI_DASH_TUNNEL_ATTR_DASH_ENCAPSULATION ,
@@ -67,11 +67,29 @@ typedef enum _sai_dash_tunnel_attr_t
6767 * @brief Action parameter tunnel key
6868 *
6969 * @type sai_uint32_t
70- * @flags CREATE_AND_SET
70+ * @flags CREATE_ONLY
7171 * @default 0
7272 */
7373 SAI_DASH_TUNNEL_ATTR_TUNNEL_KEY ,
7474
75+ /**
76+ * @brief Action parameter max member size
77+ *
78+ * @type sai_uint32_t
79+ * @flags CREATE_ONLY
80+ * @default 1
81+ */
82+ SAI_DASH_TUNNEL_ATTR_MAX_MEMBER_SIZE ,
83+
84+ /**
85+ * @brief Action parameter sip
86+ *
87+ * @type sai_ip_address_t
88+ * @flags CREATE_AND_SET
89+ * @default 0.0.0.0
90+ */
91+ SAI_DASH_TUNNEL_ATTR_SIP ,
92+
7593 /**
7694 * @brief End of attributes
7795 */
@@ -85,6 +103,79 @@ typedef enum _sai_dash_tunnel_attr_t
85103
86104} sai_dash_tunnel_attr_t ;
87105
106+ /**
107+ * @brief Attribute ID for DASH tunnel member
108+ */
109+ typedef enum _sai_dash_tunnel_member_attr_t
110+ {
111+ /**
112+ * @brief Start of attributes
113+ */
114+ SAI_DASH_TUNNEL_MEMBER_ATTR_START ,
115+
116+ /**
117+ * @brief Action parameter DASH tunnel id
118+ *
119+ * @type sai_object_id_t
120+ * @flags MANDATORY_ON_CREATE | CREATE_ONLY
121+ * @objects SAI_OBJECT_TYPE_DASH_TUNNEL
122+ */
123+ SAI_DASH_TUNNEL_MEMBER_ATTR_DASH_TUNNEL_ID = SAI_DASH_TUNNEL_MEMBER_ATTR_START ,
124+
125+ /**
126+ * @brief Action parameter DASH tunnel next hop id
127+ *
128+ * @type sai_object_id_t
129+ * @flags MANDATORY_ON_CREATE | CREATE_AND_SET
130+ * @objects SAI_OBJECT_TYPE_DASH_TUNNEL_NEXT_HOP
131+ */
132+ SAI_DASH_TUNNEL_MEMBER_ATTR_DASH_TUNNEL_NEXT_HOP_ID ,
133+
134+ /**
135+ * @brief End of attributes
136+ */
137+ SAI_DASH_TUNNEL_MEMBER_ATTR_END ,
138+
139+ /** Custom range base value */
140+ SAI_DASH_TUNNEL_MEMBER_ATTR_CUSTOM_RANGE_START = 0x10000000 ,
141+
142+ /** End of custom range base */
143+ SAI_DASH_TUNNEL_MEMBER_ATTR_CUSTOM_RANGE_END ,
144+
145+ } sai_dash_tunnel_member_attr_t ;
146+
147+ /**
148+ * @brief Attribute ID for DASH tunnel next hop
149+ */
150+ typedef enum _sai_dash_tunnel_next_hop_attr_t
151+ {
152+ /**
153+ * @brief Start of attributes
154+ */
155+ SAI_DASH_TUNNEL_NEXT_HOP_ATTR_START ,
156+
157+ /**
158+ * @brief Action parameter dip
159+ *
160+ * @type sai_ip_address_t
161+ * @flags CREATE_AND_SET
162+ * @default 0.0.0.0
163+ */
164+ SAI_DASH_TUNNEL_NEXT_HOP_ATTR_DIP = SAI_DASH_TUNNEL_NEXT_HOP_ATTR_START ,
165+
166+ /**
167+ * @brief End of attributes
168+ */
169+ SAI_DASH_TUNNEL_NEXT_HOP_ATTR_END ,
170+
171+ /** Custom range base value */
172+ SAI_DASH_TUNNEL_NEXT_HOP_ATTR_CUSTOM_RANGE_START = 0x10000000 ,
173+
174+ /** End of custom range base */
175+ SAI_DASH_TUNNEL_NEXT_HOP_ATTR_CUSTOM_RANGE_END ,
176+
177+ } sai_dash_tunnel_next_hop_attr_t ;
178+
88179/**
89180 * @brief Create DASH tunnel
90181 *
@@ -137,14 +228,132 @@ typedef sai_status_t (*sai_get_dash_tunnel_attribute_fn)(
137228 _In_ uint32_t attr_count ,
138229 _Inout_ sai_attribute_t * attr_list );
139230
231+ /**
232+ * @brief Create DASH tunnel member
233+ *
234+ * @param[out] dash_tunnel_member_id Entry id
235+ * @param[in] switch_id Switch id
236+ * @param[in] attr_count Number of attributes
237+ * @param[in] attr_list Array of attributes
238+ *
239+ * @return #SAI_STATUS_SUCCESS on success Failure status code on error
240+ */
241+ typedef sai_status_t (* sai_create_dash_tunnel_member_fn )(
242+ _Out_ sai_object_id_t * dash_tunnel_member_id ,
243+ _In_ sai_object_id_t switch_id ,
244+ _In_ uint32_t attr_count ,
245+ _In_ const sai_attribute_t * attr_list );
246+
247+ /**
248+ * @brief Remove DASH tunnel member
249+ *
250+ * @param[in] dash_tunnel_member_id Entry id
251+ *
252+ * @return #SAI_STATUS_SUCCESS on success Failure status code on error
253+ */
254+ typedef sai_status_t (* sai_remove_dash_tunnel_member_fn )(
255+ _In_ sai_object_id_t dash_tunnel_member_id );
256+
257+ /**
258+ * @brief Set attribute for DASH tunnel member
259+ *
260+ * @param[in] dash_tunnel_member_id Entry id
261+ * @param[in] attr Attribute
262+ *
263+ * @return #SAI_STATUS_SUCCESS on success Failure status code on error
264+ */
265+ typedef sai_status_t (* sai_set_dash_tunnel_member_attribute_fn )(
266+ _In_ sai_object_id_t dash_tunnel_member_id ,
267+ _In_ const sai_attribute_t * attr );
268+
269+ /**
270+ * @brief Get attribute for DASH tunnel member
271+ *
272+ * @param[in] dash_tunnel_member_id Entry id
273+ * @param[in] attr_count Number of attributes
274+ * @param[inout] attr_list Array of attributes
275+ *
276+ * @return #SAI_STATUS_SUCCESS on success Failure status code on error
277+ */
278+ typedef sai_status_t (* sai_get_dash_tunnel_member_attribute_fn )(
279+ _In_ sai_object_id_t dash_tunnel_member_id ,
280+ _In_ uint32_t attr_count ,
281+ _Inout_ sai_attribute_t * attr_list );
282+
283+ /**
284+ * @brief Create DASH tunnel next hop
285+ *
286+ * @param[out] dash_tunnel_next_hop_id Entry id
287+ * @param[in] switch_id Switch id
288+ * @param[in] attr_count Number of attributes
289+ * @param[in] attr_list Array of attributes
290+ *
291+ * @return #SAI_STATUS_SUCCESS on success Failure status code on error
292+ */
293+ typedef sai_status_t (* sai_create_dash_tunnel_next_hop_fn )(
294+ _Out_ sai_object_id_t * dash_tunnel_next_hop_id ,
295+ _In_ sai_object_id_t switch_id ,
296+ _In_ uint32_t attr_count ,
297+ _In_ const sai_attribute_t * attr_list );
298+
299+ /**
300+ * @brief Remove DASH tunnel next hop
301+ *
302+ * @param[in] dash_tunnel_next_hop_id Entry id
303+ *
304+ * @return #SAI_STATUS_SUCCESS on success Failure status code on error
305+ */
306+ typedef sai_status_t (* sai_remove_dash_tunnel_next_hop_fn )(
307+ _In_ sai_object_id_t dash_tunnel_next_hop_id );
308+
309+ /**
310+ * @brief Set attribute for DASH tunnel next hop
311+ *
312+ * @param[in] dash_tunnel_next_hop_id Entry id
313+ * @param[in] attr Attribute
314+ *
315+ * @return #SAI_STATUS_SUCCESS on success Failure status code on error
316+ */
317+ typedef sai_status_t (* sai_set_dash_tunnel_next_hop_attribute_fn )(
318+ _In_ sai_object_id_t dash_tunnel_next_hop_id ,
319+ _In_ const sai_attribute_t * attr );
320+
321+ /**
322+ * @brief Get attribute for DASH tunnel next hop
323+ *
324+ * @param[in] dash_tunnel_next_hop_id Entry id
325+ * @param[in] attr_count Number of attributes
326+ * @param[inout] attr_list Array of attributes
327+ *
328+ * @return #SAI_STATUS_SUCCESS on success Failure status code on error
329+ */
330+ typedef sai_status_t (* sai_get_dash_tunnel_next_hop_attribute_fn )(
331+ _In_ sai_object_id_t dash_tunnel_next_hop_id ,
332+ _In_ uint32_t attr_count ,
333+ _Inout_ sai_attribute_t * attr_list );
334+
140335typedef struct _sai_dash_tunnel_api_t
141336{
142- sai_create_dash_tunnel_fn create_dash_tunnel ;
143- sai_remove_dash_tunnel_fn remove_dash_tunnel ;
144- sai_set_dash_tunnel_attribute_fn set_dash_tunnel_attribute ;
145- sai_get_dash_tunnel_attribute_fn get_dash_tunnel_attribute ;
146- sai_bulk_object_create_fn create_dash_tunnels ;
147- sai_bulk_object_remove_fn remove_dash_tunnels ;
337+ sai_create_dash_tunnel_fn create_dash_tunnel ;
338+ sai_remove_dash_tunnel_fn remove_dash_tunnel ;
339+ sai_set_dash_tunnel_attribute_fn set_dash_tunnel_attribute ;
340+ sai_get_dash_tunnel_attribute_fn get_dash_tunnel_attribute ;
341+ sai_bulk_object_create_fn create_dash_tunnels ;
342+ sai_bulk_object_remove_fn remove_dash_tunnels ;
343+
344+ sai_create_dash_tunnel_member_fn create_dash_tunnel_member ;
345+ sai_remove_dash_tunnel_member_fn remove_dash_tunnel_member ;
346+ sai_set_dash_tunnel_member_attribute_fn set_dash_tunnel_member_attribute ;
347+ sai_get_dash_tunnel_member_attribute_fn get_dash_tunnel_member_attribute ;
348+ sai_bulk_object_create_fn create_dash_tunnel_members ;
349+ sai_bulk_object_remove_fn remove_dash_tunnel_members ;
350+
351+ sai_create_dash_tunnel_next_hop_fn create_dash_tunnel_next_hop ;
352+ sai_remove_dash_tunnel_next_hop_fn remove_dash_tunnel_next_hop ;
353+ sai_set_dash_tunnel_next_hop_attribute_fn set_dash_tunnel_next_hop_attribute ;
354+ sai_get_dash_tunnel_next_hop_attribute_fn get_dash_tunnel_next_hop_attribute ;
355+ sai_bulk_object_create_fn create_dash_tunnel_next_hops ;
356+ sai_bulk_object_remove_fn remove_dash_tunnel_next_hops ;
148357
149358} sai_dash_tunnel_api_t ;
150359
0 commit comments