FD.io VPP  v20.01-48-g3e0dafb74
Vector Packet Processing
gbp_itf.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_INTERFACE_H__
17 #define __GBP_INTERFACE_H__
18 
19 #include <vnet/l2/l2_input.h>
20 #include <vnet/l2/l2_output.h>
21 
22 
23 #define foreach_gdb_l3_feature \
24  _(LEARN_IP4, "gbp-learn-ip4", "ip4-unicast") \
25  _(LEARN_IP6, "gbp-learn-ip6", "ip6-unicast")
26 
28 {
29 #define _(s,v,a) GBP_ITF_L3_FEAT_POS_##s,
31 #undef _
33 
34 typedef enum gbp_itf_l3_feat_t_
35 {
37 #define _(s,v,a) GBP_ITF_L3_FEAT_##s = (1 << GBP_ITF_L3_FEAT_POS_##s),
39 #undef _
41 
42 #define GBP_ITF_L3_FEAT_LEARN (GBP_ITF_L3_FEAT_LEARN_IP4|GBP_ITF_L3_FEAT_LEARN_IP6)
43 
44 typedef struct gbp_itf_hdl_t_
45 {
46  union
47  {
48  struct
49  {
52  };
53  };
55 
56 #define GBP_ITF_HDL_INIT {.gh_which = ~0}
57 const static gbp_itf_hdl_t GBP_ITF_HDL_INVALID = GBP_ITF_HDL_INIT;
58 
59 extern void gbp_itf_hdl_reset (gbp_itf_hdl_t * gh);
60 extern bool gbp_itf_hdl_is_valid (gbp_itf_hdl_t gh);
61 
62 typedef void (*gbp_itf_free_fn_t) (u32 sw_if_index);
63 
67  u32 bd_index,
70  index_t gri,
72 
73 extern void gbp_itf_unlock (gbp_itf_hdl_t * hdl);
74 extern void gbp_itf_lock (gbp_itf_hdl_t hdl);
77 
79  l2input_feat_masks_t feats);
81  l2output_feat_masks_t feats);
82 
84  gbp_itf_l3_feat_t feats);
85 
86 extern u8 *format_gbp_itf_hdl (u8 * s, va_list * args);
87 
88 #endif
89 
90 /*
91  * fd.io coding-style-patch-verification: ON
92  *
93  * Local Variables:
94  * eval: (c-set-style "gnu")
95  * End:
96  */
u32 gh_which
Definition: gbp_itf.h:51
void(* gbp_itf_free_fn_t)(u32 sw_if_index)
Definition: gbp_itf.h:62
#define GBP_ITF_HDL_INIT
Definition: gbp_itf.h:56
gbp_itf_hdl_t gbp_itf_l3_add_and_lock_w_free(u32 sw_if_index, index_t gri, gbp_itf_free_fn_t ff)
Definition: gbp_itf.c:251
struct gbp_itf_hdl_t_ gbp_itf_hdl_t
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
enum gbp_itf_l3_feat_t_ gbp_itf_l3_feat_t
unsigned char u8
Definition: types.h:56
gbp_itf_hdl_t gbp_itf_clone_and_lock(gbp_itf_hdl_t hdl)
Definition: gbp_itf.c:271
vl_api_interface_index_t sw_if_index
Definition: gre.api:59
void gbp_itf_l3_set_input_feature(gbp_itf_hdl_t hdl, gbp_itf_l3_feat_t feats)
Definition: gbp_itf.c:335
gbp_itf_hdl_t gbp_itf_l2_add_and_lock(u32 sw_if_index, u32 bd_index)
Definition: gbp_itf.c:196
unsigned int u32
Definition: types.h:88
gbp_itf_l3_feat_t_
Definition: gbp_itf.h:34
enum gbp_itf_l3_feat_pos_t_ gbp_itf_l3_feat_pos_t
void gbp_itf_lock(gbp_itf_hdl_t hdl)
Definition: gbp_itf.c:258
void gbp_itf_l2_set_input_feature(gbp_itf_hdl_t hdl, l2input_feat_masks_t feats)
Definition: gbp_itf.c:382
void gbp_itf_l2_set_output_feature(gbp_itf_hdl_t hdl, l2output_feat_masks_t feats)
Definition: gbp_itf.c:428
gbp_itf_hdl_t gbp_itf_l2_add_and_lock_w_free(u32 sw_if_index, u32 bd_index, gbp_itf_free_fn_t ff)
Definition: gbp_itf.c:202
#define foreach_gdb_l3_feature
Definition: gbp_itf.h:23
gbp_itf_l3_feat_pos_t_
Definition: gbp_itf.h:27
l2input_feat_masks_t
Definition: l2_input.h:141
l2output_feat_masks_t
Definition: l2_output.h:111
void gbp_itf_unlock(gbp_itf_hdl_t *hdl)
Definition: gbp_itf.c:286
void gbp_itf_hdl_reset(gbp_itf_hdl_t *gh)
Definition: gbp_itf.c:108
u32 gbp_itf_get_sw_if_index(gbp_itf_hdl_t hdl)
Definition: gbp_itf.c:148
gbp_itf_hdl_t gbp_itf_l3_add_and_lock(u32 sw_if_index, index_t gri)
Definition: gbp_itf.c:245
u8 * format_gbp_itf_hdl(u8 *s, va_list *args)
Definition: gbp_itf.c:520
bool gbp_itf_hdl_is_valid(gbp_itf_hdl_t gh)
Definition: gbp_itf.c:114