L2FIB:CLI/API to flush all non-static entries
[vpp.git] / src / vnet / l2 / l2.api
1 /* Hey Emacs use -*- mode: C -*- */
2 /*
3  * Copyright (c) 2016 Cisco and/or its affiliates.
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at:
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 /** \brief Reply to l2_xconnect_dump 
18     @param context - sender context which was passed in the request
19     @param rx_sw_if_index - Receive interface index
20     @param tx_sw_if_index - Transmit interface index
21  */
22 define l2_xconnect_details
23 {
24   u32 context;
25   u32 rx_sw_if_index;
26   u32 tx_sw_if_index;
27 };
28
29 /** \brief Dump L2 XConnects
30     @param client_index - opaque cookie to identify the sender
31     @param context - sender context, to match reply w/ request
32 */
33 define l2_xconnect_dump
34 {
35   u32 client_index;
36   u32 context;
37 };
38
39 /** \brief l2 fib table entry structure
40     @param bd_id - the l2 fib / bridge domain table id
41     @param mac - the entry's mac address
42     @param sw_if_index - index of the interface
43     @param static_mac - the entry is statically configured.
44     @param filter_mac - the entry is a mac filter entry.
45     @param bvi_mac - the mac address is a bridge virtual interface
46 */
47 define l2_fib_table_entry
48 {
49   u32 context;
50   u32 bd_id;
51   u64 mac;
52   u32 sw_if_index;
53   u8 static_mac;
54   u8 filter_mac;
55   u8 bvi_mac;
56 };
57
58 /** \brief Dump l2 fib (aka bridge domain) table
59     @param client_index - opaque cookie to identify the sender
60     @param bd_id - the l2 fib / bridge domain table identifier
61 */
62 define l2_fib_table_dump
63 {
64   u32 client_index;
65   u32 context;
66   u32 bd_id;
67 };
68
69 /** \brief L2 fib clear table request, clear all mac entries in the l2 fib
70     @param client_index - opaque cookie to identify the sender
71     @param context - sender context, to match reply w/ request
72 */
73 autoreply define l2_fib_clear_table
74 {
75   u32 client_index;
76   u32 context;
77 };
78
79 /** \brief L2 FIB flush all  entries
80     @param client_index - opaque cookie to identify the sender
81     @param context - sender context, to match reply w/ request
82 */
83 autoreply define l2fib_flush_all
84 {
85   u32 client_index;
86   u32 context;
87 };
88
89 /** \brief L2 FIB flush bridge domain entries
90     @param client_index - opaque cookie to identify the sender
91     @param context - sender context, to match reply w/ request
92     @param bd_id - the entry's bridge domain id
93 */
94 autoreply define l2fib_flush_bd
95 {
96   u32 client_index;
97   u32 context;
98   u32 bd_id;
99 };
100
101 /** \brief L2 FIB flush interface entries
102     @param client_index - opaque cookie to identify the sender
103     @param context - sender context, to match reply w/ request
104     @param bd_id - the entry's bridge domain id
105 */
106 autoreply define l2fib_flush_int
107 {
108   u32 client_index;
109   u32 context;
110   u32 sw_if_index;
111 };
112
113 /** \brief L2 FIB add entry request
114     @param client_index - opaque cookie to identify the sender
115     @param context - sender context, to match reply w/ request
116     @param mac - the entry's mac address
117     @param bd_id - the entry's bridge domain id
118     @param sw_if_index - the interface
119     @param is_add - If non zero add the entry, else delete it
120     @param static_mac - 
121     @param filter_mac -
122 */
123 autoreply define l2fib_add_del
124 {
125   u32 client_index;
126   u32 context;
127   u64 mac;
128   u32 bd_id;
129   u32 sw_if_index;
130   u8 is_add;
131   u8 static_mac;
132   u8 filter_mac;
133   u8 bvi_mac;
134 };
135
136 /** \brief Set L2 flags request !!! TODO - need more info, feature bits in l2_input.h
137     @param client_index - opaque cookie to identify the sender
138     @param context - sender context, to match reply w/ request
139     @param sw_if_index - interface 
140     @param is_set - if non-zero, set the bits, else clear them
141     @param feature_bitmap - non-zero bits to set or clear
142 */
143 define l2_flags
144 {
145   u32 client_index;
146   u32 context;
147   u32 sw_if_index;
148   u8 is_set;
149   u32 feature_bitmap;
150 };
151
152 /** \brief Set L2 bits response
153     @param context - sender context, to match reply w/ request
154     @param retval - return code for the set l2 bits request
155 */
156 define l2_flags_reply
157 {
158   u32 context;
159   i32 retval;
160   u32 resulting_feature_bitmap;
161 };
162
163 /** \brief L2 bridge domain set mac age
164     @param client_index - opaque cookie to identify the sender
165     @param context - sender context, to match reply w/ request
166     @param bd_id - the bridge domain to create
167     @param mac_age - mac aging time in min, 0 for disabled
168 */
169 autoreply define bridge_domain_set_mac_age
170 {
171   u32 client_index;
172   u32 context;
173   u32 bd_id;
174   u8 mac_age;
175 };
176
177 /** \brief L2 bridge domain add or delete request
178     @param client_index - opaque cookie to identify the sender
179     @param context - sender context, to match reply w/ request
180     @param bd_id - the bridge domain to create
181     @param flood - enable/disable bcast/mcast flooding in the bd
182     @param uu_flood - enable/disable uknown unicast flood in the bd
183     @param forward - enable/disable forwarding on all interfaces in the bd
184     @param learn - enable/disable learning on all interfaces in the bd
185     @param arp_term - enable/disable arp termination in the bd
186     @param mac_age - mac aging time in min, 0 for disabled
187     @param is_add - add or delete flag
188 */
189 autoreply define bridge_domain_add_del
190 {
191   u32 client_index;
192   u32 context;
193   u32 bd_id;
194   u8 flood;
195   u8 uu_flood;
196   u8 forward;
197   u8 learn;
198   u8 arp_term;
199   u8 mac_age;
200   u8 is_add;
201 };
202
203 /** \brief L2 bridge domain request operational state details
204     @param client_index - opaque cookie to identify the sender
205     @param context - sender context, to match reply w/ request
206     @param bd_id - the bridge domain id desired or ~0 to request all bds
207 */
208 define bridge_domain_dump
209 {
210   u32 client_index;
211   u32 context;
212   u32 bd_id;
213 };
214
215 /** \brief L2 bridge domain operational state response
216     @param bd_id - the bridge domain id
217     @param flood - bcast/mcast flooding state on all interfaces in the bd
218     @param uu_flood - uknown unicast flooding state on all interfaces in the bd
219     @param forward - forwarding state on all interfaces in the bd
220     @param learn - learning state on all interfaces in the bd
221     @param arp_term - arp termination state on all interfaces in the bd
222     @param mac_age - mac aging time in min, 0 for disabled
223     @param n_sw_ifs - number of sw_if_index's in the domain
224 */
225 define bridge_domain_details
226 {
227   u32 context;
228   u32 bd_id;
229   u8 flood;
230   u8 uu_flood;
231   u8 forward;
232   u8 learn;
233   u8 arp_term;
234   u8 mac_age;
235   u32 bvi_sw_if_index;
236   u32 n_sw_ifs;
237 };
238
239 /** \brief L2 bridge domain sw interface operational state response
240     @param bd_id - the bridge domain id
241     @param sw_if_index - sw_if_index in the domain
242     @param shg - split horizon group for the interface
243 */
244 define bridge_domain_sw_if_details
245 {
246   u32 context;
247   u32 bd_id;
248   u32 sw_if_index;
249   u8 shg;
250 };
251
252 /** \brief Set bridge flags (such as L2_LEARN, L2_FWD, L2_FLOOD, 
253     L2_UU_FLOOD, or L2_ARP_TERM) request
254     @param client_index - opaque cookie to identify the sender
255     @param context - sender context, to match reply w/ request
256     @param bd_id - the bridge domain to set the flags for
257     @param is_set - if non-zero, set the flags, else clear them
258     @param feature_bitmap - bits that are non-zero to set or clear
259 */
260 define bridge_flags
261 {
262   u32 client_index;
263   u32 context;
264   u32 bd_id;
265   u8 is_set;
266   u32 feature_bitmap;
267 };
268
269 /** \brief Set bridge flags response
270     @param context - sender context, to match reply w/ request
271     @param retval - return code for the set bridge flags request
272     @param resulting_feature_bitmap - the feature bitmap value after the request is implemented
273 */
274 define bridge_flags_reply
275 {
276   u32 context;
277   i32 retval;
278   u32 resulting_feature_bitmap;
279 };
280
281 /** \brief L2 interface vlan tag rewrite configure request
282     @param client_index - opaque cookie to identify the sender
283     @param context - sender context, to match reply w/ request
284     @param sw_if_index - interface the operation is applied to
285     @param vtr_op - Choose from l2_vtr_op_t enum values
286     @param push_dot1q - first pushed flag dot1q id set, else dot1ad
287     @param tag1 - Needed for any push or translate vtr op
288     @param tag2 - Needed for any push 2 or translate x-2 vtr ops
289 */
290 autoreply define l2_interface_vlan_tag_rewrite
291 {
292   u32 client_index;
293   u32 context;
294   u32 sw_if_index;
295   u32 vtr_op;
296   u32 push_dot1q;               // ethertype of first pushed tag is dot1q/dot1ad
297   u32 tag1;                     // first pushed tag
298   u32 tag2;                     // second pushed tag
299 };
300
301 /** \brief L2 interface pbb tag rewrite configure request
302     @param client_index - opaque cookie to identify the sender
303     @param context - sender context, to match reply w/ request
304     @param sw_if_index - interface the operation is applied to
305     @param vtr_op - Choose from l2_vtr_op_t enum values
306     @param inner_tag - needed for translate_qinq vtr op only
307     @param outer_tag - needed for translate_qinq vtr op only 
308     @param b_dmac - B-tag remote mac address, needed for any push or translate_qinq vtr op
309     @param b_smac - B-tag local mac address, needed for any push or translate qinq vtr op
310     @param b_vlanid - B-tag vlanid, needed for any push or translate qinq vtr op
311     @param i_sid - I-tag service id, needed for any push or translate qinq vtr op
312 */
313 autoreply define l2_interface_pbb_tag_rewrite
314 {
315   u32 client_index;
316   u32 context;
317   u32 sw_if_index;
318   u32 vtr_op;
319   u16 outer_tag;
320   u8  b_dmac[6];
321   u8  b_smac[6];
322   u16 b_vlanid;
323   u32 i_sid;
324 };
325
326 /*
327  * Local Variables:
328  * eval: (c-set-style "gnu")
329  * End:
330  */