fbbbc211dc9ace0dbd87368c6a6aacd81fd43146
[vpp.git] / vnet / vnet / fib / fib_entry_cover.h
1 /*
2  * Copyright (c) 2016 Cisco and/or its affiliates.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at:
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15
16 #ifndef __FIB_ENTRY_COVER_H__
17 #define __FIB_ENTRY_COVER_H__
18
19 #include "fib_entry.h"
20
21 /**
22  * callback function used when walking the covered entries
23  */
24 typedef int (*fib_entry_covered_walk_t)(fib_entry_t *cover,
25                                         fib_node_index_t covered,
26                                         void *ctx);
27
28 extern u32 fib_entry_cover_track(fib_entry_t *cover,
29                                  fib_node_index_t covered);
30
31 extern void fib_entry_cover_untrack(fib_entry_t *cover,
32                                     u32 tracked_index);
33
34 extern void fib_entry_cover_walk(fib_entry_t *cover,
35                                  fib_entry_covered_walk_t walk,
36                                  void *ctx);
37
38 extern void fib_entry_cover_change_notify(fib_node_index_t cover_index,
39                                           fib_node_index_t covered_index);
40 extern void fib_entry_cover_update_notify(fib_entry_t *cover);
41
42 extern u32 fib_entry_cover_get_size(fib_entry_t *cover);
43
44 extern u8* fib_entry_cover_list_format(fib_entry_t *fib_entry,
45                                        u8 *s);
46
47 #endif