FD.io VPP  v16.12-rc0-308-g931be3a
Vector Packet Processing
lisp_gpe_fwd_entry.h
Go to the documentation of this file.
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  * @file
17  * @brief LISP-GPE definitions.
18  */
19 
20 #ifndef __LISP_GPE_FWD_ENTRY_H__
21 #define __LISP_GPE_FWD_ENTRY_H__
22 
23 #include <vnet/lisp-gpe/lisp_gpe.h>
24 
25 /**
26  * @brief A path on which to forward lisp traffic
27  */
28 typedef struct lisp_fwd_path_t_
29 {
30  /**
31  * The adjacency constructed for the locator pair
32  */
34 
35  /**
36  * Priority. Only the paths with the best priority will be installed in FIB
37  */
39 
40  /**
41  * [UE]CMP weigt for the path
42  */
44 
46 
47 /**
48  * @brief A Forwarding entry can be 'normal' or 'negative'
49  * Negative implies we deliberately want to add a FIB entry for an EID
50  * that results in 'special' behaviour determined by an 'action'.
51  * @normal means send it down some tunnels.
52  */
54 {
58 
59 
60 /**
61  * LISP-GPE fwd entry key
62  */
64 {
69 
70 /**
71  * @brief A LISP Forwarding Entry
72  *
73  * A forwarding entry is from a locai EID to a remote EID over a set of rloc pairs
74  */
75 typedef struct lisp_gpe_fwd_entry_t_
76 {
77  /**
78  * This object joins the FIB control plane graph to receive updates to
79  * for changes to the graph.
80  */
82 
83  /**
84  * The Entry's key: {lEID,r-EID,vni}
85  */
87 
88  /**
89  * The forwarding entry type
90  */
92 
93  /**
94  * The tenant the entry belongs to
95  */
97 
98  /**
99  * The VRF (in the case of L3) or Bridge-Domain (for L2) index
100  */
101  union
102  {
103  /**
104  * Fields relevant to an L2 entry
105  */
106  struct
107  {
108  /**
109  * The VRF ID
110  */
112 
113  /**
114  * The FIB index for the overlay, i.e. the FIB in which the EIDs
115  * are present
116  */
118  /**
119  * The SRC-FIB index for created for anding source-route entries
120  */
122  };
123  /**
124  * Fields relevant to an L2 entry
125  */
126  struct
127  {
128  /**
129  * The Bridge-Domain (for L2) index
130  */
132 
133  /**
134  * The Bridge-domain index for the overlay EIDs
135  */
137 
138  /**
139  * The path-list created for the forwarding
140  */
142 
143  /**
144  * Child index of this entry on the path-list
145  */
147 
148  /**
149  * The DPO used to forward
150  */
152  } l2;
153  };
154 
155  union
156  {
157  /**
158  * @brief When the type is 'normal'
159  * The RLOC pair that form the route's paths. i.e. where to send
160  * packets for this route.
161  */
163 
164  /**
165  * @brief When the type is negative. The action to take.
166  */
168  };
170 
171 extern int
173  u32 * hw_if_indexp);
174 
175 extern void vnet_lisp_gpe_fwd_entry_flush (void);
176 
178  u16 bd_index, u8 src_mac[8], u8 dst_mac[8]);
179 
180 #endif
181 
182 /*
183  * fd.io coding-style-patch-verification: ON
184  *
185  * Local Variables:
186  * eval: (c-set-style "gnu")
187  * End:
188  */
u32 eid_bd_id
The Bridge-Domain (for L2) index.
negative_fwd_actions_e action
When the type is negative.
a
Definition: bitmap.h:516
dp_address_t lcl
u8 priority
Priority.
LISP-GPE global state.
Definition: lisp_gpe.h:89
int vnet_lisp_gpe_add_del_fwd_entry(vnet_lisp_gpe_add_del_fwd_entry_args_t *a, u32 *hw_if_indexp)
Forwarding entry create/remove dispatcher.
u32 index_t
A Data-Path Object is an object that represents actions that are applied to packets are they are swit...
Definition: dpo.h:41
u32 src_fib_index
The SRC-FIB index for created for anding source-route entries.
u32 eid_table_id
The VRF ID.
lisp_gpe_fwd_entry_key_t * key
The Entry&#39;s key: {lEID,r-EID,vni}.
struct lisp_fwd_path_t_ lisp_fwd_path_t
A path on which to forward lisp traffic.
u32 child_index
Child index of this entry on the path-list.
u32 tenant
The tenant the entry belongs to.
u32 eid_bd_index
The Bridge-domain index for the overlay EIDs.
LISP-GPE fwd entry key.
lisp_gpe_fwd_entry_type_t type
The forwarding entry type.
u32 lisp_l2_fib_lookup(lisp_gpe_main_t *lgm, u16 bd_index, u8 src_mac[8], u8 dst_mac[8])
lisp_gpe_fwd_entry_type_t_
A Forwarding entry can be &#39;normal&#39; or &#39;negative&#39; Negative implies we deliberately want to add a FIB e...
dp_address_t rmt
Definition: lisp_gpe.h:178
The identity of a DPO is a combination of its type and its instance number/index of objects of that t...
Definition: dpo.h:138
An node in the FIB graph.
Definition: fib_node.h:242
fib_node_index_t path_list_index
The path-list created for the forwarding.
dpo_id_t dpo
The DPO used to forward.
void vnet_lisp_gpe_fwd_entry_flush(void)
Flush all the forwrding entries.
u32 fib_node_index_t
A typedef of a node index.
Definition: fib_types.h:28
unsigned int u32
Definition: types.h:88
enum lisp_gpe_fwd_entry_type_t_ lisp_gpe_fwd_entry_type_t
A Forwarding entry can be &#39;normal&#39; or &#39;negative&#39; Negative implies we deliberately want to add a FIB e...
A path on which to forward lisp traffic.
u8 weight
[UE]CMP weigt for the path
struct lisp_gpe_fwd_entry_key_t_ lisp_gpe_fwd_entry_key_t
LISP-GPE fwd entry key.
unsigned short u16
Definition: types.h:57
u32 eid_fib_index
The FIB index for the overlay, i.e.
unsigned char u8
Definition: types.h:56
negative_fwd_actions_e
Definition: lisp_gpe.h:169
lisp_fwd_path_t * paths
When the type is &#39;normal&#39; The RLOC pair that form the route&#39;s paths.
struct lisp_gpe_fwd_entry_t_ lisp_gpe_fwd_entry_t
A LISP Forwarding Entry.
u32 vni
fib_node_t node
This object joins the FIB control plane graph to receive updates to for changes to the graph...
LISP-GPE definitions.
index_t lisp_adj
The adjacency constructed for the locator pair.
A LISP Forwarding Entry.