FD.io VPP  v19.01.3-6-g70449b9b9
Vector Packet Processing
gbp_policy_dpo.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 __GBP_POLICY_DPO_H__
17 #define __GBP_POLICY_DPO_H__
18 
19 #include <vnet/dpo/dpo.h>
20 
21 /**
22  * @brief
23  * The GBP FWD DPO. Used in the L3 path to select the correct EPG uplink
24  * based on the source EPG.
25  */
26 typedef struct gbp_policy_dpo_t_
27 {
28  CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
29 
30  /**
31  * The protocol of packets using this DPO
32  */
34 
35  /**
36  * EPG
37  */
39 
40  /**
41  * output sw_if_index
42  */
44 
45  /**
46  * number of locks.
47  */
49 
50  /**
51  * Stacked DPO on DVR/ADJ of output interface
52  */
55 
56 extern void gbp_policy_dpo_add_or_lock (dpo_proto_t dproto,
57  epg_id_t epg,
58  u32 sw_if_index, dpo_id_t * dpo);
59 
61 
65 
66 /**
67  * Types exposed for the Data-plane
68  */
71 
74 {
75  return (pool_elt_at_index (gbp_policy_dpo_pool, index));
76 }
77 
78 /*
79  * fd.io coding-style-patch-verification: ON
80  *
81  * Local Variables:
82  * eval: (c-set-style "gnu")
83  * End:
84  */
85 
86 #endif
u16 epg_id_t
Definition: gbp_types.h:21
gbp_policy_dpo_t * gbp_policy_dpo_pool
DPO pool.
struct gbp_policy_dpo_t_ gbp_policy_dpo_t
The GBP FWD DPO.
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
vlib_node_registration_t gbp_policy_port_node
(constructor) VLIB_REGISTER_NODE (gbp_policy_port_node)
Definition: gbp_policy.c:370
enum dpo_type_t_ dpo_type_t
Common types of data-path objects New types can be dynamically added using dpo_register_new_type() ...
u32 sw_if_index
Definition: vxlan_gbp.api:37
#define always_inline
Definition: clib.h:98
epg_id_t gpd_epg
EPG.
unsigned int u32
Definition: types.h:88
u32 gpd_sw_if_index
output sw_if_index
enum dpo_proto_t_ dpo_proto_t
Data path protocol.
The identity of a DPO is a combination of its type and its instance number/index of objects of that t...
Definition: dpo.h:168
#define pool_elt_at_index(p, i)
Returns pointer to element at given index.
Definition: pool.h:511
The GBP FWD DPO.
unsigned short u16
Definition: types.h:57
vlib_node_registration_t ip4_gbp_policy_dpo_node
(constructor) VLIB_REGISTER_NODE (ip4_gbp_policy_dpo_node)
vlib_node_registration_t ip6_gbp_policy_dpo_node
(constructor) VLIB_REGISTER_NODE (ip6_gbp_policy_dpo_node)
dpo_type_t gbp_policy_dpo_get_type(void)
static gbp_policy_dpo_t * gbp_policy_dpo_get(index_t index)
u16 gpd_locks
number of locks.
dpo_type_t gbp_policy_dpo_type
Types exposed for the Data-plane.
struct _vlib_node_registration vlib_node_registration_t
void gbp_policy_dpo_add_or_lock(dpo_proto_t dproto, epg_id_t epg, u32 sw_if_index, dpo_id_t *dpo)
dpo_id_t gpd_dpo
Stacked DPO on DVR/ADJ of output interface.
CLIB_CACHE_LINE_ALIGN_MARK(cacheline0)
dpo_proto_t gpd_proto
The protocol of packets using this DPO.