-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsaimcastfdb.h
179 lines (157 loc) · 4.91 KB
/
saimcastfdb.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
/**
* Copyright (c) 2014 Microsoft Open Technologies, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License. You may obtain
* a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT
* LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS
* FOR A PARTICULAR PURPOSE, MERCHANTABILITY OR NON-INFRINGEMENT.
*
* See the Apache Version 2.0 License for specific language governing
* permissions and limitations under the License.
*
* Microsoft would like to thank the following companies for their review and
* assistance with these files: Intel Corporation, Mellanox Technologies Ltd,
* Dell Products, L.P., Facebook, Inc., Marvell International Ltd.
*
* @file saimcastfdb.h
*
* @brief This module defines SAI multicast FDB interface
*/
#if !defined (__SAIMCASTFDB_H_)
#define __SAIMCASTFDB_H_
#include <saitypes.h>
/**
* @defgroup SAIMCFDB SAI - Multicast FDB specific API definitions
*
* @{
*/
/**
* @brief MCAST FDB entry key
*/
typedef struct _sai_mcast_fdb_entry_t
{
/**
* @brief Switch ID
*
* @objects SAI_OBJECT_TYPE_SWITCH
*/
sai_object_id_t switch_id;
/** MAC address */
sai_mac_t mac_address;
/**
* @brief Bridge ID. for .1D and Vlan ID for .1Q
*
* @objects SAI_OBJECT_TYPE_BRIDGE, SAI_OBJECT_TYPE_VLAN
*/
sai_object_id_t bv_id;
} sai_mcast_fdb_entry_t;
/**
* @brief Attribute Id for multicast FDB entry
*/
typedef enum _sai_mcast_fdb_entry_attr_t
{
/**
* @brief Start of attributes
*/
SAI_MCAST_FDB_ENTRY_ATTR_START,
/**
* @brief Multicast FDB entry group id
*
* The group id refers to a L2MC group object. In case of empty group,
* packets will be discarded.
*
* @type sai_object_id_t
* @flags MANDATORY_ON_CREATE | CREATE_AND_SET
* @objects SAI_OBJECT_TYPE_L2MC_GROUP
*/
SAI_MCAST_FDB_ENTRY_ATTR_GROUP_ID = SAI_MCAST_FDB_ENTRY_ATTR_START,
/**
* @brief Multicast FDB entry packet action
*
* @type sai_packet_action_t
* @flags MANDATORY_ON_CREATE | CREATE_AND_SET
*/
SAI_MCAST_FDB_ENTRY_ATTR_PACKET_ACTION,
/**
* @brief User based Meta Data
*
* Value Range #SAI_SWITCH_ATTR_FDB_DST_USER_META_DATA_RANGE
*
* @type sai_uint32_t
* @flags CREATE_AND_SET
* @default 0
*/
SAI_MCAST_FDB_ENTRY_ATTR_META_DATA,
/**
* @brief End of attributes
*/
SAI_MCAST_FDB_ENTRY_ATTR_END,
/** Start of custom range base value */
SAI_MCAST_FDB_ENTRY_ATTR_CUSTOM_RANGE_START = 0x10000000,
/** End of custom range */
SAI_MCAST_FDB_ENTRY_ATTR_CUSTOM_RANGE_END
} sai_mcast_fdb_entry_attr_t;
/**
* @brief Create Multicast FDB entry
*
* @param[in] mcast_fdb_entry FDB entry
* @param[in] attr_count Number of attributes
* @param[in] attr_list Array of attributes
*
* @return #SAI_STATUS_SUCCESS on success, failure status code on error
*/
typedef sai_status_t (*sai_create_mcast_fdb_entry_fn)(
_In_ const sai_mcast_fdb_entry_t *mcast_fdb_entry,
_In_ uint32_t attr_count,
_In_ const sai_attribute_t *attr_list);
/**
* @brief Remove Multicast FDB entry
*
* @param[in] mcast_fdb_entry FDB entry
*
* @return #SAI_STATUS_SUCCESS on success, failure status code on error
*/
typedef sai_status_t (*sai_remove_mcast_fdb_entry_fn)(
_In_ const sai_mcast_fdb_entry_t *mcast_fdb_entry);
/**
* @brief Set multicast FDB entry attribute value
*
* @param[in] mcast_fdb_entry FDB entry
* @param[in] attr Attribute
*
* @return #SAI_STATUS_SUCCESS on success, failure status code on error
*/
typedef sai_status_t (*sai_set_mcast_fdb_entry_attribute_fn)(
_In_ const sai_mcast_fdb_entry_t *mcast_fdb_entry,
_In_ const sai_attribute_t *attr);
/**
* @brief Get FDB entry attribute value
*
* @param[in] mcast_fdb_entry FDB entry
* @param[in] attr_count Number of attributes
* @param[inout] attr_list Array of attributes
*
* @return #SAI_STATUS_SUCCESS on success, failure status code on error
*/
typedef sai_status_t (*sai_get_mcast_fdb_entry_attribute_fn)(
_In_ const sai_mcast_fdb_entry_t *mcast_fdb_entry,
_In_ uint32_t attr_count,
_Inout_ sai_attribute_t *attr_list);
/**
* @brief Multicast FDB method table retrieved with sai_api_query()
*/
typedef struct _sai_mcast_fdb_api_t
{
sai_create_mcast_fdb_entry_fn create_mcast_fdb_entry;
sai_remove_mcast_fdb_entry_fn remove_mcast_fdb_entry;
sai_set_mcast_fdb_entry_attribute_fn set_mcast_fdb_entry_attribute;
sai_get_mcast_fdb_entry_attribute_fn get_mcast_fdb_entry_attribute;
} sai_mcast_fdb_api_t;
/**
* @}
*/
#endif /** __SAIMCASTFDB_H_ */