FD.io VPP  v19.04.1-1-ge4a0f9f
Vector Packet Processing
mfib_entry_src.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2018 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 __MFIB_ENTRY_SRC_H__
17 #define __MFIB_ENTRY_SRC_H__
18 
19 #include <vnet/mfib/mfib_entry.h>
20 
21 /**
22  * MFIB extensions to each path
23  */
24 typedef struct mfib_path_ext_t_
25 {
29 
30 /**
31  * The source of an MFIB entry
32  */
33 typedef struct mfib_entry_src_t_
34 {
35  /**
36  * Which source this is
37  */
39 
40  /**
41  * Route flags
42  */
44 
45  /**
46  * The reference count on the entry. this is a u32
47  * since there is no path-list sharing in mfib, so the number
48  * os children could be high.
49  */
51 
52  /**
53  * The path-list of forwarding interfaces
54  */
56 
57  /**
58  * RPF-ID
59  */
61 
62  /**
63  * Hash table of path extensions
64  */
66 
67  /**
68  * Covering entry (if needed)
69  */
70  struct {
73  };
74 
75  /**
76  * The hash table of all interfaces.
77  * This is forwarding time information derived from the paths
78  * and their extensions.
79  */
82 
83 /**
84  * signals from the sources to the caller
85  */
86 typedef enum mfib_src_res_t_
87 {
91 
92 /**
93  * A function provided by each source to be invoked when it is activated
94  */
96 
97 /**
98  * A function provided by each source to be invoked when it is deactivated
99  */
101 
102 /**
103  * A function provided by each source to be invoked when the cover changes
104  */
106 
107 /**
108  * A function provided by each source to be invoked when the cover is updated
109  */
111 
112 /**
113  * Virtual function table provided by each_source
114  */
115 typedef struct mfib_entry_src_vft_t_
116 {
122 
124 
125 extern void mfib_entry_src_deactivate(mfib_entry_t *mfib_entry,
126  mfib_entry_src_t *bsrc);
127 
128 extern void mfib_entry_src_activate(mfib_entry_t *mfib_entry,
129  mfib_entry_src_t *bsrc);
130 
132  mfib_entry_src_t *bsrc);
133 
135  mfib_entry_src_t *bsrc);
136 
137 extern mfib_entry_src_t* mfib_entry_get_best_src(const mfib_entry_t *mfib_entry);
138 
139 extern void mfib_entry_src_module_init(void);
140 extern void mfib_entry_src_rr_module_init(void);
141 
142 #endif
mfib_entry_src_cover_change_t mev_cover_change
mfib_entry_src_cover_update_t mev_cover_update
enum mfib_entry_flags_t_ mfib_entry_flags_t
fib_node_index_t mfes_cover
struct mfib_entry_src_t_ mfib_entry_src_t
The source of an MFIB entry.
An entry in a FIB table.
Definition: mfib_entry.h:32
mfib_src_res_t mfib_entry_src_cover_change(mfib_entry_t *mfib_entry, mfib_entry_src_t *bsrc)
u32 mfes_sibling
mfib_itf_t * mfes_itfs
The hash table of all interfaces.
enum mfib_source_t_ mfib_source_t
Possible [control plane] sources of MFIB entries.
The source of an MFIB entry.
mfib_entry_src_t * mfib_entry_get_best_src(const mfib_entry_t *mfib_entry)
Definition: mfib_entry.c:294
mfib_source_t mfes_src
Which source this is.
mfib_src_res_t mfib_entry_src_cover_update(mfib_entry_t *mfib_entry, mfib_entry_src_t *bsrc)
unsigned int u32
Definition: types.h:88
struct mfib_entry_src_vft_t_ mfib_entry_src_vft
Virtual function table provided by each_source.
mfib_src_res_t_
signals from the sources to the caller
void(* mfib_entry_src_deactiviate_t)(mfib_entry_t *, mfib_entry_src_t *)
A function provided by each source to be invoked when it is deactivated.
u32 mfes_ref_count
The reference count on the entry.
void mfib_entry_src_rr_module_init(void)
void mfib_entry_src_deactivate(mfib_entry_t *mfib_entry, mfib_entry_src_t *bsrc)
fib_rpf_id_t mfes_rpf_id
RPF-ID.
void mfib_entry_src_activate(mfib_entry_t *mfib_entry, mfib_entry_src_t *bsrc)
mfib_entry_src_activiate_t mev_activate
void mfib_entry_src_module_init(void)
fib_node_index_t mfes_pl
The path-list of forwarding interfaces.
u32 fib_node_index_t
A typedef of a node index.
Definition: fib_types.h:30
mfib_path_ext_t * mfes_exts
Hash table of path extensions.
enum mfib_src_res_t_ mfib_src_res_t
signals from the sources to the caller
u32 fib_rpf_id_t
An RPF-ID is numerical value that is used RPF validate.
Definition: fib_types.h:391
MFIB extensions to each path.
void(* mfib_entry_src_activiate_t)(mfib_entry_t *, mfib_entry_src_t *)
A function provided by each source to be invoked when it is activated.
mfib_itf_flags_t mfpe_flags
An interface associated with a particular MFIB entry.
Definition: mfib_itf.h:25
mfib_src_res_t(* mfib_entry_src_cover_change_t)(mfib_entry_t *, mfib_entry_src_t *)
A function provided by each source to be invoked when the cover changes.
mfib_entry_src_deactiviate_t mev_deactivate
void mfib_entry_src_register(mfib_source_t, const mfib_entry_src_vft *)
fib_node_index_t mfpe_path
struct mfib_path_ext_t_ mfib_path_ext_t
MFIB extensions to each path.
Virtual function table provided by each_source.
enum mfib_itf_flags_t_ mfib_itf_flags_t
mfib_entry_flags_t mfes_flags
Route flags.
mfib_src_res_t(* mfib_entry_src_cover_update_t)(mfib_entry_t *, mfib_entry_src_t *)
A function provided by each source to be invoked when the cover is updated.